summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorroot <root@lamia.panaceas.james.local>2015-09-27 11:48:57 +0100
committerroot <root@lamia.panaceas.james.local>2015-09-27 11:48:57 +0100
commit83ded88a16a3bbc2e9a50902b0b9728e4e50aad3 (patch)
treece8da3d0c2898822719d0535296002eecf1c1f2e
downloadtrunk-47048-pq-83ded88a16a3bbc2e9a50902b0b9728e4e50aad3.zip
trunk-47048-pq-83ded88a16a3bbc2e9a50902b0b9728e4e50aad3.tar.gz
trunk-47048-pq-83ded88a16a3bbc2e9a50902b0b9728e4e50aad3.tar.bz2
working
-rw-r--r--.gitignore1
-rw-r--r--master/config2236
-rw-r--r--master/endstop1458
-rw-r--r--master/feeds813817
-rw-r--r--master/fix-mjpg-streamer-stack-smashing19
-rw-r--r--master/kkmoon47
-rw-r--r--master/series5
-rw-r--r--master/status0
8 files changed, 817583 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..b25c15b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*~
diff --git a/master/config b/master/config
new file mode 100644
index 0000000..f855adf
--- /dev/null
+++ b/master/config
@@ -0,0 +1,2236 @@
+diff --git a/.config b/.config
+new file mode 100644
+index 0000000..e9f4329
+--- /dev/null
++++ b/.config
+@@ -0,0 +1,2230 @@
++#
++# Automatically generated file; DO NOT EDIT.
++# OpenWrt Configuration
++#
++CONFIG_MODULES=y
++CONFIG_HAVE_DOT_CONFIG=y
++# CONFIG_TARGET_ppc44x is not set
++# CONFIG_TARGET_realview is not set
++# CONFIG_TARGET_arm64 is not set
++# CONFIG_TARGET_sunxi is not set
++# CONFIG_TARGET_ath25 is not set
++# CONFIG_TARGET_ar71xx is not set
++# CONFIG_TARGET_at91 is not set
++# CONFIG_TARGET_brcm2708 is not set
++# CONFIG_TARGET_bcm53xx is not set
++# CONFIG_TARGET_brcm47xx is not set
++# CONFIG_TARGET_brcm63xx is not set
++# CONFIG_TARGET_netlogic is not set
++# CONFIG_TARGET_cns3xxx is not set
++# CONFIG_TARGET_octeon is not set
++# CONFIG_TARGET_gemini is not set
++# CONFIG_TARGET_mpc85xx is not set
++# CONFIG_TARGET_imx6 is not set
++# CONFIG_TARGET_mxs is not set
++# CONFIG_TARGET_adm8668 is not set
++# CONFIG_TARGET_adm5120 is not set
++# CONFIG_TARGET_xburst is not set
++# CONFIG_TARGET_ixp4xx is not set
++# CONFIG_TARGET_lantiq is not set
++# CONFIG_TARGET_malta is not set
++# CONFIG_TARGET_mvebu is not set
++# CONFIG_TARGET_kirkwood is not set
++# CONFIG_TARGET_rb532 is not set
++# CONFIG_TARGET_mcs814x is not set
++# CONFIG_TARGET_oxnas is not set
++# CONFIG_TARGET_ipq806x is not set
++# CONFIG_TARGET_au1000 is not set
++CONFIG_TARGET_ramips=y
++# CONFIG_TARGET_ar7 is not set
++# CONFIG_TARGET_omap is not set
++# CONFIG_TARGET_uml is not set
++# CONFIG_TARGET_x86 is not set
++CONFIG_TARGET_ramips_rt305x=y
++# CONFIG_TARGET_ramips_mt7620 is not set
++# CONFIG_TARGET_ramips_mt7621 is not set
++# CONFIG_TARGET_ramips_mt7628 is not set
++# CONFIG_TARGET_ramips_mt7688 is not set
++# CONFIG_TARGET_ramips_rt3883 is not set
++# CONFIG_TARGET_ramips_rt288x is not set
++# CONFIG_TARGET_ramips_rt305x_Default is not set
++# CONFIG_TARGET_ramips_rt305x_ALL02393G is not set
++# CONFIG_TARGET_ramips_rt305x_ALL0256N is not set
++# CONFIG_TARGET_ramips_rt305x_ALL5002 is not set
++# CONFIG_TARGET_ramips_rt305x_ALL5003 is not set
++# CONFIG_TARGET_ramips_rt305x_ASL26555 is not set
++# CONFIG_TARGET_ramips_rt305x_FREESTATION5 is not set
++# CONFIG_TARGET_ramips_rt305x_AWAPN2403 is not set
++# CONFIG_TARGET_ramips_rt305x_AWM002EVB is not set
++# CONFIG_TARGET_ramips_rt305x_AWM003EVB is not set
++# CONFIG_TARGET_ramips_rt305x_RTN10PLUS is not set
++# CONFIG_TARGET_ramips_rt305x_RT-N13U is not set
++# CONFIG_TARGET_ramips_rt305x_MR102N is not set
++# CONFIG_TARGET_ramips_rt305x_HW550-3G is not set
++# CONFIG_TARGET_ramips_rt305x_F5D8235V2 is not set
++# CONFIG_TARGET_ramips_rt305x_F7C027 is not set
++# CONFIG_TARGET_ramips_rt305x_BROADWAY is not set
++# CONFIG_TARGET_ramips_rt305x_DCS930 is not set
++# CONFIG_TARGET_ramips_rt305x_DCS930LB1 is not set
++# CONFIG_TARGET_ramips_rt305x_DIR610A1 is not set
++# CONFIG_TARGET_ramips_rt305x_DIR-615-D is not set
++# CONFIG_TARGET_ramips_rt305x_DIR615H1 is not set
++# CONFIG_TARGET_ramips_rt305x_WIZARD8800 is not set
++# CONFIG_TARGET_ramips_rt305x_ESR-9753 is not set
++# CONFIG_TARGET_ramips_rt305x_FONERA20N is not set
++# CONFIG_TARGET_ramips_rt305x_MPRA1 is not set
++# CONFIG_TARGET_ramips_rt305x_MPRA2 is not set
++# CONFIG_TARGET_ramips_rt305x_HLKRM04 is not set
++# CONFIG_TARGET_ramips_rt305x_HT-TM02 is not set
++# CONFIG_TARGET_ramips_rt305x_HG255D is not set
++# CONFIG_TARGET_ramips_rt305x_M2M is not set
++# CONFIG_TARGET_ramips_rt305x_A5-V11 is not set
++# CONFIG_TARGET_ramips_rt305x_WT1520 is not set
++# CONFIG_TARGET_ramips_rt305x_RT5350F-OLINUXINO is not set
++# CONFIG_TARGET_ramips_rt305x_RT5350F-OLINUXINO-EVB is not set
++# CONFIG_TARGET_ramips_rt305x_MZK-DP150N is not set
++# CONFIG_TARGET_ramips_rt305x_IP2202 is not set
++# CONFIG_TARGET_ramips_rt305x_M3 is not set
++# CONFIG_TARGET_ramips_rt305x_M4 is not set
++# CONFIG_TARGET_ramips_rt305x_X5 is not set
++# CONFIG_TARGET_ramips_rt305x_X8 is not set
++# CONFIG_TARGET_ramips_rt305x_PX-4885 is not set
++# CONFIG_TARGET_ramips_rt305x_3G150B is not set
++# CONFIG_TARGET_ramips_rt305x_3G300M is not set
++# CONFIG_TARGET_ramips_rt305x_W306R_V20 is not set
++# CONFIG_TARGET_ramips_rt305x_UR-326N4G is not set
++# CONFIG_TARGET_ramips_rt305x_UR-336UN is not set
++# CONFIG_TARGET_ramips_rt305x_VOCORE is not set
++CONFIG_TARGET_ramips_rt305x_NCS601W=y
++# CONFIG_TARGET_ramips_rt305x_WIZFI630A is not set
++CONFIG_HAS_SUBTARGETS=y
++CONFIG_TARGET_BOARD="ramips"
++CONFIG_TARGET_ARCH_PACKAGES="ramips_24kec"
++CONFIG_DEFAULT_TARGET_OPTIMIZATION="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kec -mdsp"
++CONFIG_CPU_TYPE="24kec+dsp"
++CONFIG_LINUX_3_18=y
++CONFIG_DEFAULT_base-files=y
++CONFIG_DEFAULT_busybox=y
++CONFIG_DEFAULT_dnsmasq=y
++CONFIG_DEFAULT_dropbear=y
++CONFIG_DEFAULT_firewall=y
++CONFIG_DEFAULT_fstools=y
++CONFIG_DEFAULT_ip6tables=y
++CONFIG_DEFAULT_iptables=y
++CONFIG_DEFAULT_iwinfo=y
++CONFIG_DEFAULT_kmod-gpio-button-hotplug=y
++CONFIG_DEFAULT_kmod-leds-gpio=y
++CONFIG_DEFAULT_kmod-nf-nathelper=y
++CONFIG_DEFAULT_kmod-rt2800-soc=y
++CONFIG_DEFAULT_kmod-usb-core=y
++CONFIG_DEFAULT_kmod-usb-ohci=y
++CONFIG_DEFAULT_kmod-video-core=y
++CONFIG_DEFAULT_kmod-video-uvc=y
++CONFIG_DEFAULT_libc=y
++CONFIG_DEFAULT_libgcc=y
++CONFIG_DEFAULT_mtd=y
++CONFIG_DEFAULT_netifd=y
++CONFIG_DEFAULT_odhcp6c=y
++CONFIG_DEFAULT_odhcpd=y
++CONFIG_DEFAULT_opkg=y
++CONFIG_DEFAULT_ppp=y
++CONFIG_DEFAULT_ppp-mod-pppoe=y
++CONFIG_DEFAULT_swconfig=y
++CONFIG_DEFAULT_uci=y
++CONFIG_DEFAULT_wpad-mini=y
++CONFIG_AUDIO_SUPPORT=y
++CONFIG_GPIO_SUPPORT=y
++CONFIG_USB_SUPPORT=y
++CONFIG_USES_DEVICETREE=y
++CONFIG_USES_INITRAMFS=y
++CONFIG_USES_SQUASHFS=y
++CONFIG_mipsel=y
++CONFIG_ARCH="mipsel"
++
++#
++# Target Images
++#
++CONFIG_TARGET_ROOTFS_INITRAMFS=y
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_NONE is not set
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP is not set
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2 is not set
++CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA=y
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZO is not set
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_LZ4 is not set
++# CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ is not set
++CONFIG_EXTERNAL_CPIO=""
++
++#
++# Root filesystem archives
++#
++# CONFIG_TARGET_ROOTFS_CPIOGZ is not set
++# CONFIG_TARGET_ROOTFS_TARGZ is not set
++
++#
++# Root filesystem images
++#
++# CONFIG_TARGET_ROOTFS_EXT4FS is not set
++# CONFIG_TARGET_ROOTFS_JFFS2 is not set
++CONFIG_TARGET_ROOTFS_SQUASHFS=y
++CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=256
++CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP=y
++CONFIG_TARGET_UBIFS_JOURNAL_SIZE=""
++
++#
++# Image Options
++#
++CONFIG_TARGET_ROOTFS_INCLUDE_UIMAGE=y
++CONFIG_TARGET_ROOTFS_INCLUDE_ZIMAGE=y
++CONFIG_TARGET_ROOTFS_INCLUDE_FIT=y
++
++#
++# Global build settings
++#
++# CONFIG_ALL_KMODS is not set
++# CONFIG_ALL is not set
++CONFIG_SIGNED_PACKAGES=y
++
++#
++# General build options
++#
++# CONFIG_DISPLAY_SUPPORT is not set
++CONFIG_BUILD_PATENTED=y
++# CONFIG_BUILD_NLS is not set
++CONFIG_SHADOW_PASSWORDS=y
++# CONFIG_CLEAN_IPKG is not set
++# CONFIG_COLLECT_KERNEL_DEBUG is not set
++
++#
++# Kernel build options
++#
++CONFIG_KERNEL_PRINTK=y
++CONFIG_KERNEL_CRASHLOG=y
++CONFIG_KERNEL_SWAP=y
++CONFIG_KERNEL_DEBUG_FS=y
++# CONFIG_KERNEL_PERF_EVENTS is not set
++# CONFIG_KERNEL_PROFILING is not set
++CONFIG_KERNEL_KALLSYMS=y
++# CONFIG_KERNEL_FTRACE is not set
++CONFIG_KERNEL_DEBUG_KERNEL=y
++CONFIG_KERNEL_DEBUG_INFO=y
++# CONFIG_KERNEL_DYNAMIC_DEBUG is not set
++# CONFIG_KERNEL_KPROBES is not set
++# CONFIG_KERNEL_AIO is not set
++# CONFIG_KERNEL_DIRECT_IO is not set
++# CONFIG_KERNEL_FHANDLE is not set
++# CONFIG_KERNEL_FANOTIFY is not set
++# CONFIG_KERNEL_BLK_DEV_BSG is not set
++CONFIG_KERNEL_MAGIC_SYSRQ=y
++CONFIG_KERNEL_COREDUMP=y
++CONFIG_KERNEL_ELF_CORE=y
++# CONFIG_KERNEL_PROVE_LOCKING is not set
++CONFIG_KERNEL_PRINTK_TIME=y
++# CONFIG_KERNEL_SLABINFO is not set
++# CONFIG_KERNEL_PROC_PAGE_MONITOR is not set
++# CONFIG_KERNEL_KEXEC is not set
++# CONFIG_USE_RFKILL is not set
++# CONFIG_USE_SPARSE is not set
++# CONFIG_KERNEL_DEVTMPFS is not set
++# CONFIG_KERNEL_CGROUPS is not set
++# CONFIG_KERNEL_NAMESPACES is not set
++# CONFIG_KERNEL_LXC_MISC is not set
++# CONFIG_KERNEL_SECCOMP_FILTER is not set
++# CONFIG_KERNEL_SECCOMP is not set
++
++#
++# Package build options
++#
++# CONFIG_DEBUG is not set
++CONFIG_IPV6=y
++CONFIG_PKG_BUILD_PARALLEL=y
++CONFIG_PKG_BUILD_USE_JOBSERVER=y
++
++#
++# Stripping options
++#
++# CONFIG_NO_STRIP is not set
++CONFIG_USE_STRIP=y
++# CONFIG_USE_SSTRIP is not set
++CONFIG_STRIP_ARGS="--strip-all"
++# CONFIG_STRIP_KERNEL_EXPORTS is not set
++# CONFIG_USE_MKLIBS is not set
++CONFIG_USE_UCLIBCXX=y
++# CONFIG_USE_LIBSTDCXX is not set
++
++#
++# Hardening build options
++#
++CONFIG_PKG_CHECK_FORMAT_SECURITY=y
++# CONFIG_PKG_CC_STACKPROTECTOR_NONE is not set
++CONFIG_PKG_CC_STACKPROTECTOR_REGULAR=y
++# CONFIG_KERNEL_CC_STACKPROTECTOR_NONE is not set
++CONFIG_KERNEL_CC_STACKPROTECTOR_REGULAR=y
++# CONFIG_PKG_FORTIFY_SOURCE_NONE is not set
++CONFIG_PKG_FORTIFY_SOURCE_1=y
++# CONFIG_PKG_FORTIFY_SOURCE_2 is not set
++# CONFIG_PKG_RELRO_NONE is not set
++# CONFIG_PKG_RELRO_PARTIAL is not set
++CONFIG_PKG_RELRO_FULL=y
++# CONFIG_DEVEL is not set
++# CONFIG_BROKEN is not set
++CONFIG_BINARY_FOLDER=""
++CONFIG_DOWNLOAD_FOLDER=""
++CONFIG_LOCALMIRROR=""
++CONFIG_AUTOREBUILD=y
++CONFIG_BUILD_SUFFIX=""
++CONFIG_TARGET_ROOTFS_DIR=""
++# CONFIG_CCACHE is not set
++CONFIG_EXTERNAL_KERNEL_TREE=""
++CONFIG_KERNEL_GIT_CLONE_URI=""
++CONFIG_EXTRA_OPTIMIZATION="-fno-caller-saves"
++CONFIG_TARGET_OPTIMIZATION="-Os -pipe -mno-branch-likely -mips32r2 -mtune=24kec -mdsp"
++CONFIG_SOFT_FLOAT=y
++# CONFIG_EXTRA_TARGET_ARCH is not set
++CONFIG_EXTRA_BINUTILS_CONFIG_OPTIONS=""
++CONFIG_BINUTILS_VERSION="linaro"
++CONFIG_EXTRA_GCC_CONFIG_OPTIONS=""
++# CONFIG_SJLJ_EXCEPTIONS is not set
++# CONFIG_INSTALL_LIBGCJ is not set
++# CONFIG_INSTALL_GFORTRAN is not set
++CONFIG_GDB=y
++# CONFIG_INSIGHT is not set
++CONFIG_USE_MUSL=y
++CONFIG_GCC_VERSION_4_8_LINARO=y
++CONFIG_GCC_VERSION="4.8-linaro"
++CONFIG_GCC_VERSION_4_8=y
++CONFIG_MUSL_VERSION="1.1.11"
++CONFIG_LIBC="musl"
++CONFIG_LIBC_VERSION="1.1.11"
++CONFIG_TARGET_SUFFIX="musl"
++# CONFIG_IB is not set
++# CONFIG_SDK is not set
++# CONFIG_MAKE_TOOLCHAIN is not set
++# CONFIG_IMAGEOPT is not set
++# CONFIG_PREINITOPT is not set
++CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y
++CONFIG_TARGET_PREINIT_TIMEOUT=2
++# CONFIG_TARGET_PREINIT_SHOW_NETMSG is not set
++# CONFIG_TARGET_PREINIT_SUPPRESS_FAILSAFE_NETMSG is not set
++CONFIG_TARGET_PREINIT_IFNAME=""
++CONFIG_TARGET_PREINIT_IP="192.168.1.1"
++CONFIG_TARGET_PREINIT_NETMASK="255.255.255.0"
++CONFIG_TARGET_PREINIT_BROADCAST="192.168.1.255"
++# CONFIG_INITOPT is not set
++CONFIG_TARGET_INIT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
++CONFIG_TARGET_INIT_ENV=""
++CONFIG_TARGET_INIT_CMD="/sbin/init"
++CONFIG_TARGET_INIT_SUPPRESS_STDERR=y
++# CONFIG_VERSIONOPT is not set
++CONFIG_PER_FEED_REPO=y
++CONFIG_PER_FEED_REPO_ADD_DISABLED=y
++CONFIG_PER_FEED_REPO_ADD_COMMENTED=y
++# CONFIG_FEED_packages is not set
++# CONFIG_FEED_luci is not set
++# CONFIG_FEED_routing is not set
++# CONFIG_FEED_telephony is not set
++# CONFIG_FEED_management is not set
++# CONFIG_FEED_targets is not set
++# CONFIG_SMIMEOPT is not set
++CONFIG_OPKGSMIME_PASSPHRASE=y
++
++#
++# Base system
++#
++CONFIG_PACKAGE_base-files=y
++# CONFIG_PACKAGE_block-mount is not set
++CONFIG_PACKAGE_busybox=y
++# CONFIG_BUSYBOX_CUSTOM is not set
++CONFIG_BUSYBOX_DEFAULT_HAVE_DOT_CONFIG=y
++# CONFIG_BUSYBOX_DEFAULT_DESKTOP is not set
++# CONFIG_BUSYBOX_DEFAULT_EXTRA_COMPAT is not set
++CONFIG_BUSYBOX_DEFAULT_INCLUDE_SUSv2=y
++# CONFIG_BUSYBOX_DEFAULT_USE_PORTABLE_CODE is not set
++CONFIG_BUSYBOX_DEFAULT_PLATFORM_LINUX=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_USE_MALLOC is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_ON_STACK=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BUFFERS_GO_IN_BSS is not set
++CONFIG_BUSYBOX_DEFAULT_SHOW_USAGE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_USAGE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_USAGE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALLER is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_NO_USR is not set
++# CONFIG_BUSYBOX_DEFAULT_LOCALE_SUPPORT is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_SUPPORT is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_USING_LOCALE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV is not set
++CONFIG_BUSYBOX_DEFAULT_SUBST_WCHAR=0
++CONFIG_BUSYBOX_DEFAULT_LAST_SUPPORTED_WCHAR=0
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_COMBINING_WCHARS is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_WIDE_WCHARS is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_BIDI_SUPPORT is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_NEUTRAL_TABLE is not set
++# CONFIG_BUSYBOX_DEFAULT_UNICODE_PRESERVE_BROKEN is not set
++# CONFIG_BUSYBOX_DEFAULT_PAM is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE is not set
++CONFIG_BUSYBOX_DEFAULT_LONG_OPTS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVPTS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CLEAN_UP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UTMP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_WTMP is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDFILE=y
++CONFIG_BUSYBOX_DEFAULT_PID_FILE_PATH="/var/run"
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUID_CONFIG_QUIET is not set
++# CONFIG_BUSYBOX_DEFAULT_SELINUX is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_APPLETS=y
++CONFIG_BUSYBOX_DEFAULT_BUSYBOX_EXEC_PATH="/proc/self/exe"
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOG=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HAVE_RPC is not set
++# CONFIG_BUSYBOX_DEFAULT_STATIC is not set
++# CONFIG_BUSYBOX_DEFAULT_PIE is not set
++# CONFIG_BUSYBOX_DEFAULT_NOMMU is not set
++# CONFIG_BUSYBOX_DEFAULT_BUILD_LIBBUSYBOX is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INDIVIDUAL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHARED_BUSYBOX is not set
++CONFIG_BUSYBOX_DEFAULT_LFS=y
++CONFIG_BUSYBOX_DEFAULT_CROSS_COMPILER_PREFIX=""
++CONFIG_BUSYBOX_DEFAULT_SYSROOT=""
++CONFIG_BUSYBOX_DEFAULT_EXTRA_CFLAGS=""
++CONFIG_BUSYBOX_DEFAULT_EXTRA_LDFLAGS=""
++CONFIG_BUSYBOX_DEFAULT_EXTRA_LDLIBS=""
++# CONFIG_BUSYBOX_DEFAULT_DEBUG is not set
++# CONFIG_BUSYBOX_DEFAULT_DEBUG_PESSIMIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_UNIT_TEST is not set
++# CONFIG_BUSYBOX_DEFAULT_WERROR is not set
++CONFIG_BUSYBOX_DEFAULT_NO_DEBUG_LIB=y
++# CONFIG_BUSYBOX_DEFAULT_DMALLOC is not set
++# CONFIG_BUSYBOX_DEFAULT_EFENCE is not set
++CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SYMLINKS=y
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_HARDLINKS is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_APPLET_DONT is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SYMLINK is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_HARDLINK is not set
++# CONFIG_BUSYBOX_DEFAULT_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
++CONFIG_BUSYBOX_DEFAULT_PREFIX="./_install"
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSTEMD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RTMINMAX is not set
++CONFIG_BUSYBOX_DEFAULT_PASSWORD_MINLEN=6
++CONFIG_BUSYBOX_DEFAULT_MD5_SMALL=1
++CONFIG_BUSYBOX_DEFAULT_SHA3_SMALL=1
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FAST_TOP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_TERMIOS is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_MAX_LEN=512
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_VI is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY=256
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TAB_COMPLETION=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_USERNAME_COMPLETION is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_FANCY_PROMPT=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_NON_POSIX_CP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_COPYBUF_KB=4
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SKIP_ROOTFS is not set
++# CONFIG_BUSYBOX_DEFAULT_MONOTONIC_SYSCALL is not set
++CONFIG_BUSYBOX_DEFAULT_IOCTL_HEX2STR_ERROR=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWIB is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_XZ is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_LZMA is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_BZ2 is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_GZ=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z is not set
++# CONFIG_BUSYBOX_DEFAULT_AR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_AR_CREATE is not set
++# CONFIG_BUSYBOX_DEFAULT_UNCOMPRESS is not set
++CONFIG_BUSYBOX_DEFAULT_GUNZIP=y
++CONFIG_BUSYBOX_DEFAULT_BUNZIP2=y
++# CONFIG_BUSYBOX_DEFAULT_UNLZMA is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LZMA_FAST is not set
++# CONFIG_BUSYBOX_DEFAULT_LZMA is not set
++# CONFIG_BUSYBOX_DEFAULT_UNXZ is not set
++# CONFIG_BUSYBOX_DEFAULT_XZ is not set
++# CONFIG_BUSYBOX_DEFAULT_BZIP2 is not set
++# CONFIG_BUSYBOX_DEFAULT_CPIO is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_O is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CPIO_P is not set
++# CONFIG_BUSYBOX_DEFAULT_DPKG is not set
++# CONFIG_BUSYBOX_DEFAULT_DPKG_DEB is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
++CONFIG_BUSYBOX_DEFAULT_GZIP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_GZIP_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_GZIP_FAST=0
++# CONFIG_BUSYBOX_DEFAULT_LZOP is not set
++# CONFIG_BUSYBOX_DEFAULT_LZOP_COMPR_HIGH is not set
++# CONFIG_BUSYBOX_DEFAULT_RPM is not set
++# CONFIG_BUSYBOX_DEFAULT_RPM2CPIO is not set
++CONFIG_BUSYBOX_DEFAULT_TAR=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_CREATE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_AUTODETECT is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_FROM=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_GNU_EXTENSIONS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_UNAME_GNAME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_NOPRESERVE_TIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX is not set
++# CONFIG_BUSYBOX_DEFAULT_UNZIP is not set
++CONFIG_BUSYBOX_DEFAULT_BASENAME=y
++CONFIG_BUSYBOX_DEFAULT_CAT=y
++CONFIG_BUSYBOX_DEFAULT_DATE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_ISOFMT=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_NANO is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT is not set
++# CONFIG_BUSYBOX_DEFAULT_HOSTID is not set
++CONFIG_BUSYBOX_DEFAULT_ID=y
++# CONFIG_BUSYBOX_DEFAULT_GROUPS is not set
++# CONFIG_BUSYBOX_DEFAULT_SHUF is not set
++CONFIG_BUSYBOX_DEFAULT_TEST=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TEST_64=y
++CONFIG_BUSYBOX_DEFAULT_TOUCH=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3=y
++CONFIG_BUSYBOX_DEFAULT_TR=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_CLASSES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TR_EQUIV is not set
++# CONFIG_BUSYBOX_DEFAULT_UNLINK is not set
++# CONFIG_BUSYBOX_DEFAULT_BASE64 is not set
++# CONFIG_BUSYBOX_DEFAULT_WHO is not set
++# CONFIG_BUSYBOX_DEFAULT_USERS is not set
++# CONFIG_BUSYBOX_DEFAULT_CAL is not set
++# CONFIG_BUSYBOX_DEFAULT_CATV is not set
++CONFIG_BUSYBOX_DEFAULT_CHGRP=y
++CONFIG_BUSYBOX_DEFAULT_CHMOD=y
++CONFIG_BUSYBOX_DEFAULT_CHOWN=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHOWN_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_CHROOT=y
++# CONFIG_BUSYBOX_DEFAULT_CKSUM is not set
++# CONFIG_BUSYBOX_DEFAULT_COMM is not set
++CONFIG_BUSYBOX_DEFAULT_CP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CP_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_CUT=y
++CONFIG_BUSYBOX_DEFAULT_DD=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_THIRD_STATUS_LINE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS=y
++CONFIG_BUSYBOX_DEFAULT_DF=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DF_FANCY is not set
++CONFIG_BUSYBOX_DEFAULT_DIRNAME=y
++# CONFIG_BUSYBOX_DEFAULT_DOS2UNIX is not set
++# CONFIG_BUSYBOX_DEFAULT_UNIX2DOS is not set
++CONFIG_BUSYBOX_DEFAULT_DU=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
++CONFIG_BUSYBOX_DEFAULT_ECHO=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_ECHO=y
++CONFIG_BUSYBOX_DEFAULT_ENV=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ENV_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_EXPAND is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EXPAND_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_EXPR=y
++CONFIG_BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64=y
++CONFIG_BUSYBOX_DEFAULT_FALSE=y
++# CONFIG_BUSYBOX_DEFAULT_FOLD is not set
++CONFIG_BUSYBOX_DEFAULT_FSYNC=y
++CONFIG_BUSYBOX_DEFAULT_HEAD=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD=y
++# CONFIG_BUSYBOX_DEFAULT_INSTALL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_LN=y
++# CONFIG_BUSYBOX_DEFAULT_LOGNAME is not set
++CONFIG_BUSYBOX_DEFAULT_LS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FILETYPES=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_FOLLOWLINKS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_RECURSIVE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_TIMESTAMPS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_USERNAME=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LS_COLOR_IS_DEFAULT=y
++CONFIG_BUSYBOX_DEFAULT_MD5SUM=y
++CONFIG_BUSYBOX_DEFAULT_MKDIR=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MKDIR_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_MKFIFO=y
++CONFIG_BUSYBOX_DEFAULT_MKNOD=y
++CONFIG_BUSYBOX_DEFAULT_MV=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MV_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_NICE=y
++# CONFIG_BUSYBOX_DEFAULT_NOHUP is not set
++# CONFIG_BUSYBOX_DEFAULT_OD is not set
++# CONFIG_BUSYBOX_DEFAULT_PRINTENV is not set
++CONFIG_BUSYBOX_DEFAULT_PRINTF=y
++CONFIG_BUSYBOX_DEFAULT_PWD=y
++CONFIG_BUSYBOX_DEFAULT_READLINK=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_READLINK_FOLLOW=y
++# CONFIG_BUSYBOX_DEFAULT_REALPATH is not set
++CONFIG_BUSYBOX_DEFAULT_RM=y
++CONFIG_BUSYBOX_DEFAULT_RMDIR=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RMDIR_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_SEQ=y
++# CONFIG_BUSYBOX_DEFAULT_SHA1SUM is not set
++# CONFIG_BUSYBOX_DEFAULT_SHA256SUM is not set
++# CONFIG_BUSYBOX_DEFAULT_SHA512SUM is not set
++# CONFIG_BUSYBOX_DEFAULT_SHA3SUM is not set
++CONFIG_BUSYBOX_DEFAULT_SLEEP=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_SLEEP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FLOAT_SLEEP is not set
++CONFIG_BUSYBOX_DEFAULT_SORT=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SORT_BIG is not set
++# CONFIG_BUSYBOX_DEFAULT_SPLIT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_STAT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT is not set
++# CONFIG_BUSYBOX_DEFAULT_STTY is not set
++# CONFIG_BUSYBOX_DEFAULT_SUM is not set
++CONFIG_BUSYBOX_DEFAULT_SYNC=y
++# CONFIG_BUSYBOX_DEFAULT_TAC is not set
++CONFIG_BUSYBOX_DEFAULT_TAIL=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_TAIL=y
++CONFIG_BUSYBOX_DEFAULT_TEE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TEE_USE_BLOCK_IO=y
++CONFIG_BUSYBOX_DEFAULT_TRUE=y
++# CONFIG_BUSYBOX_DEFAULT_TTY is not set
++CONFIG_BUSYBOX_DEFAULT_UNAME=y
++# CONFIG_BUSYBOX_DEFAULT_UNEXPAND is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNEXPAND_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_UNIQ=y
++# CONFIG_BUSYBOX_DEFAULT_USLEEP is not set
++# CONFIG_BUSYBOX_DEFAULT_UUDECODE is not set
++# CONFIG_BUSYBOX_DEFAULT_UUENCODE is not set
++CONFIG_BUSYBOX_DEFAULT_WC=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_WC_LARGE is not set
++# CONFIG_BUSYBOX_DEFAULT_WHOAMI is not set
++CONFIG_BUSYBOX_DEFAULT_YES=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VERBOSE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_AUTOWIDTH=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK=y
++# CONFIG_BUSYBOX_DEFAULT_CHVT is not set
++# CONFIG_BUSYBOX_DEFAULT_FGCONSOLE is not set
++CONFIG_BUSYBOX_DEFAULT_CLEAR=y
++# CONFIG_BUSYBOX_DEFAULT_DEALLOCVT is not set
++# CONFIG_BUSYBOX_DEFAULT_DUMPKMAP is not set
++# CONFIG_BUSYBOX_DEFAULT_KBD_MODE is not set
++# CONFIG_BUSYBOX_DEFAULT_LOADFONT is not set
++# CONFIG_BUSYBOX_DEFAULT_LOADKMAP is not set
++# CONFIG_BUSYBOX_DEFAULT_OPENVT is not set
++CONFIG_BUSYBOX_DEFAULT_RESET=y
++# CONFIG_BUSYBOX_DEFAULT_RESIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RESIZE_PRINT is not set
++# CONFIG_BUSYBOX_DEFAULT_SETCONSOLE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_SETFONT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFONT_TEXTUAL_MAP is not set
++CONFIG_BUSYBOX_DEFAULT_DEFAULT_SETFONT_DIR=""
++# CONFIG_BUSYBOX_DEFAULT_SETKEYCODES is not set
++# CONFIG_BUSYBOX_DEFAULT_SETLOGCONS is not set
++# CONFIG_BUSYBOX_DEFAULT_SHOWKEY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_PSF2 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOADFONT_RAW is not set
++CONFIG_BUSYBOX_DEFAULT_MKTEMP=y
++# CONFIG_BUSYBOX_DEFAULT_PIPE_PROGRESS is not set
++# CONFIG_BUSYBOX_DEFAULT_RUN_PARTS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY is not set
++CONFIG_BUSYBOX_DEFAULT_START_STOP_DAEMON=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_WHICH=y
++CONFIG_BUSYBOX_DEFAULT_AWK=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_LIBM=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS=y
++CONFIG_BUSYBOX_DEFAULT_CMP=y
++# CONFIG_BUSYBOX_DEFAULT_DIFF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DIFF_DIR is not set
++# CONFIG_BUSYBOX_DEFAULT_ED is not set
++# CONFIG_BUSYBOX_DEFAULT_PATCH is not set
++CONFIG_BUSYBOX_DEFAULT_SED=y
++CONFIG_BUSYBOX_DEFAULT_VI=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_MAX_LEN=1024
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_8BIT is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_COLON=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SEARCH=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_USE_SIGNALS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_DOT_CMD=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_READONLY=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SETOPTS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_SET=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE_MAX=0
++CONFIG_BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC=y
++CONFIG_BUSYBOX_DEFAULT_FIND=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRINT0=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MTIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MMIN is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PERM=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_TYPE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_XDEV=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_MAXDEPTH=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NEWER is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_INUM is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_EXEC_PLUS is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_USER=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_GROUP=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_NOT=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DEPTH=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PAREN=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_SIZE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PRUNE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_DELETE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_PATH=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_REGEX=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_CONTEXT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FIND_LINKS is not set
++CONFIG_BUSYBOX_DEFAULT_GREP=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_EGREP_ALIAS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_FGREP_ALIAS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_GREP_CONTEXT=y
++CONFIG_BUSYBOX_DEFAULT_XARGS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_CONFIRMATION=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_QUOTES=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_TERMOPT=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_REPL_STR is not set
++# CONFIG_BUSYBOX_DEFAULT_BOOTCHARTD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
++CONFIG_BUSYBOX_DEFAULT_HALT=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT is not set
++CONFIG_BUSYBOX_DEFAULT_TELINIT_PATH=""
++# CONFIG_BUSYBOX_DEFAULT_INIT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_USE_INITTAB is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_REMOVED is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_KILL_DELAY=0
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EXTRA_QUIET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INITRD is not set
++CONFIG_BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE=""
++# CONFIG_BUSYBOX_DEFAULT_MESG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP is not set
++# CONFIG_BUSYBOX_DEFAULT_ADD_SHELL is not set
++# CONFIG_BUSYBOX_DEFAULT_REMOVE_SHELL is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS=y
++# CONFIG_BUSYBOX_DEFAULT_USE_BB_PWD_GRP is not set
++# CONFIG_BUSYBOX_DEFAULT_USE_BB_SHADOW is not set
++# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT is not set
++# CONFIG_BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA is not set
++# CONFIG_BUSYBOX_DEFAULT_ADDUSER is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDUSER_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES is not set
++CONFIG_BUSYBOX_DEFAULT_LAST_ID=0
++CONFIG_BUSYBOX_DEFAULT_FIRST_SYSTEM_ID=0
++CONFIG_BUSYBOX_DEFAULT_LAST_SYSTEM_ID=0
++# CONFIG_BUSYBOX_DEFAULT_ADDGROUP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP is not set
++# CONFIG_BUSYBOX_DEFAULT_DELUSER is not set
++# CONFIG_BUSYBOX_DEFAULT_DELGROUP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEL_USER_FROM_GROUP is not set
++# CONFIG_BUSYBOX_DEFAULT_GETTY is not set
++# CONFIG_BUSYBOX_DEFAULT_LOGIN is not set
++# CONFIG_BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD is not set
++# CONFIG_BUSYBOX_DEFAULT_LOGIN_SCRIPTS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_NOLOGIN is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SECURETTY is not set
++CONFIG_BUSYBOX_DEFAULT_PASSWD=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK=y
++# CONFIG_BUSYBOX_DEFAULT_CRYPTPW is not set
++# CONFIG_BUSYBOX_DEFAULT_CHPASSWD is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO="md5"
++# CONFIG_BUSYBOX_DEFAULT_SU is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_SYSLOG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SU_CHECKS_SHELLS is not set
++# CONFIG_BUSYBOX_DEFAULT_SULOGIN is not set
++# CONFIG_BUSYBOX_DEFAULT_VLOCK is not set
++# CONFIG_BUSYBOX_DEFAULT_CHATTR is not set
++# CONFIG_BUSYBOX_DEFAULT_FSCK is not set
++# CONFIG_BUSYBOX_DEFAULT_LSATTR is not set
++# CONFIG_BUSYBOX_DEFAULT_TUNE2FS is not set
++# CONFIG_BUSYBOX_DEFAULT_MODINFO is not set
++# CONFIG_BUSYBOX_DEFAULT_MODPROBE_SMALL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
++# CONFIG_BUSYBOX_DEFAULT_INSMOD is not set
++# CONFIG_BUSYBOX_DEFAULT_RMMOD is not set
++# CONFIG_BUSYBOX_DEFAULT_LSMOD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT is not set
++# CONFIG_BUSYBOX_DEFAULT_MODPROBE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST is not set
++# CONFIG_BUSYBOX_DEFAULT_DEPMOD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_2_4_MODULES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOADINKMEM is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MODUTILS_SYMBOLS is not set
++CONFIG_BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR=""
++CONFIG_BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE=""
++# CONFIG_BUSYBOX_DEFAULT_BLOCKDEV is not set
++# CONFIG_BUSYBOX_DEFAULT_FATATTR is not set
++# CONFIG_BUSYBOX_DEFAULT_FSTRIM is not set
++# CONFIG_BUSYBOX_DEFAULT_MDEV is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_CONF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE is not set
++# CONFIG_BUSYBOX_DEFAULT_REV is not set
++# CONFIG_BUSYBOX_DEFAULT_ACPID is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ACPID_COMPAT is not set
++# CONFIG_BUSYBOX_DEFAULT_BLKID is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE is not set
++CONFIG_BUSYBOX_DEFAULT_DMESG=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY=y
++# CONFIG_BUSYBOX_DEFAULT_FBSET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE is not set
++# CONFIG_BUSYBOX_DEFAULT_FDFLUSH is not set
++# CONFIG_BUSYBOX_DEFAULT_FDFORMAT is not set
++# CONFIG_BUSYBOX_DEFAULT_FDISK is not set
++# CONFIG_BUSYBOX_DEFAULT_FDISK_SUPPORT_LARGE_DISKS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_WRITABLE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_AIX_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SGI_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SUN_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_OSF_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_GPT_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FDISK_ADVANCED is not set
++# CONFIG_BUSYBOX_DEFAULT_FINDFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FLOCK is not set
++# CONFIG_BUSYBOX_DEFAULT_FREERAMDISK is not set
++# CONFIG_BUSYBOX_DEFAULT_FSCK_MINIX is not set
++# CONFIG_BUSYBOX_DEFAULT_MKFS_EXT2 is not set
++# CONFIG_BUSYBOX_DEFAULT_MKFS_MINIX is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MINIX2 is not set
++# CONFIG_BUSYBOX_DEFAULT_MKFS_REISER is not set
++# CONFIG_BUSYBOX_DEFAULT_MKFS_VFAT is not set
++# CONFIG_BUSYBOX_DEFAULT_GETOPT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG is not set
++CONFIG_BUSYBOX_DEFAULT_HEXDUMP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE is not set
++# CONFIG_BUSYBOX_DEFAULT_HD is not set
++CONFIG_BUSYBOX_DEFAULT_HWCLOCK=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWCLOCK_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS is not set
++# CONFIG_BUSYBOX_DEFAULT_IPCRM is not set
++# CONFIG_BUSYBOX_DEFAULT_IPCS is not set
++# CONFIG_BUSYBOX_DEFAULT_LOSETUP is not set
++# CONFIG_BUSYBOX_DEFAULT_LSPCI is not set
++# CONFIG_BUSYBOX_DEFAULT_LSUSB is not set
++CONFIG_BUSYBOX_DEFAULT_MKSWAP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MKSWAP_UUID is not set
++# CONFIG_BUSYBOX_DEFAULT_MORE is not set
++CONFIG_BUSYBOX_DEFAULT_MOUNT=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_HELPERS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LABEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_CIFS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FLAGS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB=y
++CONFIG_BUSYBOX_DEFAULT_PIVOT_ROOT=y
++# CONFIG_BUSYBOX_DEFAULT_RDATE is not set
++# CONFIG_BUSYBOX_DEFAULT_RDEV is not set
++# CONFIG_BUSYBOX_DEFAULT_READPROFILE is not set
++# CONFIG_BUSYBOX_DEFAULT_RTCWAKE is not set
++# CONFIG_BUSYBOX_DEFAULT_SCRIPT is not set
++# CONFIG_BUSYBOX_DEFAULT_SCRIPTREPLAY is not set
++# CONFIG_BUSYBOX_DEFAULT_SETARCH is not set
++# CONFIG_BUSYBOX_DEFAULT_SWAPONOFF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_DISCARD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SWAPON_PRI is not set
++CONFIG_BUSYBOX_DEFAULT_SWITCH_ROOT=y
++CONFIG_BUSYBOX_DEFAULT_UMOUNT=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP_CREATE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MTAB_SUPPORT is not set
++# CONFIG_BUSYBOX_DEFAULT_VOLUMEID is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_BTRFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_CRAMFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_HFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ISO9660 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXSWAP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_OCFS2 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_REISERFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_ROMFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_VOLUMEID_XFS is not set
++# CONFIG_BUSYBOX_DEFAULT_CONSPY is not set
++CONFIG_BUSYBOX_DEFAULT_CROND=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_D is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_CROND_DIR="/etc"
++CONFIG_BUSYBOX_DEFAULT_LESS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MAXLINES=9999999
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_BRACKETS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_MARKS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_REGEXP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_WINCH is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_ASK_TERMINAL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_DASHCMD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS is not set
++# CONFIG_BUSYBOX_DEFAULT_NANDWRITE is not set
++# CONFIG_BUSYBOX_DEFAULT_NANDDUMP is not set
++# CONFIG_BUSYBOX_DEFAULT_RFKILL is not set
++# CONFIG_BUSYBOX_DEFAULT_SETSERIAL is not set
++# CONFIG_BUSYBOX_DEFAULT_TASKSET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIATTACH is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIDETACH is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIMKVOL is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIRMVOL is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIRSVOL is not set
++# CONFIG_BUSYBOX_DEFAULT_UBIUPDATEVOL is not set
++# CONFIG_BUSYBOX_DEFAULT_WALL is not set
++# CONFIG_BUSYBOX_DEFAULT_ADJTIMEX is not set
++# CONFIG_BUSYBOX_DEFAULT_BBCONFIG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_COMPRESS_BBCONFIG is not set
++# CONFIG_BUSYBOX_DEFAULT_BEEP is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_FREQ=0
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BEEP_LENGTH_MS=0
++# CONFIG_BUSYBOX_DEFAULT_CHAT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_NOFAIL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_TTY_HIFI is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_IMPLICIT_CR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SWALLOW_OPTS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_SEND_ESCAPES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT is not set
++# CONFIG_BUSYBOX_DEFAULT_CHRT is not set
++CONFIG_BUSYBOX_DEFAULT_CRONTAB=y
++# CONFIG_BUSYBOX_DEFAULT_DC is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DC_LIBM is not set
++# CONFIG_BUSYBOX_DEFAULT_DEVFSD is not set
++# CONFIG_BUSYBOX_DEFAULT_DEVFSD_MODLOAD is not set
++# CONFIG_BUSYBOX_DEFAULT_DEVFSD_FG_NP is not set
++# CONFIG_BUSYBOX_DEFAULT_DEVFSD_VERBOSE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_DEVFS is not set
++# CONFIG_BUSYBOX_DEFAULT_DEVMEM is not set
++# CONFIG_BUSYBOX_DEFAULT_EJECT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI is not set
++# CONFIG_BUSYBOX_DEFAULT_FBSPLASH is not set
++# CONFIG_BUSYBOX_DEFAULT_FLASHCP is not set
++# CONFIG_BUSYBOX_DEFAULT_FLASH_LOCK is not set
++# CONFIG_BUSYBOX_DEFAULT_FLASH_UNLOCK is not set
++# CONFIG_BUSYBOX_DEFAULT_FLASH_ERASEALL is not set
++# CONFIG_BUSYBOX_DEFAULT_IONICE is not set
++# CONFIG_BUSYBOX_DEFAULT_INOTIFYD is not set
++# CONFIG_BUSYBOX_DEFAULT_LAST is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LAST_SMALL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LAST_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_HDPARM is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_GET_IDENTITY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
++CONFIG_BUSYBOX_DEFAULT_LOCK=y
++# CONFIG_BUSYBOX_DEFAULT_MAKEDEVS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_LEAF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_MAKEDEVS_TABLE is not set
++# CONFIG_BUSYBOX_DEFAULT_MAN is not set
++# CONFIG_BUSYBOX_DEFAULT_MICROCOM is not set
++# CONFIG_BUSYBOX_DEFAULT_MOUNTPOINT is not set
++# CONFIG_BUSYBOX_DEFAULT_MT is not set
++# CONFIG_BUSYBOX_DEFAULT_RAIDAUTORUN is not set
++# CONFIG_BUSYBOX_DEFAULT_READAHEAD is not set
++# CONFIG_BUSYBOX_DEFAULT_RUNLEVEL is not set
++# CONFIG_BUSYBOX_DEFAULT_RX is not set
++# CONFIG_BUSYBOX_DEFAULT_SETSID is not set
++CONFIG_BUSYBOX_DEFAULT_STRINGS=y
++CONFIG_BUSYBOX_DEFAULT_TIME=y
++# CONFIG_BUSYBOX_DEFAULT_TIMEOUT is not set
++# CONFIG_BUSYBOX_DEFAULT_TTYSIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_VOLNAME is not set
++# CONFIG_BUSYBOX_DEFAULT_WATCHDOG is not set
++# CONFIG_BUSYBOX_DEFAULT_NAMEIF is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_NAMEIF_EXTENDED is not set
++# CONFIG_BUSYBOX_DEFAULT_NBDCLIENT is not set
++CONFIG_BUSYBOX_DEFAULT_NC=y
++# CONFIG_BUSYBOX_DEFAULT_NC_SERVER is not set
++# CONFIG_BUSYBOX_DEFAULT_NC_EXTRA is not set
++# CONFIG_BUSYBOX_DEFAULT_NC_110_COMPAT is not set
++CONFIG_BUSYBOX_DEFAULT_PING=y
++CONFIG_BUSYBOX_DEFAULT_PING6=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_FANCY_PING=y
++# CONFIG_BUSYBOX_DEFAULT_WHOIS is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IPV6=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UNIX_LOCAL is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PREFER_IPV4_ADDRESS=y
++CONFIG_BUSYBOX_DEFAULT_VERBOSE_RESOLUTION_ERRORS=y
++# CONFIG_BUSYBOX_DEFAULT_ARP is not set
++# CONFIG_BUSYBOX_DEFAULT_ARPING is not set
++CONFIG_BUSYBOX_DEFAULT_BRCTL=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_FANCY=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BRCTL_SHOW=y
++# CONFIG_BUSYBOX_DEFAULT_DNSD is not set
++# CONFIG_BUSYBOX_DEFAULT_ETHER_WAKE is not set
++# CONFIG_BUSYBOX_DEFAULT_FAKEIDENTD is not set
++# CONFIG_BUSYBOX_DEFAULT_FTPD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTP_WRITE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTP_AUTHENTICATION is not set
++# CONFIG_BUSYBOX_DEFAULT_FTPGET is not set
++# CONFIG_BUSYBOX_DEFAULT_FTPPUT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_HOSTNAME is not set
++# CONFIG_BUSYBOX_DEFAULT_HTTPD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_RANGES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SETUID is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CGI is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ENCODE_URL_STR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_ERROR_PAGES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP is not set
++CONFIG_BUSYBOX_DEFAULT_IFCONFIG=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_STATUS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_SLIP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_HW=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IFCONFIG_BROADCAST_PLUS=y
++# CONFIG_BUSYBOX_DEFAULT_IFENSLAVE is not set
++# CONFIG_BUSYBOX_DEFAULT_IFPLUGD is not set
++# CONFIG_BUSYBOX_DEFAULT_IFUPDOWN is not set
++CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_IFSTATE_PATH=""
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP_BUILTIN is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV4 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV6 is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_MAPPING is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
++# CONFIG_BUSYBOX_DEFAULT_INETD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_INETD_RPC is not set
++CONFIG_BUSYBOX_DEFAULT_IP=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ADDRESS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_LINK=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_ROUTE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_TUNNEL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RULE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_SHORT_FORMS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS is not set
++# CONFIG_BUSYBOX_DEFAULT_IPADDR is not set
++# CONFIG_BUSYBOX_DEFAULT_IPLINK is not set
++# CONFIG_BUSYBOX_DEFAULT_IPROUTE is not set
++# CONFIG_BUSYBOX_DEFAULT_IPTUNNEL is not set
++# CONFIG_BUSYBOX_DEFAULT_IPRULE is not set
++# CONFIG_BUSYBOX_DEFAULT_IPCALC is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPCALC_LONG_OPTIONS is not set
++CONFIG_BUSYBOX_DEFAULT_NETMSG=y
++CONFIG_BUSYBOX_DEFAULT_NETSTAT=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_WIDE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_NETSTAT_PRG=y
++CONFIG_BUSYBOX_DEFAULT_NSLOOKUP=y
++CONFIG_BUSYBOX_DEFAULT_NTPD=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_SERVER=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_NTPD_CONF is not set
++# CONFIG_BUSYBOX_DEFAULT_PSCAN is not set
++CONFIG_BUSYBOX_DEFAULT_ROUTE=y
++# CONFIG_BUSYBOX_DEFAULT_SLATTACH is not set
++# CONFIG_BUSYBOX_DEFAULT_TCPSVD is not set
++# CONFIG_BUSYBOX_DEFAULT_TELNET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN is not set
++# CONFIG_BUSYBOX_DEFAULT_TELNETD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT is not set
++# CONFIG_BUSYBOX_DEFAULT_TFTP is not set
++# CONFIG_BUSYBOX_DEFAULT_TFTPD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_GET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PUT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_BLOCKSIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR is not set
++# CONFIG_BUSYBOX_DEFAULT_TFTP_DEBUG is not set
++CONFIG_BUSYBOX_DEFAULT_TRACEROUTE=y
++CONFIG_BUSYBOX_DEFAULT_TRACEROUTE6=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_VERBOSE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_USE_ICMP is not set
++# CONFIG_BUSYBOX_DEFAULT_TUNCTL is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG is not set
++# CONFIG_BUSYBOX_DEFAULT_UDHCPC6 is not set
++# CONFIG_BUSYBOX_DEFAULT_UDHCPD is not set
++# CONFIG_BUSYBOX_DEFAULT_DHCPRELAY is not set
++# CONFIG_BUSYBOX_DEFAULT_DUMPLEASES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
++CONFIG_BUSYBOX_DEFAULT_DHCPD_LEASES_FILE=""
++CONFIG_BUSYBOX_DEFAULT_UDHCPC=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT is not set
++CONFIG_BUSYBOX_DEFAULT_UDHCP_DEBUG=0
++CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q is not set
++CONFIG_BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
++CONFIG_BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
++CONFIG_BUSYBOX_DEFAULT_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
++# CONFIG_BUSYBOX_DEFAULT_UDPSVD is not set
++# CONFIG_BUSYBOX_DEFAULT_VCONFIG is not set
++CONFIG_BUSYBOX_DEFAULT_WGET=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_STATUSBAR=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_LONG_OPTIONS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT is not set
++# CONFIG_BUSYBOX_DEFAULT_ZCIP is not set
++# CONFIG_BUSYBOX_DEFAULT_LPD is not set
++# CONFIG_BUSYBOX_DEFAULT_LPR is not set
++# CONFIG_BUSYBOX_DEFAULT_LPQ is not set
++# CONFIG_BUSYBOX_DEFAULT_MAKEMIME is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_MIME_CHARSET=""
++# CONFIG_BUSYBOX_DEFAULT_POPMAILDIR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_POPMAILDIR_DELIVERY is not set
++# CONFIG_BUSYBOX_DEFAULT_REFORMIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_REFORMIME_COMPAT is not set
++# CONFIG_BUSYBOX_DEFAULT_SENDMAIL is not set
++# CONFIG_BUSYBOX_DEFAULT_IOSTAT is not set
++# CONFIG_BUSYBOX_DEFAULT_LSOF is not set
++# CONFIG_BUSYBOX_DEFAULT_MPSTAT is not set
++# CONFIG_BUSYBOX_DEFAULT_NMETER is not set
++# CONFIG_BUSYBOX_DEFAULT_PMAP is not set
++# CONFIG_BUSYBOX_DEFAULT_POWERTOP is not set
++# CONFIG_BUSYBOX_DEFAULT_PSTREE is not set
++# CONFIG_BUSYBOX_DEFAULT_PWDX is not set
++# CONFIG_BUSYBOX_DEFAULT_SMEMCAP is not set
++CONFIG_BUSYBOX_DEFAULT_TOP=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_TOPMEM is not set
++CONFIG_BUSYBOX_DEFAULT_UPTIME=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_UPTIME_UTMP_SUPPORT is not set
++CONFIG_BUSYBOX_DEFAULT_FREE=y
++# CONFIG_BUSYBOX_DEFAULT_FUSER is not set
++CONFIG_BUSYBOX_DEFAULT_KILL=y
++CONFIG_BUSYBOX_DEFAULT_KILLALL=y
++# CONFIG_BUSYBOX_DEFAULT_KILLALL5 is not set
++CONFIG_BUSYBOX_DEFAULT_PGREP=y
++CONFIG_BUSYBOX_DEFAULT_PIDOF=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_SINGLE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PIDOF_OMIT is not set
++# CONFIG_BUSYBOX_DEFAULT_PKILL is not set
++CONFIG_BUSYBOX_DEFAULT_PS=y
++CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_WIDE=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_LONG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_TIME is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS is not set
++# CONFIG_BUSYBOX_DEFAULT_RENICE is not set
++CONFIG_BUSYBOX_DEFAULT_BB_SYSCTL=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS is not set
++# CONFIG_BUSYBOX_DEFAULT_WATCH is not set
++# CONFIG_BUSYBOX_DEFAULT_RUNSV is not set
++# CONFIG_BUSYBOX_DEFAULT_RUNSVDIR is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG is not set
++# CONFIG_BUSYBOX_DEFAULT_SV is not set
++CONFIG_BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR=""
++# CONFIG_BUSYBOX_DEFAULT_SVLOGD is not set
++# CONFIG_BUSYBOX_DEFAULT_CHPST is not set
++# CONFIG_BUSYBOX_DEFAULT_SETUIDGID is not set
++# CONFIG_BUSYBOX_DEFAULT_ENVUIDGID is not set
++# CONFIG_BUSYBOX_DEFAULT_ENVDIR is not set
++# CONFIG_BUSYBOX_DEFAULT_SOFTLIMIT is not set
++# CONFIG_BUSYBOX_DEFAULT_CHCON is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_CHCON_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_GETENFORCE is not set
++# CONFIG_BUSYBOX_DEFAULT_GETSEBOOL is not set
++# CONFIG_BUSYBOX_DEFAULT_LOAD_POLICY is not set
++# CONFIG_BUSYBOX_DEFAULT_MATCHPATHCON is not set
++# CONFIG_BUSYBOX_DEFAULT_RESTORECON is not set
++# CONFIG_BUSYBOX_DEFAULT_RUNCON is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_RUNCON_LONG_OPTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_SELINUXENABLED is not set
++# CONFIG_BUSYBOX_DEFAULT_SETENFORCE is not set
++# CONFIG_BUSYBOX_DEFAULT_SETFILES is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SETFILES_CHECK_OPTION is not set
++# CONFIG_BUSYBOX_DEFAULT_SETSEBOOL is not set
++# CONFIG_BUSYBOX_DEFAULT_SESTATUS is not set
++CONFIG_BUSYBOX_DEFAULT_ASH=y
++CONFIG_BUSYBOX_DEFAULT_ASH_BASH_COMPAT=y
++# CONFIG_BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT is not set
++CONFIG_BUSYBOX_DEFAULT_ASH_JOB_CONTROL=y
++CONFIG_BUSYBOX_DEFAULT_ASH_ALIAS=y
++CONFIG_BUSYBOX_DEFAULT_ASH_GETOPTS=y
++CONFIG_BUSYBOX_DEFAULT_ASH_BUILTIN_ECHO=y
++CONFIG_BUSYBOX_DEFAULT_ASH_BUILTIN_PRINTF=y
++CONFIG_BUSYBOX_DEFAULT_ASH_BUILTIN_TEST=y
++# CONFIG_BUSYBOX_DEFAULT_ASH_HELP is not set
++CONFIG_BUSYBOX_DEFAULT_ASH_CMDCMD=y
++# CONFIG_BUSYBOX_DEFAULT_ASH_MAIL is not set
++# CONFIG_BUSYBOX_DEFAULT_ASH_OPTIMIZE_FOR_SIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT is not set
++CONFIG_BUSYBOX_DEFAULT_ASH_EXPAND_PRMT=y
++# CONFIG_BUSYBOX_DEFAULT_CTTYHACK is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_BASH_COMPAT is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_HELP is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_INTERACTIVE is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_SAVEHISTORY is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_JOB is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_TICK is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_IF is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_LOOPS is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_CASE is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_FUNCTIONS is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_LOCAL is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_EXPORT_N is not set
++# CONFIG_BUSYBOX_DEFAULT_HUSH_MODE_X is not set
++# CONFIG_BUSYBOX_DEFAULT_MSH is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_IS_ASH=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_IS_HUSH is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_IS_NONE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BASH_IS_ASH is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_BASH_IS_HUSH is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_BASH_IS_NONE=y
++CONFIG_BUSYBOX_DEFAULT_SH_MATH_SUPPORT=y
++CONFIG_BUSYBOX_DEFAULT_SH_MATH_SUPPORT_64=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_NOFORK=y
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE is not set
++# CONFIG_BUSYBOX_DEFAULT_SYSLOGD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_ROTATE_LOGFILE is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_REMOTE_LOG is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG is not set
++CONFIG_BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
++# CONFIG_BUSYBOX_DEFAULT_LOGREAD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_KMSG_SYSLOG is not set
++# CONFIG_BUSYBOX_DEFAULT_KLOGD is not set
++# CONFIG_BUSYBOX_DEFAULT_FEATURE_KLOGD_KLOGCTL is not set
++CONFIG_BUSYBOX_DEFAULT_LOGGER=y
++# CONFIG_PACKAGE_ca-certificates is not set
++CONFIG_PACKAGE_dnsmasq=y
++# CONFIG_PACKAGE_dnsmasq-dhcpv6 is not set
++# CONFIG_PACKAGE_dnsmasq-full is not set
++CONFIG_PACKAGE_dropbear=y
++
++#
++# Configuration
++#
++# CONFIG_DROPBEAR_ECC is not set
++# CONFIG_PACKAGE_ead is not set
++CONFIG_PACKAGE_firewall=y
++CONFIG_PACKAGE_fstools=y
++CONFIG_PACKAGE_jsonfilter=y
++# CONFIG_PACKAGE_libatomic is not set
++CONFIG_PACKAGE_libc=y
++CONFIG_PACKAGE_libgcc=y
++CONFIG_PACKAGE_libpthread=y
++CONFIG_PACKAGE_librt=y
++# CONFIG_PACKAGE_libstdcpp is not set
++CONFIG_PACKAGE_mtd=y
++CONFIG_PACKAGE_netifd=y
++# CONFIG_PACKAGE_om-watchdog is not set
++CONFIG_PACKAGE_opkg=y
++# CONFIG_PACKAGE_opkg-smime is not set
++CONFIG_PACKAGE_procd=y
++
++#
++# Configuration
++#
++# CONFIG_PROCD_SHOW_BOOT is not set
++# CONFIG_PROCD_ZRAM_TMPFS is not set
++# CONFIG_PACKAGE_qos-scripts is not set
++# CONFIG_PACKAGE_resolveip is not set
++# CONFIG_PACKAGE_rpcd is not set
++CONFIG_PACKAGE_swconfig=y
++CONFIG_PACKAGE_ubox=y
++CONFIG_PACKAGE_ubus=y
++CONFIG_PACKAGE_ubusd=y
++CONFIG_PACKAGE_uci=y
++# CONFIG_PACKAGE_udev is not set
++CONFIG_PACKAGE_usign=y
++# CONFIG_PACKAGE_wireless-tools is not set
++# CONFIG_PACKAGE_zram-swap is not set
++
++#
++# Boot Loaders
++#
++
++#
++# Development
++#
++# CONFIG_PACKAGE_ar is not set
++# CONFIG_PACKAGE_binutils is not set
++# CONFIG_PACKAGE_gdb is not set
++# CONFIG_PACKAGE_gdbserver is not set
++# CONFIG_PACKAGE_objdump is not set
++# CONFIG_PACKAGE_trace-cmd is not set
++# CONFIG_PACKAGE_trace-cmd-extra is not set
++# CONFIG_PACKAGE_valgrind is not set
++
++#
++# Firmware
++#
++# CONFIG_PACKAGE_r8169-firmware is not set
++# CONFIG_PACKAGE_r8188eu-firmware is not set
++
++#
++# Kernel modules
++#
++
++#
++# Block Devices
++#
++# CONFIG_PACKAGE_kmod-aoe is not set
++# CONFIG_PACKAGE_kmod-block2mtd is not set
++# CONFIG_PACKAGE_kmod-dm is not set
++# CONFIG_PACKAGE_kmod-loop is not set
++# CONFIG_PACKAGE_kmod-md-mod is not set
++# CONFIG_PACKAGE_kmod-nbd is not set
++# CONFIG_PACKAGE_kmod-scsi-cdrom is not set
++# CONFIG_PACKAGE_kmod-scsi-core is not set
++# CONFIG_PACKAGE_kmod-scsi-generic is not set
++
++#
++# CAN Support
++#
++# CONFIG_PACKAGE_kmod-can is not set
++
++#
++# Cryptographic API modules
++#
++# CONFIG_PACKAGE_kmod-crypto-aead is not set
++# CONFIG_PACKAGE_kmod-crypto-authenc is not set
++# CONFIG_PACKAGE_kmod-crypto-cbc is not set
++# CONFIG_PACKAGE_kmod-crypto-ccm is not set
++# CONFIG_PACKAGE_kmod-crypto-cmac is not set
++# CONFIG_PACKAGE_kmod-crypto-crc32c is not set
++# CONFIG_PACKAGE_kmod-crypto-ctr is not set
++# CONFIG_PACKAGE_kmod-crypto-deflate is not set
++# CONFIG_PACKAGE_kmod-crypto-des is not set
++# CONFIG_PACKAGE_kmod-crypto-ecb is not set
++# CONFIG_PACKAGE_kmod-crypto-fcrypt is not set
++# CONFIG_PACKAGE_kmod-crypto-gcm is not set
++# CONFIG_PACKAGE_kmod-crypto-gf128 is not set
++# CONFIG_PACKAGE_kmod-crypto-ghash is not set
++# CONFIG_PACKAGE_kmod-crypto-hash is not set
++# CONFIG_PACKAGE_kmod-crypto-hmac is not set
++# CONFIG_PACKAGE_kmod-crypto-hw-geode is not set
++# CONFIG_PACKAGE_kmod-crypto-hw-hifn-795x is not set
++# CONFIG_PACKAGE_kmod-crypto-hw-padlock is not set
++# CONFIG_PACKAGE_kmod-crypto-hw-talitos is not set
++# CONFIG_PACKAGE_kmod-crypto-iv is not set
++# CONFIG_PACKAGE_kmod-crypto-manager is not set
++# CONFIG_PACKAGE_kmod-crypto-md4 is not set
++# CONFIG_PACKAGE_kmod-crypto-md5 is not set
++# CONFIG_PACKAGE_kmod-crypto-michael-mic is not set
++# CONFIG_PACKAGE_kmod-crypto-misc is not set
++# CONFIG_PACKAGE_kmod-crypto-null is not set
++# CONFIG_PACKAGE_kmod-crypto-ocf is not set
++# CONFIG_PACKAGE_kmod-crypto-pcbc is not set
++# CONFIG_PACKAGE_kmod-crypto-pcompress is not set
++# CONFIG_PACKAGE_kmod-crypto-rng is not set
++# CONFIG_PACKAGE_kmod-crypto-seqiv is not set
++# CONFIG_PACKAGE_kmod-crypto-sha1 is not set
++# CONFIG_PACKAGE_kmod-crypto-sha256 is not set
++# CONFIG_PACKAGE_kmod-crypto-test is not set
++# CONFIG_PACKAGE_kmod-crypto-user is not set
++# CONFIG_PACKAGE_kmod-crypto-wq is not set
++# CONFIG_PACKAGE_kmod-crypto-xts is not set
++
++#
++# Filesystems
++#
++# CONFIG_PACKAGE_kmod-fs-afs is not set
++# CONFIG_PACKAGE_kmod-fs-autofs4 is not set
++# CONFIG_PACKAGE_kmod-fs-btrfs is not set
++# CONFIG_PACKAGE_kmod-fs-cifs is not set
++# CONFIG_PACKAGE_kmod-fs-configfs is not set
++# CONFIG_PACKAGE_kmod-fs-cramfs is not set
++# CONFIG_PACKAGE_kmod-fs-exportfs is not set
++# CONFIG_PACKAGE_kmod-fs-ext4 is not set
++# CONFIG_PACKAGE_kmod-fs-f2fs is not set
++# CONFIG_PACKAGE_kmod-fs-fscache is not set
++# CONFIG_PACKAGE_kmod-fs-hfs is not set
++# CONFIG_PACKAGE_kmod-fs-hfsplus is not set
++# CONFIG_PACKAGE_kmod-fs-isofs is not set
++# CONFIG_PACKAGE_kmod-fs-jfs is not set
++# CONFIG_PACKAGE_kmod-fs-minix is not set
++# CONFIG_PACKAGE_kmod-fs-msdos is not set
++# CONFIG_PACKAGE_kmod-fs-nfs is not set
++# CONFIG_PACKAGE_kmod-fs-nfs-common is not set
++# CONFIG_PACKAGE_kmod-fs-nfsd is not set
++# CONFIG_PACKAGE_kmod-fs-ntfs is not set
++# CONFIG_PACKAGE_kmod-fs-reiserfs is not set
++# CONFIG_PACKAGE_kmod-fs-udf is not set
++# CONFIG_PACKAGE_kmod-fs-vfat is not set
++# CONFIG_PACKAGE_kmod-fs-xfs is not set
++# CONFIG_PACKAGE_kmod-fuse is not set
++
++#
++# FireWire support
++#
++
++#
++# Hardware Monitoring Support
++#
++# CONFIG_PACKAGE_kmod-hwmon-core is not set
++
++#
++# I2C support
++#
++# CONFIG_PACKAGE_kmod-i2c-core is not set
++# CONFIG_PACKAGE_kmod-i2c-gpio-custom is not set
++
++#
++# Input modules
++#
++# CONFIG_PACKAGE_kmod-hid is not set
++# CONFIG_PACKAGE_kmod-hid-generic is not set
++CONFIG_PACKAGE_kmod-input-core=y
++# CONFIG_PACKAGE_kmod-input-evdev is not set
++# CONFIG_PACKAGE_kmod-input-gpio-encoder is not set
++# CONFIG_PACKAGE_kmod-input-gpio-keys is not set
++# CONFIG_PACKAGE_kmod-input-gpio-keys-polled is not set
++# CONFIG_PACKAGE_kmod-input-joydev is not set
++# CONFIG_PACKAGE_kmod-input-matrixkmap is not set
++# CONFIG_PACKAGE_kmod-input-polldev is not set
++# CONFIG_PACKAGE_kmod-input-uinput is not set
++
++#
++# LED modules
++#
++CONFIG_PACKAGE_kmod-leds-gpio=y
++# CONFIG_PACKAGE_kmod-leds-pca963x is not set
++# CONFIG_PACKAGE_kmod-ledtrig-default-on is not set
++# CONFIG_PACKAGE_kmod-ledtrig-gpio is not set
++# CONFIG_PACKAGE_kmod-ledtrig-heartbeat is not set
++# CONFIG_PACKAGE_kmod-ledtrig-morse is not set
++# CONFIG_PACKAGE_kmod-ledtrig-netdev is not set
++# CONFIG_PACKAGE_kmod-ledtrig-netfilter is not set
++# CONFIG_PACKAGE_kmod-ledtrig-oneshot is not set
++# CONFIG_PACKAGE_kmod-ledtrig-timer is not set
++# CONFIG_PACKAGE_kmod-ledtrig-transient is not set
++# CONFIG_PACKAGE_kmod-ledtrig-usbdev is not set
++
++#
++# Libraries
++#
++# CONFIG_PACKAGE_kmod-lib-cordic is not set
++CONFIG_PACKAGE_kmod-lib-crc-ccitt=y
++CONFIG_PACKAGE_kmod-lib-crc-itu-t=y
++# CONFIG_PACKAGE_kmod-lib-crc16 is not set
++# CONFIG_PACKAGE_kmod-lib-crc32c is not set
++# CONFIG_PACKAGE_kmod-lib-crc7 is not set
++# CONFIG_PACKAGE_kmod-lib-crc8 is not set
++# CONFIG_PACKAGE_kmod-lib-lz4 is not set
++# CONFIG_PACKAGE_kmod-lib-lzo is not set
++# CONFIG_PACKAGE_kmod-lib-textsearch is not set
++# CONFIG_PACKAGE_kmod-lib-zlib is not set
++
++#
++# Native Language Support
++#
++CONFIG_PACKAGE_kmod-nls-base=y
++# CONFIG_PACKAGE_kmod-nls-cp1250 is not set
++# CONFIG_PACKAGE_kmod-nls-cp1251 is not set
++# CONFIG_PACKAGE_kmod-nls-cp437 is not set
++# CONFIG_PACKAGE_kmod-nls-cp775 is not set
++# CONFIG_PACKAGE_kmod-nls-cp850 is not set
++# CONFIG_PACKAGE_kmod-nls-cp852 is not set
++# CONFIG_PACKAGE_kmod-nls-cp862 is not set
++# CONFIG_PACKAGE_kmod-nls-cp864 is not set
++# CONFIG_PACKAGE_kmod-nls-cp866 is not set
++# CONFIG_PACKAGE_kmod-nls-cp932 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-1 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-13 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-15 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-2 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-6 is not set
++# CONFIG_PACKAGE_kmod-nls-iso8859-8 is not set
++# CONFIG_PACKAGE_kmod-nls-koi8r is not set
++# CONFIG_PACKAGE_kmod-nls-utf8 is not set
++
++#
++# Netfilter Extensions
++#
++# CONFIG_PACKAGE_kmod-arptables is not set
++# CONFIG_PACKAGE_kmod-ebtables is not set
++CONFIG_PACKAGE_kmod-ip6tables=y
++# CONFIG_PACKAGE_kmod-ip6tables-extra is not set
++# CONFIG_PACKAGE_kmod-ipt-account is not set
++# CONFIG_PACKAGE_kmod-ipt-chaos is not set
++# CONFIG_PACKAGE_kmod-ipt-cluster is not set
++# CONFIG_PACKAGE_kmod-ipt-clusterip is not set
++# CONFIG_PACKAGE_kmod-ipt-compat-xtables is not set
++# CONFIG_PACKAGE_kmod-ipt-condition is not set
++CONFIG_PACKAGE_kmod-ipt-conntrack=y
++# CONFIG_PACKAGE_kmod-ipt-conntrack-extra is not set
++CONFIG_PACKAGE_kmod-ipt-core=y
++# CONFIG_PACKAGE_kmod-ipt-debug is not set
++# CONFIG_PACKAGE_kmod-ipt-delude is not set
++# CONFIG_PACKAGE_kmod-ipt-dhcpmac is not set
++# CONFIG_PACKAGE_kmod-ipt-dnetmap is not set
++# CONFIG_PACKAGE_kmod-ipt-extra is not set
++# CONFIG_PACKAGE_kmod-ipt-filter is not set
++# CONFIG_PACKAGE_kmod-ipt-fuzzy is not set
++# CONFIG_PACKAGE_kmod-ipt-geoip is not set
++# CONFIG_PACKAGE_kmod-ipt-hashlimit is not set
++# CONFIG_PACKAGE_kmod-ipt-iface is not set
++# CONFIG_PACKAGE_kmod-ipt-ipmark is not set
++# CONFIG_PACKAGE_kmod-ipt-ipopt is not set
++# CONFIG_PACKAGE_kmod-ipt-ipp2p is not set
++# CONFIG_PACKAGE_kmod-ipt-iprange is not set
++# CONFIG_PACKAGE_kmod-ipt-ipsec is not set
++# CONFIG_PACKAGE_kmod-ipt-ipset is not set
++# CONFIG_PACKAGE_kmod-ipt-ipv4options is not set
++# CONFIG_PACKAGE_kmod-ipt-led is not set
++# CONFIG_PACKAGE_kmod-ipt-length2 is not set
++# CONFIG_PACKAGE_kmod-ipt-logmark is not set
++# CONFIG_PACKAGE_kmod-ipt-lscan is not set
++# CONFIG_PACKAGE_kmod-ipt-lua is not set
++CONFIG_PACKAGE_kmod-ipt-nat=y
++# CONFIG_PACKAGE_kmod-ipt-nat-extra is not set
++# CONFIG_PACKAGE_kmod-ipt-nat6 is not set
++# CONFIG_PACKAGE_kmod-ipt-nathelper-rtsp is not set
++# CONFIG_PACKAGE_kmod-ipt-nflog is not set
++# CONFIG_PACKAGE_kmod-ipt-nfqueue is not set
++# CONFIG_PACKAGE_kmod-ipt-psd is not set
++# CONFIG_PACKAGE_kmod-ipt-quota2 is not set
++# CONFIG_PACKAGE_kmod-ipt-sysrq is not set
++# CONFIG_PACKAGE_kmod-ipt-tarpit is not set
++# CONFIG_PACKAGE_kmod-ipt-tee is not set
++# CONFIG_PACKAGE_kmod-ipt-tproxy is not set
++# CONFIG_PACKAGE_kmod-ipt-u32 is not set
++# CONFIG_PACKAGE_kmod-ipt-ulog is not set
++CONFIG_PACKAGE_kmod-nf-conntrack=y
++# CONFIG_PACKAGE_kmod-nf-conntrack-netlink is not set
++CONFIG_PACKAGE_kmod-nf-conntrack6=y
++CONFIG_PACKAGE_kmod-nf-ipt=y
++CONFIG_PACKAGE_kmod-nf-ipt6=y
++CONFIG_PACKAGE_kmod-nf-nat=y
++# CONFIG_PACKAGE_kmod-nf-nat6 is not set
++CONFIG_PACKAGE_kmod-nf-nathelper=y
++# CONFIG_PACKAGE_kmod-nf-nathelper-extra is not set
++# CONFIG_PACKAGE_kmod-nfnetlink is not set
++# CONFIG_PACKAGE_kmod-nfnetlink-log is not set
++# CONFIG_PACKAGE_kmod-nfnetlink-queue is not set
++# CONFIG_PACKAGE_kmod-nft-core is not set
++# CONFIG_PACKAGE_kmod-nft-nat is not set
++# CONFIG_PACKAGE_kmod-nft-nat6 is not set
++
++#
++# Network Devices
++#
++# CONFIG_PACKAGE_kmod-dummy is not set
++# CONFIG_PACKAGE_kmod-gigaset is not set
++# CONFIG_PACKAGE_kmod-hfcmulti is not set
++# CONFIG_PACKAGE_kmod-hfcpci is not set
++# CONFIG_PACKAGE_kmod-ifb is not set
++# CONFIG_PACKAGE_kmod-libphy is not set
++# CONFIG_PACKAGE_kmod-macvlan is not set
++# CONFIG_PACKAGE_kmod-mii is not set
++# CONFIG_PACKAGE_kmod-of-mdio is not set
++# CONFIG_PACKAGE_kmod-phy-broadcom is not set
++# CONFIG_PACKAGE_kmod-spi-ks8995 is not set
++# CONFIG_PACKAGE_kmod-swconfig is not set
++# CONFIG_PACKAGE_kmod-switch-ip17xx is not set
++# CONFIG_PACKAGE_kmod-switch-rtl8366-smi is not set
++# CONFIG_PACKAGE_kmod-switch-rtl8366rb is not set
++# CONFIG_PACKAGE_kmod-switch-rtl8366s is not set
++# CONFIG_PACKAGE_kmod-tg3 is not set
++
++#
++# Network Support
++#
++# CONFIG_PACKAGE_kmod-8021q is not set
++# CONFIG_PACKAGE_kmod-appletalk is not set
++# CONFIG_PACKAGE_kmod-atm is not set
++# CONFIG_PACKAGE_kmod-ax25 is not set
++# CONFIG_PACKAGE_kmod-bonding is not set
++# CONFIG_PACKAGE_kmod-bridge is not set
++# CONFIG_PACKAGE_kmod-capi is not set
++# CONFIG_PACKAGE_kmod-dnsresolver is not set
++# CONFIG_PACKAGE_kmod-gre is not set
++# CONFIG_PACKAGE_kmod-gre6 is not set
++# CONFIG_PACKAGE_kmod-ip6-tunnel is not set
++# CONFIG_PACKAGE_kmod-ipip is not set
++# CONFIG_PACKAGE_kmod-ipsec is not set
++# CONFIG_PACKAGE_kmod-iptunnel6 is not set
++CONFIG_PACKAGE_kmod-ipv6=y
++# CONFIG_PACKAGE_kmod-isdn4linux is not set
++# CONFIG_PACKAGE_kmod-l2tp is not set
++# CONFIG_PACKAGE_kmod-l2tp-eth is not set
++# CONFIG_PACKAGE_kmod-l2tp-ip is not set
++# CONFIG_PACKAGE_kmod-llc is not set
++# CONFIG_PACKAGE_kmod-misdn is not set
++# CONFIG_PACKAGE_kmod-netem is not set
++# CONFIG_PACKAGE_kmod-pktgen is not set
++CONFIG_PACKAGE_kmod-ppp=y
++# CONFIG_PACKAGE_kmod-mppe is not set
++# CONFIG_PACKAGE_kmod-ppp-synctty is not set
++# CONFIG_PACKAGE_kmod-pppoa is not set
++CONFIG_PACKAGE_kmod-pppoe=y
++# CONFIG_PACKAGE_kmod-pppol2tp is not set
++CONFIG_PACKAGE_kmod-pppox=y
++# CONFIG_PACKAGE_kmod-pptp is not set
++# CONFIG_PACKAGE_kmod-rxrpc is not set
++# CONFIG_PACKAGE_kmod-sched is not set
++# CONFIG_PACKAGE_kmod-sched-connmark is not set
++# CONFIG_PACKAGE_kmod-sched-core is not set
++# CONFIG_PACKAGE_kmod-sched-esfq is not set
++# CONFIG_PACKAGE_kmod-sctp is not set
++# CONFIG_PACKAGE_kmod-sit is not set
++CONFIG_PACKAGE_kmod-slhc=y
++# CONFIG_PACKAGE_kmod-slip is not set
++# CONFIG_PACKAGE_kmod-stp is not set
++# CONFIG_PACKAGE_kmod-trelay is not set
++# CONFIG_PACKAGE_kmod-tun is not set
++# CONFIG_PACKAGE_kmod-udptunnel4 is not set
++# CONFIG_PACKAGE_kmod-udptunnel6 is not set
++# CONFIG_PACKAGE_kmod-veth is not set
++# CONFIG_PACKAGE_kmod-vxlan is not set
++
++#
++# Other modules
++#
++# CONFIG_PACKAGE_kmod-6lowpan is not set
++# CONFIG_PACKAGE_kmod-bluetooth is not set
++# CONFIG_PACKAGE_kmod-bluetooth_6lowpan is not set
++# CONFIG_PACKAGE_kmod-button-hotplug is not set
++# CONFIG_PACKAGE_kmod-echo is not set
++CONFIG_PACKAGE_kmod-eeprom-93cx6=y
++# CONFIG_PACKAGE_kmod-eeprom-at24 is not set
++# CONFIG_PACKAGE_kmod-eeprom-at25 is not set
++# CONFIG_PACKAGE_kmod-gpio-beeper is not set
++CONFIG_PACKAGE_kmod-gpio-button-hotplug=y
++# CONFIG_PACKAGE_kmod-gpio-dev is not set
++# CONFIG_PACKAGE_kmod-gpio-mcp23s08 is not set
++# CONFIG_PACKAGE_kmod-gpio-nxp-74hc164 is not set
++# CONFIG_PACKAGE_kmod-gpio-pca953x is not set
++# CONFIG_PACKAGE_kmod-gpio-pcf857x is not set
++# CONFIG_PACKAGE_kmod-iio-core is not set
++# CONFIG_PACKAGE_kmod-ikconfig is not set
++# CONFIG_PACKAGE_kmod-lp is not set
++# CONFIG_PACKAGE_kmod-mmc is not set
++# CONFIG_PACKAGE_kmod-mmc-over-gpio is not set
++# CONFIG_PACKAGE_kmod-mtdtests is not set
++# CONFIG_PACKAGE_kmod-pps is not set
++# CONFIG_PACKAGE_kmod-pps-gpio is not set
++# CONFIG_PACKAGE_kmod-ptp is not set
++# CONFIG_PACKAGE_kmod-random-core is not set
++# CONFIG_PACKAGE_kmod-regmap is not set
++# CONFIG_PACKAGE_kmod-rotary-gpio-custom is not set
++# CONFIG_PACKAGE_kmod-sdhci is not set
++# CONFIG_PACKAGE_kmod-serial-8250 is not set
++# CONFIG_PACKAGE_kmod-softdog is not set
++# CONFIG_PACKAGE_kmod-zram is not set
++
++#
++# PCMCIA support
++#
++
++#
++# SPI Support
++#
++# CONFIG_PACKAGE_kmod-mmc-spi is not set
++# CONFIG_PACKAGE_kmod-spi-bitbang is not set
++# CONFIG_PACKAGE_kmod-spi-dev is not set
++# CONFIG_PACKAGE_kmod-spi-gpio is not set
++# CONFIG_PACKAGE_kmod-spi-gpio-custom is not set
++# CONFIG_PACKAGE_kmod-spi-gpio-old is not set
++
++#
++# Sound Support
++#
++# CONFIG_PACKAGE_kmod-sound-core is not set
++
++#
++# USB Support
++#
++# CONFIG_PACKAGE_kmod-usb-acm is not set
++# CONFIG_PACKAGE_kmod-usb-atm is not set
++# CONFIG_PACKAGE_kmod-usb-cm109 is not set
++CONFIG_PACKAGE_kmod-usb-core=y
++# CONFIG_PACKAGE_kmod-usb-dwc2 is not set
++# CONFIG_PACKAGE_kmod-usb-dwc3 is not set
++# CONFIG_PACKAGE_kmod-usb-hid is not set
++# CONFIG_PACKAGE_kmod-usb-net is not set
++CONFIG_PACKAGE_kmod-usb-ohci=y
++# CONFIG_PACKAGE_kmod-usb-printer is not set
++# CONFIG_PACKAGE_kmod-usb-serial is not set
++# CONFIG_PACKAGE_kmod-usb-storage is not set
++# CONFIG_PACKAGE_kmod-usb-storage-extras is not set
++# CONFIG_PACKAGE_kmod-usb-uhci is not set
++# CONFIG_PACKAGE_kmod-usb-wdm is not set
++# CONFIG_PACKAGE_kmod-usb-yealink is not set
++# CONFIG_PACKAGE_kmod-usb2 is not set
++# CONFIG_PACKAGE_kmod-usb3 is not set
++# CONFIG_PACKAGE_kmod-usbip is not set
++# CONFIG_PACKAGE_kmod-usbip-client is not set
++# CONFIG_PACKAGE_kmod-usbip-server is not set
++# CONFIG_PACKAGE_kmod-usbmon is not set
++
++#
++# Video Support
++#
++CONFIG_PACKAGE_kmod-video-core=y
++# CONFIG_PACKAGE_kmod-video-cpia2 is not set
++# CONFIG_PACKAGE_kmod-video-gspca-core is not set
++# CONFIG_PACKAGE_kmod-video-pwc is not set
++CONFIG_PACKAGE_kmod-video-uvc=y
++CONFIG_PACKAGE_kmod-video-videobuf2=y
++
++#
++# Virtualization Support
++#
++
++#
++# Voice over IP
++#
++
++#
++# W1 support
++#
++# CONFIG_PACKAGE_kmod-w1 is not set
++
++#
++# WPAN 802.15.4 Support
++#
++
++#
++# Wireless Drivers
++#
++# CONFIG_PACKAGE_kmod-ath is not set
++# CONFIG_PACKAGE_kmod-ath9k-common is not set
++# CONFIG_PACKAGE_kmod-ath9k-htc is not set
++# CONFIG_PACKAGE_kmod-brcmfmac is not set
++# CONFIG_PACKAGE_kmod-brcmutil is not set
++# CONFIG_PACKAGE_kmod-carl9170 is not set
++CONFIG_PACKAGE_kmod-cfg80211=y
++# CONFIG_PACKAGE_kmod-lib80211 is not set
++# CONFIG_PACKAGE_kmod-libertas-sdio is not set
++# CONFIG_PACKAGE_kmod-libertas-usb is not set
++CONFIG_PACKAGE_kmod-mac80211=y
++CONFIG_PACKAGE_MAC80211_DEBUGFS=y
++CONFIG_PACKAGE_MAC80211_MESH=y
++# CONFIG_PACKAGE_kmod-mac80211-hwsim is not set
++# CONFIG_PACKAGE_kmod-mt7601u is not set
++# CONFIG_PACKAGE_kmod-net-rtl8188eu is not set
++# CONFIG_PACKAGE_kmod-net-rtl8192su is not set
++# CONFIG_PACKAGE_kmod-p54-common is not set
++# CONFIG_PACKAGE_kmod-p54-usb is not set
++# CONFIG_PACKAGE_kmod-rt2500-usb is not set
++CONFIG_PACKAGE_kmod-rt2800-lib=y
++CONFIG_PACKAGE_kmod-rt2800-mmio=y
++CONFIG_PACKAGE_kmod-rt2800-soc=y
++# CONFIG_PACKAGE_kmod-rt2800-usb is not set
++CONFIG_PACKAGE_kmod-rt2x00-lib=y
++# CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS is not set
++# CONFIG_PACKAGE_RT2X00_DEBUG is not set
++CONFIG_PACKAGE_kmod-rt2x00-mmio=y
++# CONFIG_PACKAGE_kmod-rt73-usb is not set
++# CONFIG_PACKAGE_kmod-rtl8187 is not set
++# CONFIG_PACKAGE_kmod-rtl8192cu is not set
++# CONFIG_PACKAGE_kmod-zd1211rw is not set
++
++#
++# Languages
++#
++
++#
++# Lua
++#
++# CONFIG_PACKAGE_libiwinfo-lua is not set
++# CONFIG_PACKAGE_lua is not set
++# CONFIG_PACKAGE_luac is not set
++
++#
++# Libraries
++#
++
++#
++# Compression
++#
++# CONFIG_PACKAGE_libbz2 is not set
++
++#
++# Filesystem
++#
++# CONFIG_PACKAGE_libext2fs is not set
++# CONFIG_PACKAGE_libfuse is not set
++# CONFIG_PACKAGE_libsysfs is not set
++
++#
++# Firewall
++#
++CONFIG_PACKAGE_libip4tc=y
++CONFIG_PACKAGE_libip6tc=y
++# CONFIG_PACKAGE_libiptc is not set
++CONFIG_PACKAGE_libxtables=y
++
++#
++# SSL
++#
++# CONFIG_PACKAGE_libcyassl is not set
++# CONFIG_PACKAGE_libmbedtls is not set
++# CONFIG_PACKAGE_libopenssl is not set
++# CONFIG_PACKAGE_libpolarssl is not set
++# CONFIG_PACKAGE_argp-standalone is not set
++# CONFIG_PACKAGE_libblkid is not set
++CONFIG_PACKAGE_libblobmsg-json=y
++# CONFIG_PACKAGE_libcharset is not set
++# CONFIG_PACKAGE_libconfig is not set
++# CONFIG_PACKAGE_libelf1 is not set
++# CONFIG_PACKAGE_libbfd is not set
++# CONFIG_PACKAGE_libcurl is not set
++# CONFIG_PACKAGE_libevent2 is not set
++# CONFIG_PACKAGE_libevent2-core is not set
++# CONFIG_PACKAGE_libevent2-extra is not set
++# CONFIG_PACKAGE_libevent2-openssl is not set
++# CONFIG_PACKAGE_libevent2-pthreads is not set
++# CONFIG_PACKAGE_libgmp is not set
++# CONFIG_PACKAGE_libiconv is not set
++# CONFIG_PACKAGE_libiconv-full is not set
++# CONFIG_PACKAGE_libintl is not set
++# CONFIG_PACKAGE_libintl-full is not set
++# CONFIG_PACKAGE_libiw is not set
++CONFIG_PACKAGE_libiwinfo=y
++CONFIG_PACKAGE_libjpeg=y
++CONFIG_PACKAGE_libjson-c=y
++# CONFIG_PACKAGE_libltdl is not set
++# CONFIG_PACKAGE_liblua is not set
++# CONFIG_PACKAGE_liblzo is not set
++# CONFIG_PACKAGE_libmnl is not set
++# CONFIG_PACKAGE_libmount is not set
++# CONFIG_PACKAGE_libncurses is not set
++# CONFIG_PACKAGE_libncursesw is not set
++# CONFIG_PACKAGE_libnetfilter-conntrack is not set
++# CONFIG_PACKAGE_libnetfilter-cthelper is not set
++# CONFIG_PACKAGE_libnetfilter-cttimeout is not set
++# CONFIG_PACKAGE_libnetfilter-log is not set
++# CONFIG_PACKAGE_libnetfilter-queue is not set
++# CONFIG_PACKAGE_libnettle is not set
++# CONFIG_PACKAGE_libnfnetlink is not set
++# CONFIG_PACKAGE_libnftnl is not set
++# CONFIG_PACKAGE_libnl is not set
++# CONFIG_PACKAGE_libnl-core is not set
++# CONFIG_PACKAGE_libnl-genl is not set
++# CONFIG_PACKAGE_libnl-nf is not set
++# CONFIG_PACKAGE_libnl-route is not set
++CONFIG_PACKAGE_libnl-tiny=y
++# CONFIG_PACKAGE_libopcodes is not set
++# CONFIG_PACKAGE_libpcap is not set
++# CONFIG_PACKAGE_libpopt is not set
++# CONFIG_PACKAGE_libreadline is not set
++# CONFIG_PACKAGE_libroxml is not set
++# CONFIG_PACKAGE_librpc is not set
++# CONFIG_PACKAGE_libsmartcols is not set
++# CONFIG_PACKAGE_libsocks is not set
++CONFIG_PACKAGE_libubox=y
++# CONFIG_PACKAGE_libubox-lua is not set
++CONFIG_PACKAGE_libubus=y
++# CONFIG_PACKAGE_libubus-lua is not set
++CONFIG_PACKAGE_libuci=y
++# CONFIG_PACKAGE_libuci-lua is not set
++# CONFIG_PACKAGE_libuclient is not set
++# CONFIG_PACKAGE_libusb-1.0 is not set
++# CONFIG_PACKAGE_libusb-compat is not set
++# CONFIG_PACKAGE_libustream-cyassl is not set
++# CONFIG_PACKAGE_libustream-openssl is not set
++# CONFIG_PACKAGE_libustream-polarssl is not set
++# CONFIG_PACKAGE_libuuid is not set
++CONFIG_PACKAGE_libv4l=y
++# CONFIG_PACKAGE_linux-atm is not set
++# CONFIG_PACKAGE_terminfo is not set
++CONFIG_PACKAGE_uclibcxx=y
++# CONFIG_PACKAGE_zlib is not set
++
++#
++# Multimedia
++#
++CONFIG_PACKAGE_mjpg-streamer=y
++CONFIG_MJPG_STREAMER_V4L2=y
++# CONFIG_MJPG_STREAMER_INPUT_FILE is not set
++CONFIG_MJPG_STREAMER_INPUT_UVC=y
++# CONFIG_MJPG_STREAMER_INPUT_TESTPICTURE is not set
++# CONFIG_MJPG_STREAMER_OUTPUT_FILE is not set
++CONFIG_MJPG_STREAMER_OUTPUT_HTTP=y
++CONFIG_MJPG_STREAMER_WWW=y
++
++#
++# Network
++#
++
++#
++# File Transfer
++#
++# CONFIG_PACKAGE_curl is not set
++
++#
++# Firewall
++#
++# CONFIG_PACKAGE_arptables is not set
++# CONFIG_PACKAGE_conntrack-tools is not set
++# CONFIG_PACKAGE_ebtables is not set
++CONFIG_PACKAGE_ip6tables=y
++# CONFIG_PACKAGE_ip6tables-extra is not set
++# CONFIG_PACKAGE_ip6tables-mod-nat is not set
++CONFIG_PACKAGE_iptables=y
++# CONFIG_PACKAGE_iptables-mod-account is not set
++# CONFIG_PACKAGE_iptables-mod-chaos is not set
++# CONFIG_PACKAGE_iptables-mod-cluster is not set
++# CONFIG_PACKAGE_iptables-mod-clusterip is not set
++# CONFIG_PACKAGE_iptables-mod-condition is not set
++# CONFIG_PACKAGE_iptables-mod-conntrack-extra is not set
++# CONFIG_PACKAGE_iptables-mod-delude is not set
++# CONFIG_PACKAGE_iptables-mod-dhcpmac is not set
++# CONFIG_PACKAGE_iptables-mod-dnetmap is not set
++# CONFIG_PACKAGE_iptables-mod-extra is not set
++# CONFIG_PACKAGE_iptables-mod-filter is not set
++# CONFIG_PACKAGE_iptables-mod-fuzzy is not set
++# CONFIG_PACKAGE_iptables-mod-geoip is not set
++# CONFIG_PACKAGE_iptables-mod-hashlimit is not set
++# CONFIG_PACKAGE_iptables-mod-iface is not set
++# CONFIG_PACKAGE_iptables-mod-ipmark is not set
++# CONFIG_PACKAGE_iptables-mod-ipopt is not set
++# CONFIG_PACKAGE_iptables-mod-ipp2p is not set
++# CONFIG_PACKAGE_iptables-mod-iprange is not set
++# CONFIG_PACKAGE_iptables-mod-ipsec is not set
++# CONFIG_PACKAGE_iptables-mod-ipv4options is not set
++# CONFIG_PACKAGE_iptables-mod-led is not set
++# CONFIG_PACKAGE_iptables-mod-length2 is not set
++# CONFIG_PACKAGE_iptables-mod-logmark is not set
++# CONFIG_PACKAGE_iptables-mod-lscan is not set
++# CONFIG_PACKAGE_iptables-mod-lua is not set
++# CONFIG_PACKAGE_iptables-mod-nat-extra is not set
++# CONFIG_PACKAGE_iptables-mod-nflog is not set
++# CONFIG_PACKAGE_iptables-mod-nfqueue is not set
++# CONFIG_PACKAGE_iptables-mod-psd is not set
++# CONFIG_PACKAGE_iptables-mod-quota2 is not set
++# CONFIG_PACKAGE_iptables-mod-sysrq is not set
++# CONFIG_PACKAGE_iptables-mod-tarpit is not set
++# CONFIG_PACKAGE_iptables-mod-tee is not set
++# CONFIG_PACKAGE_iptables-mod-tproxy is not set
++# CONFIG_PACKAGE_iptables-mod-u32 is not set
++# CONFIG_PACKAGE_iptables-mod-ulog is not set
++# CONFIG_PACKAGE_iptaccount is not set
++# CONFIG_PACKAGE_nftables is not set
++
++#
++# Linux ATM tools
++#
++# CONFIG_PACKAGE_atm-aread is not set
++# CONFIG_PACKAGE_atm-atmaddr is not set
++# CONFIG_PACKAGE_atm-atmdiag is not set
++# CONFIG_PACKAGE_atm-atmdump is not set
++# CONFIG_PACKAGE_atm-atmloop is not set
++# CONFIG_PACKAGE_atm-atmsigd is not set
++# CONFIG_PACKAGE_atm-atmswitch is not set
++# CONFIG_PACKAGE_atm-atmtcp is not set
++# CONFIG_PACKAGE_atm-awrite is not set
++# CONFIG_PACKAGE_atm-bus is not set
++# CONFIG_PACKAGE_atm-debug-tools is not set
++# CONFIG_PACKAGE_atm-diagnostics is not set
++# CONFIG_PACKAGE_atm-esi is not set
++# CONFIG_PACKAGE_atm-ilmid is not set
++# CONFIG_PACKAGE_atm-ilmidiag is not set
++# CONFIG_PACKAGE_atm-lecs is not set
++# CONFIG_PACKAGE_atm-les is not set
++# CONFIG_PACKAGE_atm-mpcd is not set
++# CONFIG_PACKAGE_atm-saaldump is not set
++# CONFIG_PACKAGE_atm-sonetdiag is not set
++# CONFIG_PACKAGE_atm-svc_recv is not set
++# CONFIG_PACKAGE_atm-svc_send is not set
++# CONFIG_PACKAGE_atm-tools is not set
++# CONFIG_PACKAGE_atm-ttcp_atm is not set
++# CONFIG_PACKAGE_atm-zeppelin is not set
++# CONFIG_PACKAGE_br2684ctl is not set
++
++#
++# Routing and Redirection
++#
++# CONFIG_PACKAGE_genl is not set
++# CONFIG_PACKAGE_igmpproxy is not set
++# CONFIG_PACKAGE_ip is not set
++# CONFIG_PACKAGE_ip-bridge is not set
++# CONFIG_PACKAGE_ip-full is not set
++# CONFIG_PACKAGE_lldpd is not set
++# CONFIG_PACKAGE_relayd is not set
++# CONFIG_PACKAGE_ss is not set
++# CONFIG_PACKAGE_tc is not set
++
++#
++# THC-IPv6 attack and analyzing toolkit
++#
++# CONFIG_PACKAGE_thc-ipv6-address6 is not set
++# CONFIG_PACKAGE_thc-ipv6-alive6 is not set
++# CONFIG_PACKAGE_thc-ipv6-covert-send6 is not set
++# CONFIG_PACKAGE_thc-ipv6-covert-send6d is not set
++# CONFIG_PACKAGE_thc-ipv6-denial6 is not set
++# CONFIG_PACKAGE_thc-ipv6-detect-new-ip6 is not set
++# CONFIG_PACKAGE_thc-ipv6-detect-sniffer6 is not set
++# CONFIG_PACKAGE_thc-ipv6-dnsdict6 is not set
++# CONFIG_PACKAGE_thc-ipv6-dnsrevenum6 is not set
++# CONFIG_PACKAGE_thc-ipv6-dos-new-ip6 is not set
++# CONFIG_PACKAGE_thc-ipv6-dump-router6 is not set
++# CONFIG_PACKAGE_thc-ipv6-exploit6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-advertise6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-dhcps6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-dns6d is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-dnsupdate6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-mipv6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-mld26 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-mld6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-mldrouter6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-router26 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-router6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fake-solicitate6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-advertise6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-dhcpc6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-mld26 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-mld6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-mldrouter6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-router26 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-router6 is not set
++# CONFIG_PACKAGE_thc-ipv6-flood-solicitate6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fragmentation6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fuzz-dhcpc6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fuzz-dhcps6 is not set
++# CONFIG_PACKAGE_thc-ipv6-fuzz-ip6 is not set
++# CONFIG_PACKAGE_thc-ipv6-implementation6 is not set
++# CONFIG_PACKAGE_thc-ipv6-implementation6d is not set
++# CONFIG_PACKAGE_thc-ipv6-inverse-lookup6 is not set
++# CONFIG_PACKAGE_thc-ipv6-kill-router6 is not set
++# CONFIG_PACKAGE_thc-ipv6-ndpexhaust6 is not set
++# CONFIG_PACKAGE_thc-ipv6-node-query6 is not set
++# CONFIG_PACKAGE_thc-ipv6-parasite6 is not set
++# CONFIG_PACKAGE_thc-ipv6-passive-discovery6 is not set
++# CONFIG_PACKAGE_thc-ipv6-randicmp6 is not set
++# CONFIG_PACKAGE_thc-ipv6-redir6 is not set
++# CONFIG_PACKAGE_thc-ipv6-rsmurf6 is not set
++# CONFIG_PACKAGE_thc-ipv6-sendpees6 is not set
++# CONFIG_PACKAGE_thc-ipv6-sendpeesmp6 is not set
++# CONFIG_PACKAGE_thc-ipv6-smurf6 is not set
++# CONFIG_PACKAGE_thc-ipv6-thcping6 is not set
++# CONFIG_PACKAGE_thc-ipv6-toobig6 is not set
++# CONFIG_PACKAGE_thc-ipv6-trace6 is not set
++
++#
++# VPN
++#
++# CONFIG_PACKAGE_openvpn-easy-rsa is not set
++# CONFIG_PACKAGE_openvpn-nossl is not set
++# CONFIG_PACKAGE_openvpn-openssl is not set
++# CONFIG_PACKAGE_openvpn-polarssl is not set
++
++#
++# Web Servers/Proxies
++#
++# CONFIG_PACKAGE_sockd is not set
++# CONFIG_PACKAGE_socksify is not set
++# CONFIG_PACKAGE_uhttpd is not set
++# CONFIG_PACKAGE_uhttpd_debug is not set
++# CONFIG_PACKAGE_6in4 is not set
++# CONFIG_PACKAGE_6rd is not set
++# CONFIG_PACKAGE_6to4 is not set
++# CONFIG_PACKAGE_authsae is not set
++# CONFIG_PACKAGE_chat is not set
++# CONFIG_PACKAGE_ds-lite is not set
++# CONFIG_PACKAGE_eapol-test is not set
++# CONFIG_PACKAGE_gre is not set
++# CONFIG_PACKAGE_hostapd is not set
++CONFIG_PACKAGE_hostapd-common=y
++# CONFIG_PACKAGE_hostapd-common-old is not set
++# CONFIG_PACKAGE_hostapd-mini is not set
++# CONFIG_PACKAGE_hostapd-utils is not set
++# CONFIG_PACKAGE_iftop is not set
++# CONFIG_PACKAGE_iperf is not set
++# CONFIG_PACKAGE_iperf-mt is not set
++# CONFIG_PACKAGE_iperf3 is not set
++# CONFIG_PACKAGE_ipip is not set
++# CONFIG_PACKAGE_ipset is not set
++# CONFIG_PACKAGE_ipset-dns is not set
++# CONFIG_PACKAGE_iputils-arping is not set
++# CONFIG_PACKAGE_iputils-clockdiff is not set
++# CONFIG_PACKAGE_iputils-ping is not set
++# CONFIG_PACKAGE_iputils-ping6 is not set
++# CONFIG_PACKAGE_iputils-tftpd is not set
++# CONFIG_PACKAGE_iputils-tracepath is not set
++# CONFIG_PACKAGE_iputils-tracepath6 is not set
++# CONFIG_PACKAGE_iputils-traceroute6 is not set
++CONFIG_PACKAGE_iw=y
++# CONFIG_PACKAGE_map is not set
++# CONFIG_PACKAGE_mdns is not set
++CONFIG_PACKAGE_odhcp6c=y
++CONFIG_PACKAGE_odhcp6c_ext_cer_id=0
++CONFIG_PACKAGE_odhcpd=y
++CONFIG_PACKAGE_odhcpd_ext_cer_id=0
++# CONFIG_PACKAGE_omcproxy is not set
++CONFIG_PACKAGE_ppp=y
++# CONFIG_PACKAGE_ppp-mod-pppoa is not set
++CONFIG_PACKAGE_ppp-mod-pppoe=y
++# CONFIG_PACKAGE_ppp-mod-pppol2tp is not set
++# CONFIG_PACKAGE_ppp-mod-pptp is not set
++# CONFIG_PACKAGE_ppp-mod-radius is not set
++# CONFIG_PACKAGE_ppp-multilink is not set
++# CONFIG_PACKAGE_pppdump is not set
++# CONFIG_PACKAGE_pppstats is not set
++# CONFIG_PACKAGE_rssileds is not set
++# CONFIG_PACKAGE_samba36-client is not set
++# CONFIG_PACKAGE_samba36-server is not set
++# CONFIG_PACKAGE_tcpdump is not set
++# CONFIG_PACKAGE_tcpdump-mini is not set
++# CONFIG_PACKAGE_uclient-fetch is not set
++# CONFIG_PACKAGE_umbim is not set
++# CONFIG_PACKAGE_uqmi is not set
++# CONFIG_PACKAGE_wpa-cli is not set
++# CONFIG_PACKAGE_wpa-supplicant is not set
++# CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK is not set
++# CONFIG_WPA_RFKILL_SUPPORT is not set
++CONFIG_WPA_MSG_MIN_PRIORITY=3
++# CONFIG_DRIVER_WEXT_SUPPORT is not set
++CONFIG_DRIVER_11N_SUPPORT=y
++# CONFIG_DRIVER_11W_SUPPORT is not set
++# CONFIG_PACKAGE_wpa-supplicant-mesh is not set
++# CONFIG_PACKAGE_wpa-supplicant-mini is not set
++# CONFIG_PACKAGE_wpa-supplicant-p2p is not set
++# CONFIG_PACKAGE_wpad is not set
++# CONFIG_PACKAGE_wpad-mesh is not set
++CONFIG_PACKAGE_wpad-mini=y
++# CONFIG_PACKAGE_wpan-tools is not set
++# CONFIG_PACKAGE_wwan is not set
++
++#
++# Utilities
++#
++
++#
++# Boot Loaders
++#
++
++#
++# Compression
++#
++# CONFIG_PACKAGE_bzip2 is not set
++
++#
++# Filesystem
++#
++# CONFIG_PACKAGE_badblocks is not set
++# CONFIG_PACKAGE_debugfs is not set
++# CONFIG_PACKAGE_dumpe2fs is not set
++# CONFIG_PACKAGE_e2freefrag is not set
++# CONFIG_PACKAGE_e2fsprogs is not set
++# CONFIG_PACKAGE_filefrag is not set
++# CONFIG_PACKAGE_fuse-utils is not set
++# CONFIG_PACKAGE_resize2fs is not set
++# CONFIG_PACKAGE_sysfsutils is not set
++# CONFIG_PACKAGE_tune2fs is not set
++# CONFIG_PACKAGE_xfs-fsck is not set
++# CONFIG_PACKAGE_xfs-growfs is not set
++# CONFIG_PACKAGE_xfs-mkfs is not set
++
++#
++# Terminal
++#
++# CONFIG_PACKAGE_agetty is not set
++# CONFIG_PACKAGE_script-utils is not set
++# CONFIG_PACKAGE_setterm is not set
++# CONFIG_PACKAGE_wall is not set
++
++#
++# disc
++#
++# CONFIG_PACKAGE_blkid is not set
++# CONFIG_PACKAGE_cfdisk is not set
++# CONFIG_PACKAGE_fdisk is not set
++# CONFIG_PACKAGE_findfs is not set
++# CONFIG_PACKAGE_lsblk is not set
++# CONFIG_PACKAGE_partx-utils is not set
++# CONFIG_PACKAGE_sfdisk is not set
++# CONFIG_PACKAGE_swap-utils is not set
++# CONFIG_PACKAGE_wipefs is not set
++# CONFIG_PACKAGE_cal is not set
++# CONFIG_PACKAGE_comgt is not set
++# CONFIG_PACKAGE_comgt-directip is not set
++# CONFIG_PACKAGE_comgt-ncm is not set
++# CONFIG_PACKAGE_dmesg is not set
++# CONFIG_PACKAGE_dropbearconvert is not set
++# CONFIG_PACKAGE_fconfig is not set
++# CONFIG_PACKAGE_flock is not set
++# CONFIG_PACKAGE_getopt is not set
++# CONFIG_PACKAGE_hwclock is not set
++# CONFIG_PACKAGE_iconv is not set
++# CONFIG_PACKAGE_iwcap is not set
++CONFIG_PACKAGE_iwinfo=y
++CONFIG_PACKAGE_jpeg-tools=y
++CONFIG_PACKAGE_jshn=y
++CONFIG_PACKAGE_libjson-script=y
++# CONFIG_PACKAGE_logger is not set
++# CONFIG_PACKAGE_look is not set
++# CONFIG_PACKAGE_losetup is not set
++# CONFIG_PACKAGE_maccalc is not set
++# CONFIG_PACKAGE_mcookie is not set
++# CONFIG_PACKAGE_mdadm is not set
++# CONFIG_PACKAGE_mount-utils is not set
++# CONFIG_PACKAGE_mountd is not set
++# CONFIG_PACKAGE_namei is not set
++# CONFIG_PACKAGE_ocf-crypto-headers is not set
++# CONFIG_PACKAGE_openssl-util is not set
++# CONFIG_PACKAGE_owipcalc is not set
++# CONFIG_PACKAGE_prlimit is not set
++# CONFIG_PACKAGE_px5g is not set
++# CONFIG_PACKAGE_px5g-standalone is not set
++# CONFIG_PACKAGE_rename is not set
++# CONFIG_PACKAGE_spidev-test is not set
++# CONFIG_PACKAGE_strace is not set
++# CONFIG_PACKAGE_uboot-envtools is not set
++# CONFIG_PACKAGE_ugps is not set
++# CONFIG_PACKAGE_usb-modeswitch is not set
++# CONFIG_PACKAGE_usbreset is not set
++# CONFIG_PACKAGE_usbutils is not set
++# CONFIG_PACKAGE_uuidd is not set
++# CONFIG_PACKAGE_uuidgen is not set
++CONFIG_PACKAGE_v4l-utils=y
++# CONFIG_PACKAGE_whereis is not set
diff --git a/master/endstop b/master/endstop
new file mode 100644
index 0000000..a88ece6
--- /dev/null
+++ b/master/endstop
@@ -0,0 +1,1458 @@
+diff --git a/.config b/.config
+index e9f4329..0d33ce6 100644
+--- a/.config
++++ b/.config
+@@ -78,6 +78,7 @@ CONFIG_TARGET_ramips_rt305x=y
+ # CONFIG_TARGET_ramips_rt305x_HT-TM02 is not set
+ # CONFIG_TARGET_ramips_rt305x_HG255D is not set
+ # CONFIG_TARGET_ramips_rt305x_M2M is not set
++CONFIG_TARGET_ramips_rt305x_TP-C516W=y
+ # CONFIG_TARGET_ramips_rt305x_A5-V11 is not set
+ # CONFIG_TARGET_ramips_rt305x_WT1520 is not set
+ # CONFIG_TARGET_ramips_rt305x_RT5350F-OLINUXINO is not set
+@@ -95,7 +96,7 @@ CONFIG_TARGET_ramips_rt305x=y
+ # CONFIG_TARGET_ramips_rt305x_UR-326N4G is not set
+ # CONFIG_TARGET_ramips_rt305x_UR-336UN is not set
+ # CONFIG_TARGET_ramips_rt305x_VOCORE is not set
+-CONFIG_TARGET_ramips_rt305x_NCS601W=y
++# CONFIG_TARGET_ramips_rt305x_NCS601W is not set
+ # CONFIG_TARGET_ramips_rt305x_WIZFI630A is not set
+ CONFIG_HAS_SUBTARGETS=y
+ CONFIG_TARGET_BOARD="ramips"
+@@ -122,6 +123,7 @@ CONFIG_DEFAULT_kmod-video-core=y
+ CONFIG_DEFAULT_kmod-video-uvc=y
+ CONFIG_DEFAULT_libc=y
+ CONFIG_DEFAULT_libgcc=y
++CONFIG_DEFAULT_mjg-streamer=y
+ CONFIG_DEFAULT_mtd=y
+ CONFIG_DEFAULT_netifd=y
+ CONFIG_DEFAULT_odhcp6c=y
+@@ -164,7 +166,7 @@ CONFIG_EXTERNAL_CPIO=""
+ # Root filesystem images
+ #
+ # CONFIG_TARGET_ROOTFS_EXT4FS is not set
+-# CONFIG_TARGET_ROOTFS_JFFS2 is not set
++CONFIG_TARGET_ROOTFS_JFFS2=y
+ CONFIG_TARGET_ROOTFS_SQUASHFS=y
+ CONFIG_TARGET_SQUASHFS_BLOCK_SIZE=256
+ CONFIG_TARGET_UBIFS_FREE_SPACE_FIXUP=y
+@@ -299,7 +301,7 @@ CONFIG_TARGET_SUFFIX="musl"
+ # CONFIG_IB is not set
+ # CONFIG_SDK is not set
+ # CONFIG_MAKE_TOOLCHAIN is not set
+-# CONFIG_IMAGEOPT is not set
++CONFIG_IMAGEOPT=y
+ # CONFIG_PREINITOPT is not set
+ CONFIG_TARGET_PREINIT_SUPPRESS_STDERR=y
+ CONFIG_TARGET_PREINIT_TIMEOUT=2
+@@ -314,16 +316,16 @@ CONFIG_TARGET_INIT_PATH="/bin:/sbin:/usr/bin:/usr/sbin"
+ CONFIG_TARGET_INIT_ENV=""
+ CONFIG_TARGET_INIT_CMD="/sbin/init"
+ CONFIG_TARGET_INIT_SUPPRESS_STDERR=y
+-# CONFIG_VERSIONOPT is not set
+-CONFIG_PER_FEED_REPO=y
+-CONFIG_PER_FEED_REPO_ADD_DISABLED=y
+-CONFIG_PER_FEED_REPO_ADD_COMMENTED=y
+-# CONFIG_FEED_packages is not set
+-# CONFIG_FEED_luci is not set
+-# CONFIG_FEED_routing is not set
+-# CONFIG_FEED_telephony is not set
+-# CONFIG_FEED_management is not set
+-# CONFIG_FEED_targets is not set
++CONFIG_VERSIONOPT=y
++CONFIG_VERSION_DIST="OpenWrt"
++CONFIG_VERSION_NICK=""
++CONFIG_VERSION_NUMBER=""
++CONFIG_VERSION_REPO="http://openwrt.panaceas.org/repos/tl-c516w/%v/%T/packages"
++CONFIG_VERSION_MANUFACTURER=""
++CONFIG_VERSION_PRODUCT=""
++CONFIG_VERSION_HWREV=""
++# CONFIG_VERSION_FILENAMES is not set
++# CONFIG_PER_FEED_REPO is not set
+ # CONFIG_SMIMEOPT is not set
+ CONFIG_OPKGSMIME_PASSPHRASE=y
+
+@@ -1296,7 +1298,7 @@ CONFIG_PACKAGE_usign=y
+ # CONFIG_PACKAGE_ar is not set
+ # CONFIG_PACKAGE_binutils is not set
+ # CONFIG_PACKAGE_gdb is not set
+-# CONFIG_PACKAGE_gdbserver is not set
++CONFIG_PACKAGE_gdbserver=m
+ # CONFIG_PACKAGE_objdump is not set
+ # CONFIG_PACKAGE_trace-cmd is not set
+ # CONFIG_PACKAGE_trace-cmd-extra is not set
+diff --git a/feeds/packages/multimedia/mjpg-streamer/Makefile b/feeds/packages/multimedia/mjpg-streamer/Makefile
+index e1e0e20..ff98b4d 100644
+--- a/feeds/packages/multimedia/mjpg-streamer/Makefile
++++ b/feeds/packages/multimedia/mjpg-streamer/Makefile
+@@ -88,6 +88,7 @@ ifeq ($(CONFIG_MJPG_STREAMER_INPUT_FILE),y)
+ endif
+ ifeq ($(CONFIG_MJPG_STREAMER_INPUT_UVC),y)
+ $(CP) $(PKG_BUILD_DIR)/input_uvc.so $(1)/usr/lib
++ $(CP) $(PKG_BUILD_DIR)/input_motors.so $(1)/usr/lib
+ endif
+ ifeq ($(CONFIG_MJPG_STREAMER_INPUT_TESTPICTURE),y)
+ $(CP) $(PKG_BUILD_DIR)/input_testpicture.so $(1)/usr/lib
+diff --git a/feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.init b/feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.init
+index 06630d4..ea83303 100644
+--- a/feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.init
++++ b/feeds/packages/multimedia/mjpg-streamer/files/mjpg-streamer.init
+@@ -83,7 +83,7 @@ start_instance() {
+ fi
+
+ procd_open_instance
+- procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
++ procd_set_param command "$PROG" --input "$input_arg" --input "input_motors.so" --output "$output_arg"
+ procd_close_instance
+ }
+
+diff --git a/feeds/packages/multimedia/mjpg-streamer/patches/998-fix-stack-smashing.patch b/feeds/packages/multimedia/mjpg-streamer/patches/998-fix-stack-smashing.patch
+new file mode 100644
+index 0000000..a1a2239
+--- /dev/null
++++ b/feeds/packages/multimedia/mjpg-streamer/patches/998-fix-stack-smashing.patch
+@@ -0,0 +1,13 @@
++Index: mjpg-streamer-r182/plugins/input_uvc/v4l2uvc.c
++===================================================================
++--- a/plugins/input_uvc/v4l2uvc.c
+++++ b/plugins/input_uvc/v4l2uvc.c
++@@ -130,7 +130,7 @@ int init_videoIn(struct vdIn *vd, char *
++ return -1;
++ }
++
++- memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(input_format));
+++ memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(struct v4l2_fmtdesc));
++
++ if(fmtdesc.pixelformat == format)
++ pglobal->in[id].currentFormat = pglobal->in[id].formatCount;
+diff --git a/feeds/packages/multimedia/mjpg-streamer/patches/999-fix-stack-smashing.patch b/feeds/packages/multimedia/mjpg-streamer/patches/999-fix-stack-smashing.patch
+deleted file mode 100644
+index 24ef14e..0000000
+--- a/feeds/packages/multimedia/mjpg-streamer/patches/999-fix-stack-smashing.patch
++++ /dev/null
+@@ -1,13 +0,0 @@
+-Index: mjpg-streamer-r182/plugins/input_uvc/v4l2uvc.c
+-===================================================================
+---- a/mjpg-streamer-r182/plugins/input_uvc/v4l2uvc.c
+-+++ b/mjpg-streamer-r182/plugins/input_uvc/v4l2uvc.c
+-@@ -130,7 +130,7 @@ int init_videoIn(struct vdIn *vd, char *
+- return -1;
+- }
+-
+-- memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(input_format));
+-+ memcpy(&pglobal->in[id].in_formats[pglobal->in[id].formatCount], &fmtdesc, sizeof(struct v4l2_fmtdesc));
+-
+- if(fmtdesc.pixelformat == format)
+- pglobal->in[id].currentFormat = pglobal->in[id].formatCount;
+diff --git a/feeds/packages/multimedia/mjpg-streamer/patches/999-motors.patch b/feeds/packages/multimedia/mjpg-streamer/patches/999-motors.patch
+new file mode 100644
+index 0000000..5ffdc58
+--- /dev/null
++++ b/feeds/packages/multimedia/mjpg-streamer/patches/999-motors.patch
+@@ -0,0 +1,906 @@
++Index: bar/Makefile
++===================================================================
++--- bar.orig/Makefile
+++++ bar/Makefile
++@@ -33,6 +33,7 @@ APP_BINARY = mjpg_streamer
++
++ # define the names and targets of the plugins
++ PLUGINS = input_uvc.so
+++PLUGINS += input_motors.so
++ PLUGINS += output_file.so
++ #PLUGINS += output_udp.so
++ PLUGINS += output_http.so
++@@ -71,6 +72,9 @@ input_testpicture.so: mjpg_streamer.h ut
++ make -C plugins/input_testpicture all
++ cp plugins/input_testpicture/input_testpicture.so .
++
+++input_motors.so: mjpg_streamer.h utils.h
+++ make -C plugins/input_motors
+++ cp plugins/input_motors/input_motors.so .
++
++ ifeq ($(USE_LIBV4L2),true)
++ input_uvc.so: mjpg_streamer.h utils.h
++Index: bar/plugins/input_motors/input_motors.c
++===================================================================
++--- /dev/null
+++++ bar/plugins/input_motors/input_motors.c
++@@ -0,0 +1,708 @@
+++/*******************************************************************************
+++# Linux-UVC streaming input-plugin for MJPG-streamer #
+++# #
+++# This package work with the Logitech UVC based webcams with the mjpeg feature #
+++# #
+++# Copyright (C) 2005 2006 Laurent Pinchart && Michel Xhaard #
+++# 2007 Lucas van Staden #
+++# 2007 Tom Stöveken #
+++# #
+++# 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 <stdio.h>
+++#include <stdlib.h>
+++#include <unistd.h>
+++#include <string.h>
+++#include <fcntl.h>
+++#include <sys/ioctl.h>
+++#include <errno.h>
+++#include <signal.h>
+++#include <sys/socket.h>
+++#include <arpa/inet.h>
+++#include <sys/types.h>
+++#include <sys/stat.h>
+++#include <getopt.h>
+++#include <pthread.h>
+++#include <syslog.h>
+++
+++#include "../../utils.h"
+++#include "../../mjpg_streamer.h"
+++
+++#define INPUT_PLUGIN_NAME "KKMoon motors control"
+++
+++#define MIN_RES 5
+++
+++#if 0
+++#undef DBG
+++#define DBG(a...) do { fprintf(stderr,a); } while (0)
+++#endif
+++
+++
+++#define V_MIN -175
+++#define V_MAX 455
+++
+++#define H_MIN -1040
+++#define H_MAX 1030
+++
+++#define H_STEPS (1+(H_MAX)-(H_MIN))
+++#define V_STEPS (1+(V_MAX)-(V_MIN))
+++
+++
+++
+++typedef struct input_motors
+++{
+++ int fd;
+++ char *device;
+++ int min_res;
+++} input_motors;
+++
+++/* private functions and variables to this plugin */
+++static pthread_t worker;
+++static pthread_mutex_t motor_mutex = PTHREAD_MUTEX_INITIALIZER;
+++static pthread_mutex_t worker_mutex = PTHREAD_MUTEX_INITIALIZER;
+++static pthread_cond_t worker_cond = PTHREAD_COND_INITIALIZER;
+++static input_motors *this;
+++static globals *pglobal;
+++static int plugin_number;
+++
+++
+++static volatile int worker_pan, worker_tilt;
+++
+++static void
+++motor_cmd (int fd, char m, size_t n)
+++{
+++ static char buf[8192];
+++ size_t l;
+++
+++ DBG ("motor: %c for %d\n", m, (int) n);
+++
+++ while (n)
+++ {
+++ l = (n > sizeof (buf)) ? sizeof (buf) : n;
+++ pthread_mutex_lock (&motor_mutex);
+++ memset (buf, m, l);
+++ write (fd, buf, l);
+++ pthread_mutex_unlock (&motor_mutex);
+++ n -= l;
+++ }
+++}
+++
+++static int pan_valid, pan;
+++
+++static void
+++pan_move (int fd, int m)
+++{
+++ DBG ("pan_move: %d\n", m);
+++ if (m < 0)
+++ motor_cmd (fd, 'L', -m);
+++ else
+++ motor_cmd (fd, 'R', m);
+++}
+++
+++
+++static void
+++pan_abs (int fd, int p)
+++{
+++ DBG ("pan_abs: pan_valid=%d pan=%d requested=%d\n", pan_valid, pan, p);
+++
+++ if (!pan_valid)
+++ {
+++ pan_move (fd, -H_STEPS);
+++ pan_valid = 1;
+++ pan = H_MIN;
+++ }
+++
+++ if (p < H_MIN)
+++ p = H_MIN;
+++ if (p > H_MAX)
+++ p = H_MAX;
+++
+++ pan_move (fd, p - pan);
+++
+++ pan = p;
+++}
+++
+++static void
+++pan_rel (int fd, int m)
+++{
+++ DBG ("pan_rel: pan_valid=%d pan=%d requested=%d\n", pan_valid, pan, m);
+++ if (pan_valid)
+++ {
+++ pan_abs (fd, pan + m);
+++ }
+++ else
+++ {
+++ pan_move (fd, m);
+++ }
+++}
+++
+++
+++
+++static int tilt_valid, tilt;
+++
+++static void
+++tilt_move (int fd, int m)
+++{
+++ DBG ("tilt_move: %d\n", m);
+++ if (m < 0)
+++ motor_cmd (fd, 'D', -m);
+++ else
+++ motor_cmd (fd, 'U', m);
+++}
+++
+++
+++static void
+++tilt_abs (int fd, int p)
+++{
+++ DBG ("tilt_abs tilt_valid=%d tilt=%d requested=%d\n", tilt_valid, tilt, p);
+++ if (!tilt_valid)
+++ {
+++ tilt_move (fd, -V_STEPS);
+++ tilt_valid = 1;
+++ tilt = V_MIN;
+++ }
+++
+++ if (p < V_MIN)
+++ p = V_MIN;
+++ if (p > V_MAX)
+++ p = V_MAX;
+++
+++ tilt_move (fd, p - tilt);
+++
+++ tilt = p;
+++}
+++
+++static void
+++tilt_rel (int fd, int m)
+++{
+++ DBG ("tilt_rel tilt_valid=%d tilt=%d requested=%d\n", tilt_valid, tilt, m);
+++ if (tilt_valid)
+++ {
+++ tilt_abs (fd, tilt + m);
+++ }
+++ else
+++ {
+++ tilt_move (fd, m);
+++ }
+++}
+++
+++
+++
+++
+++static void
+++help (void)
+++{
+++ fprintf (stderr,
+++ " ---------------------------------------------------------------\n"
+++ " Help for input plugin..: " INPUT_PLUGIN_NAME "\n"
+++ " ---------------------------------------------------------------\n"
+++ " The following parameters can be passed to this plugin:\n\n"
+++ " [-d | --device ]...: video device to open (your camera)\n"
+++ " [-m | --min ]......: set the minimum step size in phases (defalt 5)\n");
+++}
+++
+++
+++
+++
+++static void
+++worker_cleanup (void *arg)
+++{
+++ static unsigned char first_run = 1;
+++
+++ if (!first_run)
+++ {
+++ DBG ("already cleaned up ressources\n");
+++ return;
+++ }
+++
+++ first_run = 0;
+++}
+++
+++
+++
+++
+++static void *
+++worker_thread (void *arg)
+++{
+++ struct timespec ts = { 0 };
+++ int err;
+++
+++
+++ /* set cleanup handler to cleanup allocated ressources */
+++ pthread_cleanup_push (worker_cleanup, NULL);
+++
+++ while (!pglobal->stop)
+++ {
+++
+++ clock_gettime (CLOCK_MONOTONIC, &ts);
+++
+++ ts.tv_sec += 1;
+++
+++ pthread_mutex_lock (&worker_mutex);
+++ pthread_cond_timedwait (&worker_cond, &worker_mutex, &ts);
+++ pthread_mutex_unlock (&worker_mutex);
+++ while (worker_pan || worker_tilt)
+++ {
+++ if (worker_pan)
+++ pan_rel (this->fd, worker_pan);
+++ if (worker_tilt)
+++ tilt_rel (this->fd, worker_tilt);
+++ }
+++
+++ pthread_cond_broadcast (&pglobal->in[plugin_number].db_update); //this keeps the output stream alive
+++ DBG ("spin loop\n");
+++ }
+++
+++ DBG ("leaving input thread, calling cleanup function now\n");
+++ pthread_cleanup_pop (1);
+++
+++ return NULL;
+++}
+++
+++
+++void
+++add_control (int plugin_number, control c)
+++{
+++ if (!pglobal->in[plugin_number].in_parameters)
+++ {
+++ pglobal->in[plugin_number].in_parameters =
+++ (control *) calloc (1, sizeof (control));
+++ }
+++ else
+++ {
+++ pglobal->in[plugin_number].in_parameters =
+++ (control *) realloc (pglobal->in[plugin_number].in_parameters,
+++ (pglobal->in[plugin_number].parametercount +
+++ 1) * sizeof (control));
+++ }
+++
+++ if (pglobal->in[plugin_number].in_parameters == NULL)
+++ {
+++ DBG ("Calloc failed\n");
+++ return;
+++ }
+++
+++ pglobal->in[plugin_number].in_parameters[pglobal->in[plugin_number].
+++ parametercount] = c;
+++
+++ pglobal->in[plugin_number].parametercount++;
+++
+++}
+++
+++
+++
+++static void
+++add_btn (int plugin_number, unsigned int id, char *name)
+++{
+++
+++ control btn;
+++
+++ btn.group = IN_CMD_GENERIC;
+++ btn.menuitems = NULL;
+++ btn.value = 0.0;
+++ btn.class_id = 0;
+++
+++ btn.ctrl.id = id;
+++ btn.ctrl.type = V4L2_CTRL_TYPE_BUTTON;
+++ strcpy ((char *) btn.ctrl.name, name);
+++ btn.ctrl.minimum = 0;
+++ btn.ctrl.maximum = 1;
+++ btn.ctrl.step = 1;
+++ btn.ctrl.default_value = 0;
+++ btn.ctrl.flags = V4L2_CTRL_FLAG_VOLATILE;
+++
+++ add_control (plugin_number, btn);
+++
+++}
+++
+++static void
+++add_bool (int plugin_number, unsigned int id, char *name)
+++{
+++
+++ control btn;
+++
+++ btn.group = IN_CMD_GENERIC;
+++ btn.menuitems = NULL;
+++ btn.value = 0.0;
+++ btn.class_id = 0;
+++
+++ btn.ctrl.id = id;
+++ btn.ctrl.type = V4L2_CTRL_TYPE_BOOLEAN;
+++ strcpy ((char *) btn.ctrl.name, name);
+++ btn.ctrl.minimum = 0;
+++ btn.ctrl.maximum = 1;
+++ btn.ctrl.step = 1;
+++ btn.ctrl.default_value = 0;
+++ btn.ctrl.flags = V4L2_CTRL_FLAG_VOLATILE;
+++
+++ add_control (plugin_number, btn);
+++
+++}
+++
+++
+++static void
+++add_abs (int plugin_number, unsigned int id, char *name, int max)
+++{
+++
+++ control abs;
+++
+++ abs.group = IN_CMD_GENERIC;
+++ abs.menuitems = NULL;
+++ abs.value = 0xffffff;
+++ abs.class_id = 0;
+++
+++ abs.ctrl.id = id;
+++ abs.ctrl.type = V4L2_CTRL_TYPE_INTEGER;
+++ strcpy ((char *) abs.ctrl.name, name);
+++ abs.ctrl.minimum = -max / 2;
+++ abs.ctrl.maximum = max / 2;
+++ abs.ctrl.step = 1;
+++ abs.ctrl.default_value = 0;
+++ abs.ctrl.flags = V4L2_CTRL_FLAG_VOLATILE | V4L2_CTRL_FLAG_SLIDER;
+++
+++ add_control (plugin_number, abs);
+++
+++}
+++
+++
+++static void
+++add_controls (int plugin_number)
+++{
+++ add_btn (plugin_number, IN_CMD_RESET_PAN_TILT, "Reset");
+++#ifdef USE_BUTTONS
+++ add_btn (plugin_number, IN_CMD_PAN_MINUS, "Pan-");
+++ add_btn (plugin_number, IN_CMD_PAN_PLUS, "Pan+");
+++ add_btn (plugin_number, IN_CMD_TILT_MINUS, "Tilt-");
+++ add_btn (plugin_number, IN_CMD_TILT_PLUS, "Tilt+");
+++#else
+++ add_bool (plugin_number, IN_CMD_PAN_MINUS, "Pan-");
+++ add_bool (plugin_number, IN_CMD_PAN_PLUS, "Pan+");
+++ add_bool (plugin_number, IN_CMD_TILT_MINUS, "Tilt-");
+++ add_bool (plugin_number, IN_CMD_TILT_PLUS, "Tilt+");
+++#endif
+++ add_abs (plugin_number, IN_CMD_PAN_SET, "Pan", H_STEPS);
+++ add_abs (plugin_number, IN_CMD_TILT_SET, "Tilt", V_STEPS);
+++
+++}
+++
+++
+++
+++/*** plugin interface functions ***/
+++
+++
+++int
+++input_init (input_parameter * param, int id)
+++{
+++ int i;
+++ char *dev = "/dev/motors";
+++
+++ plugin_number = id;
+++
+++ if (pthread_mutex_init (&motor_mutex, NULL) != 0)
+++ {
+++ IPRINT ("could not initialize mutex variable\n");
+++ exit (EXIT_FAILURE);
+++ }
+++
+++ if (pthread_mutex_init (&worker_mutex, NULL) != 0)
+++ {
+++ IPRINT ("could not initialize mutex variable\n");
+++ exit (EXIT_FAILURE);
+++ }
+++
+++
+++ {
+++ pthread_condattr_t attr;
+++ pthread_condattr_init (&attr);
+++ pthread_condattr_setclock (&attr, CLOCK_MONOTONIC);
+++
+++ if (pthread_cond_init (&worker_cond, &attr) != 0)
+++ {
+++ IPRINT ("could not initialize cond variable\n");
+++ exit (EXIT_FAILURE);
+++ }
+++
+++ }
+++
+++
+++
+++ /* keep a pointer to the global variables */
+++ pglobal = param->global;
+++
+++ /* allocate webcam datastructure */
+++ this = malloc (sizeof (struct input_motors));
+++ if (this == NULL)
+++ {
+++ IPRINT ("not enough memory for videoIn\n");
+++ exit (EXIT_FAILURE);
+++ }
+++ memset (this, 0, sizeof (struct input_motors));
+++ this->min_res = MIN_RES;
+++
+++ /* display the parsed values */
+++ IPRINT ("Using motors device.: %s\n", dev);
+++
+++ param->argv[0] = INPUT_PLUGIN_NAME;
+++ asprintf (&param->global->in[id].name, "%s", INPUT_PLUGIN_NAME);
+++
+++ /* show all parameters for DBG purposes */
+++ for (i = 0; i < param->argc; i++)
+++ {
+++ DBG ("argv[%d]=%s\n", i, param->argv[i]);
+++ }
+++
+++ /* parse the parameters */
+++ reset_getopt ();
+++ while (1)
+++ {
+++ int option_index = 0, c = 0;
+++ static struct option long_options[] = {
+++ {"h", no_argument, 0, 0},
+++ {"help", no_argument, 0, 0},
+++ {"d", required_argument, 0, 0},
+++ {"device", required_argument, 0, 0},
+++ {"m", required_argument, 0, 0},
+++ {"min", required_argument, 0, 0},
+++ {0, 0, 0, 0}
+++ };
+++
+++ /* parsing all parameters according to the list above is sufficent */
+++ c =
+++ getopt_long_only (param->argc, param->argv, "", long_options,
+++ &option_index);
+++
+++ /* no more options to parse */
+++ if (c == -1)
+++ break;
+++
+++ /* unrecognized option */
+++ if (c == '?')
+++ {
+++ help ();
+++ return 1;
+++ }
+++
+++ /* dispatch the given options */
+++ switch (option_index)
+++ {
+++ /* h, help */
+++ case 0:
+++ case 1:
+++ DBG ("case 0,1\n");
+++ help ();
+++ return 1;
+++ break;
+++
+++ /* d, device */
+++ case 2:
+++ case 3:
+++ DBG ("case 2,3\n");
+++ dev = strdup (optarg);
+++ break;
+++
+++ case 4:
+++ case 5:
+++ DBG ("case 4,5\n");
+++ this->min_res = atoi (optarg);
+++ break;
+++
+++ default:
+++ DBG ("default case\n");
+++ help ();
+++ return 1;
+++ }
+++ }
+++
+++ asprintf (&this->device, "%s", dev);
+++
+++ if ((this->fd = open (this->device, O_RDWR)) == -1)
+++ {
+++ perror ("ERROR opening motor interface");
+++ return -1;
+++ }
+++
+++
+++ add_controls (plugin_number);
+++
+++ return 0;
+++}
+++
+++/******************************************************************************
+++Description.: Stops the execution of worker thread
+++Input Value.: -
+++Return Value: always 0
+++******************************************************************************/
+++int
+++input_stop (void)
+++{
+++ DBG ("will cancel input thread\n");
+++ pthread_cancel (worker);
+++
+++ return 0;
+++}
+++
+++/******************************************************************************
+++Description.: spins of a worker thread
+++Input Value.: -
+++Return Value: always 0
+++******************************************************************************/
+++int
+++input_run (void)
+++{
+++
+++ pthread_create (&worker, 0, worker_thread, NULL);
+++ pthread_detach (worker);
+++
+++ return 0;
+++}
+++
+++/******************************************************************************
+++Description.: process commands, allows to set certain runtime configurations
+++ and settings like pan/tilt, colors, saturation etc.
+++Input Value.: * cmd specifies the command, a complete list is maintained in
+++ the file "input.h"
+++ * value is used for commands that make use of a parameter.
+++Return Value: depends in the command, for most cases 0 means no errors and
+++ -1 signals an error. This is just rule of thumb, not more!
+++******************************************************************************/
+++int
+++input_cmd_old (in_cmd_type cmd, int value)
+++{
+++ int res = 0;
+++
+++
+++ switch (cmd)
+++ {
+++ case IN_CMD_HELLO:
+++ fprintf (stderr, "Hello from input plugin\n");
+++ break;
+++
+++ case IN_CMD_RESET_PAN_TILT:
+++ case IN_CMD_RESET_PAN_TILT_NO_MUTEX:
+++ DBG ("about to set pan/tilt to default position\n");
+++
+++ pan_abs (this->fd, 0);
+++ tilt_abs (this->fd, 0);
+++
+++ break;
+++
+++ case IN_CMD_PAN_SET:
+++ DBG ("set pan to %d steps\n", value);
+++
+++ pan_abs (this->fd, value);
+++
+++ res = value;
+++ break;
+++
+++ case IN_CMD_PAN_PLUS:
+++ DBG ("pan + %d\n", value);
+++#ifdef USE_BUTTONS
+++ pan_rel (this->fd, this->min_res);
+++ res = this->min_res;
+++#else
+++ worker_pan = value ? this->min_res : 0;
+++ pthread_cond_broadcast (&worker_cond);
+++ res = value;
+++#endif
+++ break;
+++
+++ case IN_CMD_PAN_MINUS:
+++ DBG ("pan - %d\n", value);
+++#ifdef USE_BUTTONS
+++ pan_rel (this->fd, -this->min_res);
+++ res = this->min_res;
+++#else
+++ worker_pan = value ? -this->min_res : 0;
+++ pthread_cond_broadcast (&worker_cond);
+++ res = value;
+++#endif
+++
+++ break;
+++
+++ case IN_CMD_TILT_SET:
+++ DBG ("set tilt to %d degrees\n", value);
+++
+++ tilt_abs (this->fd, value);
+++ res = value;
+++ break;
+++
+++ case IN_CMD_TILT_PLUS:
+++ DBG ("tilt + %d\n", value);
+++#ifdef USE_BUTTONS
+++ tilt_rel (this->fd, this->min_res);
+++
+++ res = this->min_res;
+++#else
+++ worker_tilt = value ? this->min_res : 0;
+++ pthread_cond_broadcast (&worker_cond);
+++ res = value;
+++#endif
+++
+++ break;
+++
+++ case IN_CMD_TILT_MINUS:
+++ DBG ("tilt - %d\n", value);
+++
+++#ifdef USE_BUTTONS
+++ tilt_rel (this->fd, -this->min_res);
+++
+++ res = this->min_res;
+++#else
+++ worker_tilt = value ? -this->min_res : 0;
+++ pthread_cond_broadcast (&worker_cond);
+++ res = value;
+++#endif
+++
+++ break;
+++
+++ default:
+++ DBG ("nothing matched\n");
+++ res = -1;
+++ }
+++
+++
+++ return res;
+++}
+++
+++
+++
+++int
+++input_cmd (int plugin_number, unsigned int control_id, unsigned int group,
+++ int value, char *value_string)
+++{
+++ int ret = -1;
+++ DBG ("Requested cmd (id: %d) for the %d plugin. Group: %d value: %d\n",
+++ control_id, plugin_number, group, value);
+++
+++ if (group != IN_CMD_GENERIC)
+++ return -1;
+++
+++ switch (control_id)
+++ {
+++ case IN_CMD_PAN_MINUS:
+++ case IN_CMD_PAN_PLUS:
+++ case IN_CMD_TILT_MINUS:
+++ case IN_CMD_TILT_PLUS:
+++ case IN_CMD_TILT_SET:
+++ case IN_CMD_PAN_SET:
+++ case IN_CMD_RESET_PAN_TILT:
+++ ret = input_cmd_old (control_id, value);
+++ break;
+++ }
+++
+++ return ret;
+++}
++Index: bar/plugins/input_motors/Makefile
++===================================================================
++--- /dev/null
+++++ bar/plugins/input_motors/Makefile
++@@ -0,0 +1,24 @@
+++###############################################################
+++#
+++# Purpose: Makefile for "M-JPEG Streamer"
+++# Author.: Tom Stoeveken (TST)
+++# Version: 0.3
+++# License: GPL
+++#
+++###############################################################
+++
+++CC = gcc
+++
+++OTHER_HEADERS = ../../mjpg_streamer.h ../../utils.h ../output.h ../input.h
+++
+++CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
+++#CFLAGS += -DDEBUG
+++
+++all: input_motors.so
+++
+++clean:
+++ rm -f *.a *.o core *~ *.so *.lo
+++
+++input_motors.so: $(OTHER_HEADERS)
+++ $(CC) $(CFLAGS) $(LFLAGS) -o $@ input_motors.c
+++
++Index: bar/www/index.html
++===================================================================
++--- bar.orig/www/index.html
+++++ bar/www/index.html
++@@ -3,53 +3,87 @@
++ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
++ <head>
++ <title>MJPG-streamer</title>
++- <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
++- <link rel="stylesheet" href="style.css" type="text/css" />
+++ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+++
+++ <link rel="stylesheet" href="index.css" type="text/css" />
+++
++ <!--[if IE 6]>
++ <link rel="stylesheet" href="fix.css" type="text/css" />
++ <![endif]-->
++ </head>
++-
+++
++ <body>
++- <div id="sidebar">
++- <h1>MJPG-Streamer Demo Pages</h1>
++- <h2>a ressource friendly streaming application</h2>
++-
++- <div id="menu">
++- <a class="active" href="index.html">Home</a>
++- <a href="static.html">Static</a>
++- <a href="stream.html">Stream</a>
++- <a href="java.html">Java</a>
++- <a href="javascript.html">Javascript</a>
++- <a href="videolan.html">VideoLAN</a>
++- <a target="_blank" onClick="window.open(this.href, '_blank'); return false;" href="control.html">Control</a>
++- <a target="_blank" onClick="window.open(this.href, '_blank'); return false;" href="control_old.html">Control old</a>
++- </div>
++-
++- <h3>Version info:</h3>
++- <p>v0.1 (Okt 22, 2007)</p>
++- </div>
++-
++- <div id="content">
++- <h1>About</h1>
++- <h2>Details about the M-JPEG streamer</h2>
++-
++- <h3>Congratulations</h3>
++- <p>You sucessfully managed to install this streaming webserver. If you can see this page, you can also access the stream of JPGs, which can originate from your webcam for example. This installation consists of these example pages and you may customize the look and content.</p>
++-
++- <img src="example.jpg" width="512" height="160" alt="just an image" />
++- <p>The reason for developing this software was the need of a simple and ressource friendly streaming application for Linux-UVC compatible webcams. The predecessor <i>uvc-streamer</i> is working well, but i wanted to implement a few more ideas. For instance, plugins can be used to process the images. One input plugin copies images to a global variable, multiple output plugins can access those images. For example this webpage is served by the <i>output_http.so</i> plugin.</p>
++-
++- <a href="static.html"><img src="/?action=snapshot" width="170" height="128" alt="static image example" /></a>
++- <p>The image displayed here was grabbed by the input plugin. The HTTP request contains the GET parameters <i>action=snapshot</i>. This requests one single picture from the image-input. To display another example, just click on the picture.</p>
++
++- <h3>About the examples</h3>
++- <p>To view the stream with any browser you may try the <i>javascript</i> or <i>java</i> subpages. Firefox is able to display the M-JPEG-stream directly.</p>
+++ <p id="streamwrap" class="xform-p">
+++ <img id="streamimage" class="x-rotated-180" src="/?action=stream" />
+++ </p>
+++
+++ <script type="text/javascript">
+++
+++ function send_button(command,value) {
+++ action_zone.location='http://10.32.48.227:8080/?action=command_ng&dest=0&plugin=1&id='+command+'&group=0&value='+value;
+++ }
+++
+++ function up_onmousedown()
+++ {
+++ send_button(9,1);
+++ }
+++
+++ function up_onmouseup()
+++ {
+++ send_button(9,0);
+++ }
+++
+++
+++
+++ function down_onmousedown()
+++ {
+++ send_button(10,1);
+++ }
+++
+++ function down_onmouseup()
+++ {
+++ send_button(10,0);
+++ }
+++
+++
+++
+++
+++ function left_onmousedown()
+++ {
+++ send_button(7,1);
+++ }
+++
+++ function left_onmouseup()
+++ {
+++ send_button(7,0);
+++ }
+++
+++
+++ function right_onmousedown()
+++ {
+++ send_button(6,1);
+++ }
+++
+++ function right_onmouseup()
+++ {
+++ send_button(6,0);
+++ }
+++
+++ </script>
+++
+++ <div id="tabs">
+++ <ul id="ul_tabs"></ul>
+++ </div>
+++
+++ <h2>
+++ <span onmouseup="left_onmouseup()" onmousedown="left_onmousedown()" style="border:solid 1px red">←</span>
+++ <span onmouseup="up_onmouseup()" onmousedown="up_onmousedown()" style="border:solid 1px red">↑</span>
+++ <span onmouseup="down_onmouseup()" onmousedown="down_onmousedown()" style="border:solid 1px red">↓</span>
+++ <span onmouseup="right_onmouseup()" onmousedown="right_onmousedown()" style="border:solid 1px red">→</span>
+++ </h2>
++
++- <h3>About this server</h3>
++- <p>This server is running a software written for the MJPG-streamer project. The MJPG-streamer developers can not be made responsible for installations of this software.</p>
+++ <iframe name="action_zone" style="display:none" bgcolor='#d8d8d8'></iframe>
++
++- <p>&copy; The <a href="http://mjpg-streamer.sf.net">MJPG-streamer team</a> | Design by <a href="http://andreasviklund.com">Andreas Viklund</a></p>
++- </div>
++ </body>
++ </html>
++Index: bar/www/index.html
++===================================================================
++--- /dev/null
+++++ bar/www/index.css
++@@ -0,0 +1,5 @@
+++img.x-rotated-180 {
+++ -moz-transform: rotate(180deg);
+++ -webkit-transform: rotate(180deg);
+++}
+++
+diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
+index 2f6c624..059aae2 100755
+--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
++++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
+@@ -15,6 +15,8 @@ platform_check_image() {
+
+ case "$board" in
+ 3g150b|\
++ ncs601w|\
++ tp-c516w|\
+ 3g300m|\
+ 3g-6200n|\
+ 3g-6200nl|\
+diff --git a/target/linux/ramips/dts/rt5350.dtsi b/target/linux/ramips/dts/rt5350.dtsi
+index 5282e5b..208a962 100644
+--- a/target/linux/ramips/dts/rt5350.dtsi
++++ b/target/linux/ramips/dts/rt5350.dtsi
+@@ -119,6 +119,9 @@
+ compatible = "ralink,rt5350-gpio", "ralink,rt2880-gpio";
+ reg = <0x660 0x24>;
+
++ resets = <&rstctrl 13>;
++ reset-names = "pio";
++
+ interrupt-parent = <&intc>;
+ interrupts = <6>;
+
+@@ -131,7 +134,7 @@
+ 10 14 18 1c
+ 20 24 ];
+
+- status = "disabled";
++ /*status = "disabled";*/
+ };
+
+ i2c@900 {
+@@ -165,6 +168,7 @@
+
+ status = "disabled";
+ };
++
+
+ uartlite@c00 {
+ compatible = "ralink,rt5350-uart", "ralink,rt2880-uart", "ns16550a";
+@@ -189,6 +193,16 @@
+ interrupt-parent = <&cpuintc>;
+ interrupts = <7>;
+ };
++
++
++ /* phydummy {
++ compatible = "ralink,phydummy";
++
++ pinctrl-names = "default";
++ pinctrl-0 = <&led_pins>;
++
++ }; */
++
+ };
+
+ pinctrl {
+@@ -214,13 +228,6 @@
+ };
+ };
+
+- phy_led_pins: phy_led {
+- phy_led {
+- ralink,group = "led";
+- ralink,function = "led";
+- };
+- };
+-
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+@@ -241,6 +248,13 @@
+ ralink,function = "spi_cs1";
+ };
+ };
++
++ led_pins: phy_led {
++ phy_led {
++ ralink,group = "led";
++ ralink,function = "led";
++ };
++ };
+ };
+
+ rstctrl: rstctrl {
+diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
+index ffff29f..2400261 100644
+--- a/target/linux/ramips/image/Makefile
++++ b/target/linux/ramips/image/Makefile
+@@ -745,6 +745,7 @@ define Image/Build/Profile/Default
+ $(call Image/Build/Profile/MZKW300NH2,$(1))
+ $(call Image/Build/Profile/NBG-419N,$(1))
+ $(call Image/Build/Profile/NCS601W,$(1))
++ $(call Image/Build/Profile/TP-C516W,$(1))
+ $(call Image/Build/Profile/NW718,$(1))
+ $(call Image/Build/Profile/MINIEMBWIFI,$(1))
+ $(call Image/Build/Profile/MINIEMBPLUG,$(1))
+diff --git a/target/linux/ramips/patches-3.18/9999-kkmoon-motors.patch b/target/linux/ramips/patches-3.18/9999-kkmoon-motors.patch
+new file mode 100644
+index 0000000..2266282
+--- /dev/null
++++ b/target/linux/ramips/patches-3.18/9999-kkmoon-motors.patch
+@@ -0,0 +1,284 @@
++Index: linux-3.18.21/drivers/misc/Kconfig
++===================================================================
++--- linux-3.18.21.orig/drivers/misc/Kconfig
+++++ linux-3.18.21/drivers/misc/Kconfig
++@@ -515,6 +515,13 @@ config VEXPRESS_SYSCFG
++ bus. System Configuration interface is one of the possible means
++ of generating transactions on this bus.
++
+++config KKMOON_MOTORS
+++ tristate "kkmoon motor support"
+++ depends on GPIOLIB
+++ default m
+++ help
+++ kkmoon motors
+++
++ source "drivers/misc/c2port/Kconfig"
++ source "drivers/misc/eeprom/Kconfig"
++ source "drivers/misc/cb710/Kconfig"
++Index: linux-3.18.21/drivers/misc/Makefile
++===================================================================
++--- linux-3.18.21.orig/drivers/misc/Makefile
+++++ linux-3.18.21/drivers/misc/Makefile
++@@ -56,3 +56,4 @@ obj-$(CONFIG_GENWQE) += genwqe/
++ obj-$(CONFIG_ECHO) += echo/
++ obj-$(CONFIG_VEXPRESS_SYSCFG) += vexpress-syscfg.o
++ obj-$(CONFIG_CXL_BASE) += cxl/
+++obj-$(CONFIG_KKMOON_MOTORS) += kkmoon-motors.o
++Index: linux-3.18.21/drivers/misc/kkmoon-motors.c
++===================================================================
++--- /dev/null
+++++ linux-3.18.21/drivers/misc/kkmoon-motors.c
++@@ -0,0 +1,235 @@
+++#include <linux/init.h>
+++#include <linux/module.h>
+++#include <linux/kernel.h>
+++#include <linux/fs.h>
+++#include <linux/miscdevice.h>
+++#include <linux/delay.h>
+++#include <linux/gpio.h>
+++#include <linux/jiffies.h>
+++#include <linux/sched.h>
+++
+++MODULE_LICENSE ("GPL");
+++MODULE_AUTHOR ("James McKenzie");
+++MODULE_DESCRIPTION ("KKMoon motor control");
+++MODULE_VERSION ("0.1");
+++
+++#define GPIO_A0 22
+++#define GPIO_A1 23
+++#define GPIO_A2 24
+++#define GPIO_D 26
+++
+++
+++static int h_phase;
+++static int v_phase;
+++
+++
+++static void
+++latch_addr (int a)
+++{
+++ gpio_set_value (GPIO_A0, ! !(a & 1));
+++ gpio_set_value (GPIO_A1, ! !(a & 2));
+++ gpio_set_value (GPIO_A2, ! !(a & 4));
+++ ndelay (100);
+++}
+++
+++
+++static void
+++latch_off (void)
+++{
+++ int i;
+++ gpio_set_value (GPIO_D, 0);
+++ for (i = 0; i < 8; ++i)
+++ latch_addr (i);
+++}
+++
+++
+++static void
+++latch_set (int a)
+++{
+++ latch_off ();
+++ latch_addr (a);
+++ gpio_set_value (GPIO_D, 1);
+++}
+++
+++static int
+++inc (int p)
+++{
+++ p++;
+++ p %= 4;
+++ return p;
+++}
+++
+++
+++static int
+++dec (int p)
+++{
+++ p += 3;
+++ p %= 4;
+++ return p;
+++}
+++
+++static void
+++turret_left (void)
+++{
+++ latch_set (h_phase+4);
+++ h_phase = dec (h_phase);
+++ latch_set (h_phase+4);
+++}
+++
+++static void
+++turret_right (void)
+++{
+++ latch_set (h_phase+4);
+++ h_phase = inc (h_phase);
+++ latch_set (h_phase+4);
+++}
+++
+++
+++static void
+++turret_down (void)
+++{
+++ latch_set (v_phase);
+++ v_phase = inc (v_phase);
+++ latch_set (v_phase);
+++}
+++
+++
+++
+++static void
+++turrent_up (void)
+++{
+++ latch_set (v_phase);
+++ v_phase = dec (v_phase);
+++ latch_set (v_phase);
+++}
+++
+++void
+++pause (void)
+++{
+++ set_current_state(TASK_UNINTERRUPTIBLE);
+++ schedule_timeout (HZ / 50);
+++}
+++
+++static ssize_t
+++motors_write (struct file *file, const char __user * data, size_t count,
+++ loff_t * ppos)
+++{
+++ char c;
+++ size_t red = 0;
+++
+++ while (count--)
+++ {
+++
+++#if 1
+++ if (copy_from_user (&c, data++, 1))
+++ return EFAULT;
+++#else
+++ printk("cfu=%d\n",(int) copy_from_user (&c, data++, 1));
+++#endif
+++
+++ switch (c)
+++ {
+++ case 'U':
+++ turrent_up ();
+++ pause ();
+++ break;
+++ case 'D':
+++ turret_down ();
+++ pause ();
+++ break;
+++ case 'L':
+++ turret_left ();
+++ pause ();
+++ break;
+++ case 'R':
+++ turret_right ();
+++ pause ();
+++ break;
+++
+++ }
+++
+++
+++ red++;
+++
+++ }
+++
+++ latch_off ();
+++
+++ *ppos = red;
+++
+++ return red;
+++}
+++
+++
+++static const struct file_operations motors_fops = {
+++ .owner = THIS_MODULE,
+++ .write = motors_write,
+++};
+++
+++
+++static struct miscdevice motors_dev = {
+++ MISC_DYNAMIC_MINOR,
+++ "motors",
+++ &motors_fops
+++};
+++
+++
+++
+++
+++
+++
+++
+++
+++static int __init
+++motors_init (void)
+++{
+++ int ret;
+++ printk (KERN_INFO "KKMOON_MOTOR: Initializing\n");
+++
+++ ret = misc_register (&motors_dev);
+++ if (ret)
+++ return ret;
+++
+++
+++ gpio_request (GPIO_A0, "sysfs");
+++ gpio_request (GPIO_A1, "sysfs");
+++ gpio_request (GPIO_A2, "sysfs");
+++ gpio_request (GPIO_D, "sysfs");
+++
+++ gpio_export (GPIO_A0, false);
+++ gpio_export (GPIO_A1, false);
+++ gpio_export (GPIO_A2, false);
+++ gpio_export (GPIO_D, false);
+++
+++ gpio_direction_output (GPIO_A0, 0);
+++ gpio_direction_output (GPIO_A1, 0);
+++ gpio_direction_output (GPIO_A2, 0);
+++ gpio_direction_output (GPIO_D, 0);
+++
+++
+++ latch_off ();
+++
+++ return 0;
+++}
+++
+++static void __exit
+++motors_exit (void)
+++{
+++
+++ latch_off ();
+++
+++ gpio_unexport (GPIO_D);
+++ gpio_unexport (GPIO_A2);
+++ gpio_unexport (GPIO_A1);
+++ gpio_unexport (GPIO_A0);
+++
+++ gpio_free (GPIO_D);
+++ gpio_free (GPIO_A2);
+++ gpio_free (GPIO_A1);
+++ gpio_free (GPIO_A0);
+++
+++ misc_deregister (&motors_dev);
+++}
+++
+++module_init (motors_init);
+++module_exit (motors_exit);
++Index: linux-3.18.21/drivers/pinctrl/pinctrl-rt2880.c
++===================================================================
++--- linux-3.18.21.orig/drivers/pinctrl/pinctrl-rt2880.c
+++++ linux-3.18.21/drivers/pinctrl/pinctrl-rt2880.c
++@@ -372,6 +372,12 @@ static int rt2880_pinmux_pins(struct rt2
++ /* pin 0 is always a gpio */
++ p->gpio[0] = 1;
++
+++ /*ditto pins 22,23,24,and 26 as we don't have a driver to represent the phy*/
+++ p->gpio[22] = 1;
+++ p->gpio[23] = 1;
+++ p->gpio[24] = 1;
+++ p->gpio[26] = 1;
+++
++ /* set the pads */
++ for (i = 0; i < p->max_pins; i++) {
++ /* strlen("ioXY") + 1 = 5 */
+diff --git a/target/linux/ramips/rt305x/config-3.18 b/target/linux/ramips/rt305x/config-3.18
+index 9c03767..20b69ed 100644
+--- a/target/linux/ramips/rt305x/config-3.18
++++ b/target/linux/ramips/rt305x/config-3.18
+@@ -169,3 +169,4 @@ CONFIG_USB_SUPPORT=y
+ CONFIG_USE_OF=y
+ CONFIG_WATCHDOG_CORE=y
+ CONFIG_ZONE_DMA_FLAG=0
++CONFIG_KKMOON_MOTORS=y
diff --git a/master/feeds b/master/feeds
new file mode 100644
index 0000000..16efb4b
--- /dev/null
+++ b/master/feeds
@@ -0,0 +1,813817 @@
+diff --git a/feeds/luci/.buildpath b/feeds/luci/.buildpath
+new file mode 100644
+index 0000000..81fa646
+--- /dev/null
++++ b/feeds/luci/.buildpath
+@@ -0,0 +1,5 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<buildpath>
++ <buildpathentry kind="src" path="src"/>
++ <buildpathentry kind="con" path="org.eclipse.dltk.launching.INTERPRETER_CONTAINER"/>
++</buildpath>
+diff --git a/feeds/luci/.cproject b/feeds/luci/.cproject
+new file mode 100644
+index 0000000..e1a4774
+--- /dev/null
++++ b/feeds/luci/.cproject
+@@ -0,0 +1,221 @@
++<?xml version="1.0" encoding="UTF-8" standalone="no"?>
++<?fileVersion 4.0.0?>
++
++<cproject>
++<storageModule moduleId="org.eclipse.cdt.core.settings">
++<cconfiguration id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
++<storageModule moduleId="cdtBuildSystem" version="4.0.0">
++<configuration artifactName="luci" buildProperties="" description="" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" name="Preference Configuration" parent="org.eclipse.cdt.build.core.prefbase.cfg">
++<folderInfo id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341." name="/" resourcePath="">
++<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
++<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.407447051.1470931541" name=""/>
++<builder id="org.eclipse.cdt.build.core.settings.default.builder.823611263" keepEnvironmentInBuildfile="false" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder"/>
++<tool id="org.eclipse.cdt.build.core.settings.holder.libs.1685234798" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
++<tool id="org.eclipse.cdt.build.core.settings.holder.570824141" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
++<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.491129717" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
++<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
++<listOptionValue builtIn="false" value="/usr/include"/>
++</option>
++<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.858094059" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
++</tool>
++<tool id="org.eclipse.cdt.build.core.settings.holder.344617955" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
++<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.564526987" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
++<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
++<listOptionValue builtIn="false" value="/usr/include"/>
++</option>
++<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1426860237" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
++</tool>
++<tool id="org.eclipse.cdt.build.core.settings.holder.869454750" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
++<option id="org.eclipse.cdt.build.core.settings.holder.incpaths.838425449" name="Include Paths" superClass="org.eclipse.cdt.build.core.settings.holder.incpaths" valueType="includePath">
++<listOptionValue builtIn="false" value="/usr/include/lua5.1"/>
++<listOptionValue builtIn="false" value="/usr/include"/>
++</option>
++<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1755775295" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
++</tool>
++</toolChain>
++</folderInfo>
++</configuration>
++</storageModule>
++<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341" moduleId="org.eclipse.cdt.core.settings" name="Preference Configuration">
++<externalSettings/>
++<extensions>
++<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
++<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
++<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
++<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
++<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
++</extensions>
++</storageModule>
++<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
++<storageModule moduleId="scannerConfiguration">
++<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
++<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="makefileGenerator">
++<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<scannerConfigBuildInfo instanceId="preference.org.eclipse.cdt.managedbuilder.core.configurationDataProvider.1510318341">
++<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
++<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="makefileGenerator">
++<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileCPP">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.cpp" command="g++" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfileC">
++<buildOutputProvider>
++<openAction enabled="true" filePath=""/>
++<parser enabled="true"/>
++</buildOutputProvider>
++<scannerInfoProvider id="specsFile">
++<runAction arguments="-E -P -v -dD ${plugin_state_location}/specs.c" command="gcc" useDefault="true"/>
++<parser enabled="true"/>
++</scannerInfoProvider>
++</profile>
++</scannerConfigBuildInfo>
++</storageModule>
++</cconfiguration>
++</storageModule>
++<storageModule moduleId="cdtBuildSystem" version="4.0.0">
++<project id="luci.null.949486034" name="luci"/>
++</storageModule>
++</cproject>
+diff --git a/feeds/luci/.gitignore b/feeds/luci/.gitignore
+new file mode 100644
+index 0000000..07494e9
+--- /dev/null
++++ b/feeds/luci/.gitignore
+@@ -0,0 +1,8 @@
++dist/
++/host
++*.o
++*.so
++*.swp
++*.po~
++/docs
++modules/luci-base/src/po2lmo
+diff --git a/feeds/luci/.project b/feeds/luci/.project
+new file mode 100644
+index 0000000..11b398b
+--- /dev/null
++++ b/feeds/luci/.project
+@@ -0,0 +1,78 @@
++<?xml version="1.0" encoding="UTF-8"?>
++<projectDescription>
++ <name>luci</name>
++ <comment></comment>
++ <projects>
++ </projects>
++ <buildSpec>
++ <buildCommand>
++ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
++ <triggers>clean,full,incremental,</triggers>
++ <arguments>
++ <dictionary>
++ <key>?name?</key>
++ <value></value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.append_environment</key>
++ <value>true</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
++ <value>all</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.buildArguments</key>
++ <value></value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.buildCommand</key>
++ <value>make</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
++ <value>clean</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.contents</key>
++ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
++ <value>false</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
++ <value>true</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
++ <value>true</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
++ <value>all</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.stopOnError</key>
++ <value>true</value>
++ </dictionary>
++ <dictionary>
++ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
++ <value>true</value>
++ </dictionary>
++ </arguments>
++ </buildCommand>
++ <buildCommand>
++ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
++ <arguments>
++ </arguments>
++ </buildCommand>
++ </buildSpec>
++ <natures>
++ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
++ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
++ <nature>org.eclipse.cdt.core.cnature</nature>
++ <nature>org.eclipse.dltk.lua.core.nature</nature>
++ </natures>
++</projectDescription>
+diff --git a/feeds/luci/CONTRIBUTING.md b/feeds/luci/CONTRIBUTING.md
+new file mode 100644
+index 0000000..7c42913
+--- /dev/null
++++ b/feeds/luci/CONTRIBUTING.md
+@@ -0,0 +1,43 @@
++# Contributing Guidelines
++
++Patches and pull-requests:
++
++If you want to contribute a change to LuCI, please either send a patch using git send-email
++or open a pull request against the openwrt/luci repository.
++
++Regardless of whether you send a patch or open a pull request, please try to follow these rules:
++
++* Have a useful subject prefixed with the component name
++ (E.g.: "modules/admin-full: fix wifi channel selection on multiple STA networks")
++* Shortly explain the changes made and - if applicable - the reasoning behind them
++* Include Signed-off-by in the comment
++ (See <https://dev.openwrt.org/wiki/SubmittingPatches#a10.Signyourwork>)
++
++In case you like to send patches by mail, please use the [LuCI mailinglist](https://lists.subsignal.org/mailman/listinfo/luci)
++or the [OpenWrt Development List](https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel).
++
++If you send via the OpenWrt list, include a "[luci]" tag in your subject line.
++For general information on patch submission, follow the [OpenWrt patch submission guideline](https://dev.openwrt.org/wiki/SubmittingPatches).
++
++
++If you have commit access:
++
++* Do NOT use git push --force.
++* Use Pull Requests if you are unsure and to suggest changes to other developers.
++
++Gaining commit access:
++
++* Commit access will be granted to responsible contributors who have made
++ useful pull requests and / or feedback or patches to this repository or
++ OpenWrt in general. Please include your request for commit access in your
++ next pull request or ticket.
++
++Release Branches:
++
++* Branches named "luci-X.Y" (e.g. luci-0.12) are release branches.
++* These branches are built with the respective OpenWrt release and are created
++ during the release stabilisation phase.
++* Please ONLY cherry-pick or commit security and bug-fixes to these branches.
++* Do NOT add new packages and do NOT do major upgrades of packages here.
++* If you are unsure if your change is suitable, please use a pull request.
++
+diff --git a/feeds/luci/LICENSE b/feeds/luci/LICENSE
+new file mode 100644
+index 0000000..f49a4e1
+--- /dev/null
++++ b/feeds/luci/LICENSE
+@@ -0,0 +1,201 @@
++ 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/feeds/luci/NOTICE b/feeds/luci/NOTICE
+new file mode 100644
+index 0000000..47e1969
+--- /dev/null
++++ b/feeds/luci/NOTICE
+@@ -0,0 +1,9 @@
++LuCI - Lua Configuration Interface
++Copyright 2008 Steven Barth <steven@midlink.org>
++Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++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/feeds/luci/README.md b/feeds/luci/README.md
+new file mode 100644
+index 0000000..371cee2
+--- /dev/null
++++ b/feeds/luci/README.md
+@@ -0,0 +1,26 @@
++# OpenWrt luci feed
++
++## Description
++
++This is the OpenWrt "luci"-feed containing LuCI - OpenWrt Configuration Interface.
++
++## Usage
++
++This feed is enabled by default. Your feeds.conf.default (or feeds.conf) should contain a line like:
++```
++src-git luci https://github.com/openwrt/luci.git
++```
++
++To install all its package definitions, run:
++```
++./scripts/feeds update luci
++./scripts/feeds install -a -p luci
++```
++
++## License
++
++See [LICENSE](LICENSE) file.
++
++## Package Guidelines
++
++See [CONTRIBUTING.md](CONTRIBUTING.md) file.
+diff --git a/feeds/luci/THANKYOU b/feeds/luci/THANKYOU
+new file mode 100644
+index 0000000..f0519bd
+--- /dev/null
++++ b/feeds/luci/THANKYOU
+@@ -0,0 +1,26 @@
++I'd like to thank the following people for contributing to this software:
++
++* Anton Popov
++ - for rewriting the openwrt.org theme
++
++* Florian Fainelli (OpenWrt)
++ - for the french translation
++
++* Alina Friedrichsen
++ - for the reworked translation system, help on standards compliance and accessibility
++
++* Yanira
++ - several applications and bugreports
++
++
++Also a big thank you goes to:
++
++* Mono (Freifunk Halle)
++ - for donating a Linksys WRT54GL for development purposes
++
++* tetzlav (Freifunk Leipzig)
++ - for donating several boards for testing and his feedback
++
++* Mickey (Freifunk Hannover)
++ - for his feedback and fixes for the OpenWrt builds
++
+diff --git a/feeds/luci/applications/luci-app-ahcp/Makefile b/feeds/luci/applications/luci-app-ahcp/Makefile
+new file mode 100644
+index 0000000..bb4d415
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/Makefile
+@@ -0,0 +1,14 @@
++#
++# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
++#
++# This is free software, licensed under the Apache License, Version 2.0 .
++#
++
++include $(TOPDIR)/rules.mk
++
++LUCI_TITLE:=LuCI Support for AHCPd
++LUCI_DEPENDS:=+ahcpd
++
++include ../../luci.mk
++
++# call BuildPackage - OpenWrt buildroot signature
+diff --git a/feeds/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua b/feeds/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua
+new file mode 100644
+index 0000000..e97da55
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/luasrc/controller/ahcp.lua
+@@ -0,0 +1,49 @@
++-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua b/feeds/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua
+new file mode 100644
+index 0000000..30897eb
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/luasrc/model/cbi/ahcp.lua
+@@ -0,0 +1,110 @@
++-- Copyright 2011 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm b/feeds/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm
+new file mode 100644
+index 0000000..ef4cfca
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/luasrc/view/admin_status/index/ahcp.htm
+@@ -0,0 +1 @@
++<%+ahcp_status%>
+diff --git a/feeds/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm b/feeds/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
+new file mode 100644
+index 0000000..88796cb
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/luasrc/view/ahcp_status.htm
+@@ -0,0 +1,53 @@
++<script type="text/javascript">//<![CDATA[
++ XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "ahcpd", "status")%>', null,
++ function(x, st)
++ {
++ var tb = document.getElementById('ahcpd_status_table');
++ var tx = document.getElementById('ahcpd_status_text');
++ if (st && tb && tx)
++ {
++ /* clear all rows */
++ while( tb.rows.length > 1 )
++ tb.deleteRow(1);
++
++ for( var i = 0; i < st.leases.length; i++ )
++ {
++ var tr = tb.insertRow(-1);
++ tr.className = 'cbi-section-table-row cbi-rowstyle-' + ((i % 2) + 1);
++
++ tr.insertCell(-1).innerHTML = st.leases[i].addr;
++ tr.insertCell(-1).innerHTML = String.format('%t', st.leases[i].age);
++ }
++
++ if( tb.rows.length == 1 )
++ {
++ var tr = tb.insertRow(-1);
++ tr.className = 'cbi-section-table-row';
++
++ var td = tr.insertCell(-1);
++ td.colSpan = 2;
++ td.innerHTML = '<em><br /><%:There are no active leases.%></em>';
++ }
++
++ if( st.uid == '00:00:00:00:00:00:00:00' )
++ tx.innerHTML = '<%:The AHCP Service is not running.%>';
++ else
++ tx.innerHTML = String.format('<%:The AHCP Service is running with ID %s.%>', st.uid);
++ }
++ }
++ );
++//]]></script>
++
++<fieldset class="cbi-section">
++ <legend><%:Active AHCP Leases%></legend>
++ <p id="ahcpd_status_text"></p>
++ <table class="cbi-section-table" id="ahcpd_status_table">
++ <tr class="cbi-section-table-titles">
++ <th class="cbi-section-table-cell"><%:Address%></th>
++ <th class="cbi-section-table-cell"><%:Age%></th>
++ </tr>
++ <tr class="cbi-section-table-row">
++ <td colspan="5"><em><br /><%:Collecting data...%></em></td>
++ </tr>
++ </table>
++</fieldset>
+diff --git a/feeds/luci/applications/luci-app-ahcp/po/ca/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/ca/ahcp.po
+new file mode 100644
+index 0000000..89108fd
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/ca/ahcp.po
+@@ -0,0 +1,117 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-06-02 21:34+0200\n"
++"Last-Translator: Alex <alexhenrie24@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/cs/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/cs/ahcp.po
+new file mode 100644
+index 0000000..0a9e0af
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/cs/ahcp.po
+@@ -0,0 +1,114 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-04-23 23:01+0200\n"
++"Last-Translator: koli <lukas.koluch@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/de/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/de/ahcp.po
+new file mode 100644
+index 0000000..6df34d8
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/de/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-01-30 18:21+0200\n"
++"Last-Translator: DAC324 <gerd_roethig@web.de>\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/feeds/luci/applications/luci-app-ahcp/po/el/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/el/ahcp.po
+new file mode 100644
+index 0000000..0d7d6bd
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/el/ahcp.po
+@@ -0,0 +1,114 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-03-18 16:25+0200\n"
++"Last-Translator: Vasilis <acinonyx@openwrt.gr>\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/feeds/luci/applications/luci-app-ahcp/po/en/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/en/ahcp.po
+new file mode 100644
+index 0000000..4ad2ab2
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/en/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-04-15 11:31+0200\n"
++"Last-Translator: madanadam <madanadam@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/es/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/es/ahcp.po
+new file mode 100644
+index 0000000..512606a
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/es/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-09-14 19:30+0200\n"
++"Last-Translator: José Vicente <josevteg@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/fr/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/fr/ahcp.po
+new file mode 100644
+index 0000000..1163518
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/fr/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-11-06 13:06+0200\n"
++"Last-Translator: hogsim <hogsim@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/he/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/he/ahcp.po
+new file mode 100644
+index 0000000..1c45cc8
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/he/ahcp.po
+@@ -0,0 +1,118 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-09-10 03:44+0200\n"
++"Last-Translator: Snoof <sagim9@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/hu/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/hu/ahcp.po
+new file mode 100644
+index 0000000..a0a91be
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/hu/ahcp.po
+@@ -0,0 +1,116 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-03-31 15:46+0200\n"
++"Last-Translator: juhosg <juhosg@openwrt.org>\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/feeds/luci/applications/luci-app-ahcp/po/it/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/it/ahcp.po
+new file mode 100644
+index 0000000..56d9516
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/it/ahcp.po
+@@ -0,0 +1,114 @@
++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/feeds/luci/applications/luci-app-ahcp/po/ja/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/ja/ahcp.po
+new file mode 100644
+index 0000000..dd78ccd
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/ja/ahcp.po
+@@ -0,0 +1,117 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-04-19 07:54+0200\n"
++"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
++"Language-Team: none\n"
++"Language: ja\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: nplurals=1; plural=0;\n"
++"X-Generator: Pootle 2.0.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/feeds/luci/applications/luci-app-ahcp/po/ms/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/ms/ahcp.po
+new file mode 100644
+index 0000000..0b6963b
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/ms/ahcp.po
+@@ -0,0 +1,105 @@
++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/feeds/luci/applications/luci-app-ahcp/po/no/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/no/ahcp.po
+new file mode 100644
+index 0000000..4c3bc03
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/no/ahcp.po
+@@ -0,0 +1,117 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2011-06-14 20:11+0200\n"
++"Last-Translator: protx <lars.hardy@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/pl/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/pl/ahcp.po
+new file mode 100644
+index 0000000..5095224
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/pl/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-04-14 16:40+0200\n"
++"Last-Translator: Tomecki <przykryweczka@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po
+new file mode 100644
+index 0000000..55ec29c
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/pt-br/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-03-29 23:07+0200\n"
++"Last-Translator: Luiz Angelo <luizluca@gmail.com>\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 "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 é 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/feeds/luci/applications/luci-app-ahcp/po/pt/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/pt/ahcp.po
+new file mode 100644
+index 0000000..f96fc45
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/pt/ahcp.po
+@@ -0,0 +1,116 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-06-02 21:12+0200\n"
++"Last-Translator: joao.f.vieira <joao.f.vieira@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/ro/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/ro/ahcp.po
+new file mode 100644
+index 0000000..2882b31
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/ro/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-06-28 19:14+0200\n"
++"Last-Translator: xxvirusxx <condor20_05@yahoo.it>\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/feeds/luci/applications/luci-app-ahcp/po/ru/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/ru/ahcp.po
+new file mode 100644
+index 0000000..f08cb70
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/ru/ahcp.po
+@@ -0,0 +1,120 @@
++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 <michael.gritsaenko@gmail.com>\n"
++"Language-Team: Russian <x12ozmouse@ya.ru>\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/feeds/luci/applications/luci-app-ahcp/po/sk/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/sk/ahcp.po
+new file mode 100644
+index 0000000..b618490
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/sk/ahcp.po
+@@ -0,0 +1,106 @@
++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/feeds/luci/applications/luci-app-ahcp/po/sv/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/sv/ahcp.po
+new file mode 100644
+index 0000000..b5f0b7d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/sv/ahcp.po
+@@ -0,0 +1,109 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-04-27 22:52+0200\n"
++"Last-Translator: Umeaboy <kristoffer.grundstrom1983@gmail.com>\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 ""
++
++msgid "Active AHCP Leases"
++msgstr ""
++
++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 ""
++
++msgid "Collecting data..."
++msgstr "Samlar in data..."
++
++msgid "Forwarder"
++msgstr ""
++
++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 ""
++
++msgid "Lease validity time"
++msgstr ""
++
++msgid "Log file"
++msgstr "Logg-fil"
++
++msgid "Multicast address"
++msgstr ""
++
++msgid "Operation mode"
++msgstr "Driftsläge"
++
++msgid "Port"
++msgstr "Port"
++
++msgid "Protocol family"
++msgstr "Protokoll-familj"
++
++msgid "Served interfaces"
++msgstr ""
++
++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 ""
++
++msgid "The AHCP Service is not running."
++msgstr "AHCP-tjänsten körs inte."
++
++msgid "The AHCP Service is running with ID %s."
++msgstr ""
++
++msgid "There are no active leases."
++msgstr ""
++
++msgid "Unique ID file"
++msgstr "Unik ID-fil"
+diff --git a/feeds/luci/applications/luci-app-ahcp/po/templates/ahcp.pot b/feeds/luci/applications/luci-app-ahcp/po/templates/ahcp.pot
+new file mode 100644
+index 0000000..ea6bb42
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/templates/ahcp.pot
+@@ -0,0 +1,99 @@
++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/feeds/luci/applications/luci-app-ahcp/po/tr/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/tr/ahcp.po
+new file mode 100644
+index 0000000..ca33071
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/tr/ahcp.po
+@@ -0,0 +1,113 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-11-25 14:51+0200\n"
++"Last-Translator: qbilay <qbilay@mynet.com>\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/feeds/luci/applications/luci-app-ahcp/po/uk/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/uk/ahcp.po
+new file mode 100644
+index 0000000..7649019
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/uk/ahcp.po
+@@ -0,0 +1,115 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-04-28 21:17+0200\n"
++"Last-Translator: Yurii <yuripet@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 "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/feeds/luci/applications/luci-app-ahcp/po/vi/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/vi/ahcp.po
+new file mode 100644
+index 0000000..1041add
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/vi/ahcp.po
+@@ -0,0 +1,114 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-12-05 04:46+0200\n"
++"Last-Translator: Thành <tienthanh.dqc@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po
+new file mode 100644
+index 0000000..295bbe7
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/zh-cn/ahcp.po
+@@ -0,0 +1,113 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-10-09 03:31+0200\n"
++"Last-Translator: Tanyingyu <Tanyingyu@163.com>\n"
++"Language-Team: none\n"
++"Language: zh_CN\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: nplurals=1; plural=0;\n"
++"X-Generator: Pootle 2.0.6\n"
++
++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/feeds/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po b/feeds/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po
+new file mode 100644
+index 0000000..dc7f6c5
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/po/zh-tw/ahcp.po
+@@ -0,0 +1,109 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2013-08-10 12:30+0200\n"
++"Last-Translator: mp607 <mickey60711@gmail.com>\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/feeds/luci/applications/luci-app-ahcp/root/etc/uci-defaults/luci-ahcp b/feeds/luci/applications/luci-app-ahcp/root/etc/uci-defaults/luci-ahcp
+new file mode 100755
+index 0000000..f2b2487
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-ahcp/root/etc/uci-defaults/luci-ahcp
+@@ -0,0 +1,11 @@
++#!/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/feeds/luci/applications/luci-app-asterisk/Makefile b/feeds/luci/applications/luci-app-asterisk/Makefile
+new file mode 100644
+index 0000000..f2f3cd1
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/Makefile
+@@ -0,0 +1,14 @@
++#
++# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
++#
++# This is free software, licensed under the Apache License, Version 2.0 .
++#
++
++include $(TOPDIR)/rules.mk
++
++LUCI_TITLE:=LuCI Support for Asterisk
++LUCI_DEPENDS:=+ahcpd
++
++include ../../luci.mk
++
++# call BuildPackage - OpenWrt buildroot signature
+diff --git a/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk.lua
+new file mode 100644
+index 0000000..ceb738d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk.lua
+@@ -0,0 +1,746 @@
++-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
++-- 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 == '<Set>' then
++ val = true
++ elseif val == 'No' or val == 'no' then
++ val = false
++ elseif val == '<Not set>' 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 '' ) ..
++ '<a href="%s">%s</a>' %{ 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/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua
+new file mode 100644
+index 0000000..6ed8dfd
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/asterisk/cc_idd.lua
+@@ -0,0 +1,245 @@
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua
+new file mode 100644
+index 0000000..4923584
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/controller/asterisk.lua
+@@ -0,0 +1,194 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua
+new file mode 100644
+index 0000000..d4daa68
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-dialplans.lua
+@@ -0,0 +1,91 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua
+new file mode 100644
+index 0000000..d0eaf34
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-iax-connections.lua
+@@ -0,0 +1,49 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua
+new file mode 100644
+index 0000000..dd79e46
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-meetme.lua
+@@ -0,0 +1,22 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua
+new file mode 100644
+index 0000000..0a0a2d5
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-app.lua
+@@ -0,0 +1,391 @@
++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 doesnt 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 seperate 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua
+new file mode 100644
+index 0000000..13dcba5
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-cdr.lua
+@@ -0,0 +1,47 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua
+new file mode 100644
+index 0000000..425569d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-chan.lua
+@@ -0,0 +1,45 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua
+new file mode 100644
+index 0000000..0893c0e
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-codec.lua
+@@ -0,0 +1,53 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua
+new file mode 100644
+index 0000000..9b59d94
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-format.lua
+@@ -0,0 +1,89 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua
+new file mode 100644
+index 0000000..04eb974
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-func.lua
+@@ -0,0 +1,29 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua
+new file mode 100644
+index 0000000..cca4f34
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-pbx.lua
+@@ -0,0 +1,53 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua
+new file mode 100644
+index 0000000..783aab2
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res-feature.lua
+@@ -0,0 +1,100 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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 bewteen 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua
+new file mode 100644
+index 0000000..4bef199
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-mod-res.lua
+@@ -0,0 +1,77 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua
+new file mode 100644
+index 0000000..a095ec3
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-sip-connections.lua
+@@ -0,0 +1,98 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua
+new file mode 100644
+index 0000000..7341dfb
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk-voice.lua
+@@ -0,0 +1,41 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua
+new file mode 100644
+index 0000000..026aab4
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk.lua
+@@ -0,0 +1,151 @@
++-- Copyright 2008 Steven Barth <steven@midlink.org>
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua
+new file mode 100644
+index 0000000..b4c81bb
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplan_out.lua
+@@ -0,0 +1,125 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua
+new file mode 100644
+index 0000000..4ffeca4
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialplans.lua
+@@ -0,0 +1,103 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua
+new file mode 100644
+index 0000000..5585c06
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/dialzones.lua
+@@ -0,0 +1,123 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua
+new file mode 100644
+index 0000000..e409d70
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme.lua
+@@ -0,0 +1,38 @@
++-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua
+new file mode 100644
+index 0000000..9e5aed7
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/meetme_settings.lua
+@@ -0,0 +1,17 @@
++-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua
+new file mode 100644
+index 0000000..01dfc16
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phone_sip.lua
+@@ -0,0 +1,145 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua
+new file mode 100644
+index 0000000..a6c44f9
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/phones.lua
+@@ -0,0 +1,104 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua
+new file mode 100644
+index 0000000..eedc1c2
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua
+@@ -0,0 +1,86 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua
+new file mode 100644
+index 0000000..44c8ca8
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/trunks.lua
+@@ -0,0 +1,94 @@
++-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua
+new file mode 100644
+index 0000000..51143e6
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail.lua
+@@ -0,0 +1,48 @@
++-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua
+new file mode 100644
+index 0000000..ef52a32
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/model/cbi/asterisk/voicemail_settings.lua
+@@ -0,0 +1,51 @@
++-- Copyright 2009 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm
+new file mode 100644
+index 0000000..3afb26b
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/cbi/cell.htm
+@@ -0,0 +1,13 @@
++<%#
++ Copyright 2008 Steven Barth <steven@midlink.org>
++ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++ Licensed to the public under the Apache License 2.0.
++-%>
++
++<%+cbi/valueheader%>
++<% if self.href then %><a href="<%=self.href%>"><% end -%>
++ <%=self:cfgvalue(section)%>
++<%- if self.href then %></a><%end%>
++&#160;
++<input type="hidden" id="<%=cbid%>" value="<%=luci.util.pcdata(self:cfgvalue(section))%>" />
++<%+cbi/valuefooter%>
+diff --git a/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm
+new file mode 100644
+index 0000000..70f986c
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialplans.htm
+@@ -0,0 +1,245 @@
++<%#
++ Copyright 2008 Steven Barth <steven@midlink.org>
++ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++ 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 "<code style='padding: 2px; border:1px solid #CCCCCC; background-color: #FFFFFF'%s>%s</code>"
++ %{ 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
++%>
++
++
++<form method="post" action="<%=luci.dispatcher.build_url("admin", "asterisk", "dialplans")%>" enctype="multipart/form-data">
++ <div>
++ <script type="text/javascript" src="/luci-static/resources/cbi.js"></script>
++ <input type="hidden" name="cbi.submit" value="1" />
++ <input type="submit" value="Save" class="hidden" />
++ </div>
++
++<div class="cbi-map" id="cbi-asterisk">
++ <h2><a id="content" name="content">Outgoing Call Routing</a></h2>
++ <div class="cbi-map-descr">
++ Here you can manage your dial plans which are used to route outgoing calls from your local extensions.<br /><br />
++ Related tasks:<br />
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/dialplans/zones')%>" class="cbi-title-ref">Manage dialzones</a> |
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/voicemail/mailboxes')%>" class="cbi-title-ref">Manage voicemail boxes</a> |
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/meetme/rooms')%>" class="cbi-title-ref">Manage meetme rooms</a>
++ </div>
++ <!-- tblsection -->
++ <fieldset class="cbi-section" id="cbi-asterisk-sip">
++ <!--<legend>Dialplans</legend>-->
++ <div class="cbi-section-descr"></div>
++
++ <% for i, plan in pairs(ast.dialplan.plans()) do %>
++ <div class="cbi-section-node">
++ <table class="cbi-section-table">
++ <tr class="cbi-section-table-titles">
++ <th style="text-align: left; padding: 3px" class="cbi-section-table-cell">
++ <big>Dialplan <em><%=plan.name%></em></big>
++ </th>
++ <td>
++ <a href="<%=luci.dispatcher.build_url('admin', 'asterisk', 'dialplans')%>?delplan=<%=plan.name%>">
++ <img style="border:none" alt="Remove this dialplan" title="Remove this dialplan" src="/luci-static/resources/cbi/remove.gif" />
++ </a>
++ </td>
++ </tr>
++
++ <!-- dialzones -->
++ <% local zones_used = { }; local row = 0 %>
++ <% for i, zone in ipairs(plan.zones) do zones_used[zone.name] = true %>
++ <tr class="cbi-section-table-row <%=rowstyle(row)%>">
++ <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
++ <strong>&#x2514; Dialzone <em><%=zone.name%></em></strong> (<%=zone.description%>)
++ <p style="padding-left: 1em; margin-bottom:0">
++ Lines:
++ <%=ast.tools.hyperlinks(
++ zone.trunks, function(v)
++ return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower()
++ end
++ )%><br />
++ Matches:
++ <%=format_matches(zone)%>
++ </p>
++ </td>
++ <td style="width:5%" class="cbi-value-field">
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/dialplans/out', zone.name)%>">
++ <img style="border:none" alt="Edit dialzone" title="Edit dialzone" src="/luci-static/resources/cbi/edit.gif" />
++ </a>
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/dialplans')%>?delzone.<%=plan.name%>=<%=zone.name%>">
++ <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
++ </a>
++ </td>
++ </tr>
++ <% row = row + 1; end %>
++ <!-- /dialzones -->
++
++ <!-- voicemail -->
++ <% local boxes_used = { } %>
++ <% for ext, box in luci.util.kspairs(plan.voicemailboxes) do boxes_used[box.id] = true %>
++ <tr class="cbi-section-table-row <%=rowstyle(row)%>">
++ <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
++ <strong>&#x2514; Voicemailbox <em><%=box.id%></em></strong> (<%=box.name%>)
++ <p style="padding-left: 1em; margin-bottom:0">
++ Owner: <%=box.name%> |
++ eMail: <%=#box.email > 0 and box.email or 'n/a'%> |
++ Pager: <%=#box.page > 0 and box.page or 'n/a'%><br />
++ Matches: <%=format_matches(ext)%>
++ </p>
++ </td>
++ <td style="width:5%" class="cbi-value-field">
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/voicemail/mailboxes')%>">
++ <img style="border:none" alt="Manage mailboxes ..." title="Manage mailboxes ..." src="/luci-static/resources/cbi/edit.gif" />
++ </a>
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/dialplans')%>?delvbox.<%=plan.name%>=<%=ext%>">
++ <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
++ </a>
++ </td>
++ </tr>
++ <% row = row + 1; end %>
++ <!-- /voicemail -->
++
++ <!-- meetme -->
++ <% local rooms_used = { } %>
++ <% for ext, room in luci.util.kspairs(plan.meetmerooms) do rooms_used[room.room] = true %>
++ <tr class="cbi-section-table-row <%=rowstyle(row)%>">
++ <td style="text-align: left; padding: 3px" class="cbi-section-table-cell">
++ <strong>&#x2514; MeetMe Room <em><%=room.room%></em></strong>
++ <% if room.description and #room.description > 0 then %> (<%=room.description%>)<% end %>
++ <p style="padding-left: 1em; margin-bottom:0">
++ Matches: <%=format_matches(ext)%>
++ </p>
++ </td>
++ <td style="width:5%" class="cbi-value-field">
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/meetme/rooms')%>">
++ <img style="border:none" alt="Manage conferences ..." title="Manage conferences ..." src="/luci-static/resources/cbi/edit.gif" />
++ </a>
++ <a href="<%=luci.dispatcher.build_url('admin/asterisk/dialplans')%>?delmeetme.<%=plan.name%>=<%=ext%>">
++ <img style="border:none" alt="Remove from this dialplan" title="Remove from this dialplan" src="/luci-static/resources/cbi/remove.gif" />
++ </a>
++ </td>
++ </tr>
++ <% row = row + 1; end %>
++ <!-- /meetme -->
++
++ <tr class="cbi-section-table-row">
++ <td style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="2">
++ <hr style="margin-bottom:0.5em; border-width:0 0 1px 0" />
++
++ Add Dialzone:<br />
++ <select style="width:30%" name="addzone.<%=plan.name%>">
++ <option value="">-- please select --</option>
++ <% for _, zone in luci.util.kspairs(ast.dialzone.zones()) do %>
++ <% if not zones_used[zone.name] then %>
++ <option value="<%=zone.name%>"><%=zone.name%> (<%=zone.description%>)</option>
++ <% end %>
++ <% end %>
++ </select>
++ <br /><br />
++
++ Add Voicemailbox:<br />
++ <select style="width:20%" name="addvbox.<%=plan.name%>" onchange="this.form['addvboxext.<%=plan.name%>'].value=this.options[this.selectedIndex].value.split('@')[0]">
++ <option value="">-- please select --</option>
++ <% for ext, box in luci.util.kspairs(ast.voicemail.boxes()) do %>
++ <% if not boxes_used[box.id] then %>
++ <option value="<%=box.id%>"><%=box.id%> (<%=box.name%>)</option>
++ <% end %>
++ <% end %>
++ </select>
++ as extension
++ <input type="text" style="width:5%" name="addvboxext.<%=plan.name%>" />
++ <br /><br />
++
++ Add MeetMe Conference:<br />
++ <select style="width:20%" name="addmeetme.<%=plan.name%>" onchange="this.form['addmeetmeext.<%=plan.name%>'].value=this.options[this.selectedIndex].value">
++ <option value="">-- please select --</option>
++ <% for ext, room in luci.util.kspairs(ast.meetme.rooms()) do %>
++ <%# if not rooms_used[room.room] then %>
++ <option value="<%=room.room%>">
++ <%=room.room%>
++ <% if room.description and #room.description > 0 then %>(<%=room.description%>)<% end %>
++ </option>
++ <%# end %>
++ <% end %>
++ </select>
++ as extension
++ <input type="text" style="width:5%" name="addmeetmeext.<%=plan.name%>" />
++ <br /><br />
++
++ <input type="submit" class="cbi-button cbi-button-add" value="Add item &raquo;" title="Add item ..."/>
++ </td>
++ </tr>
++
++ </table>
++
++ <div class="cbi-section-create cbi-tblsection-create"></div>
++ </div>
++ <br />
++ <% end %>
++
++ <div class="cbi-section-node">
++ <div class="cbi-section-create cbi-tblsection-create" style="padding: 3px">
++ <h3>Create a new dialplan</h3>
++ The name is required and must be unique. It may only contain the characters A-Z, a-z, 0-9 and _ .<br />
++
++ <%- if create_error then %>
++ <br /><span style="color:red">Invalid name given!</span><br />
++ <% end -%>
++
++ <br />
++ <input type="text" class="cbi-section-create-name" name="addplan" style="width:200px" />
++ <input type="submit" class="cbi-button cbi-button-add" value="Add dialplan" title="Add dialplan"/>
++ </div>
++ </div>
++
++ </fieldset>
++</div>
++</form>
++<div class="clear"></div>
++<%+footer%>
+diff --git a/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
+new file mode 100644
+index 0000000..ac52791
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/luasrc/view/asterisk/dialzones.htm
+@@ -0,0 +1,165 @@
++<%#
++ Copyright 2008 Steven Barth <steven@midlink.org>
++ Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
++ 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 "<code style='padding: 2px; border:1px solid #CCCCCC; background-color: #FFFFFF'>%s</code>" % 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
++
++%>
++
++
++<form method="post" action="<%=luci.dispatcher.build_url("admin", "asterisk", "dialplans", "zones")%>" enctype="multipart/form-data">
++ <div>
++ <script type="text/javascript" src="/luci-static/resources/cbi.js"></script>
++ <input type="hidden" name="cbi.submit" value="1" />
++ <input type="submit" value="Save" class="hidden" />
++ </div>
++
++<div class="cbi-map" id="cbi-asterisk">
++ <h2><a id="content" name="content">Dial Zone Management</a></h2>
++ <div class="cbi-map-descr">
++ <a href="<%=luci.dispatcher.build_url("admin/asterisk/dialplans")%>" class="cbi-title-ref">Back to dialplan overview</a><br /><br />
++ 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.
++ </div>
++
++ <!-- tblsection -->
++ <fieldset class="cbi-section" id="cbi-asterisk-sip">
++ <div class="cbi-section-node">
++ <table class="cbi-section-table">
++ <tr class="cbi-section-table-titles">
++ <th style="text-align: left; padding: 3px" class="cbi-section-table-cell" colspan="6">
++ <h3>Dialzone Overview</h3>
++ </th>
++ </tr>
++
++ <tr class="cbi-section-table-descr">
++ <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Name</th>
++ <th style="width: 5%; text-align:right" class="cbi-section-table-cell">Prepend</th>
++ <th style="width: 20%; text-align:left" class="cbi-section-table-cell">- Match</th>
++ <th style="text-align:left" class="cbi-section-table-cell">Trunk</th>
++ <th style="width: 35%; text-align:left" class="cbi-section-table-cell">Description</th>
++ <th style="width: 4%; text-align:left" class="cbi-section-table-cell"></th>
++ </tr>
++
++ <% for i, rule in pairs(ast.dialzone.zones()) do %>
++ <tr class="cbi-section-table-row <%=rowstyle(i)%>">
++ <td style="text-align:right" class="cbi-value-field">
++ <%=rule.name%>
++ </td>
++ <td style="text-align:right" class="cbi-value-field">
++ <% for _ in ipairs(rule.matches) do %>
++ <%=rule.addprefix and digit_pattern(rule.addprefix)%>&#160;<br />
++ <% end %>
++ </td>
++ <td style="text-align:left" class="cbi-value-field">
++ <% for _, m in ipairs(rule.matches) do %>
++ <%=rule.localprefix and "%s " % digit_pattern(rule.localprefix)%>
++ <%=digit_pattern(m)%><br />
++ <% end %>
++ </td>
++ <td style="text-align:left" class="cbi-value-field">
++ <%=ast.tools.hyperlinks(
++ rule.trunks, function(v)
++ return luci.dispatcher.build_url("admin", "asterisk", "trunks", "%s") % v:lower()
++ end
++ )%>
++ </td>
++ <td style="text-align:left" class="cbi-value-field">
++ <%=rule.description or rule.name%>
++ </td>
++ <td style="text-align:left" class="cbi-value-field">
++ <a href="<%=luci.dispatcher.build_url('admin', 'asterisk', 'dialplans', 'out', rule.name)%>">
++ <img style="border:none" alt="Edit entry" title="Edit entry" src="/luci-static/resources/cbi/edit.gif" />
++ </a>
++ <a href="<%=luci.dispatcher.build_url('admin', 'asterisk', 'dialplans', 'zones')%>?delzone=<%=rule.name%>">
++ <img style="border:none" alt="Delete entry" title="Delete entry" src="/luci-static/resources/cbi/remove.gif" />
++ </a>
++ </td>
++ </tr>
++ <% end %>
++ </table>
++ <div class="cbi-section-create cbi-tblsection-create"></div>
++ </div>
++ <br />
++
++ <div class="cbi-section-node">
++ <div class="cbi-section-create cbi-tblsection-create" style="padding: 3px">
++ <h3>Create a new dialzone</h3>
++ The name is required and must be unique. It may only contain the characters A-Z, a-z, 0-9 and _ .<br />
++ You can specifiy multiple number matches by separating them with spaces.<br />
++
++ <%- if create_error then %>
++ <br /><span style="color:red">Invalid name given!</span><br />
++ <% end -%>
++
++ <table>
++ <tr>
++ <td style="padding:3px">
++ <label for="create1">1) Name</label><br />
++ <input type="text" class="cbi-section-create-name" id="create1" name="newzone_name" style="width:200px" />
++ <br /><br />
++
++ <label for="create2">2) Number Match</label><br />
++ <input type="text" class="cbi-section-create-name" id="create2" name="newzone_match" style="width:200px" />
++ </td>
++ <td style="padding:3px">
++ <label for="create3">3) Trunks</label><br />
++ <select class="cbi-input-select" multiple="multiple" id="create3" name="newzone_uses" size="4" style="width:200px">
++ <% for i, t in ipairs(find_trunks()) do %>
++ <option value="<%=t[1]%>"><%=t[2]%></option>
++ <% end %>
++ </select>
++ </td>
++ </tr>
++ </table>
++ <br />
++
++ <input type="submit" class="cbi-button cbi-button-add" name="newzone" value="Add entry" title="Add entry"/>
++ </div>
++ </div>
++ </fieldset>
++</div>
++</form>
++<div class="clear"></div>
++<%+footer%>
+diff --git a/feeds/luci/applications/luci-app-asterisk/po/ca/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/ca/asterisk.po
+new file mode 100644
+index 0000000..9775758
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/ca/asterisk.po
+@@ -0,0 +1,680 @@
++# 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 <iopahopa@gmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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 doesnt 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 seperate 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 =&gt; .so ; Estableix el nom CallerID"
++
++#~ msgid "load => .so ; Set CallerID Number"
++#~ msgstr "load =&gt; .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 =&gt; .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 =&gt; .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/feeds/luci/applications/luci-app-asterisk/po/cs/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/cs/asterisk.po
+new file mode 100644
+index 0000000..7341d57
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/cs/asterisk.po
+@@ -0,0 +1,11 @@
++# 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/feeds/luci/applications/luci-app-asterisk/po/de/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/de/asterisk.po
+new file mode 100644
+index 0000000..f289849
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/de/asterisk.po
+@@ -0,0 +1,131 @@
++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 <roecker@empty-v.de>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/po/el/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/el/asterisk.po
+new file mode 100644
+index 0000000..7a0fee7
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/el/asterisk.po
+@@ -0,0 +1,71 @@
++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 <acinonyx@openwrt.gr>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/po/en/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/en/asterisk.po
+new file mode 100644
+index 0000000..e462f56
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/en/asterisk.po
+@@ -0,0 +1,680 @@
++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 <suspend@tiscali.cz>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen digits when transferring"
++#~ msgstr "Seconds to wait bewteen 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 doesnt save CDR"
++#~ msgstr "Make sure asterisk doesnt 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 seperate entities"
++#~ msgstr "Fork The CDR into 2 seperate 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 =&gt; .so ; Set CallerID Name"
++
++#~ msgid "load => .so ; Set CallerID Number"
++#~ msgstr "load =&gt; .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 =&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 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 =&gt; .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/feeds/luci/applications/luci-app-asterisk/po/es/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/es/asterisk.po
+new file mode 100644
+index 0000000..8e2fe1e
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/es/asterisk.po
+@@ -0,0 +1,355 @@
++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 <jarre2_es_jose@hotmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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 doesnt 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 seperate 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/feeds/luci/applications/luci-app-asterisk/po/fr/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/fr/asterisk.po
+new file mode 100644
+index 0000000..75c1d38
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/fr/asterisk.po
+@@ -0,0 +1,569 @@
++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 <fblistes+luci@free.fr>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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 doesnt 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 seperate 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/feeds/luci/applications/luci-app-asterisk/po/he/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/he/asterisk.po
+new file mode 100644
+index 0000000..25ed5bb
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/he/asterisk.po
+@@ -0,0 +1,194 @@
++# 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 <zstorch@gmail.com>\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/feeds/luci/applications/luci-app-asterisk/po/hu/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/hu/asterisk.po
+new file mode 100644
+index 0000000..c6a5d81
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/hu/asterisk.po
+@@ -0,0 +1,134 @@
++# 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/feeds/luci/applications/luci-app-asterisk/po/it/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/it/asterisk.po
+new file mode 100644
+index 0000000..9eb24da
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/it/asterisk.po
+@@ -0,0 +1,162 @@
++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 <claudyus84@gmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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/feeds/luci/applications/luci-app-asterisk/po/ja/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/ja/asterisk.po
+new file mode 100644
+index 0000000..98bd10b
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/ja/asterisk.po
+@@ -0,0 +1,44 @@
++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 <kentaro.matsuyama@gmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/po/ms/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/ms/asterisk.po
+new file mode 100644
+index 0000000..e1260e1
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/ms/asterisk.po
+@@ -0,0 +1,611 @@
++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 <waichet@hotmail.com>\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 bewteen 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 doesnt 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 seperate 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/feeds/luci/applications/luci-app-asterisk/po/no/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/no/asterisk.po
+new file mode 100644
+index 0000000..70c448d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/no/asterisk.po
+@@ -0,0 +1,12 @@
++# 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/feeds/luci/applications/luci-app-asterisk/po/pl/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/pl/asterisk.po
+new file mode 100644
+index 0000000..f092853
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/pl/asterisk.po
+@@ -0,0 +1,75 @@
++# 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ł <msjablonsky@gmail.com>\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/feeds/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po
+new file mode 100644
+index 0000000..07d7052
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/pt-br/asterisk.po
+@@ -0,0 +1,691 @@
++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 <luizluca@gmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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 doesnt 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 seperate 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/feeds/luci/applications/luci-app-asterisk/po/pt/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/pt/asterisk.po
+new file mode 100644
+index 0000000..d1b9836
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/pt/asterisk.po
+@@ -0,0 +1,150 @@
++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 <jm@unimos.net>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/po/ro/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/ro/asterisk.po
+new file mode 100644
+index 0000000..e271370
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/ro/asterisk.po
+@@ -0,0 +1,54 @@
++# 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 <daniel.petre@pitesti.rcs-rds.ro>\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/feeds/luci/applications/luci-app-asterisk/po/ru/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/ru/asterisk.po
+new file mode 100644
+index 0000000..acedb82
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/ru/asterisk.po
+@@ -0,0 +1,515 @@
++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 <kamal.aliev@epscom.ru>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 doesnt 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/feeds/luci/applications/luci-app-asterisk/po/sk/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/sk/asterisk.po
+new file mode 100644
+index 0000000..e69de29
+diff --git a/feeds/luci/applications/luci-app-asterisk/po/sv/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/sv/asterisk.po
+new file mode 100644
+index 0000000..e69de29
+diff --git a/feeds/luci/applications/luci-app-asterisk/po/templates/asterisk.pot b/feeds/luci/applications/luci-app-asterisk/po/templates/asterisk.pot
+new file mode 100644
+index 0000000..e69de29
+diff --git a/feeds/luci/applications/luci-app-asterisk/po/tr/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/tr/asterisk.po
+new file mode 100644
+index 0000000..c8b4e58
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/tr/asterisk.po
+@@ -0,0 +1,12 @@
++# 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/feeds/luci/applications/luci-app-asterisk/po/uk/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/uk/asterisk.po
+new file mode 100644
+index 0000000..d6dd63e
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/uk/asterisk.po
+@@ -0,0 +1,79 @@
++# 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/feeds/luci/applications/luci-app-asterisk/po/vi/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/vi/asterisk.po
+new file mode 100644
+index 0000000..d1cc6b2
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/vi/asterisk.po
+@@ -0,0 +1,680 @@
++# 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 <dhppat@gmail.com>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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 bewteen 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 doesnt 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 seperate 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 =&amp;gt; .so ; Đặt tên CallerID "
++
++#~ msgid "load => .so ; Set CallerID Number"
++#~ msgstr "load =&amp;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 =&amp;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 =&amp;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/feeds/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po
+new file mode 100644
+index 0000000..9ef2f1f
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/zh-cn/asterisk.po
+@@ -0,0 +1,171 @@
++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 <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po b/feeds/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po
+new file mode 100644
+index 0000000..c7eef9d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/po/zh-tw/asterisk.po
+@@ -0,0 +1,13 @@
++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 <EMAIL@ADDRESS>\n"
++"Language-Team: LANGUAGE <LL@li.org>\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/feeds/luci/applications/luci-app-asterisk/root/etc/config/asterisk b/feeds/luci/applications/luci-app-asterisk/root/etc/config/asterisk
+new file mode 100644
+index 0000000..2484097
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/root/etc/config/asterisk
+@@ -0,0 +1,231 @@
++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/feeds/luci/applications/luci-app-asterisk/root/etc/uci-defaults/luci-asterisk b/feeds/luci/applications/luci-app-asterisk/root/etc/uci-defaults/luci-asterisk
+new file mode 100755
+index 0000000..e45819f
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-asterisk/root/etc/uci-defaults/luci-asterisk
+@@ -0,0 +1,11 @@
++#!/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/feeds/luci/applications/luci-app-commands/Makefile b/feeds/luci/applications/luci-app-commands/Makefile
+new file mode 100644
+index 0000000..dc5d0ca
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/Makefile
+@@ -0,0 +1,14 @@
++#
++# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org>
++#
++# This is free software, licensed under the Apache License, Version 2.0 .
++#
++
++include $(TOPDIR)/rules.mk
++
++LUCI_TITLE:=LuCI Shell Command Module
++LUCI_DEPENDS:=
++
++include ../../luci.mk
++
++# call BuildPackage - OpenWrt buildroot signature
+diff --git a/feeds/luci/applications/luci-app-commands/luasrc/controller/commands.lua b/feeds/luci/applications/luci-app-commands/luasrc/controller/commands.lua
+new file mode 100644
+index 0000000..16528d1
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/luasrc/controller/commands.lua
+@@ -0,0 +1,227 @@
++-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
++-- 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 action_run(...)
++ 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]"))
++
++ luci.http.prepare_content("application/json")
++ luci.http.write_json({
++ command = table.concat(argv, " "),
++ stdout = not binary and stdout,
++ stderr = stderr,
++ exitcode = rv,
++ binary = binary
++ })
++ else
++ luci.http.status(404, "No such command")
++ 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 uci = require "luci.model.uci".cursor()
++ if cmdid and
++ uci:get("luci", cmdid) == "command" and
++ uci:get("luci", cmdid, "public") == "1"
++ then
++ action_download(cmdid, args)
++ else
++ luci.http.status(403, "Access to command denied")
++ end
++end
+diff --git a/feeds/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua b/feeds/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua
+new file mode 100644
+index 0000000..7794f15
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/luasrc/model/cbi/commands.lua
+@@ -0,0 +1,27 @@
++-- Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
++-- 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/feeds/luci/applications/luci-app-commands/luasrc/view/commands.htm b/feeds/luci/applications/luci-app-commands/luasrc/view/commands.htm
+new file mode 100644
+index 0000000..72f1e1d
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/luasrc/view/commands.htm
+@@ -0,0 +1,169 @@
++<%#
++ Copyright 2012 Jo-Philipp Wich <jow@openwrt.org>
++ 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%>
++
++<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
++<script type="text/javascript">//<![CDATA[
++ var stxhr = new XHR();
++
++ function command_run(id)
++ {
++ var args;
++ var field = document.getElementById(id);
++ if (field)
++ args = encodeURIComponent(field.value);
++
++ var legend = document.getElementById('command-rc-legend');
++ var output = document.getElementById('command-rc-output');
++
++ if (legend && output)
++ {
++ output.innerHTML =
++ '<img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" /> ' +
++ '<%:Waiting for command to complete...%>'
++ ;
++
++ legend.parentNode.style.display = 'block';
++ legend.style.display = 'inline';
++
++ stxhr.get('<%=luci.dispatcher.build_url("admin", "system", "commands", "run")%>/' + id + (args ? '/' + args : ''), null,
++ function(x, st)
++ {
++ if (st)
++ {
++ if (st.binary)
++ st.stdout = '[<%:Binary data not displayed, download instead.%>]';
++
++ legend.style.display = 'none';
++ output.innerHTML = String.format(
++ '<pre><strong># %h\n</strong>%h<span style="color:red">%h</span></pre>' +
++ '<div class="alert-message warning">%s (<%:Code:%> %d)</div>',
++ st.command, st.stdout, st.stderr,
++ (st.exitcode == 0) ? '<%:Command successful%>' : '<%:Command failed%>',
++ st.exitcode);
++ }
++ else
++ {
++ legend.style.display = 'none';
++ output.innerHTML = '<span class="error"><%:Failed to execute command!%></span>';
++ }
++
++ location.hash = '#output';
++ }
++ );
++ }
++ }
++
++ function command_download(id)
++ {
++ var args;
++ var field = document.getElementById(id);
++ if (field)
++ args = encodeURIComponent(field.value);
++
++ location.href = '<%=luci.dispatcher.build_url("admin", "system", "commands", "download")%>/' + id + (args ? '/' + args : '');
++ }
++
++ function command_link(id)
++ {
++ var legend = document.getElementById('command-rc-legend');
++ var output = document.getElementById('command-rc-output');
++
++ var args;
++ var field = document.getElementById(id);
++ if (field)
++ args = encodeURIComponent(field.value);
++
++ if (legend && output)
++ {
++ var link = location.protocol + '//' + location.hostname +
++ (location.port ? ':' + location.port : '') +
++ location.pathname.split(';')[0] + 'command/' +
++ id + (args ? '/' + args : '');
++
++ legend.style.display = 'none';
++ output.parentNode.style.display = 'block';
++ output.innerHTML = String.format(
++ '<div class="alert-message"><%:Access command with%> <a href="%s">%s</a></div>',
++ link, link
++ );
++
++ location.hash = '#output';
++ }
++ }
++
++//]]></script>
++
++<%
++ local uci = require "luci.model.uci".cursor()
++ local commands = { }
++
++ uci:foreach("luci", "command", function(s) commands[#commands+1] = s end)
++%>
++
++<form method="get" action="<%=pcdata(luci.http.getenv("REQUEST_URI"))%>">
++ <div class="cbi-map">
++ <h2><a id="content" name="content"><%:Custom Commands%></a></h2>
++
++ <fieldset class="cbi-section">
++ <% local _, command; for _, command in ipairs(commands) do %>
++ <div class="commandbox">
++ <h3><%=pcdata(command.name)%></h3>
++ <p><%:Command:%> <code><%=pcdata(command.command)%></code></p>
++ <% if command.param == "1" then %>
++ <p><%:Arguments:%> <input type="text" id="<%=command['.name']%>" /></p>
++ <% end %>
++ <div>
++ <input type="button" value="<%:Run%>" class="cbi-button cbi-button-apply" onclick="command_run('<%=command['.name']%>')" />
++ <input type="button" value="<%:Download%>" class="cbi-button cbi-button-download" onclick="command_download('<%=command['.name']%>')" />
++ <% if command.public == "1" then %>
++ <input type="button" value="<%:Link%>" class="cbi-button cbi-button-link" onclick="command_link('<%=command['.name']%>')" />
++ <% end %>
++ </div>
++ </div>
++ <% end %>
++
++ <br style="clear:both" /><br />
++ <a name="output"></a>
++ </fieldset>
++ </div>
++
++ <fieldset class="cbi-section" style="display:none">
++ <legend id="command-rc-legend"><%:Collecting data...%></legend>
++ <span id="command-rc-output"></span>
++ </fieldset>
++</form>
++
++<%+footer%>
+diff --git a/feeds/luci/applications/luci-app-commands/po/ca/commands.po b/feeds/luci/applications/luci-app-commands/po/ca/commands.po
+new file mode 100644
+index 0000000..9dc23b2
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/po/ca/commands.po
+@@ -0,0 +1,98 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-06-06 10:41+0200\n"
++"Last-Translator: Alex <alexhenrie24@gmail.com>\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 "Access command with"
++msgstr "Accedeix l'ordre amb"
++
++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 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 "Failed to execute command!"
++msgstr "L'execució de l'ordre ha fallat!"
++
++msgid "Link"
++msgstr "Enllaç"
++
++msgid "Loading"
++msgstr "Carregant"
++
++msgid "Public access"
++msgstr "Accés públic"
++
++msgid "Run"
++msgstr "Executa"
++
++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..."
+diff --git a/feeds/luci/applications/luci-app-commands/po/cs/commands.po b/feeds/luci/applications/luci-app-commands/po/cs/commands.po
+new file mode 100644
+index 0000000..64949bd
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/po/cs/commands.po
+@@ -0,0 +1,96 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2014-08-04 19:01+0200\n"
++"Last-Translator: KubaCZ <kuba.turek@centrum.cz>\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 "Access command with"
++msgstr ""
++
++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 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 "Failed to execute command!"
++msgstr "Chyba při zpracování příkazu!"
++
++msgid "Link"
++msgstr "Odkaz"
++
++msgid "Loading"
++msgstr "Nahrávám"
++
++msgid "Public access"
++msgstr "Veřejný přístup"
++
++msgid "Run"
++msgstr "Spustit"
++
++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/feeds/luci/applications/luci-app-commands/po/de/commands.po b/feeds/luci/applications/luci-app-commands/po/de/commands.po
+new file mode 100644
+index 0000000..2b7c631
+--- /dev/null
++++ b/feeds/luci/applications/luci-app-commands/po/de/commands.po
+@@ -0,0 +1,98 @@
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"PO-Revision-Date: 2012-11-21 18:45+0200\n"
++"Last-Translator: Jo-Philipp <jow@openwrt.org>\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 "Access command with"
++msgstr "Kommando aufrufen mit"
++
++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 stattd