Merge pull request #6562 from KarlVogel/host_sanitize
authorJo-Philipp Wich <jo@mein.io>
Thu, 16 Aug 2018 13:44:28 +0000 (15:44 +0200)
committerGitHub <noreply@github.com>
Thu, 16 Aug 2018 13:44:28 +0000 (15:44 +0200)
ddns-scripts: sanitize host charset and shell escape characters

292 files changed:
admin/netdata/Makefile
lang/luajit/Makefile
lang/perl/Makefile
lang/perl/files/base.config
lang/perl/files/version.config
lang/perl/patches/020-storables-stacksize.patch [new file with mode: 0644]
lang/perl/patches/900-use-rm-force.patch
lang/perl/patches/910-miniperl-needs-inc-dot.patch
lang/perl/patches/920-fix-no-locale.patch [new file with mode: 0644]
lang/perl/perlmod.mk
lang/perl/perlver.mk [new file with mode: 0644]
lang/python/python-gnupg/Makefile
lang/python/twisted/Makefile
libs/dtc/Makefile
libs/eventlog/Makefile [deleted file]
libs/hiredis/Makefile
libs/intltool/Makefile
libs/intltool/patches/100-optional-perl-xml-parser.patch
libs/libesmtp/Makefile
libs/libesmtp/patches/100-openssl-1.1.patch [new file with mode: 0644]
libs/libesmtp/patches/200-add-TLSv1_1-TLSv1_2-support.patch [new file with mode: 0644]
libs/libgphoto2/Makefile
libs/libgphoto2/patches/001-automake-compat.patch
libs/libgphoto2/patches/002-no-docs-examples-test-translations.patch
libs/libmpdclient/Makefile
libs/libmpdclient/autotools-files/Makefile.am [new file with mode: 0644]
libs/libmpdclient/autotools-files/config.h.in [new file with mode: 0644]
libs/libmpdclient/autotools-files/configure.ac [new file with mode: 0644]
libs/libmpdclient/autotools-files/libmpdclient.pc.in [new file with mode: 0644]
libs/libmpdclient/autotools-files/m4/ax_check_compiler_flags.m4 [new file with mode: 0644]
libs/libpsl/Makefile
libs/libtirpc/Makefile
libs/libtirpc/patches/001-musl.patch [new file with mode: 0644]
libs/libtirpc/patches/002-libtirpc-1.0.4-rc2.patch [new file with mode: 0644]
libs/libtirpc/patches/01-Disable-parts-of-TIRPC-requiring-NIS-support.patch [deleted file]
libs/libtirpc/patches/02-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch [deleted file]
libs/libtirpc/patches/03-Disable-DES-authentification-support.patch [deleted file]
libs/libtirpc/patches/04-musl-rpc-fix-types.h.patch [deleted file]
libs/libuhttpd/Makefile
libs/loudmouth/Makefile
libs/loudmouth/patches/002-fix-comparison.patch [new file with mode: 0644]
libs/neon/Makefile
libs/p11-kit/Makefile
libs/p11-kit/patches/010-build-Ease-issetugid-check-when-cross-compiling.patch [deleted file]
libs/postgresql/Makefile
libs/xmlrpc-c/Makefile
mail/emailrelay/Makefile
mail/emailrelay/patches/010-openssl-1.1.patch [new file with mode: 0644]
mail/emailrelay/patches/010-ssl3-fix.patch [deleted file]
mail/mailsend/Makefile
mail/mailsend/patches/0001-OpenSSL-1.1-support-for-HMAC-api.patch [new file with mode: 0644]
mail/mailsend/patches/0002-Removed-API-deprecated-by-OpenSSL-1.1.0.patch [new file with mode: 0644]
mail/pigeonhole/Makefile
multimedia/ffmpeg/Makefile
net/acme/Makefile
net/adblock/Makefile
net/adblock/files/adblock.sh
net/arp-scan/Makefile
net/arp-scan/patches/001-cross_compile.patch [deleted file]
net/bonding/Makefile [new file with mode: 0644]
net/bonding/files/lib/netifd/proto/bonding.sh [new file with mode: 0755]
net/bridge-utils/Makefile
net/bridge-utils/patches/010-fix_struct_in6_addr_usage.patch [deleted file]
net/bridge-utils/patches/100-musl-compat.patch [deleted file]
net/chaosvpn/Makefile
net/coova-chilli/Makefile
net/coova-chilli/patches/100-fix-sysinfo-redeclaration.patch [deleted file]
net/coova-chilli/patches/100-fix_compile_kmod.patch [new file with mode: 0644]
net/coova-chilli/patches/200-fix-compile-with-musl.patch [new file with mode: 0644]
net/coova-chilli/patches/200-fix_compile_kmod.patch [deleted file]
net/coova-chilli/patches/201-fix_dereferencing_pointers.patch [deleted file]
net/coova-chilli/patches/300-fix-compile-with-cyassl.patch [deleted file]
net/coova-chilli/patches/400-fix-compile-with-musl.patch [deleted file]
net/coova-chilli/patches/401-fix-compile-misleading-indentation.patch [deleted file]
net/ddns-scripts/Makefile
net/ddns-scripts/files/ddns.defaults
net/ddns-scripts/files/dynamic_dns_functions.sh
net/ddns-scripts/files/dynamic_dns_updater.sh
net/ddns-scripts/files/public_suffix_list.dat [deleted file]
net/ddns-scripts/files/services
net/ddns-scripts/files/services_ipv6
net/ddns-scripts/files/update_cloudflare_com_v1.sh [deleted file]
net/ddns-scripts/files/update_cloudflare_com_v4.sh
net/ddns-scripts/files/update_freedns_42_pl.sh
net/ddns-scripts/files/update_no-ip_com.sh
net/ddns-scripts/files/update_nsupdate.sh
net/ddns-scripts/tools/public_suffix_list.sh [deleted file]
net/foolsm/Makefile [new file with mode: 0644]
net/foolsm/files/connections.conf [new file with mode: 0644]
net/foolsm/files/foolsm.conf [new file with mode: 0644]
net/foolsm/files/foolsm.init [new file with mode: 0644]
net/foolsm/files/foolsm_script [new file with mode: 0644]
net/foolsm/patches/100-plugin-export-dir.patch [new file with mode: 0644]
net/foolsm/patches/110-missing-WAIT_ANY.patch [new file with mode: 0644]
net/geth/Makefile
net/gnunet/Makefile
net/haproxy/Makefile
net/haproxy/get-latest-patches.sh
net/inadyn/Makefile
net/ipsec-tools/Makefile
net/ipsec-tools/patches/012-fix-implicit-int.patch [new file with mode: 0644]
net/ipsec-tools/patches/015-openssl-1.1.patch [new file with mode: 0644]
net/knxd/Makefile
net/lighttpd/Makefile
net/linknx/Makefile
net/miniupnpd/Makefile
net/miniupnpd/patches/100-build-on-OpenWrt.patch
net/mtr/Makefile
net/mtr/patches/010-remove-libcap-support.patch [new file with mode: 0644]
net/mtr/patches/020-Sami-Kerola-prevent-MTR-reporting-unknown-revision.patch [new file with mode: 0644]
net/net-snmp/Makefile
net/net-snmp/files/snmpd.init
net/netatalk/Makefile
net/nfs-kernel-server/Makefile
net/nginx/Makefile
net/nginx/patches/201-ignore-invalid-options.patch
net/ntpclient/Makefile
net/ntpclient/patches/100-daemon.patch
net/ntripcaster/Makefile
net/ntripclient/Makefile
net/ntripserver/Makefile
net/nut/Makefile
net/nut/files/nut-monitor.init
net/p910nd/Makefile
net/p910nd/files/p910nd.init
net/portmap/Makefile [deleted file]
net/portmap/files/portmap.init [deleted file]
net/portmap/patches/101-no_pie.patch [deleted file]
net/privoxy/Makefile
net/privoxy/files/privoxy.init
net/redsocks/Makefile
net/rpcbind/Makefile [new file with mode: 0644]
net/rpcbind/files/rpcbind.init [new file with mode: 0644]
net/samba4/Config.in [new file with mode: 0644]
net/samba4/Makefile [new file with mode: 0644]
net/samba4/files/samba.config [new file with mode: 0644]
net/samba4/files/samba.init [new file with mode: 0644]
net/samba4/files/samba.service [new file with mode: 0644]
net/samba4/files/smb.conf.template [new file with mode: 0644]
net/samba4/patches/001-samba-4.4.0-pam.patch [new file with mode: 0644]
net/samba4/patches/002-dnsserver-4.7.0.patch [new file with mode: 0644]
net/samba4/patches/010-source3-msgsock-nvram-fix.patch [new file with mode: 0644]
net/samba4/patches/011-source4-msgsock-nvram-fix.patch [new file with mode: 0644]
net/samba4/patches/100-do-not-import-target-module-while-cross-compile.patch [new file with mode: 0644]
net/samba4/patches/101-do-not-check-xsltproc-manpages.patch [new file with mode: 0644]
net/samba4/patches/102-samba-4.8.2-unbundle-libreadline.patch [new file with mode: 0644]
net/samba4/waf-cross-answers/aarch64.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/arc.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/arm.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/armeb.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/i386.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/mips.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/mips64.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/mips64el.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/mipsel.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/powerpc.txt [new file with mode: 0644]
net/samba4/waf-cross-answers/x86_64.txt [new file with mode: 0644]
net/shorewall-core/Makefile
net/shorewall-lite/Makefile
net/shorewall/Makefile
net/shorewall6-lite/Makefile
net/shorewall6/Makefile
net/snort/Makefile
net/softflowd/Makefile
net/strongswan/Makefile
net/strongswan/files/etc/hotplug.d/ipsec/01-user [new file with mode: 0644]
net/strongswan/patches/300-include-ipsec-hotplug.patch [new file with mode: 0644]
net/strongswan/patches/300-include-ipsec-user-script.patch [deleted file]
net/subversion/Makefile
net/sysrepo/Makefile
net/tgt/Makefile
net/transmission/Makefile
net/transmission/files/transmission.config
net/transmission/files/transmission.init
net/travelmate/Makefile
net/travelmate/files/README.md
net/travelmate/files/travelmate.init
net/travelmate/files/travelmate.sh
net/unbound/Makefile
net/unbound/files/README.md
net/unbound/files/defaults.sh
net/unbound/files/dnsmasq.sh
net/unbound/files/iptools.sh
net/unbound/files/odhcpd.awk
net/unbound/files/odhcpd.sh
net/unbound/files/rootzone.sh [deleted file]
net/unbound/files/stopping.sh [new file with mode: 0644]
net/unbound/files/unbound.init
net/unbound/files/unbound.ntpd
net/unbound/files/unbound.sh
net/unbound/files/unbound.uci
net/unbound/patches/001-conf.patch [deleted file]
net/unbound/patches/100-example-conf-in.patch [new file with mode: 0644]
net/unbound/patches/200-openssl-log-err.patch [new file with mode: 0644]
net/usbip/Makefile
net/wavemon/Makefile
net/wget/Makefile
net/wifidog-ng/Makefile
net/wifidog-ng/files/ssl.crt [new file with mode: 0644]
net/wifidog-ng/files/ssl.key [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng.config
net/wifidog-ng/files/wifidog-ng.crt [deleted file]
net/wifidog-ng/files/wifidog-ng.init
net/wifidog-ng/files/wifidog-ng.key [deleted file]
net/wifidog-ng/files/wifidog-ng.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/auth.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/config.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/heartbeat.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/ubus.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/util.lua [new file with mode: 0644]
net/wifidog-ng/files/wifidog-ng/version.lua [new file with mode: 0644]
net/wifidog-ng/src/Makefile [new file with mode: 0644]
net/wifidog-ng/src/config.c [new file with mode: 0644]
net/wifidog-ng/src/config.h [new file with mode: 0644]
net/wifidog-ng/src/main.c [new file with mode: 0644]
net/wifidog-ng/src/utils.h [new file with mode: 0644]
net/wsdd2/Makefile [new file with mode: 0644]
net/wsdd2/files/wsdd2.init [new file with mode: 0644]
net/wsdd2/patches/001-add_uuid_boot_id.patch [new file with mode: 0644]
net/zerotier/Makefile
net/znc/Makefile
net/znc/patches/100-move_rootcheck_after_config.patch [deleted file]
net/znc/patches/101-Reduce_rebuild_time.patch
net/znc/patches/104-disable-empty-modules-check.patch
sound/mpc/Makefile
sound/mpc/autotools-files/Makefile.am [new file with mode: 0644]
sound/mpc/autotools-files/config.h.in [new file with mode: 0644]
sound/mpc/autotools-files/configure.ac [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_append_compile_flags.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_append_flag.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_append_link_flags.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_check_compile_flag.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_check_link_flag.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/ax_require_defined.m4 [new file with mode: 0644]
sound/mpc/autotools-files/m4/check.m4 [new file with mode: 0644]
sound/mpd/Makefile
sound/mpd/patches/210-support_raw_pcm_streams.patch
sound/shairport-sync/Makefile
utils/acl/Makefile
utils/acpica-unix/Makefile
utils/acpid/Makefile
utils/acpid/patches/002-dont-use-isfdtype.patch [deleted file]
utils/ap51-flash/Makefile
utils/bluez/Makefile
utils/bluez/files/bluetooth.config [deleted file]
utils/bluez/patches/201-readline.patch
utils/bluez/patches/202-fix-endianness.patch
utils/bluez/patches/203-obexd_without_systemd.patch
utils/bluez/patches/204-no-printing-subsystem.patch
utils/bluez/patches/205-refresh_adv_manager_for_non-LE_devices.patch [new file with mode: 0644]
utils/ccrypt/Makefile
utils/ccrypt/patches/001-no-intl.patch
utils/crelay/Makefile
utils/cryptsetup/Makefile
utils/device-observatory/Makefile [new file with mode: 0644]
utils/device-observatory/files/etc/config/device-observatory [new file with mode: 0644]
utils/device-observatory/files/etc/init.d/device-observatory [new file with mode: 0755]
utils/digitemp/Makefile
utils/fio/Makefile
utils/gammu/Makefile
utils/gammu/patches/001-iconv-disabling-option.patch
utils/gammu/patches/002-no-fstack-protector.patch
utils/gammu/patches/003-cmake-cross-toolchain.patch
utils/gammu/patches/004-cmake_libdbi_optional.patch
utils/gzip/Makefile
utils/joe/Makefile
utils/logrotate/Makefile
utils/lsof/Makefile
utils/lvm2/Makefile
utils/lvm2/patches/000-compile.patch
utils/lvm2/patches/001-include_fix.patch
utils/lvm2/patches/002-const-stdio.patch
utils/lvm2/patches/003-no-mallinfo.patch
utils/lvm2/patches/004-device-include-goto-lable-as-well.patch
utils/lxc/Makefile
utils/lxc/patches/001-nl-avoid-NULL-pointer-dereference.patch [new file with mode: 0644]
utils/mc/Makefile
utils/owfs/Makefile
utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch [deleted file]
utils/owfs/patches/101-fix-no-reset-routine-segfault.patch [deleted file]
utils/pciutils/Makefile
utils/picocom/Makefile
utils/picocom/patches/010-fix-compile.patch [new file with mode: 0644]
utils/picocom/patches/100-musl-compat.patch [deleted file]
utils/prometheus-node-exporter-lua/Makefile
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/conntrack.lua [new file with mode: 0644]
utils/qemu/Makefile
utils/rtl-ais/Makefile
utils/rtl-sdr/Makefile
utils/rtl_433/Makefile
utils/stoken/Makefile
utils/uvcdynctrl/Makefile

index 7bff2a37a238f255de6785c2a1c2172ecd54ddd9..b06add37bb9cb05f7714d00d6db9092992ed6481 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netdata
 PKG_VERSION:=1.10.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=
 PKG_LICENSE:=GPL-3.0
 PKG_LICENSE_FILES:=COPYING
@@ -50,6 +50,8 @@ define Package/netdata/install
        mkdir -p $(1)/etc/netdata
        $(CP) $(PKG_INSTALL_DIR)/etc/netdata $(1)/etc
        $(CP) ./files/netdata.conf $(1)/etc/netdata
+       mkdir -p $(1)/etc/netdata/custom-plugins.d
+
        mkdir -p $(1)/usr/share/netdata
        $(CP) $(PKG_INSTALL_DIR)/usr/share/netdata $(1)/usr/share
        rm -rf $(1)/usr/share/netdata/web/images
@@ -58,12 +60,15 @@ define Package/netdata/install
        rm $(1)/usr/share/netdata/web/fonts/*.svg
        rm $(1)/usr/share/netdata/web/fonts/*.ttf
        rm $(1)/usr/share/netdata/web/fonts/*.woff
+
        mkdir -p $(1)/usr/lib/netdata
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/netdata $(1)/usr/lib
        rm $(1)/usr/lib/netdata/python.d/python-modules-installer.sh
        chmod 4755 $(1)/usr/lib/netdata/plugins.d/apps.plugin
+
        mkdir -p $(1)/etc/init.d
        $(INSTALL_BIN) ./files/netdata.init $(1)/etc/init.d/netdata
+
        mkdir -p $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/netdata $(1)/usr/sbin
 endef
index e5dfa953192bc22484da4181f1b062cee083463f..c1a52879aadfc7c9e2c22b4854c81e59bd9f4932 100644 (file)
@@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=luajit
 PKG_VERSION:=2017-01-17-71ff7ef
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Morteza Milani <milani@pichak.co>
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYRIGHT
@@ -59,7 +59,7 @@ endef
 
 define Build/InstallDev
        $(INSTALL_DIR) $(1)/usr/include/luajit-2.1
-       $(CP) $(PKG_INSTALL_DIR)/usr/include/luajit-2.1/*.h $(1)/usr/include/luajit-2.1
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/luajit-2.1/*.{h,hpp} $(1)/usr/include/luajit-2.1
        $(INSTALL_DIR) $(1)/usr/lib
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.{a,so*} $(1)/usr/lib/
        $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
@@ -69,7 +69,7 @@ endef
 
 define Package/luajit/install
        $(INSTALL_DIR) $(1)/usr/lib/
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
        $(INSTALL_DIR) $(1)/usr/bin
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/luajit-2.1.0-beta2 $(1)/usr/bin/$(PKG_NAME)
 endef
index 81c5e71db8df83dc19fc701a0a12d88c9ea0c81e..86a4351ac3c06d26f548cd6f600f1c2ecd1c8f2a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2016 OpenWrt.org
+# Copyright (C) 2006-2018 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -7,8 +7,10 @@
 
 include $(TOPDIR)/rules.mk
 
+include perlver.mk
+
 PKG_NAME:=perl
-PKG_VERSION:=5.26.2
+PKG_VERSION:=$(PERL_VERSION)
 PKG_RELEASE:=1
 
 PKG_SOURCE_URL:=\
@@ -19,7 +21,7 @@ PKG_SOURCE_URL:=\
                https://mirrors.sonic.net/cpan/src/5.0 \
                https://www.cpan.org/src/5.0
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=0f8c0fb1b0db4681adb75c3ba0dd77a0472b1b359b9e80efd79fc27b4352132c
+PKG_HASH:=059b3cb69970d8c8c5964caced0335b4af34ac990c8e61f7e3f90cd1c2d11e49
 
 PKG_LICENSE:=GPL-1.0+ Artistic-1.0-Perl
 PKG_LICENSE_FILES:=Copying Artistic README
index 7bcfc859c44ed543991e863d605768f73da5b6eb..90a2cfbf682b185e2cd8603a8cdb6db649fb3811 100644 (file)
@@ -69,6 +69,7 @@ d_PRIu64='define'
 d_PRIx64='define'
 d_SCNfldbl='define'
 d__fwalk='undef'
+d_accept4='define'
 d_access='define'
 d_accessx='undef'
 d_acosh='define'
@@ -94,8 +95,11 @@ d_bcopy='define'
 d_bsd='undef'
 d_bsdgetpgrp='undef'
 d_bsdsetpgrp='undef'
+d_builtin_add_overflow='define'
 d_builtin_choose_expr='define'
 d_builtin_expect='undef'
+d_builtin_mul_overflow='define'
+d_builtin_sub_overflow='define'
 d_bzero='define'
 d_c99_variadic_macros='define'
 d_castneg='define'
@@ -143,6 +147,7 @@ d_double_style_ieee='define'
 d_double_style_vax='undef'
 d_drand48proto='define'
 d_dup2='define'
+d_dup3='define'
 d_duplocale='define'
 d_eaccess='undef'
 d_endgrent='define'
@@ -166,6 +171,7 @@ d_expm1='define'
 d_faststdio='undef'
 d_fchdir='define'
 d_fchmod='define'
+d_fchmodat='define'
 d_fchown='define'
 d_fcntl='define'
 d_fcntl_can_lock='define'
@@ -282,10 +288,12 @@ d_lgamma_r='define'
 d_libm_lib_version='define'
 d_libname_unique='undef'
 d_link='define'
+d_linkat='define'
 d_llrint='define'
 d_llrintl='define'
 d_llround='define'
 d_llroundl='define'
+d_localeconv_l='undef'
 d_localtime64='undef'
 d_locconv='define'
 d_lockf='define'
@@ -309,6 +317,8 @@ d_madvise='define'
 d_malloc_good_size='undef'
 d_malloc_size='undef'
 d_mblen='define'
+d_mbrlen='define'
+d_mbrtowc='define'
 d_mbstowcs='define'
 d_mbtowc='define'
 d_memchr='define'
@@ -316,10 +326,12 @@ d_memcmp='define'
 d_memcpy='define'
 d_memmem='define'
 d_memmove='define'
+d_memrchr='undef'
 d_memset='define'
 d_mkdir='define'
 d_mkdtemp='define'
 d_mkfifo='define'
+d_mkostemp='define'
 d_mkstemp='define'
 d_mkstemps='undef'
 d_mktime='define'
@@ -356,11 +368,13 @@ d_old_pthread_create_joinable='undef'
 d_oldpthreads='undef'
 d_oldsock='undef'
 d_open3='define'
+d_openat='define'
 d_pathconf='define'
 d_pause='define'
 d_perl_otherlibdirs='undef'
 d_phostname='undef'
 d_pipe='define'
+d_pipe2='define'
 d_poll='define'
 d_portable='define'
 d_prctl='define'
@@ -389,6 +403,7 @@ d_regcmp='undef'
 d_regcomp='define'
 d_remainder='define'
 d_remquo='define'
+d_renameat='define'
 d_rename='define'
 d_rewinddir='define'
 d_rint='define'
@@ -497,9 +512,12 @@ d_strerror_l='define'
 d_strftime='define'
 d_strlcat='define'
 d_strlcpy='define'
+d_strnlen='define'
 d_strtod='define'
+d_strtod_l='define'
 d_strtol='define'
 d_strtold='define'
+d_strtold_l='define'
 d_strtoll='define'
 d_strtoq='define'
 d_strtoul='define'
@@ -519,6 +537,7 @@ d_tcsetpgrp='define'
 d_telldir='define'
 d_telldirproto='define'
 d_tgamma='define'
+d_thread_safe_nl_langinfo_l='define'
 d_time='define'
 d_timegm='define'
 d_times='define'
@@ -532,6 +551,7 @@ d_ualarm='define'
 d_umask='define'
 d_uname='define'
 d_union_semun='undef'
+d_unlinkat='define'
 d_unordered='undef'
 d_unsetenv='define'
 d_uselocale='define'
@@ -716,6 +736,7 @@ i_values='define'
 i_varargs='undef'
 i_varhdr='stdarg.h'
 i_vfork='undef'
+i_wchar='define'
 i_xlocale='undef'
 ignore_versioned_solibs='y'
 inc_version_list=' '
@@ -1022,7 +1043,7 @@ full_ar="${owrt:target_cross}ar"
 
 # Tool flags
 cppflags="$owrt:cflags"
-ccflags="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $owrt:cflags"
+ccflags="-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $owrt:cflags"
 ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
 ccdlflags="-fPIC -rdynamic -Wl,-rpath,$owrt:perllibpath/CORE"
 cccdlflags='-fPIC'
index 9bf885552e221f249c1884ecaf5a098f006c1d69..5a5c402f3000dbd043fbf07d7e5451d3e5458493 100644 (file)
@@ -1,11 +1,11 @@
 # Set the version here
 PERL_REVISION=5
-PERL_VERSION=26
-PERL_SUBVERSION=2
+PERL_VERSION=28
+PERL_SUBVERSION=0
 
 # (api_revison, api_version, api_subversion) = (revision, version, 0) usually
 PERL_API_REVISION=5
-PERL_API_VERSION=26
+PERL_API_VERSION=28
 PERL_API_SUBVERSION=0
 
 known_extensions='B Compress/Raw/Zlib Cwd DB_File Data/Dumper Devel/DProf Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/Glob Filter/Util/Call GDBM_File Hash/Util I18N/Langinfo IO IPC/SysV List/Util MIME/Base64 Math/BigInt/FastCalc NDBM_File ODBM_File Opcode POSIX PerlIO/encoding PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Text/Soundex Time/HiRes Time/Piece Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap attrs re threads threads/shared Hash/Util/FieldHash'
diff --git a/lang/perl/patches/020-storables-stacksize.patch b/lang/perl/patches/020-storables-stacksize.patch
new file mode 100644 (file)
index 0000000..a2fff02
--- /dev/null
@@ -0,0 +1,73 @@
+From 682a4acb98783a7f9b5c286b308f12863599fec3 Mon Sep 17 00:00:00 2001
+From: Tony Cook <tony@develop-help.com>
+Date: Mon, 30 Jul 2018 21:00:52 +1000
+Subject: (perl #133411) don't try to load Storable with -Dusecrosscompile
+
+---
+ dist/Storable/Makefile.PL |  9 ++++++++-
+ dist/Storable/stacksize   | 10 +++++++---
+ 2 files changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/dist/Storable/Makefile.PL b/dist/Storable/Makefile.PL
+index a5d9e66891..db420ab30b 100644
+--- a/dist/Storable/Makefile.PL
++++ b/dist/Storable/Makefile.PL
+@@ -90,12 +90,19 @@ sub depend {
+         # blib.pm needs arch/lib
+         $extra_deps = ' Storable.pm';
+     }
++    my $whichperl;
++    if ($Config::Config{usecrosscompile}) {
++        $whichperl = '$(PERLRUN)';
++    }
++    else {
++        $whichperl = '$(FULLPERLRUNINST)';
++    }
+     my $linktype = uc($_[0]->{LINKTYPE});
+     my $limit_pm = File::Spec->catfile('lib', 'Storable', 'Limit.pm');
+     "
+ $limit_pm : stacksize \$(INST_$linktype)$extra_deps
+       \$(MKPATH) \$(INST_LIB)
+-      \$(FULLPERLRUNINST) stacksize $options
++      $whichperl stacksize $options
+ release : dist
+       git tag \$(VERSION)
+diff --git a/dist/Storable/stacksize b/dist/Storable/stacksize
+index 7abd3a84cc..14e0739734 100644
+--- a/dist/Storable/stacksize
++++ b/dist/Storable/stacksize
+@@ -7,6 +7,9 @@ use Cwd;
+ use File::Spec;
+ use strict;
++-d "lib" or mkdir "lib";
++-d "lib/Storable" or mkdir "lib/Storable";
++
+ my $fn = "lib/Storable/Limit.pm";
+ my $ptrsize = $Config{ptrsize};
+ my ($bad1, $bad2) = (65001, 25000);
+@@ -29,6 +32,10 @@ sub is_miniperl {
+ }
+ if (is_miniperl()) {
++    if ($Config{usecrosscompile}) {
++        write_limits(500, 265);
++        exit;
++    }
+     die "Should not run during miniperl\n";
+ }
+ my $prefix = "";
+@@ -68,9 +75,6 @@ if ($ENV{PERL_CORE}) {
+     }
+ }
+--d "lib" or mkdir "lib";
+--d "lib/Storable" or mkdir "lib/Storable";
+-
+ if ($^O eq "MSWin32") {
+     require Win32;
+     my ($str, $major, $minor) = Win32::GetOSVersion();
+-- 
+2.11.0
+
index da79f7a250c9de04bcf3a85f286c077a3e63720f..1eac6ce35a9d63b1cc6f4b96e9ef3629e585e666 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Makefile.SH      2017-10-17 11:59:52.938763142 -0600
 +++ b/Makefile.SH      2017-10-17 12:13:46.202555604 -0600
-@@ -270,6 +270,7 @@ LNS = $lns
+@@ -275,6 +275,7 @@ LNS = $lns
  # NOTE: some systems don't grok "cp -f". XXX Configure test needed?
  CPS = $cp
  RMS = rm -f
@@ -8,7 +8,7 @@
  ranlib = $ranlib
  
  # The following are mentioned only to make metaconfig include the
-@@ -731,7 +731,7 @@ bitcount.h: generate_uudmap$(HOST_EXE_EX
+@@ -736,7 +737,7 @@ bitcount.h: generate_uudmap$(HOST_EXE_EX
        ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers)
  
  generate_uudmap$(HOST_EXE_EXT): generate_uudmap$(OBJ_EXT)
@@ -17,7 +17,7 @@
        $(LNS) $(HOST_GENERATE) generate_uudmap$(HOST_EXE_EXT)
  
  !NO!SUBS!
-@@ -871,26 +872,26 @@ mydtrace.h: $(DTRACE_H)
+@@ -876,26 +877,26 @@ mydtrace.h: $(DTRACE_H)
        define)
                $spitshell >>$Makefile <<'!NO!SUBS!'
  $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt)
@@ -48,7 +48,7 @@
  
  !NO!SUBS!
                ;;
-@@ -901,13 +902,13 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
+@@ -906,13 +907,13 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
        case "$useshrplib" in
        true)
                $spitshell >>$Makefile <<'!NO!SUBS!'
@@ -64,7 +64,7 @@
        mv $@ libperl$(OBJ_EXT)
        $(AR) qv $(LIBPERL) libperl$(OBJ_EXT)
  !NO!SUBS!
-@@ -916,7 +917,7 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
+@@ -921,7 +922,7 @@ $(LIBPERL): $& $(perllib_dep) $(DYNALOAD
                ;;
        *)
                $spitshell >>$Makefile <<'!NO!SUBS!'
@@ -73,7 +73,7 @@
        $(AR) rc $(LIBPERL) $(perllib_objs) $(DYNALOADER)
        @$(ranlib) $(LIBPERL)
  !NO!SUBS!
-@@ -949,7 +950,7 @@ $(MINIPERL_EXE): lib/buildcustomize.pl
+@@ -954,7 +955,7 @@ $(MINIPERL_EXE): lib/buildcustomize.pl
        amigaos*)
                $spitshell >>$Makefile <<'!NO!SUBS!'
  lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
@@ -82,7 +82,7 @@
        $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
            $(miniperl_objs) $(libs)
  #     $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
-@@ -987,7 +988,7 @@ NAMESPACEFLAGS = -force_flat_namespace
+@@ -992,7 +993,7 @@ NAMESPACEFLAGS = -force_flat_namespace
                esac
                $spitshell >>$Makefile <<'!NO!SUBS!'
  lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl
@@ -91,7 +91,7 @@
        $(CC) $(CLDFLAGS) $(NAMESPACEFLAGS) -o $(MINIPERL_EXE) \
            $(miniperl_objs) $(libs)
        $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
-@@ -998,8 +999,8 @@ lib/buildcustomize.pl: $& $(miniperl_obj
+@@ -1003,8 +1004,8 @@ lib/buildcustomize.pl: $& $(miniperl_obj
                if test "X$hostperl" != X; then
                        $spitshell >>$Makefile <<!GROK!THIS!
  lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl
        \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE)
        \$(LDLIBPTH) ./miniperl\$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
        \$(MINIPERL) -f write_buildcustomize.pl 'osname' "$osname"
-@@ -1007,7 +1008,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
+@@ -1012,7 +1013,7 @@ lib/buildcustomize.pl: \$& \$(miniperl_d
                else
                        $spitshell >>$Makefile <<'!NO!SUBS!'
  lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl
        $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
            $(miniperl_objs) $(libs)
        $(LDLIBPTH) ./miniperl$(HOST_EXE_EXT) -w -Ilib -Idist/Exporter/lib -MExporter -e '<?>' || sh -c 'echo >&2 Failed to build miniperl.  Please run make minitest; exit 1'
-@@ -1020,7 +1021,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
+@@ -1025,7 +1026,7 @@ lib/buildcustomize.pl: $& $(miniperl_dep
        $spitshell >>$Makefile <<'!NO!SUBS!'
  
  $(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl
  !NO!SUBS!
  
          case $osname in
-@@ -1114,8 +1115,8 @@ pod/perl5261delta.pod: pod/perldelta.pod
-       $(LNS) perldelta.pod pod/perl5261delta.pod
+@@ -1119,8 +1120,8 @@ pod/perl5280delta.pod: pod/perldelta.pod
+       $(LNS) perldelta.pod pod/perl5280delta.pod
  
  extra.pods: $(MINIPERL_EXE)
 -      -@test ! -f extra.pods || rm -f `cat extra.pods`
        -@for x in `grep -l '^=[a-z]' README.* | grep -v README.vms` ; do \
            nx=`echo $$x | sed -e "s/README\.//"`; \
            $(LNS) ../$$x "pod/perl"$$nx".pod" ; \
-@@ -1332,11 +1333,11 @@ realclean:     _realcleaner _mopup
+@@ -1340,11 +1341,11 @@ realclean:     _realcleaner _mopup
        @echo "Note that '$(MAKE) realclean' does not delete config.sh or Policy.sh"
  
  _clobber:
  
  clobber:      _realcleaner _mopup _clobber
  
-@@ -1344,23 +1345,23 @@ distclean:     clobber
+@@ -1352,23 +1353,23 @@ distclean:     clobber
  
  # Like distclean but also removes emacs backups and *.orig.
  veryclean:    _verycleaner _mopup _clobber
        -cd pod; $(LDLIBPTH) $(MAKE) $(CLEAN)
        -cd utils; $(LDLIBPTH) $(MAKE) $(CLEAN)
        -@if test -f $(MINIPERL_EXE) ; then \
-@@ -1370,31 +1371,31 @@ _cleaner1:
+@@ -1378,31 +1379,31 @@ _cleaner1:
        else \
        sh $(CLEAN).sh ; \
        fi
        -rmdir lib/version lib/threads lib/inc/ExtUtils lib/inc lib/encoding
        -rmdir lib/autodie/exception lib/autodie/Scope lib/autodie lib/XS
        -rmdir lib/Win32API lib/VMS lib/Unicode/Collate/Locale
-@@ -1443,11 +1444,11 @@ _realcleaner:
+@@ -1452,11 +1453,11 @@ _realcleaner:
  _verycleaner:
        @$(LDLIBPTH) $(MAKE) _cleaner1 CLEAN=veryclean
        @$(LDLIBPTH) $(MAKE) _cleaner2
        lint $(lintflags) -DPERL_CORE -D_REENTRANT -DDEBUGGING -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(c)
  
  cscopeflags = -Rb  # Recursive, build-only.
-@@ -1505,7 +1506,7 @@ case "$targethost" in
+@@ -1514,7 +1515,7 @@ case "$targethost" in
  '') $spitshell >>$Makefile <<'!NO!SUBS!'
  test_prep test-prep: test_prep_pre $(MINIPERL_EXE) $(unidatafiles) $(PERL_EXE) \
-       $(dynamic_ext) $(TEST_PERL_DLL) runtests $(generated_pods)
+       $(dynamic_ext) $(TEST_PERL_DLL) runtests $(generated_pods) common_build
 -      cd t && (rm -f $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
 +      cd t && ($(RMS) $(PERL_EXE); $(LNS) ../$(PERL_EXE) $(PERL_EXE))
  
  !NO!SUBS!
  ;;
-@@ -1555,7 +1556,7 @@ test_prep test-prep: test_prep_pre \$(MI
+@@ -1564,7 +1565,7 @@ test_prep test-prep: test_prep_pre \$(MI
        $to config.sh
  # --- For lib/diagnostics.t with -Duseshrplib
        $to \$(PERL_EXE)
        $to t/\$(PERL_EXE)
  
  !GROK!THIS!
-@@ -1565,7 +1566,7 @@ esac
+@@ -1574,7 +1575,7 @@ esac
  $spitshell >>$Makefile <<'!NO!SUBS!'
  test_prep_reonly: $(MINIPERL_EXE) $(PERL_EXE) $(dynamic_ext_re) $(TEST_PERL_DLL)
        $(MINIPERL) make_ext.pl $(dynamic_ext_re) MAKE="$(MAKE)" LIBPERL_A=$(LIBPERL) LINKTYPE=dynamic
  !NO!SUBS!
  
  case "$targethost" in
-@@ -1620,7 +1621,7 @@ minitest_prep:
+@@ -1629,7 +1630,7 @@ minitest_prep:
        @echo "You may see some irrelevant test failures if you have been unable"
        @echo "to build lib/Config.pm, or the Unicode data files."
        @echo " "
index 697360aaf9b3bf618d263fc992625aa9bf2e63f7..d6ef98bae16ffdd59212463e69ca5e3b6f51a3b2 100644 (file)
        $(MINIPERL) -f write_buildcustomize.pl
  !NO!SUBS!
                fi
---- a/cpan/Devel-PPPort/PPPort_pm.PL   2017-07-18 16:59:59.000000000 -0600
-+++ b/cpan/Devel-PPPort/PPPort_pm.PL   2017-10-15 19:19:27.341543182 -0600
-@@ -15,6 +15,7 @@
- use strict;
- $^W = 1;
-+push(@INC, '.');
- require "parts/ppptools.pl";
- my $INCLUDE = 'parts/inc';
---- a/cpan/Devel-PPPort/ppport_h.PL    2017-07-18 16:59:59.000000000 -0600
-+++ b/cpan/Devel-PPPort/ppport_h.PL    2017-10-15 19:27:16.594178623 -0600
-@@ -14,6 +14,7 @@
- ################################################################################
- package Devel::PPPort;
-+push(@INC, '.');
- require "PPPort.pm";
- rename 'ppport.h', 'ppport.old' if -f 'ppport.h';
- unlink "ppport.old" if WriteFile("ppport.h") && -f 'ppport.h';
---- a/cpan/Devel-PPPort/PPPort_xs.PL   2017-07-18 16:59:59.000000000 -0600
-+++ b/cpan/Devel-PPPort/PPPort_xs.PL   2017-10-15 19:38:09.296679968 -0600
-@@ -15,6 +15,7 @@
- use strict;
- $^W = 1;
-+push(@INC, '.');
- require "parts/ppptools.pl";
- my %SECTION = (
---- a/cpan/Unicode-Collate/Makefile.PL 2017-07-18 16:49:51.000000000 -0600
-+++ b/cpan/Unicode-Collate/Makefile.PL 2017-10-15 20:19:31.890439791 -0600
-@@ -6,7 +6,7 @@ my $clean = {};
- if (-f "Collate.xs") {
-     print "Making header files for XS...\n";
--    do 'mkheader' or die $@ || "mkheader: $!";
-+    do './mkheader' or die $@ || "mkheader: $!";
-     $clean = { FILES => 'ucatbl.h' };
- }
diff --git a/lang/perl/patches/920-fix-no-locale.patch b/lang/perl/patches/920-fix-no-locale.patch
new file mode 100644 (file)
index 0000000..594695b
--- /dev/null
@@ -0,0 +1,399 @@
+commit d36adde059ed1c4f7af210b4f9fc3a7bd2d7d343
+Author: Karl Williamson <khw@cpan.org>
+Date:   Wed May 23 15:32:47 2018 -0600
+
+    Fix to compile under -DNO_LOCALE
+    
+    Several problems with this compile option were not caught before 5.28
+    was frozen.
+
+diff --git a/embed.fnc b/embed.fnc
+index 0f06e38..36f9f97 100644
+--- a/embed.fnc
++++ b/embed.fnc
+@@ -2765,9 +2765,11 @@ s       |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
+ #endif
+ #if defined(PERL_IN_LOCALE_C)
++#  ifdef USE_LOCALE
+ sn    |const char*|category_name |const int category
+ s     |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
+ s     |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
++#  endif
+ #  ifdef HAS_NL_LANGINFO
+ sn    |const char*|my_nl_langinfo|const nl_item item|bool toggle
+ #  else
+diff --git a/embed.h b/embed.h
+index cf3ad9e..fb66c26 100644
+--- a/embed.h
++++ b/embed.h
+@@ -1724,16 +1724,16 @@
+ #define unshare_hek_or_pvn(a,b,c,d)   S_unshare_hek_or_pvn(aTHX_ a,b,c,d)
+ #  endif
+ #  if defined(PERL_IN_LOCALE_C)
+-#define category_name         S_category_name
+-#define restore_switched_locale(a,b)  S_restore_switched_locale(aTHX_ a,b)
+ #define save_to_buffer                S_save_to_buffer
+-#define switch_category_locale_to_template(a,b,c)     S_switch_category_locale_to_template(aTHX_ a,b,c)
+ #    if defined(USE_LOCALE)
++#define category_name         S_category_name
+ #define new_collate(a)                S_new_collate(aTHX_ a)
+ #define new_ctype(a)          S_new_ctype(aTHX_ a)
+ #define new_numeric(a)                S_new_numeric(aTHX_ a)
++#define restore_switched_locale(a,b)  S_restore_switched_locale(aTHX_ a,b)
+ #define set_numeric_radix(a)  S_set_numeric_radix(aTHX_ a)
+ #define stdize_locale(a)      S_stdize_locale(aTHX_ a)
++#define switch_category_locale_to_template(a,b,c)     S_switch_category_locale_to_template(aTHX_ a,b,c)
+ #      if defined(USE_POSIX_2008_LOCALE)
+ #define emulate_setlocale     S_emulate_setlocale
+ #      endif
+diff --git a/locale.c b/locale.c
+index 7653340..f8f77fb 100644
+--- a/locale.c
++++ b/locale.c
+@@ -1264,6 +1264,7 @@ S_locking_setlocale(pTHX_
+ }
+ #endif
++#ifdef USE_LOCALE
+ STATIC void
+ S_set_numeric_radix(pTHX_ const bool use_locale)
+@@ -1299,6 +1300,10 @@ S_set_numeric_radix(pTHX_ const bool use_locale)
+     }
+ #  endif
++#else
++
++    PERL_UNUSED_ARG(use_locale);
++
+ #endif /* USE_LOCALE_NUMERIC and can find the radix char */
+ }
+@@ -1481,7 +1486,6 @@ S_new_ctype(pTHX_ const char *newctype)
+ #ifndef USE_LOCALE_CTYPE
+-    PERL_ARGS_ASSERT_NEW_CTYPE;
+     PERL_UNUSED_ARG(newctype);
+     PERL_UNUSED_CONTEXT;
+@@ -1994,6 +1998,8 @@ S_new_collate(pTHX_ const char *newcoll)
+ }
++#endif
++
+ #ifdef WIN32
+ STATIC char *
+@@ -2139,11 +2145,20 @@ Perl_setlocale(const int category, const char * locale)
+ {
+     /* This wraps POSIX::setlocale() */
++#ifdef NO_LOCALE
++
++    PERL_UNUSED_ARG(category);
++    PERL_UNUSED_ARG(locale);
++
++    return "C";
++
++#else
++
+     const char * retval;
+     const char * newlocale;
+     dSAVEDERRNO;
+-    DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
+     dTHX;
++    DECLARATION_FOR_LC_NUMERIC_MANIPULATION;
+ #ifdef USE_LOCALE_NUMERIC
+@@ -2262,6 +2277,8 @@ Perl_setlocale(const int category, const char * locale)
+     return retval;
++#endif
++
+ }
+ PERL_STATIC_INLINE const char *
+@@ -2414,13 +2431,16 @@ S_my_nl_langinfo(const int item, bool toggle)
+     dTHX;
+     const char * retval;
++#ifdef USE_LOCALE_NUMERIC
++
+     /* We only need to toggle into the underlying LC_NUMERIC locale for these
+      * two items, and only if not already there */
+     if (toggle && ((   item != RADIXCHAR && item != THOUSEP)
+                     || PL_numeric_underlying))
+-    {
++
++#endif  /* No toggling needed if not using LC_NUMERIC */
++
+         toggle = FALSE;
+-    }
+ #if defined(HAS_NL_LANGINFO) /* nl_langinfo() is available.  */
+ #  if   ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L)      \
+@@ -2468,6 +2488,8 @@ S_my_nl_langinfo(const int item, bool toggle)
+             do_free = TRUE;
+         }
++#    ifdef USE_LOCALE_NUMERIC
++
+         if (toggle) {
+             if (PL_underlying_numeric_obj) {
+                 cur = PL_underlying_numeric_obj;
+@@ -2478,6 +2500,8 @@ S_my_nl_langinfo(const int item, bool toggle)
+             }
+         }
++#    endif
++
+         /* We have to save it to a buffer, because the freelocale() just below
+          * can invalidate the internal one */
+         retval = save_to_buffer(nl_langinfo_l(item, cur),
+@@ -5169,9 +5193,7 @@ Perl_my_strerror(pTHX_ const int errnum)
+     LOCALE_UNLOCK;
+ #  endif /* End of doesn't have strerror_l */
+-#endif   /* End of does have locale messages */
+-
+-#ifdef DEBUGGING
++#  ifdef DEBUGGING
+     if (DEBUG_Lv_TEST) {
+         PerlIO_printf(Perl_debug_log, "Strerror returned; saving a copy: '");
+@@ -5179,7 +5201,8 @@ Perl_my_strerror(pTHX_ const int errnum)
+         PerlIO_printf(Perl_debug_log, "'\n");
+     }
+-#endif
++#  endif
++#endif   /* End of does have locale messages */
+     SAVEFREEPV(errstr);
+     return errstr;
+@@ -5301,10 +5324,17 @@ L<C<Perl_switch_to_global_locale>|perlapi/switch_to_global_locale>.
+ bool
+ Perl_sync_locale()
+ {
++
++#ifndef USE_LOCALE
++
++    return TRUE;
++
++#else
++
+     const char * newlocale;
+     dTHX;
+-#ifdef USE_POSIX_2008_LOCALE
++#  ifdef USE_POSIX_2008_LOCALE
+     bool was_in_global_locale = FALSE;
+     locale_t cur_obj = uselocale((locale_t) 0);
+@@ -5316,11 +5346,11 @@ Perl_sync_locale()
+      * will affect the */
+     if (cur_obj == LC_GLOBAL_LOCALE) {
+-#  ifdef HAS_QUERY_LOCALE
++#    ifdef HAS_QUERY_LOCALE
+         do_setlocale_c(LC_ALL, setlocale(LC_ALL, NULL));
+-#  else
++#    else
+         unsigned int i;
+@@ -5330,17 +5360,17 @@ Perl_sync_locale()
+             do_setlocale_r(categories[i], setlocale(categories[i], NULL));
+         }
+-#  endif
++#    endif
+         was_in_global_locale = TRUE;
+     }
+-#else
++#  else
+     bool was_in_global_locale = TRUE;
+-#endif
+-#ifdef USE_LOCALE_CTYPE
++#  endif
++#  ifdef USE_LOCALE_CTYPE
+     newlocale = savepv(do_setlocale_c(LC_CTYPE, NULL));
+     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+@@ -5349,8 +5379,8 @@ Perl_sync_locale()
+     new_ctype(newlocale);
+     Safefree(newlocale);
+-#endif /* USE_LOCALE_CTYPE */
+-#ifdef USE_LOCALE_COLLATE
++#  endif /* USE_LOCALE_CTYPE */
++#  ifdef USE_LOCALE_COLLATE
+     newlocale = savepv(do_setlocale_c(LC_COLLATE, NULL));
+     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+@@ -5359,8 +5389,8 @@ Perl_sync_locale()
+     new_collate(newlocale);
+     Safefree(newlocale);
+-#endif
+-#ifdef USE_LOCALE_NUMERIC
++#  endif
++#  ifdef USE_LOCALE_NUMERIC
+     newlocale = savepv(do_setlocale_c(LC_NUMERIC, NULL));
+     DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+@@ -5369,9 +5399,12 @@ Perl_sync_locale()
+     new_numeric(newlocale);
+     Safefree(newlocale);
+-#endif /* USE_LOCALE_NUMERIC */
++#  endif /* USE_LOCALE_NUMERIC */
+     return was_in_global_locale;
++
++#endif
++
+ }
+ #if defined(DEBUGGING) && defined(USE_LOCALE)
+diff --git a/makedef.pl b/makedef.pl
+index dbd756d..661b71d 100644
+--- a/makedef.pl
++++ b/makedef.pl
+@@ -574,6 +574,9 @@ unless ($define{USE_LOCALE_COLLATE}) {
+                   PL_collxfrm_mult
+                   Perl_sv_collxfrm
+                   Perl_sv_collxfrm_flags
++                    PL_strxfrm_NUL_replacement
++                    PL_strxfrm_is_behaved
++                    PL_strxfrm_max_cp
+                        );
+ }
+@@ -583,6 +586,9 @@ unless ($define{USE_LOCALE_NUMERIC}) {
+                   PL_numeric_name
+                   PL_numeric_radix_sv
+                   PL_numeric_standard
++                    PL_numeric_underlying
++                    PL_numeric_underlying_is_standard
++                    PL_underlying_numeric_obj
+                        );
+ }
+diff --git a/perl.h b/perl.h
+index 3e1f6cd..d457776 100644
+--- a/perl.h
++++ b/perl.h
+@@ -5657,6 +5657,9 @@ typedef struct am_table_short AMTS;
+ #  define IN_LC_COMPILETIME(category)      0
+ #  define IN_LC_RUNTIME(category)          0
+ #  define IN_LC(category)                  0
++#  define _CHECK_AND_WARN_PROBLEMATIC_LOCALE
++#  define _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(s, send)
++#  define _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG(c)
+ #endif
+diff --git a/proto.h b/proto.h
+index 3e027ab..558c33a 100644
+--- a/proto.h
++++ b/proto.h
+@@ -4669,8 +4669,6 @@ PERL_CALLCONV SV*        Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp);
+       assert(hv); assert(indexp)
+ #endif
+ #if defined(PERL_IN_LOCALE_C)
+-STATIC const char*    S_category_name(const int category);
+-STATIC void   S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
+ #ifndef PERL_NO_INLINE_FUNCTIONS
+ PERL_STATIC_INLINE const char *       S_save_to_buffer(const char * string, char **buf, Size_t *buf_size, const Size_t offset)
+                       __attribute__warn_unused_result__;
+@@ -4678,17 +4676,19 @@ PERL_STATIC_INLINE const char *        S_save_to_buffer(const char * string, char **buf
+       assert(buf_size)
+ #endif
+-STATIC const char*    S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
+ #  if defined(USE_LOCALE)
++STATIC const char*    S_category_name(const int category);
+ STATIC void   S_new_collate(pTHX_ const char* newcoll);
+ STATIC void   S_new_ctype(pTHX_ const char* newctype);
+ #define PERL_ARGS_ASSERT_NEW_CTYPE    \
+       assert(newctype)
+ STATIC void   S_new_numeric(pTHX_ const char* newnum);
++STATIC void   S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
+ STATIC void   S_set_numeric_radix(pTHX_ const bool use_locale);
+ STATIC char*  S_stdize_locale(pTHX_ char* locs);
+ #define PERL_ARGS_ASSERT_STDIZE_LOCALE        \
+       assert(locs)
++STATIC const char*    S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
+ #    if defined(USE_POSIX_2008_LOCALE)
+ STATIC const char*    S_emulate_setlocale(const int category, const char* locale, unsigned int index, const bool is_index_valid);
+ #    endif
+diff --git a/sv.c b/sv.c
+index 07865bb..81223ca 100644
+--- a/sv.c
++++ b/sv.c
+@@ -13330,10 +13330,15 @@ Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN p
+     SvTAINT(sv);
++#ifdef USE_LOCALE_NUMERIC
++
+     if (lc_numeric_set) {
+         RESTORE_LC_NUMERIC();   /* Done outside loop, so don't have to
+                                    save/restore each iteration. */
+     }
++
++#endif
++
+ }
+ /* =========================================================================
+diff --git a/t/lib/warnings/regexec b/t/lib/warnings/regexec
+index 900dd6e..b9e53c9 100644
+--- a/t/lib/warnings/regexec
++++ b/t/lib/warnings/regexec
+@@ -215,6 +215,10 @@ Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at -
+ Use of \b{} or \B{} for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 17.
+ ########
+ # NAME (?[ ]) in non-UTF-8 locale
++require '../loc_tools.pl';
++unless (locales_enabled()) {
++    print("SKIPPED\n# locales not available\n"),exit;
++}
+ eval { require POSIX; POSIX->import("locale_h") };
+ if ($@) {
+     print("SKIPPED\n# no POSIX\n"),exit;
+@@ -229,14 +233,14 @@ setlocale(&POSIX::LC_CTYPE, "C");
+ ":" =~ /(?[ \: ])/;
+ no warnings 'locale';
+ EXPECT
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 9.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 10.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 11.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
+-Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 12.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 13.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 13.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 14.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 14.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 15.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 15.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
++Use of (?[ ]) for non-UTF-8 locale is wrong.  Assuming a UTF-8 locale at - line 16.
+ ########
+ # NAME (?[ ]) in UTF-8 locale
+ require '../loc_tools.pl';
index 551d4532b19891aa4aa163ee068bcbeac7ae7af6..d00a8c42ecf4c50b03a4906500139a19b98ab554 100644 (file)
@@ -1,7 +1,13 @@
 # This makefile simplifies perl module builds.
 #
 
-PERL_VERSION:=5.26
+include ../perl/perlver.mk
+
+ifneq ($(PKG_NAME),perl)
+  PKG_VERSION:=$(PKG_VERSION)+perl$(PERL_VERSION2)
+endif
+
+PERL_VERSION:=$(PERL_VERSION2)
 
 # Build environment
 HOST_PERL_PREFIX:=$(STAGING_DIR_HOSTPKG)/usr
@@ -9,7 +15,7 @@ ifneq ($(CONFIG_USE_GLIBC),)
        EXTRA_LIBS:=bsd
        EXTRA_LIBDIRS:=$(STAGING_DIR)/lib
 endif
-PERL_CMD:=$(STAGING_DIR_HOSTPKG)/usr/bin/perl$(PERL_VERSION).0
+PERL_CMD:=$(STAGING_DIR_HOSTPKG)/usr/bin/perl$(PERL_VERSION3)
 
 MOD_CFLAGS_PERL:=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(TARGET_CFLAGS) $(TARGET_CPPFLAGS)
 ifdef CONFIG_PERL_THREADS
diff --git a/lang/perl/perlver.mk b/lang/perl/perlver.mk
new file mode 100644 (file)
index 0000000..b23e68a
--- /dev/null
@@ -0,0 +1,10 @@
+PERL_VERSION:=5.28.0
+
+PERL_EXPLODE:=$(subst ., ,$(PERL_VERSION))
+
+PERL_MAJOR:=$(word 1,$(PERL_EXPLODE))
+PERL_MINOR:=$(word 2,$(PERL_EXPLODE))
+PERL_REL:=$(word 3,$(PERL_EXPLODE))
+
+PERL_VERSION3:=$(PERL_VERSION)
+PERL_VERSION2:=$(PERL_MAJOR).$(PERL_MINOR)
index 0c209a7519b840a640d139c0043a6804a37cb6be..77f9d51b471ae2703ec26f255708bca4b10d59eb 100644 (file)
@@ -5,12 +5,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-gnupg
-PKG_VERSION:=0.4.1
+PKG_VERSION:=0.4.3
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://pypi.python.org/packages/fc/f1/df6c06da34939f67ea622e0b31dbc5bdb5121b271ab530d151df59974425/
-PKG_HASH:=ef47b02eaf41dee3cf4b02ddf83130827318de9fe3eae89d01a3f05859e20e1a
+PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/fd/a6/4ae8ec46a256444f65d745a92827c05fe6d4f3f4e1a40289a58ac37fe2b9
+PKG_HASH:=2d158dfc6b54927752b945ebe57e6a0c45da27747fa3b9ae66eccc0d2147ac0d
 
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=LICENSE
@@ -27,7 +27,7 @@ define Package/python-gnupg/Default
   SECTION:=lang
   CATEGORY:=Languages
   SUBMENU:=Python
-  URL:=https://github.com/isislovecruft/python-gnupg
+  URL:=https://gnupg.readthedocs.io/en/latest/
   DEPENDS:=+gnupg
 endef
 
index 35b78172bf1192facee481a7dee4fc82f7370228..5df2f662f041424750c507a27f9e7f51bd580d02 100644 (file)
@@ -9,14 +9,14 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=twisted
 PKG_VERSION:=18.4.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=Twisted-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://files.pythonhosted.org/packages/source/T/Twisted
 PKG_HASH:=a4cc164a781859c74de47f17f0e85f4bce8a3321a9d0892c015c8f80c4158ad9
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(BUILD_VARIANT)-twisted-$(PKG_VERSION)
-PKG_BUILD_DEPENDS:=USE_MUSL:librpc
+PKG_BUILD_DEPENDS:=libtirpc
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE
index d6a5bf1d347a29b4fb527f01a2cfc3c1dda1a3ae..39c87c6c7d0a18e533caed3a1ad4ec20321a6c31 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2016 Yousong Zhou <yszhou4tech@gmail.com>
+# Copyright (C) 2016-2018 Yousong Zhou <yszhou4tech@gmail.com>
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,10 +8,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dtc
-PKG_VERSION:=1.4.6
-PKG_RELEASE:=2
+PKG_VERSION:=1.4.7
+PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=382302bfcc3c40734be80ac620983971d911ec4cde798f551873f3eb008c7b7e
+PKG_HASH:=6643e8f00ff86350f465bb54b2185058b5b1b7bac01a0842c81a52b86589cde7
 PKG_SOURCE_URL:=@KERNEL/software/utils/dtc
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=GPL
diff --git a/libs/eventlog/Makefile b/libs/eventlog/Makefile
deleted file mode 100644 (file)
index f24ace5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=eventlog
-PKG_VERSION:=0.2.12
-PKG_RELEASE:=2
-
-PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
-
-PKG_SOURCE_URL:=https://my.balabit.com/downloads/eventlog/0.2/
-PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_HASH:=494dac8e01dc5ce323df2ad554d94874938dab51aa025987677b2bc6906a9c66
-
-PKG_FIXUP:=autoreconf
-PKG_INSTALL:=1
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/libeventlog
-  SECTION:=libs
-  CATEGORY:=Libraries
-  TITLE:=A new API to format and send structured log messages.
-endef
-
-define Package/eventlog/description
-  A new API to format and send structured log messages. It supports multiple message
-  representations (plain, XML attributes and XML tags) and multiple output methods
-  (local syslogd).
-endef
-
-define Build/InstallDev
-       $(INSTALL_DIR) $(1)/usr/include
-       $(CP) $(PKG_INSTALL_DIR)/usr/include/eventlog $(1)/usr/include/
-       $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libevtlog.{a,so*} $(1)/usr/lib/
-       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/eventlog.pc $(1)/usr/lib/pkgconfig/
-endef
-
-define Package/libeventlog/install
-       $(INSTALL_DIR) $(1)/usr/lib
-       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/libevtlog.so* $(1)/usr/lib/
-endef
-
-$(eval $(call BuildPackage,libeventlog))
index 1f0aa016bfe5e58a9e264ac4c22cc4f4da990b44..fed48e616d4c2d73ded33483e73a8239202317d3 100644 (file)
@@ -9,14 +9,11 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hiredis
 PKG_VERSION:=0.13.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/redis/hiredis.git
-PKG_SOURCE_VERSION:=010756025e8cefd1bc66c6d4ed3b1648ef6f1f95
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=ac774e318215cbfad4b8e493a84b4fe9a03f9882828ea01eac5357f28b5e9cd4
+PKG_SOURCE_URL:=https://codeload.github.com/redis/hiredis/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=717e6fc8dc2819bef522deaca516de9e51b9dfa68fe393b7db5c3b6079196f78
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING
index cebae5370ca277bc8ef58a6e69b069edda6c5cd3..4c672f2f9cc8a624470a8f88d26bf75d68ee4c08 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=intltool
-PKG_LIBVER:=0.40
-PKG_VERSION:=$(PKG_LIBVER).6
-PKG_RELEASE:=3
+PKG_LIBVER:=0.51
+PKG_VERSION:=$(PKG_LIBVER).0
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@GNOME/intltool/$(PKG_LIBVER)
-PKG_HASH:=4d1e5f8561f09c958e303d4faa885079a5e173a61d28437d0013ff5efc9e3b64
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://launchpad.net/intltool/trunk/$(PKG_VERSION)/+download
+PKG_HASH:=67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_HOST_ONLY:=1
@@ -27,7 +27,7 @@ define Package/intltool
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=set of tools to centralize translation using GNU gettext
-  URL:=http://www.freedesktop.org/wiki/Software/intltool
+  URL:=https://www.freedesktop.org/wiki/Software/intltool
   BUILDONLY:=1
 endef
 
index 4615d1d9534404b3ae61cbb1c5b75d3bb51edd9f..32474ba7080c66af75c196ef705b833c950d4547 100644 (file)
@@ -1,22 +1,22 @@
---- a/configure.in
-+++ b/configure.in
-@@ -25,7 +25,7 @@ AC_MSG_CHECKING([for XML::Parser])
+--- a/configure.ac
++++ b/configure.ac
+@@ -27,7 +27,7 @@ AC_MSG_CHECKING([for XML::Parser])
  if `$PERL -e "require XML::Parser" 2>/dev/null`; then
     AC_MSG_RESULT([ok])
  else
 -   AC_MSG_ERROR([XML::Parser perl module is required for intltool])
-+   AC_MSG_RESULT([XML::Parser perl module is required for some intltool utilitities])
++   AC_MSG_RESULT([XML::Parser perl module is required for intltool])
  fi
+ AC_PATH_PROG(BZR, bzr)
  
- AC_OUTPUT([
 --- a/intltool.m4
 +++ b/intltool.m4
-@@ -127,7 +127,7 @@ if test "x$2" != "xno-xml"; then
+@@ -148,7 +148,7 @@ if test "x$2" != "xno-xml"; then
     if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
         AC_MSG_RESULT([ok])
     else
 -       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
-+       AC_MSG_RESULT([XML::Parser perl module is required for some intltool utilitities])
++       AC_MSG_RESULT([XML::Parser perl module is required for intltool])
     fi
  fi
  
index a9cc4dd5a87484b6ca3bd707e476cadb3a5f5fde..148721ff7ed84c55f51f687f99bb2957e259baa5 100644 (file)
@@ -9,18 +9,15 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libesmtp
 PKG_VERSION:=1.0.6
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
 PKG_LICENSE:=LGPL-2.0+
 PKG_LICENSE_FILES:=COPYING
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/tru7/libesmtp.git
-PKG_SOURCE_VERSION=10e9a6df9f76da610941addf71b9a3cbf94f2e9f
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=6f703766be05cc0cd861790ee041d1c2910b6d6e7bb8805ed739839c7801bfcc
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=http://brianstafford.info/libesmtp
+PKG_HASH:=d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -31,7 +28,7 @@ define Package/libesmtp
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=A Library for Posting Electronic Mail
-  URL:=https://github.com/tru7/libesmtp.git
+  URL:=http://brianstafford.info/libesmtp/
   DEPENDS:=+libpthread +libopenssl
 endef
 
diff --git a/libs/libesmtp/patches/100-openssl-1.1.patch b/libs/libesmtp/patches/100-openssl-1.1.patch
new file mode 100644 (file)
index 0000000..cf02c15
--- /dev/null
@@ -0,0 +1,92 @@
+diff --git a/configure b/configure
+index d586ca2..ee39284 100755
+--- a/configure
++++ b/configure
+@@ -11896,9 +11896,9 @@ fi
+ fi
+ if test x$with_openssl != xno ; then
+-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5
+-$as_echo_n "checking for SSL_library_init in -lssl... " >&6; }
+-if test "${ac_cv_lib_ssl_SSL_library_init+set}" = set; then :
++      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5
++$as_echo_n "checking for SSL_new in -lssl... " >&6; }
++if test "${ac_cv_lib_ssl_SSL_new+set}" = set; then :
+   $as_echo_n "(cached) " >&6
+ else
+   ac_check_lib_save_LIBS=$LIBS
+@@ -11913,27 +11913,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ #ifdef __cplusplus
+ extern "C"
+ #endif
+-char SSL_library_init ();
++char SSL_new ();
+ int
+ main ()
+ {
+-return SSL_library_init ();
++return SSL_new ();
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+-  ac_cv_lib_ssl_SSL_library_init=yes
++  ac_cv_lib_ssl_SSL_new=yes
+ else
+-  ac_cv_lib_ssl_SSL_library_init=no
++  ac_cv_lib_ssl_SSL_new=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+ LIBS=$ac_check_lib_save_LIBS
+ fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_library_init" >&5
+-$as_echo "$ac_cv_lib_ssl_SSL_library_init" >&6; }
+-if test "x$ac_cv_lib_ssl_SSL_library_init" = x""yes; then :
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5
++$as_echo "$ac_cv_lib_ssl_SSL_new" >&6; }
++if test "x$ac_cv_lib_ssl_SSL_new" = x""yes; then :
+                               with_openssl=yes
+                               LIBS="-lssl -lcrypto $LIBS"
+diff --git a/smtp-tls.c b/smtp-tls.c
+index 9a66806..5bdc191 100644
+--- a/smtp-tls.c
++++ b/smtp-tls.c
+@@ -64,10 +64,12 @@ openssl_mutexcb (int mode, int n,
+                const char *file __attribute__ ((unused)),
+                int line __attribute__ ((unused)))
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+   if (mode & CRYPTO_LOCK)
+     pthread_mutex_lock (&openssl_mutex[n]);
+   else
+     pthread_mutex_unlock (&openssl_mutex[n]);
++#endif
+ }
+ #endif
+@@ -76,7 +78,7 @@ starttls_init (void)
+ {
+   if (tls_init)
+     return 1;
+-
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ #ifdef USE_PTHREADS
+   /* Set up mutexes for the OpenSSL library */
+   if (openssl_mutex == NULL)
+@@ -94,9 +96,12 @@ starttls_init (void)
+       CRYPTO_set_locking_callback (openssl_mutexcb);
+     }
+ #endif
+-  tls_init = 1;
+   SSL_load_error_strings ();
+   SSL_library_init ();
++#else
++  OPENSSL_init_ssl(0, NULL);
++#endif
++  tls_init = 1;
+   return 1;
+ }
diff --git a/libs/libesmtp/patches/200-add-TLSv1_1-TLSv1_2-support.patch b/libs/libesmtp/patches/200-add-TLSv1_1-TLSv1_2-support.patch
new file mode 100644 (file)
index 0000000..c1e50e7
--- /dev/null
@@ -0,0 +1,36 @@
+Description: Add TLSv1.1 and TLSv1.2 support
+Origin: vendor
+Bug-Debian: https://bugs.debian.org/802658
+Forwarded: yes
+Author: Salvatore Bonaccorso <carnil@debian.org>
+Last-Update: 2015-11-07
+
+--- a/smtp-tls.c
++++ b/smtp-tls.c
+@@ -197,11 +197,24 @@ starttls_create_ctx (smtp_session_t sess
+   ckf_t status;
+   /* The decision not to support SSL v2 and v3 but instead to use only
+-     TLSv1 is deliberate.  This is in line with the intentions of RFC
++     TLSv1.X is deliberate.  This is in line with the intentions of RFC
+      3207.  Servers typically support SSL as well as TLS because some
+      versions of Netscape do not support TLS.  I am assuming that all
+      currently deployed servers correctly support TLS.  */
+-  ctx = SSL_CTX_new (TLSv1_client_method ());
++#if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && \
++    !defined(LIBRESSL_VERSION_NUMBER)  && !defined(OPENSSL_IS_BORINGSSL)
++    ctx = SSL_CTX_new (TLS_client_method ());
++#else
++    ctx = SSL_CTX_new (SSLv23_client_method ());
++#endif
++
++#ifdef OPENSSL_NO_SSL3
++    SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv3);
++#endif
++
++#ifdef OPENSSL_NO_SSL2
++    SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2);
++#endif
+   /* Load our keys and certificates.  To avoid messing with configuration
+      variables etc, use fixed paths for the certificate store.  These are
index 1c7767c8c334a912fb8cc5a36dba6d2c1992c117..b3b00cfb4a3bfadd0de6ffe1cb4519ff9371587e 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Copyright (C) 2006-2012 OpenWrt.org
-# Copyright (C) 2017      Leonardo Medici
+# Copyright (C) 2017-2018 Leonardo Medici
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,14 +9,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libgphoto2
-PKG_VERSION:=2.5.18
+PKG_VERSION:=2.5.19
 PKG_RELEASE:=1
 PORT_VERSION:=0.12.0
 PKG_MAINTAINER:=Leonardo Medici <leonardo_medici@me.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/gphoto
-PKG_HASH:=5b17b89d7ca0ec35c72c94ac3701e87d49e52371f9509b8e5c08c913ae57a7ec
+PKG_HASH:=62523e52e3b8542301e072635b518387f2bd0948347775cf10cb2da9a6612c63
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=COPYING
 
index 70854e3540aea2c3437a78bc7b0bd10f278a3503..7e1d89d89583d233f7b51fd4acdc10e9a694c313 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.18/configure.ac
+Index: libgphoto2-2.5.19/configure.ac
 ===================================================================
---- libgphoto2-2.5.18.orig/configure.ac
-+++ libgphoto2-2.5.18/configure.ac
+--- libgphoto2-2.5.19.orig/configure.ac
++++ libgphoto2-2.5.19/configure.ac
 @@ -209,7 +209,6 @@ ALL_LINGUAS="cs da de es eu fr hu it ja
  GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2_CURRENT_MIN}],[The gPhoto Team],[${MAIL_GPHOTO_TRANSLATION}])
  AM_GNU_GETTEXT_VERSION([0.14.1])
@@ -10,10 +10,10 @@ Index: libgphoto2-2.5.18/configure.ac
  AM_ICONV()
  GP_GETTEXT_FLAGS()
 
-Index: libgphoto2-2.5.18/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.19/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.18.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.18/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.19.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.19/libgphoto2_port/configure.ac
 @@ -124,7 +124,6 @@ GP_GETTEXT_HACK([${PACKAGE}-${LIBGPHOTO2
  ALL_LINGUAS="cs da de es eu fi fr it ja nl pl pt_BR ru sk sr sv uk vi zh_CN zh_TW"
  AM_GNU_GETTEXT_VERSION([0.14.1])
index 3d0e518b28879579710ece97e25978b44ea7e183..80145f8247d2b68415a28192909b2c6fc6fe290b 100644 (file)
@@ -1,7 +1,7 @@
-Index: libgphoto2-2.5.18/Makefile.am
+Index: libgphoto2-2.5.19/Makefile.am
 ===================================================================
---- libgphoto2-2.5.18.orig/Makefile.am
-+++ libgphoto2-2.5.18/Makefile.am
+--- libgphoto2-2.5.19.orig/Makefile.am
++++ libgphoto2-2.5.19/Makefile.am
 @@ -8,7 +8,7 @@ bin_SCRIPTS = gphoto2-config
  EXTRA_DIST = HACKING MAINTAINERS TESTERS installcheck.mk
 
@@ -11,10 +11,10 @@ Index: libgphoto2-2.5.18/Makefile.am
 
  EXTRA_DIST    += libgphoto2.pc.in
  pkgconfig_DATA = libgphoto2.pc
-Index: libgphoto2-2.5.18/Makefile.in
+Index: libgphoto2-2.5.19/Makefile.in
 ===================================================================
---- libgphoto2-2.5.18.orig/Makefile.in
-+++ libgphoto2-2.5.18/Makefile.in
+--- libgphoto2-2.5.19.orig/Makefile.in
++++ libgphoto2-2.5.19/Makefile.in
 @@ -482,7 +482,7 @@ EXTRA_DIST = HACKING MAINTAINERS TESTERS
        INSTALL README.in README README.packaging
 
@@ -24,10 +24,10 @@ Index: libgphoto2-2.5.18/Makefile.in
  pkgconfig_DATA = libgphoto2.pc
  noinst_DATA = libgphoto2-uninstalled.pc
  doc_DATA = AUTHORS COPYING NEWS ABOUT-NLS ChangeLog README \
-Index: libgphoto2-2.5.18/configure.ac
+Index: libgphoto2-2.5.19/configure.ac
 ===================================================================
---- libgphoto2-2.5.18.orig/configure.ac
-+++ libgphoto2-2.5.18/configure.ac
+--- libgphoto2-2.5.19.orig/configure.ac
++++ libgphoto2-2.5.19/configure.ac
 @@ -635,20 +635,11 @@ gphoto-m4/Makefile
  libgphoto2/Makefile
  libgphoto2.pc
@@ -49,10 +49,10 @@ Index: libgphoto2-2.5.18/configure.ac
  ],[
  dnl This relies on this code being called for each of the above files
  dnl with ac_file set to the filename.
-Index: libgphoto2-2.5.18/libgphoto2_port/Makefile.am
+Index: libgphoto2-2.5.19/libgphoto2_port/Makefile.am
 ===================================================================
---- libgphoto2-2.5.18.orig/libgphoto2_port/Makefile.am
-+++ libgphoto2-2.5.18/libgphoto2_port/Makefile.am
+--- libgphoto2-2.5.19.orig/libgphoto2_port/Makefile.am
++++ libgphoto2-2.5.19/libgphoto2_port/Makefile.am
 @@ -25,7 +25,7 @@ udevscript_PROGRAMS =
  bin_SCRIPTS = gphoto2-port-config
 
@@ -62,10 +62,10 @@ Index: libgphoto2-2.5.18/libgphoto2_port/Makefile.am
 
 
  ########################################################################
-Index: libgphoto2-2.5.18/libgphoto2_port/Makefile.in
+Index: libgphoto2-2.5.19/libgphoto2_port/Makefile.in
 ===================================================================
---- libgphoto2-2.5.18.orig/libgphoto2_port/Makefile.in
-+++ libgphoto2-2.5.18/libgphoto2_port/Makefile.in
+--- libgphoto2-2.5.19.orig/libgphoto2_port/Makefile.in
++++ libgphoto2-2.5.19/libgphoto2_port/Makefile.in
 @@ -574,7 +574,7 @@ EXTRA_LTLIBRARIES = disk.la ptpip.la ser
  bin_SCRIPTS = gphoto2-port-config
 
@@ -75,10 +75,10 @@ Index: libgphoto2-2.5.18/libgphoto2_port/Makefile.in
 
  ########################################################################
  # All iolibs are defined as EXTRA_LTLIBRARIES. This requires that
-Index: libgphoto2-2.5.18/libgphoto2_port/configure.ac
+Index: libgphoto2-2.5.19/libgphoto2_port/configure.ac
 ===================================================================
---- libgphoto2-2.5.18.orig/libgphoto2_port/configure.ac
-+++ libgphoto2-2.5.18/libgphoto2_port/configure.ac
+--- libgphoto2-2.5.19.orig/libgphoto2_port/configure.ac
++++ libgphoto2-2.5.19/libgphoto2_port/configure.ac
 @@ -512,13 +512,10 @@ AC_SUBST([AM_LDFLAGS])
  # ---------------------------------------------------------------------------
  AC_CONFIG_FILES([
index e698a12902aff44098b084563e2f8e167aa6ae33..397734f643780a1a1917dd2a3bcf68bfe426e274 100644 (file)
@@ -6,18 +6,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libmpdclient
-PKG_VERSION:=2.11
+PKG_VERSION:=2.14
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=15fe693893c0d7ea3f4c35c4016fbd0332836164178b20983eec9b470846baf6
-PKG_SOURCE_URL:=http://www.musicpd.org/download/libmpdclient/2/
-PGK_HASH:=15fe693893c0d7ea3f4c35c4016fbd0332836164178b20983eec9b470846baf6
+PKG_HASH:=0a84e2791bfe3077cf22ee1784c805d5bb550803dffe56a39aa3690a38061372
+PKG_SOURCE_URL:=https://www.musicpd.org/download/libmpdclient/2/
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=COPYING
 
+PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
@@ -33,12 +33,13 @@ define Package/libmpdclient/description
     A stable, documented, asynchronous API library for interfacing MPD in the C, C++ & Objective C languages.
 endef
 
-TARGET_CFLAGS+="-std=gnu99"
+CONFIGURE_ARGS+= --disable-documentation
 
-define Build/Configure
-       $(call Build/Configure/Default, \
-               --disable-documentation \
-       )
+# Newer sources require meson/ninja to build so...
+# Use our hacked-up version of the libmpdclient v2.11 autotools.
+define Build/Prepare
+       $(call Build/Prepare/Default)
+       $(CP) ./autotools-files/* $(PKG_BUILD_DIR)/
 endef
 
 define Build/InstallDev
diff --git a/libs/libmpdclient/autotools-files/Makefile.am b/libs/libmpdclient/autotools-files/Makefile.am
new file mode 100644 (file)
index 0000000..a2db56e
--- /dev/null
@@ -0,0 +1,114 @@
+ACLOCAL_AMFLAGS = -I m4
+AUTOMAKE_OPTIONS = foreign 1.11 dist-xz subdir-objects
+
+mpdincludedir = $(includedir)/mpd
+mpdinclude_HEADERS = \
+       include/mpd/async.h \
+       include/mpd/audio_format.h \
+       include/mpd/client.h \
+       include/mpd/capabilities.h \
+       include/mpd/compiler.h \
+       include/mpd/connection.h \
+       include/mpd/database.h \
+       include/mpd/directory.h \
+       include/mpd/entity.h \
+       include/mpd/error.h \
+       include/mpd/idle.h \
+       include/mpd/list.h \
+       include/mpd/mixer.h \
+       include/mpd/parser.h \
+       include/mpd/password.h \
+       include/mpd/player.h \
+       include/mpd/playlist.h \
+       include/mpd/protocol.h \
+       include/mpd/queue.h \
+       include/mpd/recv.h \
+       include/mpd/response.h \
+       include/mpd/send.h \
+       include/mpd/status.h \
+       include/mpd/stats.h \
+       include/mpd/tag.h \
+       include/mpd/output.h \
+       include/mpd/pair.h \
+       include/mpd/search.h \
+       include/mpd/socket.h \
+       include/mpd/song.h \
+       include/mpd/sticker.h \
+       include/mpd/settings.h \
+       include/mpd/message.h \
+       include/mpd/version.h
+
+AM_CPPFLAGS += -I$(srcdir)/include -Iinclude
+
+lib_LTLIBRARIES = src/libmpdclient.la
+
+src_libmpdclient_la_SOURCES = \
+       src/async.c src/iasync.h \
+       src/buffer.h \
+       src/internal.h \
+       src/ierror.c src/ierror.h \
+       src/resolver.c src/resolver.h \
+       src/capabilities.c \
+       src/connection.c \
+       src/database.c \
+       src/directory.c \
+       src/rdirectory.c \
+       src/error.c \
+       src/fd_util.c src/fd_util.h \
+       src/output.c \
+       src/coutput.c \
+       src/entity.c \
+       src/idle.c \
+       src/iso8601.h \
+       src/iso8601.c \
+       src/kvlist.c \
+       src/list.c \
+       src/mixer.c \
+       src/parser.c \
+       src/password.c \
+       src/player.c \
+       src/playlist.c \
+       src/rplaylist.c \
+       src/cplaylist.c \
+       src/queue.c \
+       src/quote.c src/quote.h \
+       src/recv.c \
+       src/response.c \
+       src/run.c src/run.h \
+       src/search.c \
+       src/send.c src/isend.h \
+       src/socket.c src/socket.h \
+       src/song.c \
+       src/status.c \
+       src/cstatus.c \
+       src/stats.c \
+       src/cstats.c \
+       src/sync.c src/sync.h \
+       src/tag.c \
+       src/sticker.c \
+       src/settings.c \
+       src/message.c \
+       src/cmessage.c \
+       src/uri.h
+
+src_libmpdclient_la_LDFLAGS = -version-info @LIBMPDCLIENT_LIBTOOL_VERSION@ \
+       -no-undefined
+
+if HAVE_GNU_LD
+src_libmpdclient_la_LDFLAGS += -Wl,--version-script=$(srcdir)/libmpdclient.ld
+endif
+
+#
+# Installation
+#
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = libmpdclient.pc
+
+#
+# Distribution
+#
+
+EXTRA_DIST = \
+       libmpdclient.ld \
+       libmpdclient.pc.in 
diff --git a/libs/libmpdclient/autotools-files/config.h.in b/libs/libmpdclient/autotools-files/config.h.in
new file mode 100644 (file)
index 0000000..612fd72
--- /dev/null
@@ -0,0 +1,79 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Default MPD host */
+#undef DEFAULT_HOST
+
+/* Default MPD port */
+#undef DEFAULT_PORT
+
+/* Default UNIX socket path */
+#undef DEFAULT_SOCKET
+
+/* Define to enable TCP support */
+#undef ENABLE_TCP
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#undef HAVE_GETADDRINFO
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strndup' function. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#undef LT_OBJDIR
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/libs/libmpdclient/autotools-files/configure.ac b/libs/libmpdclient/autotools-files/configure.ac
new file mode 100644 (file)
index 0000000..6e219dd
--- /dev/null
@@ -0,0 +1,162 @@
+AC_PREREQ(2.60)
+AC_INIT(libmpdclient, 2.14, musicpd-dev-team@lists.sourceforge.net)
+AC_CONFIG_SRCDIR([src/connection.c])
+AC_CONFIG_AUX_DIR(build)
+AM_INIT_AUTOMAKE([foreign 1.11 dist-xz subdir-objects silent-rules])
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_SUBST(MAJOR_VERSION,2)
+AC_SUBST(MINOR_VERSION,14)
+AC_SUBST(PATCH_VERSION,0)
+
+LIBMPDCLIENT_LIBTOOL_VERSION=2:14:0
+AC_SUBST(LIBMPDCLIENT_LIBTOOL_VERSION)
+
+# Remove the check for c++ and fortran compiler
+m4_defun([_LT_AC_LANG_CXX_CONFIG], [:])
+m4_defun([_LT_AC_LANG_F77_CONFIG], [:])
+
+dnl Check for programs
+AC_PROG_CC_C99
+AC_PROG_INSTALL
+
+AC_PROG_LD
+AM_CONDITIONAL(HAVE_GNU_LD, test x$with_gnu_ld = xyes)
+
+AC_LIBTOOL_WIN32_DLL
+AC_PROG_LIBTOOL
+
+
+dnl
+dnl initialize variables
+dnl
+
+set -- $CFLAGS
+
+
+dnl
+dnl OS specific defaults
+dnl
+
+AC_CANONICAL_HOST
+
+case "$host_os" in
+mingw32* | windows*)
+       LIBS="$LIBS -lws2_32"
+       ;;
+esac
+
+
+dnl
+dnl Check for libraries
+dnl
+
+AC_SEARCH_LIBS([socket], [network socket])
+
+
+dnl
+dnl build options
+dnl
+
+AC_ARG_ENABLE(documentation,
+       AS_HELP_STRING([--disable-documentation],
+               [Disable API doc generation @<:@default=enabled@:>@]),,
+       [enable_documentation=yes])
+
+if test "x$enable_documentation" = xyes; then
+       AC_PATH_PROG(DOXYGEN, doxygen)
+       if test x$DOXYGEN = x; then
+               AC_MSG_ERROR([doxygen not found])
+       fi
+
+       AC_SUBST(DOXYGEN)
+fi
+AM_CONDITIONAL(DOXYGEN, test x$enable_documentation = xyes)
+
+AC_ARG_ENABLE(tcp,
+       AS_HELP_STRING([--disable-tcp],
+               [Disable TCP support @<:@default=enabled@:>@]),,
+       [enable_tcp=yes])
+if test "x$enable_tcp" = xyes; then
+       AC_DEFINE([ENABLE_TCP], 1, [Define to enable TCP support])
+       AC_SEARCH_LIBS([gethostbyname], [nsl])
+       AC_CHECK_FUNCS([getaddrinfo])
+       AC_CHECK_FUNCS([strndup])
+fi
+
+AC_ARG_ENABLE(werror,
+       AS_HELP_STRING([--enable-werror],
+               [Treat warnings as errors @<:@default=disabled@:>@]),
+       enable_werror=no)
+
+if test "x$enable_werror" = xyes; then
+       AM_CFLAGS="$AM_CFLAGS -Werror -pedantic-errors"
+fi
+
+AC_ARG_ENABLE(debug,
+       AS_HELP_STRING([--enable-debug],
+               [Enable debugging @<:@default=disabled@:>@]),
+       enable_debug=no)
+
+if test "x$enable_debug" = xno; then
+       AM_CFLAGS="$AM_CFLAGS -DNDEBUG"
+fi
+
+
+dnl
+dnl CFLAGS
+dnl
+
+AC_SUBST(AM_CFLAGS)
+AC_SUBST(AM_CPPFLAGS)
+
+WANTED_CFLAGS="-Wall -W -Wextra -Wno-deprecated-declarations -Wmissing-prototypes -Wshadow -Wpointer-arith -Wstrict-prototypes -Wcast-qual -Wwrite-strings"
+for flag in $WANTED_CFLAGS ; do
+       AX_CHECK_COMPILER_FLAGS([$flag], [CFLAGS="$CFLAGS $flag"],)
+done
+
+dnl
+dnl Compile-time options
+dnl
+
+AC_ARG_WITH([default-socket],
+       AC_HELP_STRING([--with-default-socket=PATH],
+               [default path of the socket file @<:@/var/run/mpd/socket@:>@]),,
+       [with_default_socket=auto])
+
+if test x$with_default_socket = xauto; then
+       case "$host_os" in
+       mingw32* | windows*)
+               # no UNIX domain sockets on WIN32
+               with_default_socket=no
+               ;;
+       *)
+               with_default_socket=/var/run/mpd/socket
+               ;;
+       esac
+fi
+
+if test x$with_default_socket != xno; then
+       AC_DEFINE_UNQUOTED([DEFAULT_SOCKET], ["$with_default_socket"],
+               [Default UNIX socket path])
+fi
+
+AC_ARG_WITH([default-host],
+       AC_HELP_STRING([--with-default-host=ARG],
+               [default MPD host @<:@localhost@:>@]),,
+       [with_default_host=localhost])
+AC_DEFINE_UNQUOTED([DEFAULT_HOST], ["$with_default_host"], [Default MPD host])
+
+AC_ARG_WITH([default-port],
+       AC_HELP_STRING([--with-default-port=ARG],
+               [default MPD port @<:@6600@:>@]),,
+       [with_default_port=6600])
+AC_DEFINE_UNQUOTED([DEFAULT_PORT], [$with_default_port], [Default MPD port])
+
+
+dnl
+dnl Done
+dnl
+
+AC_OUTPUT([Makefile include/mpd/version.h libmpdclient.pc doc/doxygen.conf])
diff --git a/libs/libmpdclient/autotools-files/libmpdclient.pc.in b/libs/libmpdclient/autotools-files/libmpdclient.pc.in
new file mode 100644 (file)
index 0000000..94a11b8
--- /dev/null
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: libmpdclient
+Description: Music Player Daemon client library
+Version: @VERSION@
+Libs: -L${libdir} -lmpdclient
+Cflags: -I${includedir}
diff --git a/libs/libmpdclient/autotools-files/m4/ax_check_compiler_flags.m4 b/libs/libmpdclient/autotools-files/m4/ax_check_compiler_flags.m4
new file mode 100644 (file)
index 0000000..7da8324
--- /dev/null
@@ -0,0 +1,74 @@
+# ===========================================================================
+#     http://www.nongnu.org/autoconf-archive/ax_check_compiler_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_COMPILER_FLAGS(FLAGS, [ACTION-SUCCESS], [ACTION-FAILURE])
+#
+# DESCRIPTION
+#
+#   Check whether the given compiler FLAGS work with the current language's
+#   compiler, or whether they give an error. (Warnings, however, are
+#   ignored.)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+# LICENSE
+#
+#   Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
+#   Copyright (c) 2009 Matteo Frigo
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+AC_DEFUN([AX_CHECK_COMPILER_FLAGS],
+[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX
+AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1])
+dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname:
+AS_LITERAL_IF([$1],
+  [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1]), [
+      ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+      _AC_LANG_PREFIX[]FLAGS="$1"
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
+        AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
+      _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])],
+  [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS
+   _AC_LANG_PREFIX[]FLAGS="$1"
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
+     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=yes,
+     eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])=no)
+   _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])
+eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_[$1])
+AC_MSG_RESULT($ax_check_compiler_flags)
+if test "x$ax_check_compiler_flags" = xyes; then
+       m4_default([$2], :)
+else
+       m4_default([$3], :)
+fi
+])dnl AX_CHECK_COMPILER_FLAGS
index 8b77de181d2abd2b80f03e7b3c003f49ce8a153d..71a1e02b672122c1f6c293aa22106db3e2ea7cc2 100644 (file)
@@ -29,12 +29,15 @@ define Package/libpsl
   CATEGORY:=Libraries
   TITLE:=C library to handle the Public Suffix List
   URL:=https://github.com/rockdaboot/libpsl
+  DEPENDS:=+libidn2 +libunistring
 endef
 
 define Package/libpsl/description
   C library to handle the Public Suffix List
 endef
 
+CONFIGURE_ARGS += --disable-rpath
+
 define Build/InstallDev
        $(INSTALL_DIR) \
                $(1)/usr/lib \
index 1e42b14f63402e2818b884bff3a477e406176b51..9e50f0b4f8105f22123151ef7d461d8454d23275 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libtirpc
 PKG_VERSION:=1.0.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_URL:=@SF/libtirpc
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
@@ -19,9 +19,11 @@ PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
 PKG_LICENSE:=BSD-3-Clause
 
 PKG_FIXUP:=autoreconf
+PKG_REMOVE_FILES:=autogen.sh aclocal.m4
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
 
 define Package/libtirpc
   SECTION:=libs
@@ -32,18 +34,16 @@ define Package/libtirpc
 endef
 
 CONFIGURE_ARGS += --disable-gssapi
-# Info from Buildroot Makefile
-# getrpcby{number,name} are only provided if 'GQ' is defined
-TARGET_CFLAGS += -DGQ
-#CONFIGURE_VARS += \
-#      GSSGLUE_LIBS="-lkrb5 -lk5crypto -l:libcom_err.so.3 -lkeyutils -lresolv -gssapi_krb5" \
-#      GSSGLUE_CFLAGS=-I$(STAGING_DIR)/usr/include/krb5/
+HOST_CONFIGURE_ARGS += --disable-gssapi
 
-#EXTRA_LDFLAGS := -lgssapi_krb5
+TARGET_CFLAGS += -DGQ
+HOST_CFLAGS += -DGQ
 
 define Package/libtirpc/install
        $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtirpc.so* $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libtirpc.so* $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DATA) $(PKG_INSTALL_DIR)/etc/netconfig $(1)/etc/
 endef
 
 define Build/InstallDev
@@ -56,4 +56,5 @@ define Build/InstallDev
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libtirpc.pc $(1)/usr/lib/pkgconfig/libtirpc.pc
 endef
 
+$(eval $(call HostBuild))
 $(eval $(call BuildPackage,libtirpc))
diff --git a/libs/libtirpc/patches/001-musl.patch b/libs/libtirpc/patches/001-musl.patch
new file mode 100644 (file)
index 0000000..0c3ce60
--- /dev/null
@@ -0,0 +1,18 @@
+Consider musl provided built-in defines
+
+Helps compile libtirpc with musl
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
+--- ./tirpc/rpc/types.h.orig   2018-03-17 10:23:10.022055255 +0100
++++ ./tirpc/rpc/types.h        2018-03-17 10:23:30.877751656 +0100
+@@ -66,7 +66,7 @@
+ #define mem_free(ptr, bsize)  free(ptr)
+-#if defined __APPLE_CC__ || defined __FreeBSD__
++#if defined __APPLE_CC__ || defined __FreeBSD__ || !defined(__GLIBC__)
+ # define __u_char_defined
+ # define __daddr_t_defined
+ #endif
diff --git a/libs/libtirpc/patches/002-libtirpc-1.0.4-rc2.patch b/libs/libtirpc/patches/002-libtirpc-1.0.4-rc2.patch
new file mode 100644 (file)
index 0000000..35b38cf
--- /dev/null
@@ -0,0 +1,274 @@
+diff --git a/src/clnt_dg.c b/src/clnt_dg.c
+index 04a2aba..eb5467f 100644
+--- a/src/clnt_dg.c
++++ b/src/clnt_dg.c
+@@ -160,15 +160,22 @@ clnt_dg_create(fd, svcaddr, program, version, sendsz, recvsz)
+       thr_sigsetmask(SIG_SETMASK, &newmask, &mask);
+       mutex_lock(&clnt_fd_lock);
+       if (dg_fd_locks == (int *) NULL) {
+-              int cv_allocsz;
+-              size_t fd_allocsz;
+-              int dtbsize = __rpc_dtbsize();
++              size_t cv_allocsz, fd_allocsz;
++              unsigned int dtbsize = __rpc_dtbsize();
++
++              if ( (size_t) dtbsize > SIZE_MAX/sizeof(cond_t)) {
++                      mutex_unlock(&clnt_fd_lock);
++                      thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      errno = EOVERFLOW;
++                      goto err1;
++              }
+               fd_allocsz = dtbsize * sizeof (int);
+               dg_fd_locks = (int *) mem_alloc(fd_allocsz);
+               if (dg_fd_locks == (int *) NULL) {
+                       mutex_unlock(&clnt_fd_lock);
+                       thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      errno = ENOMEM;
+                       goto err1;
+               } else
+                       memset(dg_fd_locks, '\0', fd_allocsz);
+@@ -180,6 +187,7 @@ clnt_dg_create(fd, svcaddr, program, version, sendsz, recvsz)
+                       dg_fd_locks = (int *) NULL;
+                       mutex_unlock(&clnt_fd_lock);
+                       thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      errno = ENOMEM;
+                       goto err1;
+               } else {
+                       int i;
+diff --git a/src/clnt_generic.c b/src/clnt_generic.c
+index e5a314f..3f3dabf 100644
+--- a/src/clnt_generic.c
++++ b/src/clnt_generic.c
+@@ -47,7 +47,6 @@
+ extern bool_t __rpc_is_local_host(const char *);
+ int __rpc_raise_fd(int);
+-extern int __binddynport(int fd);
+ #ifndef NETIDLEN
+ #define       NETIDLEN 32
+@@ -341,8 +340,7 @@ clnt_tli_create(int fd, const struct netconfig *nconf,
+               servtype = nconf->nc_semantics;
+               if (!__rpc_fd2sockinfo(fd, &si))
+                       goto err;
+-              if (__binddynport(fd) == -1)
+-                      goto err;
++              bindresvport(fd, NULL);
+       } else {
+               if (!__rpc_fd2sockinfo(fd, &si))
+                       goto err;
+diff --git a/src/clnt_vc.c b/src/clnt_vc.c
+index 6098c3a..3d775c7 100644
+--- a/src/clnt_vc.c
++++ b/src/clnt_vc.c
+@@ -63,6 +63,7 @@
+ #include <string.h>
+ #include <unistd.h>
+ #include <signal.h>
++#include <stdint.h>
+ #include <rpc/rpc.h>
+ #include "rpc_com.h"
+@@ -201,14 +202,25 @@ clnt_vc_create(fd, raddr, prog, vers, sendsz, recvsz)
+       thr_sigsetmask(SIG_SETMASK, &newmask, &mask);
+       mutex_lock(&clnt_fd_lock);
+       if (vc_fd_locks == (int *) NULL) {
+-              int cv_allocsz, fd_allocsz;
+-              int dtbsize = __rpc_dtbsize();
++              size_t cv_allocsz, fd_allocsz;
++              unsigned int dtbsize = __rpc_dtbsize();
++              struct rpc_createerr *ce = &get_rpc_createerr();
++
++              if ( (size_t) dtbsize > SIZE_MAX/sizeof(cond_t)) {
++                      mutex_unlock(&clnt_fd_lock);
++                      thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      ce->cf_stat = RPC_SYSTEMERROR;
++                      ce->cf_error.re_errno = EOVERFLOW;
++                      goto err;
++              }
+               fd_allocsz = dtbsize * sizeof (int);
+               vc_fd_locks = (int *) mem_alloc(fd_allocsz);
+               if (vc_fd_locks == (int *) NULL) {
+                       mutex_unlock(&clnt_fd_lock);
+                       thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      ce->cf_stat = RPC_SYSTEMERROR;
++                      ce->cf_error.re_errno = ENOMEM;
+                       goto err;
+               } else
+                       memset(vc_fd_locks, '\0', fd_allocsz);
+@@ -221,6 +233,8 @@ clnt_vc_create(fd, raddr, prog, vers, sendsz, recvsz)
+                       vc_fd_locks = (int *) NULL;
+                       mutex_unlock(&clnt_fd_lock);
+                       thr_sigsetmask(SIG_SETMASK, &(mask), NULL);
++                      ce->cf_stat = RPC_SYSTEMERROR;
++                      ce->cf_error.re_errno = ENOMEM;
+                       goto err;
+               } else {
+                       int i;
+diff --git a/src/rpc_soc.c b/src/rpc_soc.c
+index af6c482..5a6eeb7 100644
+--- a/src/rpc_soc.c
++++ b/src/rpc_soc.c
+@@ -67,8 +67,6 @@
+ extern mutex_t        rpcsoc_lock;
+-extern int __binddynport(int fd);
+-
+ static CLIENT *clnt_com_create(struct sockaddr_in *, rpcprog_t, rpcvers_t,
+     int *, u_int, u_int, char *, int);
+ static SVCXPRT *svc_com_create(int, u_int, u_int, char *);
+@@ -147,8 +145,7 @@ clnt_com_create(raddr, prog, vers, sockp, sendsz, recvsz, tp, flags)
+       bindaddr.maxlen = bindaddr.len =  sizeof (struct sockaddr_in);
+       bindaddr.buf = raddr;
+-      if (__binddynport(fd) == -1)
+-              goto err;
++      bindresvport(fd, NULL);
+       cl = clnt_tli_create(fd, nconf, &bindaddr, prog, vers,
+                               sendsz, recvsz);
+       if (cl) {
+diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c
+index a94fc73..e45736a 100644
+--- a/src/rpcb_clnt.c
++++ b/src/rpcb_clnt.c
+@@ -752,7 +752,7 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+       client = getpmaphandle(nconf, host, &parms.r_addr);
+       if (client == NULL)
+-              return (NULL);
++              goto error;
+       /*
+        * Set retry timeout.
+@@ -771,11 +771,11 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+       if (clnt_st != RPC_SUCCESS) {
+               rpc_createerr.cf_stat = RPC_PMAPFAILURE;
+               clnt_geterr(client, &rpc_createerr.cf_error);
+-              return (NULL);
++              goto error;
+       } else if (port == 0) {
+               pmapaddress = NULL;
+               rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
+-              return (NULL);
++              goto error;
+       }
+       port = htons(port);
+       CLNT_CONTROL(client, CLGET_SVC_ADDR, (char *)&remote);
+@@ -789,14 +789,24 @@ __try_protocol_version_2(program, version, nconf, host, tp)
+                       free(pmapaddress);
+                       pmapaddress = NULL;
+               }
+-              return (NULL);
++              goto error;
+       }
+       memcpy(pmapaddress->buf, remote.buf, remote.len);
+       memcpy(&((char *)pmapaddress->buf)[sizeof (short)],
+                       (char *)(void *)&port, sizeof (short));
+       pmapaddress->len = pmapaddress->maxlen = remote.len;
++      CLNT_DESTROY(client);
+       return pmapaddress;
++
++error:
++      if (client) {
++              CLNT_DESTROY(client);
++              client = NULL;
++
++      }
++      return (NULL);
++
+ }
+ #endif
+@@ -836,6 +846,7 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
+       struct netbuf *address = NULL;
+       rpcvers_t start_vers = RPCBVERS4;
+       struct netbuf servaddr;
++      struct rpc_err rpcerr;
+       /* parameter checking */
+       if (nconf == NULL) {
+@@ -892,7 +903,8 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
+               clnt_st = CLNT_CALL(client, (rpcproc_t)RPCBPROC_GETADDR,
+                   (xdrproc_t) xdr_rpcb, (char *)(void *)&parms,
+                   (xdrproc_t) xdr_wrapstring, (char *)(void *) &ua, *tp);
+-              if (clnt_st == RPC_SUCCESS) {
++              switch (clnt_st) {
++              case RPC_SUCCESS:
+                       if ((ua == NULL) || (ua[0] == 0)) {
+                               /* address unknown */
+                               rpc_createerr.cf_stat = RPC_PROGNOTREGISTERED;
+@@ -914,12 +926,15 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
+                           (char *)(void *)&servaddr);
+                       __rpc_fixup_addr(address, &servaddr);
+                       goto done;
+-              } else if (clnt_st == RPC_PROGVERSMISMATCH) {
+-                      struct rpc_err rpcerr;
++              case RPC_PROGVERSMISMATCH:
+                       clnt_geterr(client, &rpcerr);
+                       if (rpcerr.re_vers.low > RPCBVERS4)
+                               goto error;  /* a new version, can't handle */
+-              } else if (clnt_st != RPC_PROGUNAVAIL) {
++                      /* Try the next lower version */
++              case RPC_PROGUNAVAIL:
++              case RPC_CANTDECODEARGS:
++                      break;
++              default:
+                       /* Cant handle this error */
+                       rpc_createerr.cf_stat = clnt_st;
+                       clnt_geterr(client, &rpc_createerr.cf_error);
+@@ -929,7 +944,7 @@ __rpcb_findaddr_timed(program, version, nconf, host, clpp, tp)
+ #ifdef PORTMAP        /* Try version 2 for TCP or UDP */
+       if (strcmp(nconf->nc_protofmly, NC_INET) == 0) {
+-              address = __try_protocol_version_2(program, 2, nconf, host, tp);
++              address = __try_protocol_version_2(program, version, nconf, host, tp);
+               if (address == NULL)
+                       goto error;
+       }
+diff --git a/src/xdr_stdio.c b/src/xdr_stdio.c
+index 4410262..846c7bf 100644
+--- a/src/xdr_stdio.c
++++ b/src/xdr_stdio.c
+@@ -38,6 +38,7 @@
+  */
+ #include <stdio.h>
++#include <stdint.h>
+ #include <arpa/inet.h>
+ #include <rpc/types.h>
+@@ -103,10 +104,12 @@ xdrstdio_getlong(xdrs, lp)
+       XDR *xdrs;
+       long *lp;
+ {
++      int32_t mycopy;
+-      if (fread(lp, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1)
++      if (fread(&mycopy, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1)
+               return (FALSE);
+-      *lp = (long)ntohl((u_int32_t)*lp);
++
++      *lp = (long)ntohl(mycopy);
+       return (TRUE);
+ }
+@@ -115,8 +118,14 @@ xdrstdio_putlong(xdrs, lp)
+       XDR *xdrs;
+       const long *lp;
+ {
+-      long mycopy = (long)htonl((u_int32_t)*lp);
++      int32_t mycopy;
++
++#if defined(_LP64)
++      if ((*lp > UINT32_MAX) || (*lp < INT32_MIN))
++              return (FALSE);
++#endif
++      mycopy = (int32_t)htonl((int32_t)*lp);
+       if (fwrite(&mycopy, sizeof(int32_t), 1, (FILE *)xdrs->x_private) != 1)
+               return (FALSE);
+       return (TRUE);
diff --git a/libs/libtirpc/patches/01-Disable-parts-of-TIRPC-requiring-NIS-support.patch b/libs/libtirpc/patches/01-Disable-parts-of-TIRPC-requiring-NIS-support.patch
deleted file mode 100644 (file)
index eb1bef3..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-From 15adb318818f5d0ac609ef2b87643dd760487cb6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
-Date: Mon, 20 Jul 2015 20:30:11 +0200
-Subject: [PATCH 1/1] Disable parts of TIRPC requiring NIS support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-[yann.morin.1998@free.fr: update for 0.3.1]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-[joerg.krause@embedded.rocks: update for 0.3.2]
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-[peda@axentia.se: update for 1.0.1]
-Signed-off-by: Peter Rosin <peda@axentia.se>
-[bernd.kuhls@t-online.de: update for 1.0.2]
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
----
- src/Makefile.am | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 6cc567a..9834f9a 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -24,7 +24,7 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln
-         rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \
-       svc_auth_des.c \
-         svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \
--        auth_time.c auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c
-+        auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c
- ## XDR
- libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c
-@@ -41,8 +41,8 @@ if GSS
-     libtirpc_la_CFLAGS = -DHAVE_RPCSEC_GSS $(GSSAPI_CFLAGS)
- endif
--libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c
--libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c
-+#libtirpc_la_SOURCES += key_call.c key_prot_xdr.c getpublickey.c
-+#libtirpc_la_SOURCES += netname.c netnamer.c rpcdname.c rtime.c
- CLEANFILES           = cscope.* *~
- DISTCLEANFILES               = Makefile.in
--- 
-2.4.6
-
diff --git a/libs/libtirpc/patches/02-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch b/libs/libtirpc/patches/02-uClibc-without-RPC-support-and-musl-does-not-install-rpcent.h.patch
deleted file mode 100644 (file)
index 51229a0..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From 7aa1fe6a0f9280571117c30c03c2cc521cd86ec3 Mon Sep 17 00:00:00 2001
-From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-Date: Sat, 23 Jun 2012 21:58:07 +0200
-Subject: [PATCH] uClibc without RPC support and musl does not install rpcent.h
-
-Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-[yann.morin.1998@free.fr: update for 0.3.1]
-Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
-[joerg.krause@embedded.rocks: musl fix]
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-[bernd.kuhls@t-online.de: update for 1.0.2]
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
----
- tirpc/rpc/rpcent.h | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/tirpc/rpc/rpcent.h b/tirpc/rpc/rpcent.h
-index 147f909..4a58180 100644
---- a/tirpc/rpc/rpcent.h
-+++ b/tirpc/rpc/rpcent.h
-@@ -48,8 +48,9 @@
- extern "C" {
- #endif
--/* These are defined in /usr/include/rpc/netdb.h */
--#if !defined(__GLIBC__) || defined(__UCLIBC__)
-+/* These are defined in /usr/include/rpc/netdb.h, unless we are using
-+   the C library without RPC support. */
-+#if defined(__UCLIBC__) && !defined(__UCLIBC_HAS_RPC__) || !defined(__GLIBC__)
- struct rpcent {
-       char    *r_name;        /* name of server for this rpc program */
-       char    **r_aliases;    /* alias list */
--- 
-1.9.1
-
diff --git a/libs/libtirpc/patches/03-Disable-DES-authentification-support.patch b/libs/libtirpc/patches/03-Disable-DES-authentification-support.patch
deleted file mode 100644 (file)
index 0c65472..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-From 79975eb4104667be85abd06874c258438826b674 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=B6rg=20Krause?= <joerg.krause@embedded.rocks>
-Date: Fri, 24 Jul 2015 14:45:52 +0200
-Subject: [PATCH] Disable DES authentification support
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-uClibc and musl does not provide DES authentication.
-
-Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
-[peda@axentia.se: update for 1.0.1]
-Signed-off-by: Peter Rosin <peda@axentia.se>
-[bernd.kuhls@t-online.de: update for 1.0.2]
-Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
----
- src/Makefile.am |  2 +-
- src/rpc_soc.c   | 32 --------------------------------
- 2 files changed, 1 insertion(+), 33 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 960a522..3a88e31 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -22,9 +22,8 @@ libtirpc_la_SOURCES = auth_none.c auth_unix.c authunix_prot.c bindresvport.c cln
-         pmap_prot.c pmap_prot2.c pmap_rmt.c rpc_prot.c rpc_commondata.c \
-         rpc_callmsg.c rpc_generic.c rpc_soc.c rpcb_clnt.c rpcb_prot.c \
-         rpcb_st_xdr.c svc.c svc_auth.c svc_dg.c svc_auth_unix.c svc_auth_none.c \
--      svc_auth_des.c \
-         svc_generic.c svc_raw.c svc_run.c svc_simple.c svc_vc.c getpeereid.c \
--        auth_des.c authdes_prot.c debug.c des_crypt.c des_impl.c
-+        debug.c
- ## XDR
- libtirpc_la_SOURCES += xdr.c xdr_rec.c xdr_array.c xdr_float.c xdr_mem.c xdr_reference.c xdr_stdio.c xdr_sizeof.c
-diff --git a/src/svc_auth.c b/src/svc_auth.c
---- a/src/svc_auth.c
-+++ b/src/svc_auth.c
-@@ -114,9 +114,6 @@ _gss_authenticate(rqst, msg, no_dispatch)
-       case AUTH_SHORT:
-               dummy = _svcauth_short(rqst, msg);
-               return (dummy);
--      case AUTH_DES:
--              dummy = _svcauth_des(rqst, msg);
--              return (dummy);
- #ifdef HAVE_RPCSEC_GSS
-       case RPCSEC_GSS:
-               dummy = _svcauth_gss(rqst, msg, no_dispatch);
-diff --git a/src/rpc_soc.c b/src/rpc_soc.c
-index e146ed4..161a1ec 100644
---- a/src/rpc_soc.c
-+++ b/src/rpc_soc.c
-@@ -522,86 +521,6 @@ clnt_broadcast(prog, vers, proc, xargs, argsp, xresults, resultsp, eachresult)
- }
- /*
-- * Create the client des authentication object. Obsoleted by
-- * authdes_seccreate().
-- */
--AUTH *
--authdes_create(servername, window, syncaddr, ckey)
--      char *servername;               /* network name of server */
--      u_int window;                   /* time to live */
--      struct sockaddr *syncaddr;      /* optional hostaddr to sync with */
--      des_block *ckey;                /* optional conversation key to use */
--{
--      AUTH *nauth;
--      char hostname[NI_MAXHOST];
--
--      if (syncaddr) {
--              /*
--               * Change addr to hostname, because that is the way
--               * new interface takes it.
--               */
--              switch (syncaddr->sa_family) {
--              case AF_INET:
--                if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname,
--                                sizeof hostname, NULL, 0, 0) != 0)
--                  goto fallback;
--                break;
--              case AF_INET6:
--                if (getnameinfo(syncaddr, sizeof(struct sockaddr_in6), hostname,
--                                sizeof hostname, NULL, 0, 0) != 0)
--                  goto fallback;
--                break;
--              default:
--                goto fallback;
--              }
--              nauth = authdes_seccreate(servername, window, hostname, ckey);
--              return (nauth);
--      }
--fallback:
--      return authdes_seccreate(servername, window, NULL, ckey);
--}
--
--/*
-- * Create the client des authentication object. Obsoleted by
-- * authdes_pk_seccreate().
-- */
--extern AUTH *authdes_pk_seccreate(const char *, netobj *, u_int, const char *,
--        const des_block *, nis_server *);
--
--AUTH *
--authdes_pk_create(servername, pkey, window, syncaddr, ckey)
--      char *servername;               /* network name of server */
--      netobj *pkey;                   /* public key */
--      u_int window;                   /* time to live */
--      struct sockaddr *syncaddr;      /* optional hostaddr to sync with */
--      des_block *ckey;                /* optional conversation key to use */
--{
--      AUTH *nauth;
--      char hostname[NI_MAXHOST];
--
--      if (syncaddr) {
--              /*
--               * Change addr to hostname, because that is the way
--               * new interface takes it.
--               */
--              switch (syncaddr->sa_family) {
--              case AF_INET:
--                if (getnameinfo(syncaddr, sizeof(struct sockaddr_in), hostname,
--                                sizeof hostname, NULL, 0, 0) != 0)
--                  goto fallback;
--                break;
--              default:
--                goto fallback;
--              }
--              nauth = authdes_pk_seccreate(servername, pkey, window, hostname, ckey, NULL);
--              return (nauth);
--      }
--fallback:
--      return authdes_pk_seccreate(servername, pkey, window, NULL, ckey, NULL);
--}
--
--
--/*
-  * Create a client handle for a unix connection. Obsoleted by clnt_vc_create()
-  */
- CLIENT *
--- 
-2.4.6
-
diff --git a/libs/libtirpc/patches/04-musl-rpc-fix-types.h.patch b/libs/libtirpc/patches/04-musl-rpc-fix-types.h.patch
deleted file mode 100644 (file)
index b0616ea..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/tirpc/rpc/types.h        2018-03-27
-+++ b/tirpc/rpc/types.h        2018-03-27
-@@ -66,7 +66,7 @@ typedef   int32_t rpc_inline_t;
- #define mem_free(ptr, bsize)  free(ptr)
--#if defined __APPLE_CC__ || defined __FreeBSD__
-+#if defined __APPLE_CC__ || defined __FreeBSD__ || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
- # define __u_char_defined
- # define __daddr_t_defined
- #endif
index 83254f457b8dbbe78c945dbc33cf48333aac3b84..9b1aff24f1952964934de15105eb37fd5badfb47 100644 (file)
@@ -8,13 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libuhttpd
-PKG_VERSION:=2.1.2
+PKG_VERSION:=2.2.1
 PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_VERSION:=v$(PKG_VERSION)
 PKG_SOURCE_URL=https://github.com/zhaojh329/libuhttpd.git
-PKG_MIRROR_HASH:=0f80b643ca4fa652df1a4510384e941e045b1ad8124fa4c8128a56861189b325
+PKG_MIRROR_HASH:=e6b3d540a0d32a77739ab6b028ded46fbf4997d241fabb578ef1f212581eea33
 CMAKE_INSTALL:=1
 
 PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
index e5f77cac759d2ff0dafe312cc20fc182b0d8f8da..3f2c60b34f059b969b486cf7ccfd20aad6ec4dd9 100644 (file)
@@ -31,7 +31,7 @@ include $(INCLUDE_DIR)/package.mk
 define Package/loudmouth
   SECTION:=libs
   CATEGORY:=Libraries
-  DEPENDS:=+glib2 +libopenssl
+  DEPENDS:=+glib2 +libopenssl +PACKAGE_krb5-libs:krb5-libs
   TITLE:=loudmouth
   URL:=https://github.com/mcabber/loudmouth
 endef
diff --git a/libs/loudmouth/patches/002-fix-comparison.patch b/libs/loudmouth/patches/002-fix-comparison.patch
new file mode 100644 (file)
index 0000000..7373516
--- /dev/null
@@ -0,0 +1,12 @@
+diff -u --recursive loudmouth-1.5.3-vanilla/loudmouth/lm-sasl.c loudmouth-1.5.3/loudmouth/lm-sasl.c
+--- loudmouth-1.5.3-vanilla/loudmouth/lm-sasl.c        2018-07-27 22:42:03.250616281 -0400
++++ loudmouth-1.5.3/loudmouth/lm-sasl.c        2018-07-27 22:42:26.756659723 -0400
+@@ -529,7 +529,7 @@
+     }
+     nonce = g_hash_table_lookup (challenge, "nonce");
+-    if (nonce == NULL || nonce == '\0') {
++    if (nonce == NULL || *nonce == '\0') {
+         g_log (LM_LOG_DOMAIN, LM_LOG_LEVEL_SASL,
+                "%s: server didn't provide a nonce in the challenge",
+                G_STRFUNC);
index 5cf2e36ec6a4082b222b9b68d5723b0ec857552c..791a895a95cae7c1411a8fc9fc15a896029376f4 100644 (file)
@@ -12,7 +12,7 @@ PKG_VERSION:=0.30.2
 PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://www.webdav.org/neon
+PKG_SOURCE_URL:=https://web.archive.org/web/20170923042221/http://webdav.org:80/neon/
 PKG_HASH:=db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca
 
 PKG_INSTALL:=1
@@ -23,7 +23,7 @@ define Package/libneon
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=HTTP and WebDAV client library
-  URL:=http://www.webdav.org/neon/
+  URL:=https://web.archive.org/web/20170923042221/http://webdav.org:80/neon/
   DEPENDS:=+libopenssl +libexpat +zlib
   MAINTAINER:=Federico Di Marco <fededim@gmail.com>
 endef
index e434dc2199f250007a183185b6702778fad29ebe..0c128817c03cdb29cd644ac3b50cb361dca2160c 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=p11-kit
-PKG_VERSION:=0.23.12
+PKG_VERSION:=0.23.13
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Nikos Mavrogiannopoulos <n.mavrogiannopoulos@gmail.com>
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=58bae22f19db1de1a1103e7ca4149eed6e303e727878c2cd5ea9e6fe445fd403
+PKG_HASH:=aa65403e3ac7c3aba17ca60f28db17b9c76d988b66b91789b8e8c145ae9922f1
 PKG_SOURCE_URL:=https://github.com/p11-glue/$(PKG_NAME)/releases/download/$(PKG_VERSION)
 
-PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
diff --git a/libs/p11-kit/patches/010-build-Ease-issetugid-check-when-cross-compiling.patch b/libs/p11-kit/patches/010-build-Ease-issetugid-check-when-cross-compiling.patch
deleted file mode 100644 (file)
index e697960..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-From dec5f888a457e36d81065ebc69f7d8d966be527d Mon Sep 17 00:00:00 2001
-From: Daiki Ueno <dueno@redhat.com>
-Date: Thu, 31 May 2018 11:02:51 +0200
-Subject: [PATCH] build: Ease issetugid() check when cross-compiling
-
-When cross-compiling, the configure check for issetugid() aborts,
-because of the pessimistic default of AC_RUN_IFELSE.  This patch
-provides the non-pessimistic default to AC_RUN_IFELSE and wrap the
-macro invocation with AC_CACHE_CHECK so that the user can override the
-check by setting ac_cv_issetugid_openbsd=yes, as suggested in:
-https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/Runtime.html#Runtime
----
- configure.ac | 16 +++++++++-------
- 1 file changed, 9 insertions(+), 7 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e99a3c7..bd6ece0 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -115,15 +115,17 @@ if test "$os_unix" = "yes"; then
-       # Check if issetugid() is available and has compatible behavior with OpenBSD
-       AC_CHECK_FUNCS([issetugid], [
--              AC_MSG_CHECKING([whether issetugid() can detect setuid/setgid])
--              issetugid_openbsd=no
--              AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
--                      [[return issetugid ();]])],
--                      [chmod 02777 ./conftest$EXEEXT; ./conftest$EXEEXT || issetugid_openbsd=yes])
--              if test "$issetugid_openbsd" = yes; then
-+              AC_CACHE_CHECK([whether issetugid() can detect setuid/setgid],
-+                      [ac_cv_issetugid_openbsd],
-+                      [ac_cv_issetugid_openbsd=no
-+                      AC_RUN_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
-+                              [[return issetugid ();]])],
-+                              [chmod 02777 ./conftest$EXEEXT; ./conftest$EXEEXT || ac_cv_issetugid_openbsd=yes],
-+                              [ac_cv_issetugid_openbsd=no],
-+                              [ac_cv_issetugid_openbsd="guessing no"])])
-+              if test "$ac_cv_issetugid_openbsd" = yes; then
-                       AC_DEFINE([HAVE_ISSETUGID_OPENBSD], [1], [Whether issetugid() has compatible behavior with OpenBSD])
-               fi
--              AC_MSG_RESULT([$issetugid_openbsd])
-       ])
-       # Required functions
--- 
-2.17.1
-
index e9fe9ea7890736f7438eb144d0bd3af31892c6de..addaac4f1d8cc5cfd20d0e8e6d554fd3b29da0a8 100644 (file)
@@ -5,7 +5,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=postgresql
-PKG_VERSION:=9.6.8
+PKG_VERSION:=9.6.10
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_LICENSE:=PostgreSQL
@@ -16,7 +16,7 @@ PKG_SOURCE_URL:=\
        http://ftp.postgresql.org/pub/source/v$(PKG_VERSION) \
        ftp://ftp.postgresql.org/pub/source/v$(PKG_VERSION)
 
-PKG_HASH:=eafdb3b912e9ec34bdd28b651d00226a6253ba65036cb9a41cad2d9e82e3eb70
+PKG_HASH:=8615acc56646401f0ede97a767dfd27ce07a8ae9c952afdb57163b7234fe8426
 
 PKG_USE_MIPS16:=0
 PKG_FIXUP:=autoreconf
index fd1839181683ab20406c6b1a4a0bbb12f9f51343..fdaff771dddd0feb8e72591e4bc4e5f9938e17e4 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=xmlrpc-c
 PKG_VERSION:=1.39.13
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
 PKG_SOURCE_URL:=@SF/xmlrpc-c/Xmlrpc-c%20Super%20Stable/$(PKG_VERSION)
@@ -105,9 +105,10 @@ CONFIGURE_ARGS+= \
        --disable-wininet-client \
        --disable-libwww-client \
        --disable-abyss-server \
+       --disable-cgi-server \
        --disable-cplusplus \
        --disable-abyss-threads \
-       --disable-cgi-server
+       --without-libwww-ssl
 
 ifeq ($(BUILD_VARIANT),libxml2)
        CONFIGURE_ARGS += \
index b9b595fe48a8c013b6516f8f97e1d0c15c184651..b8591717322305cec614de7a190daa9993e59026 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=emailrelay
-PKG_VERSION:=1.9
-PKG_RELEASE:=5
+PKG_VERSION:=2.0
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-src.tar.gz
 PKG_SOURCE_URL:=@SF/emailrelay/$(PKG_VERSION)
-PKG_HASH:=869a3e2d053237d7f63784acc25e748af2dbf2d9b9c5c48e4a5269d4e4b5bda0
+PKG_HASH:=0b3a98edfdc8deaf2b3d14e2d2a7fa8402f6703d83ac7458653994124de6a587
 PKG_MAINTAINER:=Federico Di Marco <fededim@gmail.com>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -74,22 +74,24 @@ endef
 
 
 CONFIGURE_ARGS += \
-       --with-pam=no \
-       --enable-testing=no
-
-CONFIGURE_VARS += \
-       CXXFLAGS="$$$$CXXFLAGS -fno-rtti"
-
+       --without-doxygen \
+       --without-man2html \
+       --without-mbedtls \
+       --without-pam \
+       --disable-bsd \
+       --disable-gui \
+       --disable-mac \
+       --disable-testing \
+       --disable-windows
 
 ifeq ($(CONFIG_EMAILRELAY_SSL),y)
        CONFIGURE_ARGS += \
                --with-openssl
 else
        CONFIGURE_ARGS += \
-               --with-openssl=no
+               --without-openssl
 endif
 
-
 ifeq ($(CONFIG_EMAILRELAY_SUPPORT_VERBOSE_DBG),y)
        CONFIGURE_ARGS += \
                --enable-debug=yes
@@ -105,7 +107,6 @@ define Package/emailrelay/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-filter-copy $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-passwd $(1)/usr/bin/
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-poke $(1)/usr/bin/
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/main/emailrelay-submit $(1)/usr/bin/
        $(INSTALL_DIR) $(1)/etc
        $(INSTALL_DATA) files/$(PKG_NAME).auth $(1)/etc/
diff --git a/mail/emailrelay/patches/010-openssl-1.1.patch b/mail/emailrelay/patches/010-openssl-1.1.patch
new file mode 100644 (file)
index 0000000..fb745e5
--- /dev/null
@@ -0,0 +1,43 @@
+diff --git a/src/gssl/gssl_openssl.cpp b/src/gssl/gssl_openssl.cpp
+index 0e9b73b..49927db 100644
+--- a/src/gssl/gssl_openssl.cpp
++++ b/src/gssl/gssl_openssl.cpp
+@@ -52,10 +52,14 @@ GSsl::OpenSSL::LibraryImp::LibraryImp( G::StringArray & library_config , Library
+       m_verbose(verbose) ,
+       m_config(library_config)
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       SSL_load_error_strings() ;
+       SSL_library_init() ;
+-      int rc = RAND_status() ; G_IGNORE_VARIABLE(rc) ;
+       OpenSSL_add_all_digests() ;
++#else
++      OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS, NULL) ;
++#endif
++      int rc = RAND_status() ; G_IGNORE_VARIABLE(rc) ;
+       // allocate a slot for a pointer from SSL to ProtocolImp
+       m_index = SSL_get_ex_new_index( 0 , nullptr , nullptr , nullptr , nullptr ) ;
+@@ -73,15 +77,21 @@ GSsl::OpenSSL::LibraryImp::~LibraryImp()
+ void GSsl::OpenSSL::LibraryImp::cleanup()
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       // ffs...
+       ERR_free_strings() ;
+       RAND_cleanup() ;
+-      CRYPTO_cleanup_all_ex_data();
++      CRYPTO_cleanup_all_ex_data() ;
++#endif
+ }
+ std::string GSsl::OpenSSL::LibraryImp::sid()
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       return G::Str::printable( SSLeay_version(SSLEAY_VERSION) ) ;
++#else
++      return G::Str::printable( OpenSSL_version(OPENSSL_VERSION) ) ;
++#endif
+ }
+ std::string GSsl::OpenSSL::LibraryImp::id() const
diff --git a/mail/emailrelay/patches/010-ssl3-fix.patch b/mail/emailrelay/patches/010-ssl3-fix.patch
deleted file mode 100644 (file)
index d0e82f5..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/src/gssl/gssl_openssl.cpp
-+++ b/src/gssl/gssl_openssl.cpp
-@@ -292,8 +292,10 @@ GSsl::Context::Context( const std::strin
- {
-       if( (flags&3U) == 2U )
-               m_ssl_ctx = SSL_CTX_new(SSLv23_method()) ;
-+#ifdef SSL3_SUPPORT
-       else if( (flags&3U) == 3U )
-               m_ssl_ctx = SSL_CTX_new(SSLv3_method()) ;
-+#endif
-       else
-               m_ssl_ctx = SSL_CTX_new(TLSv1_method()) ;
index bd264948ae4508d34f83ffe543daa0d9a2d99d47..f95f35a12992f3b936bf63d688cc444af84b6c44 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mailsend
-PKG_VERSION:=1.17b15
-PKG_RELEASE:=2
+PKG_VERSION:=1.19
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/muquit/mailsend/archive/$(PKG_VERSION)
-PKG_HASH:=73cb1b2455de95ab126e3682bf19c62e6baabee00f449da692be0bebd3ceb26b
+PKG_HASH:=565ef6be26c58ef75065c5519eae8dd55bae3142928619696b28d242b73493f7
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
diff --git a/mail/mailsend/patches/0001-OpenSSL-1.1-support-for-HMAC-api.patch b/mail/mailsend/patches/0001-OpenSSL-1.1-support-for-HMAC-api.patch
new file mode 100644 (file)
index 0000000..c18ef4e
--- /dev/null
@@ -0,0 +1,49 @@
+From 960df6d7a11eef90128dc2ae660866b27f0e4336 Mon Sep 17 00:00:00 2001
+From: muquit <muquit@gmail.com>
+Date: Wed, 21 Sep 2016 12:46:24 -0400
+Subject: [PATCH] OpenSSL 1.1 support for HMAC api
+
+---
+ utils.c | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+diff --git a/utils.c b/utils.c
+index b072138..abfb86e 100755
+--- a/utils.c
++++ b/utils.c
+@@ -791,8 +791,14 @@ char *encode_cram_md5(char *challenge,char *user,char *secret)
+     unsigned char
+         hmac_md5[16];
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+     HMAC_CTX
+         ctx;
++#else
++    /* OpenSSL 1.1.x*/
++    HMAC_CTX
++        *ctx;
++#endif
+     const EVP_MD
+         *md5=NULL;
+@@ -831,11 +837,20 @@ char *encode_cram_md5(char *challenge,char *user,char *secret)
+     showVerbose("Challenge After decoding: %s\n",data);
+     /* take HMAC-MD5 of the challenge*/
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+     md5=EVP_get_digestbyname("md5");
+     HMAC_CTX_init(&ctx);
+     HMAC_Init(&ctx,secret,strlen(secret),md5);
+     HMAC_Update(&ctx,data,data_len);
+     HMAC_Final(&ctx,hmac_md5,&hmac_len);
++#else
++    /* OpenSSL 1.1.x */
++    ctx = HMAC_CTX_new();
++    HMAC_Init_ex(ctx,secret,strlen(secret),EVP_md5(),NULL);
++    HMAC_Update(ctx,data,data_len);
++    HMAC_Final(ctx,hmac_md5,&hmac_len);
++#endif
+     /* convert the digest to hex */
+     memset(hex,0,sizeof(hex));
diff --git a/mail/mailsend/patches/0002-Removed-API-deprecated-by-OpenSSL-1.1.0.patch b/mail/mailsend/patches/0002-Removed-API-deprecated-by-OpenSSL-1.1.0.patch
new file mode 100644 (file)
index 0000000..dfdb15d
--- /dev/null
@@ -0,0 +1,44 @@
+From 2d585baa473314f79d492c0876b3bbf96758562c Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cote2004-github@yahoo.com>
+Date: Fri, 8 Jun 2018 14:41:23 -0300
+Subject: [PATCH] Removed API deprecated by OpenSSL 1.1.0
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
+---
+ main.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/main.c b/main.c
+index d275e6a..51bfb1d 100755
+--- a/main.c
++++ b/main.c
+@@ -91,7 +91,11 @@ static void usage(void)
+     (void) printf(" Copyright: %.1024s\n\n",NO_SPAM_STATEMENT);
+ #ifdef HAVE_OPENSSL
+     (void) fprintf(stdout," (Compiled with OpenSSL version: %s)\n",
++# if OPENSSL_VERSION_NUMBER < 0x10100000L
+                    SSLeay_version(SSLEAY_VERSION));
++# else
++                   OpenSSL_version(OPENSSL_VERSION));
++# endif
+ #else
+     (void) fprintf(stdout," (Not compiled with OpenSSL)\n");
+ #endif /* HAVE_OPENSSL */
+@@ -1056,9 +1060,13 @@ int main(int argc,char **argv)
+                 (void) fprintf(stderr,"mailsend Version: %.1024s\n",MAILSEND_VERSION);
+ #ifdef HAVE_OPENSSL
+                 (void) fprintf(stderr,"Compiled with OpenSSL: %s\n",
++# if OPENSSL_VERSION_NUMBER < 0x10100000L
+                                SSLeay_version(SSLEAY_VERSION));
++# else
++                               OpenSSL_version(OPENSSL_VERSION));
++# endif
+ #else
+-                (void) fprintf(stderr,"Not Compiled OpenSSL, some auth methods will be unavailable\n");
++                (void) fprintf(stderr,"Not Compiled with OpenSSL, some auth methods will be unavailable\n");
+ #endif /* ! HAVE_OPENSSL */
+                 rc = 0;
+                 goto ExitProcessing;
+-- 
+2.16.4
+
index 4b058a8dcb47ffcf215aa5d7848a29a038f7ac05..e7418c595e6d7683126abeab034fb3c2d975722e 100644 (file)
@@ -11,7 +11,7 @@ PKG_NAME:=dovecot-pigeonhole
 PKG_VERSION_PLUGIN:=0.5.2
 PKG_VERSION_DOVECOT:=$(shell make --no-print-directory -C ../dovecot/ val.PKG_VERSION V=s)
 PKG_VERSION:=$(PKG_VERSION_DOVECOT)-$(PKG_VERSION_PLUGIN)
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 DOVECOT_VERSION:=2.3
 
@@ -25,6 +25,7 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/dovecot-$(DOVECOT_VERSION)-pigeonhole-$(PKG_VERSION_
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/dovecot-pigeonhole
   SECTION:=mail
index 4f29945fc36c99d8f1055142510e0dc5543367a5..9aaf14287d60f19bacaa3ec3eaaccc2931ce0dce 100644 (file)
@@ -9,12 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffmpeg
-PKG_VERSION:=3.2.10
-PKG_RELEASE:=4
+PKG_VERSION:=3.2.12
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://ffmpeg.org/releases/
-PKG_HASH:=3c1626220c7b68ff6be7312559f77f3c65ff6809daf645d4470ac0189926bdbc
+PKG_HASH:=8985cea7b1b3b2e0e2b2a8ac6187a7fb022fe8aa9d35101760a000205c59c412
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
                Ian Leonard <antonlacon@gmail.com>
 
@@ -372,6 +372,11 @@ $(call Package/ffmpeg/Default/description)
 endef
 
 
+# Strip off FPU notation
+REAL_CPU_TYPE:=$(firstword $(subst +, ,$(CONFIG_CPU_TYPE)))
+# Fixup cpu types recogized by ffmpeg configure
+REAL_CPU_TYPE:=$(subst octeonplus,octeon+,$(REAL_CPU_TYPE))
+
 FFMPEG_CONFIGURE:= \
        CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
        LDFLAGS="$(TARGET_LDFLAGS)" \
@@ -379,6 +384,7 @@ FFMPEG_CONFIGURE:= \
        --enable-cross-compile \
        --cross-prefix="$(TARGET_CROSS)" \
        --arch="$(ARCH)" \
+       $(if $(REAL_CPU_TYPE),--cpu=$(call qstrip,$(REAL_CPU_TYPE)),) \
        --target-os=linux \
        --prefix="/usr" \
        --pkg-config="pkg-config" \
@@ -418,6 +424,10 @@ FFMPEG_CONFIGURE+= \
 else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
 FFMPEG_CONFIGURE+= \
        --disable-altivec
+# libavcode/mips/aacdec_mips.c build problem
+else ifneq ($(findstring 24kf,$(CONFIG_CPU_TYPE)),)
+FFMPEG_CONFIGURE+= \
+       --disable-inline-asm
 endif
 
 # selectively disable optimizations according to arch/cpu type
@@ -444,7 +454,9 @@ endif
 
 ifneq ($(CONFIG_TARGET_x86),)
 ifeq ($(CONFIG_NASM),y)
-  FFMPEG_CONFIGURE += --yasmexe=nasm
+  # Set yasmexe to anything but YASM/NASM (ffmpeg configure will then find NASM correctly)
+  # Newer ffmpeg packages will use --enable-x86asm (with NASM default)
+  FFMPEG_CONFIGURE += --yasmexe=xyzzy
 else
   FFMPEG_CONFIGURE += --disable-yasm
 endif
index a6d618bed9facb2cc7aab8022ae9891493d7904b..09b248e3f13c3f8accc02835eef1b2a33a381a56 100644 (file)
@@ -8,15 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acme
-PKG_VERSION:=2.7.8
-PKG_RELEASE:=4
+PKG_VERSION:=2.7.9
+PKG_RELEASE:=1
 PKG_LICENSE:=GPLv3
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/Neilpang/acme.sh
-PKG_SOURCE_VERSION:=521d8c4b1f374c52ab1452d399a4d4910465e9fe
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.xz
-PKG_MIRROR_HASH:=03e24eb41513b4d28dc42f5ae5c91be0030094149cbdbf9cdf9b6f87db9e36c0
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/Neilpang/acme.sh/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=25f8eef1a53584e3ebc653e1ae7763362ca97c40bb476ab7fee01aa50fa3a101
+PKG_BUILD_DIR:=$(BUILD_DIR)/acme.sh-$(PKG_VERSION)
 PKG_MAINTAINER:=Toke Høiland-Jørgensen <toke@toke.dk>
 
 LUCI_DIR:=/usr/lib/lua/luci
index 25dea76babca9630364cd0201749e4443ecdaad3..4b199597ea8062a22eacbd5701f604dd2dfedaf1 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
 PKG_VERSION:=3.5.4
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
 
index bff62dabf2f8e55acb887632f2bab2156df29443..e91f8e9d7a7d49936c30303f949cca34c5111299 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.5.4"
+adb_ver="3.5.4-2"
 adb_sysver="unknown"
 adb_enabled=0
 adb_debug=0
@@ -360,7 +360,7 @@ f_count()
 #
 f_extconf()
 {
-    local uci_config
+    local uci_config port port_list="53 853 5353"
 
     case "${adb_dns}" in
         dnsmasq)
@@ -395,20 +395,24 @@ f_extconf()
 
     uci_config="firewall"
     if [ ${adb_enabled} -eq 1 ] && [ ${adb_forcedns} -eq 1 ] && \
-       [ -z "$(uci -q get firewall.adblock_dns)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
+       [ -z "$(uci -q get firewall.adblock_dns_53)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
     then
-       uci -q batch <<-EOF
-               set firewall.adblock_dns="redirect"
-               set firewall.adblock_dns.name="Adblock DNS"
-               set firewall.adblock_dns.src="lan"
-               set firewall.adblock_dns.proto="tcp udp"
-               set firewall.adblock_dns.src_dport="53 853 5353"
-               set firewall.adblock_dns.dest_port="53 853 5353"
-               set firewall.adblock_dns.target="DNAT"
-       EOF
-    elif [ -n "$(uci -q get firewall.adblock_dns)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
+        for port in ${port_list}
+        do
+            uci_add firewall "redirect" "adblock_dns_${port}"
+            uci_set firewall "adblock_dns_${port}" "name" "Adblock DNS, port ${port}"
+            uci_set firewall "adblock_dns_${port}" "src" "lan"
+            uci_set firewall "adblock_dns_${port}" "proto" "tcp udp"
+            uci_set firewall "adblock_dns_${port}" "src_dport" "${port}"
+            uci_set firewall "adblock_dns_${port}" "dest_port" "${port}"
+            uci_set firewall "adblock_dns_${port}" "target" "DNAT"
+        done
+    elif [ -n "$(uci -q get firewall.adblock_dns_53)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
     then
-        uci -q delete firewall.adblock_dns
+        for port in ${port_list}
+        do
+            uci_remove firewall "adblock_dns_${port}"
+        done
     fi
     f_uci "${uci_config}"
 }
index 147bd429c5e0085b06d45c538adff9f4ec8227f4..91d9e677de9a40c775b6de67586509656a59e839 100644 (file)
@@ -8,17 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=arp-scan
-PKG_VERSION:=1.9-40-g69b2f70
+PKG_VERSION:=1.9.5
 PKG_RELEASE:=1
-PKG_LICENSE:=GPL-3.0
-PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/royhills/arp-scan.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=69b2f70588565385f3a61d9b1f100f01747cd5e1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=1cfb670ddd1763dbf5c712aaefe4d6c4f825011969e36484e6c442794324f721
+PKG_SOURCE_URL:=https://codeload.github.com/royhills/arp-scan/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=aa9498af84158a315b7e0ea6c2cddfa746660ca3987cbe7e32c0c90f5382d9d2
+
+PKG_MAINTAINER:=Sergey Urushkin <urusha.v1.0@gmail.com>
+PKG_LICENSE:=GPL-3.0
 
 PKG_FIXUP:=autoreconf
 
diff --git a/net/arp-scan/patches/001-cross_compile.patch b/net/arp-scan/patches/001-cross_compile.patch
deleted file mode 100644 (file)
index aa7f53e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/acinclude.m4     2016-02-19 15:21:01.000000000 +0300
-+++ b/acinclude.m4     2016-02-19 17:18:50.480874343 +0300
-@@ -211,7 +211,6 @@
- LONG_LONG_INT_FORMAT=''
- case $pgac_cv_snprintf_long_long_int_format in
--  cross) AC_MSG_RESULT([cannot test (not on host machine)]);;
-   ?*)    AC_MSG_RESULT([$pgac_cv_snprintf_long_long_int_format])
-          LONG_LONG_INT_FORMAT=$pgac_cv_snprintf_long_long_int_format;;
-   *)     AC_MSG_RESULT(none);;
diff --git a/net/bonding/Makefile b/net/bonding/Makefile
new file mode 100644 (file)
index 0000000..c808666
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# Copyright (C) 2018 TDT AG <development@tdt.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=proto-bonding
+PKG_VERSION:=2018-06-11
+PKG_RELEASE:=1
+
+PKG_LICENSE:=GPL-2.0
+PKG_LICENSE_FILES:=
+
+PKG_MAINTAINER:=Helge Mader <ma@dev.tdt.de>
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/proto-bonding
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=Link Aggregation (Channel Bonding) proto handler
+  DEPENDS:=+kmod-bonding
+endef
+
+define Package/proto-bonding/description
+  This package contains the channel bonding proto handler for netifd
+endef
+
+define Build/Compile
+endef
+
+define Package/proto-bonding/install
+       $(INSTALL_DIR) $(1)/lib/netifd/proto/
+       $(INSTALL_BIN) ./files/lib/netifd/proto/bonding.sh \
+               $(1)/lib/netifd/proto/
+endef
+
+$(eval $(call BuildPackage,proto-bonding))
diff --git a/net/bonding/files/lib/netifd/proto/bonding.sh b/net/bonding/files/lib/netifd/proto/bonding.sh
new file mode 100755 (executable)
index 0000000..b624738
--- /dev/null
@@ -0,0 +1,211 @@
+#!/bin/sh
+#
+# Copyright (C) 2018 TDT AG <development@tdt.de>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See https://www.gnu.org/licenses/gpl-2.0.txt for more information.
+#
+
+. /lib/functions.sh
+. ../netifd-proto.sh
+
+init_proto "$@"
+
+INCLUDE_ONLY=1
+
+BONDING_MASTERS="/sys/class/net/bonding_masters"
+
+set_driver_values() {
+       local varname
+
+       for varname in "$@"; do
+               local value
+               json_get_var value "$varname"
+
+               [ -n "$value" ] && echo "$value" > /sys/class/net/"$link"/bonding/"$varname"
+       done
+}
+
+proto_bonding_init_config() {
+       no_device=1
+       available=1
+
+       proto_config_add_string "ifname"
+
+       proto_config_add_string "ipaddr"
+       proto_config_add_string "netmask"
+
+       proto_config_add_string "bonding_policy"
+       proto_config_add_string "link_monitoring"
+       proto_config_add_string "slaves"
+       proto_config_add_string "all_slaves_active"
+
+       proto_config_add_string "min_links"
+       proto_config_add_string "ad_actor_sys_prio"
+       proto_config_add_string "ad_actor_system"
+       proto_config_add_string "ad_select"
+       proto_config_add_string "lacp_rate"
+       proto_config_add_string "packets_per_slave"
+       proto_config_add_string "xmit_hash_policy"
+       proto_config_add_string "primary"
+       proto_config_add_string "primary_reselect"
+       proto_config_add_string "lp_interval"
+       proto_config_add_string "tlb_dynamic_lb"
+       proto_config_add_string "resend_igmp"
+       proto_config_add_string "fail_over_mac"
+       proto_config_add_string "num_grat_arp__num_unsol_na"
+
+       proto_config_add_string "arp_interval"
+       proto_config_add_string "arp_ip_target"
+       proto_config_add_string "arp_all_targets"
+       proto_config_add_string "arp_validate"
+
+       proto_config_add_string "miimon"
+       proto_config_add_string "downdelay"
+       proto_config_add_string "updelay"
+       proto_config_add_string "use_carrier"
+}
+
+proto_bonding_setup() {
+       local cfg="$1"
+       local link="bonding-$cfg"
+
+       # Check for loaded kernel bonding driver (/sys/class/net/bonding_masters exists)
+       [ -f "$BONDING_MASTERS" ] || {
+               echo "$cfg" "setup: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+               proto_notify_error "$cfg" "setup: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+               proto_block_restart "$cfg"
+               return
+       }
+
+       # Add bonding interface to system
+       echo "+$link" > "$BONDING_MASTERS"
+
+       # Set bonding policy (with corresponding parameters)
+       local bonding_policy
+       json_get_vars bonding_policy
+
+       case "$bonding_policy" in
+
+               802.3ad)
+                       echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+                       set_driver_values min_links ad_actor_sys_prio ad_actor_system ad_select lacp_rate
+               ;;
+
+               balance-rr)
+                       echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+                       set_driver_values packets_per_slave xmit_hash_policy
+               ;;
+
+               balance-tlb)
+                       echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+                       set_driver_values primary primary_reselect lp_interval tlb_dynamic_lb resend_igmp xmit_hash_policy
+               ;;
+
+               balance-alb)
+                       echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+                       set_driver_values primary primary_reselect lp_interval tlb_dynamic_lb resend_igmp xmit_hash_policy
+               ;;
+
+               active-backup)
+                       echo "$bonding_policy" > /sys/class/net/"$link"/bonding/mode
+                       set_driver_values primary primary_reselect fail_over_mac num_grat_arp__num_unsol_na xmit_hash_policy
+               ;;
+        esac
+
+       # Set link monitoring (with corresponding parameters)
+       local link_monitoring
+       json_get_vars link_monitoring
+
+       case "$link_monitoring" in
+
+               arp)
+                       local arp_interval arp_ip_target arp_all_targets arp_validate
+                       json_get_vars arp_interval arp_ip_target arp_all_targets arp_validate
+
+                       [ -n "$arp_interval" -a "$arp_interval" != 0 ] && echo "$arp_interval" > /sys/class/net/"$link"/bonding/arp_interval
+
+                       IFS=' '
+                       for target in $arp_ip_target; do
+                               echo "+$target" > /sys/class/net/"$link"/bonding/arp_ip_target
+                       done
+
+                       [ -n "$arp_all_targets" ] && echo "$arp_all_targets" > /sys/class/net/"$link"/bonding/arp_all_targets
+                       [ -n "$arp_validate" ] && echo "$arp_validate" > /sys/class/net/"$link"/bonding/arp_validate
+               ;;
+
+               mii)
+                       local miimon downdelay updelay use_carrier
+                       json_get_vars miimon downdelay updelay use_carrier
+
+                       [ -n "$miimon" -a "$miimon" != 0 ] && echo "$miimon" > /sys/class/net/"$link"/bonding/miimon
+                       [ -n "$downdelay" ] && echo "$downdelay" > /sys/class/net/"$link"/bonding/downdelay
+                       [ -n "$updelay" ] && echo "$updelay" > /sys/class/net/"$link"/bonding/updelay
+                       [ -n "$use_carrier" ] && echo "$use_carrier" > /sys/class/net/"$link"/bonding/use_carrier
+               ;;
+       esac
+
+       # Add slaves to bonding interface
+       local slaves
+       json_get_vars slaves
+
+       for slave in $slaves; do
+
+               if [ "$(cat /proc/net/dev |grep "$slave")" == "" ]; then
+                       echo "$cfg" "ERROR IN CONFIGURATION - $slave: No such device"
+                       proto_notify_error "$cfg" "ERROR IN CONFIGURATION - $slave: No such device"
+                       proto_block_restart "$cfg"
+                       return
+               fi
+
+               ifconfig "$slave" down
+
+               sleep 1
+
+               echo "+$slave" > /sys/class/net/"$link"/bonding/slaves
+
+               ifconfig "$slave" up
+       done
+
+       [ -n "$all_slaves_active" ] && echo "$all_slaves_active" > /sys/class/net/"$link"/bonding/all_slaves_active
+
+       local ipaddr netmask
+       json_get_vars ipaddr netmask
+
+       # ATTENTION
+       #All json vars have to be read before the line below, as the
+       # json object will be overwritten by proto_init_update
+       # ATTENTION
+
+       proto_init_update "$link" 1
+
+       # For static configuration we _MUST_ have an IP address
+       [ -z "$ipaddr" ] && {
+               echo "$cfg" "INVALID LOCAL ADDRESS"
+               proto_notify_error "$cfg" "INVALID_LOCAL_ADDRESS"
+               proto_block_restart "$cfg"
+               return
+       }
+
+       proto_add_ipv4_address "$ipaddr" "$netmask"
+
+       proto_send_update "$cfg"
+}
+
+proto_bonding_teardown() {
+       local cfg="$1"
+       local link="bonding-$cfg"
+
+       # Check for loaded kernel bonding driver (/sys/class/net/bonding_masters exists)
+       [ -f "$BONDING_MASTERS" ] || {
+               echo "$cfg" "teardown: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+               proto_notify_error "$cfg" "teardown: bonding_masters does not exist in sysfs (kernel module not loaded?)"
+               proto_block_restart "$cfg"
+               return
+       }
+
+       echo "-$link" > /sys/class/net/bonding_masters
+       logger "bonding_teardown($1): $2"
+}
+
+add_protocol bonding
index 00c63ea44d81cd84f70c8891884d91c640637c9a..81614d3e6a71cd3bcebd27aa533fc4801ac311b6 100644 (file)
@@ -9,15 +9,13 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=bridge-utils
-PKG_VERSION:=1.5
-PKG_RELEASE:=5
+PKG_VERSION:=1.6
+PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/shemminger/bridge-utils.git
-PKG_SOURCE_VERSION:=v${PKG_VERSION}
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=ce568c41f60987ed972c53fb8dab92bf45052849c4992e8ae931c1eb505630b7
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=@KERNEL/linux/utils/net/$(PKG_NAME)
+PKG_HASH:=cc67efb5d5fb8928a6569b3fade2b4042ec17da04678dab127d96b46489e26c8
+PKG_MAINTAINER:=Nikolay Martynov <mar.kolya@gmail.com>
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
@@ -29,8 +27,7 @@ define Package/bridge
   SECTION:=net
   CATEGORY:=Base system
   TITLE:=Ethernet bridging configuration utility
-  URL:=http://bridge.sourceforge.net/
-  PKG_MAINTAINER:=Nikolay Martynov <mar.kolya@gmail.com>
+  URL:=http://www.linuxfromscratch.org/blfs/view/svn/basicnet/bridge-utils.html
 endef
 
 define Package/bridge/description
diff --git a/net/bridge-utils/patches/010-fix_struct_in6_addr_usage.patch b/net/bridge-utils/patches/010-fix_struct_in6_addr_usage.patch
deleted file mode 100644 (file)
index c2087e5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/libbridge/libbridge.h
-+++ b/libbridge/libbridge.h
-@@ -20,6 +20,7 @@
- #define _LIBBRIDGE_H
- #include <sys/socket.h>
-+#include <netinet/in.h>
- #include <linux/if.h>
- #include <linux/if_bridge.h>
diff --git a/net/bridge-utils/patches/100-musl-compat.patch b/net/bridge-utils/patches/100-musl-compat.patch
deleted file mode 100644 (file)
index 5655643..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/libbridge/libbridge.h
-+++ b/libbridge/libbridge.h
-@@ -19,6 +19,8 @@
- #ifndef _LIBBRIDGE_H
- #define _LIBBRIDGE_H
-+#include <sys/types.h>
-+#include <sys/select.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <linux/if.h>
index a985645559b69d6ccd24ff80e3aa9bf728df8197..9b5467def4f5451511e3310be462f4eaeaea0ba6 100644 (file)
@@ -9,16 +9,12 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=chaosvpn
 
-PKG_REV:=2eb24810b5aa0b2d56f21562e52927020dc3090a
-PKG_VERSION:=2014-01-24
-PKG_RELEASE=2
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/ryd/chaosvpn.git
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REV).tar.gz
-PKG_MIRROR_HASH:=da987a95cb33af730c2b08ceec3af29a61e523625479c7e8b978fad881abbb53
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_VERSION:=2.19
+PKG_RELEASE=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/ryd/chaosvpn/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=53625d131140529e88d8a14c34cc4d8d5d0134292d90f4ae55e9df29d3232828
 PKG_LICENSE:=Apache-2.0
 PKG_MAINTAINER:=Norbert Summer <git@o-g.at>
 
index 2ec3c015b5012e326aa0c76b0eeb0252e4f8715e..5c8f460262c6256c959d9f1033f941fc792ecd2a 100644 (file)
@@ -8,18 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=coova-chilli
-PKG_VERSION:=1.3.0+20141128
+PKG_VERSION:=1.4
 PKG_MAINTAINER:=Jaehoon You <teslamint@gmail.com>
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
 PKG_RELEASE:=6
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/coova/coova-chilli
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=b93de20a288c01c2ba28e96e31ad6da01627f45f
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=89c9b313881c658a0f6b91329a78bb1a0151878b19bc99b315976081c6355557
+PKG_SOURCE_URL:=https://codeload.github.com/coova/coova-chilli/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=987647a4c8efe7b1e2d7108d56068e3bd7830d326680f0eaa2c705e4c59c46d9
 
 PKG_INSTALL:=1
 
@@ -43,7 +40,7 @@ define Package/coova-chilli
   CATEGORY:=Network
   DEPENDS:=+kmod-tun +librt +COOVACHILLI_CYASSL:libcyassl +COOVACHILLI_OPENSSL:libopenssl
   TITLE:=Wireless LAN HotSpot controller (Coova Chilli Version)
-  URL:=http://www.coova.org/CoovaChilli
+  URL:=https://coova.github.io/
   MENU:=1
 endef
 
diff --git a/net/coova-chilli/patches/100-fix-sysinfo-redeclaration.patch b/net/coova-chilli/patches/100-fix-sysinfo-redeclaration.patch
deleted file mode 100644 (file)
index 2efecbe..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/src/system.h
-+++ b/src/system.h
-@@ -83,10 +83,6 @@
- #include <linux/sysinfo.h>
- #endif
--#ifdef HAVE_SYS_SYSINFO_H
--#include <sys/sysinfo.h>
--#endif
--
- #ifdef HAVE_TIME_H
- #include <time.h>
- #endif
-@@ -139,6 +135,10 @@
- #include <linux/un.h>
- #endif
-+#ifdef HAVE_SYS_SYSINFO_H
-+#include <sys/sysinfo.h>
-+#endif
-+
- #elif defined (__FreeBSD__)  || defined (__APPLE__) || defined (__OpenBSD__) || defined (__NetBSD__) 
- #include <net/if.h>
- #include <net/bpf.h>
diff --git a/net/coova-chilli/patches/100-fix_compile_kmod.patch b/net/coova-chilli/patches/100-fix_compile_kmod.patch
new file mode 100644 (file)
index 0000000..f2047b2
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/src/linux/Makefile
++++ b/src/linux/Makefile
+@@ -25,8 +25,8 @@ lib%.o: lib%.c
+       $(CC) $(CFLAGS) -fPIC -O2 -Wall -D_INIT=lib$*_init -c -o $@ $<;
+ install: modules_install libxt_coova.so
+-      mkdir -p $(DESTDIR)/lib/xtables/
+-      cp libxt_coova.so $(DESTDIR)/lib/xtables/
++      mkdir -p $(DESTDIR)/usr/lib/iptables/
++      cp libxt_coova.so $(DESTDIR)/usr/lib/iptables/
+ distdir:
diff --git a/net/coova-chilli/patches/200-fix-compile-with-musl.patch b/net/coova-chilli/patches/200-fix-compile-with-musl.patch
new file mode 100644 (file)
index 0000000..cbc201c
--- /dev/null
@@ -0,0 +1,30 @@
+--- a/src/system.h
++++ b/src/system.h
+@@ -112,6 +112,11 @@
+ #include <signal.h>
+ #endif
++#ifdef HAVE_SYS_SYSINFO_H
++#define _LINUX_SYSINFO_H
++#include <sys/sysinfo.h>
++#endif
++
+ #ifdef HAVE_INTTYPES_H
+ #define __STDC_FORMAT_MACROS
+ #include <inttypes.h>
+@@ -129,15 +134,6 @@
+ #include <linux/un.h>
+ #endif
+-#ifdef HAVE_SYS_SYSINFO_H
+-#include <sys/sysinfo.h>
+-#else
+-#ifdef HAVE_LINUX_SYSINFO_H
+-#define _LINUX_KERNEL_H
+-#include <linux/sysinfo.h>
+-#endif
+-#endif
+-
+ #elif defined (__FreeBSD__)  || defined (__APPLE__) || defined (__OpenBSD__) || defined (__NetBSD__)
+ #include <net/if.h>
+ #include <net/bpf.h>
diff --git a/net/coova-chilli/patches/200-fix_compile_kmod.patch b/net/coova-chilli/patches/200-fix_compile_kmod.patch
deleted file mode 100644 (file)
index 2722578..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/src/linux/Makefile
-+++ b/src/linux/Makefile
-@@ -21,11 +21,11 @@ lib%.so: lib%.o
-       $(CC) $(CFLAGS) -shared -o $@ $^;
- lib%.o: lib%.c
--      $(CC) $(CFLAGS) -fPIC -O2 -Wall -I${KERNEL_DIR}/include -D_INIT=lib$*_init -c -o $@ $<;
-+      $(CC) $(CFLAGS) -D_INIT=lib$*_init -c -o $@ $<;
- install: modules_install libxt_coova.so
--      mkdir -p $(DESTDIR)/lib/xtables/
--      cp libxt_coova.so $(DESTDIR)/lib/xtables/
-+      mkdir -p $(DESTDIR)/usr/lib/iptables/
-+      cp libxt_coova.so $(DESTDIR)/usr/lib/iptables/
- distdir:
diff --git a/net/coova-chilli/patches/201-fix_dereferencing_pointers.patch b/net/coova-chilli/patches/201-fix_dereferencing_pointers.patch
deleted file mode 100644 (file)
index d608835..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
---- a/src/linux/xt_coova.c
-+++ b/src/linux/xt_coova.c
-@@ -292,6 +292,8 @@ static int coova_mt_check(const struct x
-       struct coova_table *t;
- #ifdef CONFIG_PROC_FS
-       struct proc_dir_entry *pde;
-+      kuid_t uid;
-+      kgid_t gid;
- #endif
-       unsigned i;
-       int ret = 0;
-@@ -330,8 +332,9 @@ static int coova_mt_check(const struct x
-               ret = -ENOMEM;
-               goto out;
-       }
--      pde->uid = ip_list_uid;
--      pde->gid = ip_list_gid;
-+      uid = make_kuid(&init_user_ns, ip_list_uid);
-+      gid = make_kgid(&init_user_ns, ip_list_gid);
-+      proc_set_user(pde, uid, gid);
- #endif
-       spin_lock_bh(&coova_lock);
-       list_add_tail(&t->list, &tables);
-@@ -445,14 +448,13 @@ static const struct seq_operations coova
- static int coova_seq_open(struct inode *inode, struct file *file)
- {
--      struct proc_dir_entry *pde = PDE(inode);
-       struct coova_iter_state *st;
-       st = __seq_open_private(file, &coova_seq_ops, sizeof(*st));
-       if (st == NULL)
-               return -ENOMEM;
--      st->table = pde->data;
-+      st->table = PDE_DATA(inode);
-       return 0;
- }
-@@ -460,8 +462,7 @@ static ssize_t
- coova_mt_proc_write(struct file *file, const char __user *input,
-                   size_t size, loff_t *loff)
- {
--      const struct proc_dir_entry *pde = PDE(file->f_path.dentry->d_inode);
--      struct coova_table *t = pde->data;
-+      struct coova_table *t = PDE_DATA(file->f_path.dentry->d_inode);
-       struct coova_entry *e;
-       char buf[sizeof("+b335:1d35:1e55:dead:c0de:1715:5afe:c0de")];
-       const char *c = buf;
diff --git a/net/coova-chilli/patches/300-fix-compile-with-cyassl.patch b/net/coova-chilli/patches/300-fix-compile-with-cyassl.patch
deleted file mode 100644 (file)
index 3b61d49..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/src/md5.h
-+++ b/src/md5.h
-@@ -28,6 +28,14 @@
- #define MD5Update MD5_Update
- #define MD5Final MD5_Final
-+#elif HAVE_CYASSL
-+#include <cyassl/openssl/md5.h>
-+
-+#define MD5Init MD5_Init
-+#define MD5Update MD5_Update
-+#define MD5Final MD5_Final
-+
-+typedef struct CYASSL_MD5_CTX MD5_CTX;
- #else
- struct MD5Context {
---- a/src/md5.c
-+++ b/src/md5.c
-@@ -18,7 +18,7 @@
- #include <string.h>           /* for memcpy() */
- #include "md5.h"
--#ifndef HAVE_OPENSSL
-+#if !defined(HAVE_OPENSSL) && !defined(HAVE_CYASSL)
- void byteReverse(unsigned char *buf, size_t longs);
diff --git a/net/coova-chilli/patches/400-fix-compile-with-musl.patch b/net/coova-chilli/patches/400-fix-compile-with-musl.patch
deleted file mode 100644 (file)
index a810a73..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
---- a/src/system.h
-+++ b/src/system.h
-@@ -78,11 +78,6 @@
- #include <sys/stat.h>
- #endif
--#ifdef HAVE_LINUX_SYSINFO_H
--#define _LINUX_KERNEL_H
--#include <linux/sysinfo.h>
--#endif
--
- #ifdef HAVE_TIME_H
- #include <time.h>
- #endif
-@@ -123,6 +118,11 @@
- #include <signal.h>
- #endif
-+#ifdef HAVE_SYS_SYSINFO_H
-+#define _LINUX_SYSINFO_H
-+#include <sys/sysinfo.h>
-+#endif
-+
- #if defined(__linux__)
- #include <asm/types.h>
- #include <linux/if.h>
-@@ -135,10 +135,6 @@
- #include <linux/un.h>
- #endif
--#ifdef HAVE_SYS_SYSINFO_H
--#include <sys/sysinfo.h>
--#endif
--
- #elif defined (__FreeBSD__)  || defined (__APPLE__) || defined (__OpenBSD__) || defined (__NetBSD__) 
- #include <net/if.h>
- #include <net/bpf.h>
-@@ -170,10 +166,6 @@
- #include <net/if_tun.h>
- #endif
--#ifdef HAVE_NET_ETHERNET_H
--#include <net/ethernet.h>
--#endif
--
- #ifdef HAVE_ASM_TYPES_H
- #include <asm/types.h>
- #endif
---- a/src/chilli_limits.h
-+++ b/src/chilli_limits.h
-@@ -18,8 +18,8 @@
-  * 
-  */
--#ifndef _LIMITS_H
--#define _LIMITS_H
-+#ifndef _CHILLI_LIMITS_H
-+#define _CHILLI_LIMITS_H
- /*
-  * extracted from various .h files, needs some cleanup.
diff --git a/net/coova-chilli/patches/401-fix-compile-misleading-indentation.patch b/net/coova-chilli/patches/401-fix-compile-misleading-indentation.patch
deleted file mode 100644 (file)
index 9aaf546..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/src/chilli.c
-+++ b/src/chilli.c
-@@ -4297,8 +4297,10 @@ static int chilliauth_cb(struct radius_t
-           while (!differ && r1 > 0 && r2 > 0);
-         }
-         
--        if (newfd) safe_close(newfd); newfd=0;
--        if (oldfd) safe_close(oldfd); oldfd=0;
-+        if (newfd) safe_close(newfd);
-+        newfd=0;
-+        if (oldfd) safe_close(oldfd);
-+        oldfd=0;
-         
-         if (differ) {
-           log_dbg("Writing out new hs.conf file with administraive-user settings");
---- a/src/redir.c
-+++ b/src/redir.c
-@@ -3176,9 +3176,11 @@ pid_t redir_fork(int in, int out) {
-     }
- #if defined(F_DUPFD)
--    if (fcntl(in,F_GETFL,0) == -1) return -1; safe_close(0);
-+    if (fcntl(in,F_GETFL,0) == -1) return -1;
-+    safe_close(0);
-     if (fcntl(in,F_DUPFD,0) == -1) return -1;
--    if (fcntl(out,F_GETFL,1) == -1) return -1; safe_close(1);
-+    if (fcntl(out,F_GETFL,1) == -1) return -1;
-+    safe_close(1);
-     if (fcntl(out,F_DUPFD,1) == -1) return -1;
- #else
-     if (dup2(in,0) == -1) return -1;
index 2a6bd7429b1b06b2b8323d9185de566921a27f1e..89e7e9641bd278c8a68379ef9ae84977b8542046 100755 (executable)
@@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=ddns-scripts
 # Version == major.minor.patch
 # increase on new functionality (minor) or patches (patch)
-PKG_VERSION:=2.7.7
+PKG_VERSION:=2.7.8
 # Release == build
 # increase on changes of services files or tld_names.dat
-PKG_RELEASE:=8
+PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-2.0
-PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com>
+PKG_MAINTAINER:=
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -53,16 +53,6 @@ define Package/ddns-scripts/config
                Info   : http://wiki.openwrt.org/doc/howto/ddns.client
 endef
 
-###### *************************************************************************
-define Package/ddns-scripts_cloudflare
-    $(call Package/ddns-scripts/Default)
-    TITLE:=CloudFlare.com API v1 (deprecated)
-    DEPENDS:=ddns-scripts
-endef
-define Package/ddns-scripts_cloudflare/description
-    Dynamic DNS Client scripts extension for CloudFlare.com API-v1 (deprecated)
-endef
-
 ###### *************************************************************************
 define Package/ddns-scripts_cloudflare.com-v4
     $(call Package/ddns-scripts/Default)
@@ -153,8 +143,6 @@ define Build/Compile
                -e '/^\/\/[[:space:]]/d'        \
                -e '/^[[:space:]]*$$$$/d'       $$$$FILE; \
        done
-       # compress public_suffix_list.dat
-       gzip -nf9 $(PKG_BUILD_DIR)/files/public_suffix_list.dat
 endef
 
 define Package/ddns-scripts/conffiles
@@ -208,49 +196,6 @@ define Package/ddns-scripts/prerm
        exit 0  # suppress errors
 endef
 
-###### *************************************************************************
-define Package/ddns-scripts_cloudflare/preinst
-       #!/bin/sh
-       # if NOT run buildroot then stop service
-       [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
-       exit 0  # suppress errors
-endef
-define Package/ddns-scripts_cloudflare/install
-       $(INSTALL_DIR)  $(1)/etc/uci-defaults
-       $(INSTALL_BIN)  $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare
-       $(INSTALL_DIR)  $(1)/usr/share
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/public_suffix_list.dat.gz $(1)/usr/share
-       $(INSTALL_DIR)  $(1)/usr/lib/ddns
-       $(INSTALL_BIN)  $(PKG_BUILD_DIR)/files/update_cloudflare_com_v1.sh $(1)/usr/lib/ddns
-endef
-define Package/ddns-scripts_cloudflare/postinst
-       #!/bin/sh
-       # remove old services file entries
-       /bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services         >/dev/null 2>&1
-       /bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6    >/dev/null 2>&1
-       # and create new
-       printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services
-       printf "%s\\t%s\\n" '"cloudflare.com-v1"' '"update_cloudflare_com_v1.sh"' >> $${IPKG_INSTROOT}/etc/ddns/services_ipv6
-       # on real system restart service if enabled
-       [ -z "$${IPKG_INSTROOT}" ] && {
-               [ -x /etc/uci-defaults/ddns_cloudflare ] && \
-                       /etc/uci-defaults/ddns_cloudflare && \
-                               rm -f /etc/uci-defaults/ddns_cloudflare >/dev/null 2>&1
-               /etc/init.d/ddns enabled && \
-                       /etc/init.d/ddns start >/dev/null 2>&1
-       }
-       exit 0  # suppress errors
-endef
-define Package/ddns-scripts_cloudflare/prerm
-       #!/bin/sh
-       # if NOT run buildroot then stop service
-       [ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop                             >/dev/null 2>&1
-       # remove services file entries
-       /bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services         >/dev/null 2>&1
-       /bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services_ipv6    >/dev/null 2>&1
-       exit 0  # suppress errors
-endef
-
 ###### *************************************************************************
 define Package/ddns-scripts_cloudflare.com-v4/preinst
        #!/bin/sh
@@ -493,7 +438,6 @@ endef
 
 ###### *************************************************************************
 $(eval $(call BuildPackage,ddns-scripts))
-$(eval $(call BuildPackage,ddns-scripts_cloudflare))
 $(eval $(call BuildPackage,ddns-scripts_cloudflare.com-v4))
 $(eval $(call BuildPackage,ddns-scripts_freedns_42_pl))
 $(eval $(call BuildPackage,ddns-scripts_godaddy.com-v1))
index aade4c09b6d32e095f21c94c5b7dd539ba4aaf14..7e551d0fb2ba7b40f30260c615d87bc19e19fcac 100755 (executable)
@@ -6,77 +6,6 @@ g_pslfile=/usr/share/public_suffix_list.dat.gz
 g_pslerr=0
 g_cfgfile="ddns"
 
-# modify "cloudflare.com-v1" domain to new syntax
-# returns "host[.subdom]@domain.TLD" of given FQDN #############################
-mod_cloudflare_v1_domain() {
-       # $1    entry to validate/split
-       [ -f "$g_pslfile" ] || return 1
-
-       [ $# -ne 1 -o -z "$1" ] && \
-               { printf "%s\\n" "mod_cloudflare_v1_domain() - Invalid number of parameters" >&2; return 1; }
-
-       local mcd_fqdn=$1
-       local mcd_fsub=""
-       local mcd_fdom=""
-       local mcd_ctld=""
-       local mcd_ftld=""
-
-       # check if already new syntax, "@" inside string
-       if [ $( printf "%s" "$mcd_fqdn" | grep -cF "@" 2>/dev/null ) -gt 0 ]; then
-               # already done
-               printf "%s" "$mcd_fqdn"
-               return 0
-       fi
-
-       # we need to do in one line because otherwise sh doesn't work correctly
-       # to lower | replace "." to " " | awk invert word order
-       set -- $(printf %s "$mcd_fqdn" | tr [A-Z] [a-z] | tr "." " " \
-                       | awk '{do printf "%s"(NF>1?OFS:ORS),$NF;while (--NF)}' )
-
-       while [ -n "${1:-}" ] ; do                      # as long we have parameters
-               if [ -z "$mcd_ctld" ]; then             # first loop
-                       mcd_ctld="$1"                   # CURRENT TLD to look at
-                       shift
-               else
-                       mcd_ctld="$1.$mcd_ctld"         # Next TLD to look at
-                       shift
-               fi
-               # check if TLD exact match in public_suffix_name.dat, save TLD
-               zcat $g_pslfile | grep -E "^$mcd_ctld$" >/dev/null 2>&1 && {
-                       mcd_ftld="$mcd_ctld"            # save found
-                       mcd_fdom="${1:-}"               # save domain next step might be invalid
-                       continue
-               }
-               # check if match any "*" in public_suffix_name.dat,
-               zcat $g_pslfile | grep -E "^\*.$mcd_ctld$" >/dev/null 2>&1 && {
-                       [ -z "${1:-}" ] && break        # no more data break
-                       # check if next level TLD match excludes "!" in tld_names.dat
-                       if zcat $g_pslfile | grep -E "^!$1.$mcd_ctld$" >/dev/null 2>&1 ; then
-                               mcd_ftld="$mcd_ctld"    # Yes
-                       else
-                               mcd_ftld="$1.$mcd_ctld"
-                               shift
-                       fi
-                       mcd_fdom="$1"; shift
-               }
-               [ -n "$mcd_ftld" ] && break     # we have something valid, break
-       done
-
-       # the leftover parameters are the HOST/SUBDOMAIN
-       while [ -n "${1:-}" ]; do
-               mcd_fsub="${1}${mcd_fsub:+.$mcd_fsub}"  # remember we need to invert
-               shift                                   # and insert dot if mcd_fsub not empty
-       done
-
-       # now validate found data
-       [ -z "$mcd_ftld" ] && { printf "%s\\n" "mod_cloudflare_v1_domain() - no TLD not found in '$mcd_fqdn'" >&1; return 1; }
-       [ -z "$mcd_fdom" ] && { printf "%s\\n" "mod_cloudflare_v1_domain() - no registrable Domain not found in '$mcd_fqdn'" >&1; return 1; }
-
-       # return data
-       printf "%s" "${mcd_fsub:+${mcd_fsub}@}${mcd_fdom}.${mcd_ftld}"
-       return 0
-}
-
 # modify timer settings from interval and unit to dhms format
 timer2dhms() {
 # $1   Number and
@@ -144,36 +73,6 @@ update_config() {
                                                                $uc_uci set $g_cfgfile.$uc_name.$uc_var="afraid.org-keyauth";;
                                                        Bind-nsupdate)
                                                                $uc_uci set $g_cfgfile.$uc_name.$uc_var="bind-nsupdate";;
-                                                       CloudFlare|cloudflare\.com|cloudflare\.com-v1)
-                                                               # verify if lookup_host is set
-                                                               $uc_uci get $g_cfgfile.$uc_name.lookup_host >/dev/null 2>&1 || {
-                                                                       ucv_domain=$($uc_uci get $g_cfgfile.$uc_name.domain 2>/dev/null)
-                                                                       $uc_uci set $g_cfgfile.$uc_name.lookup_host="$ucv_domain"
-                                                               }
-                                                               if [ -f "$g_pslfile" ]; then
-                                                                       # change value of domain/upd_object to new syntax
-                                                                       # there is no sort order inside uci data so we need multiple checks
-                                                                       ucv_domain=$($uc_uci get $g_cfgfile.$uc_name.domain 2>/dev/null)
-                                                                       ucv_object=$($uc_uci get $g_cfgfile.$uc_name.upd_object 2>/dev/null)
-                                                                       # still old option domain
-                                                                       if [ -n "$ucv_domain" ]; then
-                                                                               ucv_new=$(mod_cloudflare_v1_domain "$ucv_domain") || g_pslerr=1
-                                                                               # no error save data save data
-                                                                               [ $g_pslerr -eq 0 ] && \
-                                                                                       $uc_uci set $g_cfgfile.$uc_name.domain="$ucv_new"
-                                                                       fi
-                                                                       # already new option upd_object
-                                                                       if [ -n "$ucv_object" ]; then
-                                                                               ucv_new=$(mod_cloudflare_v1_domain "$ucv_object") || g_pslerr=1
-                                                                               # no error save data save data
-                                                                               [ $g_pslerr -eq 0 ] && \
-                                                                                       $uc_uci set $g_cfgfile.$uc_name.upd_object="$ucv_new"
-                                                                       fi
-                                                               fi
-                                                               unset ucv_domain ucv_object ucv_new
-                                                               # set new option value
-                                                               $uc_uci set $g_cfgfile.$uc_name.$uc_var="cloudflare.com-v1"
-                                                               ;;
                                                        dyndns\.org|dyndns\.com)
                                                                $uc_uci set $g_cfgfile.$uc_name.$uc_var="dyn.com";;
                                                        free\.editdns\.net)
@@ -206,15 +105,6 @@ update_config() {
                                                        # there is no sort order inside uci data so we need multiple checks
                                                        uco_provider=$($uc_uci get $g_cfgfile.$uc_name.upd_provider 2>/dev/null) || \
                                                                uco_provider=$($uc_uci get $g_cfgfile.$uc_name.service_name 2>/dev/null)
-                                                       if [ "$uco_provider" = "CloudFlare" \
-                                                         -o "$uco_provider" = "cloudflare.com" \
-                                                         -o "$uco_provider" = "cloudflare.com-v1" ]; then
-                                                               ucv_new=$(mod_cloudflare_v1_domain "$uc_val") || g_pslerr=1
-                                                               # no error save data save data
-                                                               [ $g_pslerr -eq 0 ] && \
-                                                                       $uc_uci set $g_cfgfile.$uc_name.$uc_var="$ucv_new"
-                                                               unset ucv_new
-                                                       fi
                                                        unset uco_provider
                                                fi
                                                # rename option domain to option upd_object
index 4ad9e60ed612e416c97a7d310a92fd8c4a8c43a7..e6706f4c603b5e6b102d7ed2b8ef100b4506bca1 100755 (executable)
@@ -21,7 +21,7 @@
 . /lib/functions/network.sh
 
 # GLOBAL VARIABLES #
-VERSION="2.7.7-2"
+VERSION="2.7.8-1"
 SECTION_ID=""          # hold config's section name
 VERBOSE=0              # default mode is log to console, but easily changed with parameter
 MYPROG=$(basename $0)  # my program call name
@@ -230,7 +230,7 @@ stop_daemon_for_all_ddns_sections() {
 #      value +10 will exit the scripts
 # $2..n        text to report
 write_log() {
-       local __LEVEL __EXIT __CMD __MSG
+       local __LEVEL __EXIT __CMD __MSG __MSE
        local __TIME=$(date +%H%M%S)
        [ $1 -ge 10 ] && {
                __LEVEL=$(($1-10))
@@ -264,8 +264,15 @@ write_log() {
        [ $VERBOSE -gt 0 -o $__EXIT -gt 0 ] && echo -e "$__MSG"
        # write to logfile
        if [ ${use_logfile:-1} -eq 1 -o $VERBOSE -gt 1 ]; then
-               [ -n "$password" ] && __MSG=$( printf "%s" "$__MSG" | sed -e "s/$password/*password*/g" )
-               [ -n "$URL_PASS" ] && __MSG=$( printf "%s" "$__MSG" | sed -e "s/$URL_PASS/*URL_PASS*/g" )
+               if [ -n "$password" ]; then
+                       # url encode __MSG, password already done
+                       urlencode __MSE "$__MSG"
+                       # replace encoded password inside encoded message
+                       # and url decode (newline was encoded as %00)
+                       __MSG=$( echo -e "$__MSE" \
+                               | sed -e "s/$URL_PASS/***PW***/g" \
+                               | sed -e "s/+/ /g; s/%00/\n/g; s/%/\\\\x/g" | xargs -0 printf "%b" )
+               fi
                printf "%s\n" "$__MSG" >> $LOGFILE
                # VERBOSE > 1 then NO loop so NO truncate log to $ddns_loglines lines
                [ $VERBOSE -gt 1 ] || sed -i -e :a -e '$q;N;'$ddns_loglines',$D;ba' $LOGFILE
@@ -916,7 +923,7 @@ send_update() {
 
                do_transfer "$__URL" || return 1
 
-               write_log 7 "DDNS Provider answered:\n$(cat $DATFILE)"
+               write_log 7 "DDNS Provider answered:${N}$(cat $DATFILE)"
 
                [ -z "$UPD_ANSWER" ] && return 0        # not set then ignore
 
@@ -1242,17 +1249,17 @@ trap_handler() {
 
        case $1 in
                 0)     if [ $__ERR -eq 0 ]; then
-                               write_log 5 "PID '$$' exit normal at $(eval $DATE_PROG)\n"
+                               write_log 5 "PID '$$' exit normal at $(eval $DATE_PROG)${N}"
                        else
-                               write_log 4 "PID '$$' exit WITH ERROR '$__ERR' at $(eval $DATE_PROG)\n"
+                               write_log 4 "PID '$$' exit WITH ERROR '$__ERR' at $(eval $DATE_PROG)${N}"
                        fi ;;
                 1)     write_log 6 "PID '$$' received 'SIGHUP' at $(eval $DATE_PROG)"
                        # reload config via starting the script again
                        /usr/lib/ddns/dynamic_dns_updater.sh -v "0" -S "$__SECTIONID" -- start || true
                        exit 0 ;;       # and leave this one
-                2)     write_log 5 "PID '$$' terminated by 'SIGINT' at $(eval $DATE_PROG)\n";;
-                3)     write_log 5 "PID '$$' terminated by 'SIGQUIT' at $(eval $DATE_PROG)\n";;
-               15)     write_log 5 "PID '$$' terminated by 'SIGTERM' at $(eval $DATE_PROG)\n";;
+                2)     write_log 5 "PID '$$' terminated by 'SIGINT' at $(eval $DATE_PROG)${N}";;
+                3)     write_log 5 "PID '$$' terminated by 'SIGQUIT' at $(eval $DATE_PROG)${N}";;
+               15)     write_log 5 "PID '$$' terminated by 'SIGTERM' at $(eval $DATE_PROG)${N}";;
                 *)     write_log 13 "Unhandled signal '$1' in 'trap_handler()'";;
        esac
 
index 5c73c12ff137d16a09edd04e13c01857b74a6e2f..2076c0d9245e2c05600529f74006360cf1ab2f63 100755 (executable)
@@ -195,6 +195,13 @@ ERR_LAST=$?        # save return code - equal 0 if SECTION_ID found
 [ "$ip_source" = "web" -a -z "$ip_url" -a $use_ipv6 -eq 1 ] && ip_url="http://checkipv6.dyndns.com"
 [ "$ip_source" = "interface" -a -z "$ip_interface" ] && ip_interface="eth1"
 
+# url encode username (might be email or something like this)
+# and password (might have special chars for security reason)
+# and optional parameter "param_enc"
+[ -n "$username" ] && urlencode URL_USER "$username"
+[ -n "$password" ] && urlencode URL_PASS "$password"
+[ -n "$param_enc" ] && urlencode URL_PENC "$param_enc"
+
 # SECTION_ID does not exists
 [ $ERR_LAST -ne 0 ] && {
        [ $VERBOSE -le 1 ] && VERBOSE=2         # force console out and logfile output
@@ -202,14 +209,14 @@ ERR_LAST=$?       # save return code - equal 0 if SECTION_ID found
        write_log  7 "************ ************** ************** **************"
        write_log  5 "PID '$$' started at $(eval $DATE_PROG)"
        write_log  7 "ddns version  : $VERSION"
-       write_log  7 "uci configuration:\n$(uci -q show ddns | grep '=service' | sort)"
+       write_log  7 "uci configuration:${N}$(uci -q show ddns | grep '=service' | sort)"
        write_log 14 "Service section '$SECTION_ID' not defined"
 }
 
 write_log 7 "************ ************** ************** **************"
 write_log 5 "PID '$$' started at $(eval $DATE_PROG)"
 write_log 7 "ddns version  : $VERSION"
-write_log 7 "uci configuration:\n$(uci -q show ddns.$SECTION_ID | sort)"
+write_log 7 "uci configuration:${N}$(uci -q show ddns.$SECTION_ID | sort)"
 # write_log 7 "ddns version  : $(opkg list-installed ddns-scripts | cut -d ' ' -f 3)"
 case $VERBOSE in
        0) write_log  7 "verbose mode  : 0 - run normal, NO console output";;
@@ -263,13 +270,6 @@ esac
                write_log 14 "Service section not configured correctly! Missing 'param_opt'"
 }
 
-# url encode username (might be email or something like this)
-# and password (might have special chars for security reason)
-# and optional parameter "param_enc"
-[ -n "$username" ] && urlencode URL_USER "$username"
-[ -n "$password" ] && urlencode URL_PASS "$password"
-[ -n "$param_enc" ] && urlencode URL_PENC "$param_enc"
-
 # verify ip_source 'script' if script is configured and executable
 if [ "$ip_source" = "script" ]; then
        set -- $ip_script       #handling script with parameters, we need a trick
diff --git a/net/ddns-scripts/files/public_suffix_list.dat b/net/ddns-scripts/files/public_suffix_list.dat
deleted file mode 100644 (file)
index 998973b..0000000
+++ /dev/null
@@ -1,12310 +0,0 @@
-// This Source Code Form is subject to the terms of the Mozilla Public
-// License, v. 2.0. If a copy of the MPL was not distributed with this
-// file, You can obtain one at https://mozilla.org/MPL/2.0/.
-
-// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat,
-// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported.
-
-// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/.
-
-// ===BEGIN ICANN DOMAINS===
-
-// ac : https://en.wikipedia.org/wiki/.ac
-ac
-com.ac
-edu.ac
-gov.ac
-net.ac
-mil.ac
-org.ac
-
-// ad : https://en.wikipedia.org/wiki/.ad
-ad
-nom.ad
-
-// ae : https://en.wikipedia.org/wiki/.ae
-// see also: "Domain Name Eligibility Policy" at http://www.aeda.ae/eng/aepolicy.php
-ae
-co.ae
-net.ae
-org.ae
-sch.ae
-ac.ae
-gov.ae
-mil.ae
-
-// aero : see https://www.information.aero/index.php?id=66
-aero
-accident-investigation.aero
-accident-prevention.aero
-aerobatic.aero
-aeroclub.aero
-aerodrome.aero
-agents.aero
-aircraft.aero
-airline.aero
-airport.aero
-air-surveillance.aero
-airtraffic.aero
-air-traffic-control.aero
-ambulance.aero
-amusement.aero
-association.aero
-author.aero
-ballooning.aero
-broker.aero
-caa.aero
-cargo.aero
-catering.aero
-certification.aero
-championship.aero
-charter.aero
-civilaviation.aero
-club.aero
-conference.aero
-consultant.aero
-consulting.aero
-control.aero
-council.aero
-crew.aero
-design.aero
-dgca.aero
-educator.aero
-emergency.aero
-engine.aero
-engineer.aero
-entertainment.aero
-equipment.aero
-exchange.aero
-express.aero
-federation.aero
-flight.aero
-freight.aero
-fuel.aero
-gliding.aero
-government.aero
-groundhandling.aero
-group.aero
-hanggliding.aero
-homebuilt.aero
-insurance.aero
-journal.aero
-journalist.aero
-leasing.aero
-logistics.aero
-magazine.aero
-maintenance.aero
-media.aero
-microlight.aero
-modelling.aero
-navigation.aero
-parachuting.aero
-paragliding.aero
-passenger-association.aero
-pilot.aero
-press.aero
-production.aero
-recreation.aero
-repbody.aero
-res.aero
-research.aero
-rotorcraft.aero
-safety.aero
-scientist.aero
-services.aero
-show.aero
-skydiving.aero
-software.aero
-student.aero
-trader.aero
-trading.aero
-trainer.aero
-union.aero
-workinggroup.aero
-works.aero
-
-// af : http://www.nic.af/help.jsp
-af
-gov.af
-com.af
-org.af
-net.af
-edu.af
-
-// ag : http://www.nic.ag/prices.htm
-ag
-com.ag
-org.ag
-net.ag
-co.ag
-nom.ag
-
-// ai : http://nic.com.ai/
-ai
-off.ai
-com.ai
-net.ai
-org.ai
-
-// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31
-al
-com.al
-edu.al
-gov.al
-mil.al
-net.al
-org.al
-
-// am : https://en.wikipedia.org/wiki/.am
-am
-
-// ao : https://en.wikipedia.org/wiki/.ao
-// http://www.dns.ao/REGISTR.DOC
-ao
-ed.ao
-gv.ao
-og.ao
-co.ao
-pb.ao
-it.ao
-
-// aq : https://en.wikipedia.org/wiki/.aq
-aq
-
-// ar : https://nic.ar/normativa-vigente.xhtml
-ar
-com.ar
-edu.ar
-gob.ar
-gov.ar
-int.ar
-mil.ar
-net.ar
-org.ar
-tur.ar
-
-// arpa : https://en.wikipedia.org/wiki/.arpa
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-arpa
-e164.arpa
-in-addr.arpa
-ip6.arpa
-iris.arpa
-uri.arpa
-urn.arpa
-
-// as : https://en.wikipedia.org/wiki/.as
-as
-gov.as
-
-// asia : https://en.wikipedia.org/wiki/.asia
-asia
-
-// at : https://en.wikipedia.org/wiki/.at
-// Confirmed by registry <it@nic.at> 2008-06-17
-at
-ac.at
-co.at
-gv.at
-or.at
-
-// au : https://en.wikipedia.org/wiki/.au
-// http://www.auda.org.au/
-au
-// 2LDs
-com.au
-net.au
-org.au
-edu.au
-gov.au
-asn.au
-id.au
-// Historic 2LDs (closed to new registration, but sites still exist)
-info.au
-conf.au
-oz.au
-// CGDNs - http://www.cgdn.org.au/
-act.au
-nsw.au
-nt.au
-qld.au
-sa.au
-tas.au
-vic.au
-wa.au
-// 3LDs
-act.edu.au
-nsw.edu.au
-nt.edu.au
-qld.edu.au
-sa.edu.au
-tas.edu.au
-vic.edu.au
-wa.edu.au
-// act.gov.au  Bug 984824 - Removed at request of Greg Tankard
-// nsw.gov.au  Bug 547985 - Removed at request of <Shae.Donelan@services.nsw.gov.au>
-// nt.gov.au  Bug 940478 - Removed at request of Greg Connors <Greg.Connors@nt.gov.au>
-qld.gov.au
-sa.gov.au
-tas.gov.au
-vic.gov.au
-wa.gov.au
-
-// aw : https://en.wikipedia.org/wiki/.aw
-aw
-com.aw
-
-// ax : https://en.wikipedia.org/wiki/.ax
-ax
-
-// az : https://en.wikipedia.org/wiki/.az
-az
-com.az
-net.az
-int.az
-gov.az
-org.az
-edu.az
-info.az
-pp.az
-mil.az
-name.az
-pro.az
-biz.az
-
-// ba : http://nic.ba/users_data/files/pravilnik_o_registraciji.pdf
-ba
-com.ba
-edu.ba
-gov.ba
-mil.ba
-net.ba
-org.ba
-
-// bb : https://en.wikipedia.org/wiki/.bb
-bb
-biz.bb
-co.bb
-com.bb
-edu.bb
-gov.bb
-info.bb
-net.bb
-org.bb
-store.bb
-tv.bb
-
-// bd : https://en.wikipedia.org/wiki/.bd
-*.bd
-
-// be : https://en.wikipedia.org/wiki/.be
-// Confirmed by registry <tech@dns.be> 2008-06-08
-be
-ac.be
-
-// bf : https://en.wikipedia.org/wiki/.bf
-bf
-gov.bf
-
-// bg : https://en.wikipedia.org/wiki/.bg
-// https://www.register.bg/user/static/rules/en/index.html
-bg
-a.bg
-b.bg
-c.bg
-d.bg
-e.bg
-f.bg
-g.bg
-h.bg
-i.bg
-j.bg
-k.bg
-l.bg
-m.bg
-n.bg
-o.bg
-p.bg
-q.bg
-r.bg
-s.bg
-t.bg
-u.bg
-v.bg
-w.bg
-x.bg
-y.bg
-z.bg
-0.bg
-1.bg
-2.bg
-3.bg
-4.bg
-5.bg
-6.bg
-7.bg
-8.bg
-9.bg
-
-// bh : https://en.wikipedia.org/wiki/.bh
-bh
-com.bh
-edu.bh
-net.bh
-org.bh
-gov.bh
-
-// bi : https://en.wikipedia.org/wiki/.bi
-// http://whois.nic.bi/
-bi
-co.bi
-com.bi
-edu.bi
-or.bi
-org.bi
-
-// biz : https://en.wikipedia.org/wiki/.biz
-biz
-
-// bj : https://en.wikipedia.org/wiki/.bj
-bj
-asso.bj
-barreau.bj
-gouv.bj
-
-// bm : http://www.bermudanic.bm/dnr-text.txt
-bm
-com.bm
-edu.bm
-gov.bm
-net.bm
-org.bm
-
-// bn : https://en.wikipedia.org/wiki/.bn
-*.bn
-
-// bo : http://www.nic.bo/
-bo
-com.bo
-edu.bo
-gov.bo
-gob.bo
-int.bo
-org.bo
-net.bo
-mil.bo
-tv.bo
-
-// br : http://registro.br/dominio/categoria.html
-// Submitted by registry <fneves@registro.br>
-br
-adm.br
-adv.br
-agr.br
-am.br
-arq.br
-art.br
-ato.br
-b.br
-bio.br
-blog.br
-bmd.br
-cim.br
-cng.br
-cnt.br
-com.br
-coop.br
-ecn.br
-eco.br
-edu.br
-emp.br
-eng.br
-esp.br
-etc.br
-eti.br
-far.br
-flog.br
-fm.br
-fnd.br
-fot.br
-fst.br
-g12.br
-ggf.br
-gov.br
-imb.br
-ind.br
-inf.br
-jor.br
-jus.br
-leg.br
-lel.br
-mat.br
-med.br
-mil.br
-mp.br
-mus.br
-net.br
-*.nom.br
-not.br
-ntr.br
-odo.br
-org.br
-ppg.br
-pro.br
-psc.br
-psi.br
-qsl.br
-radio.br
-rec.br
-slg.br
-srv.br
-taxi.br
-teo.br
-tmp.br
-trd.br
-tur.br
-tv.br
-vet.br
-vlog.br
-wiki.br
-zlg.br
-
-// bs : http://www.nic.bs/rules.html
-bs
-com.bs
-net.bs
-org.bs
-edu.bs
-gov.bs
-
-// bt : https://en.wikipedia.org/wiki/.bt
-bt
-com.bt
-edu.bt
-gov.bt
-net.bt
-org.bt
-
-// bv : No registrations at this time.
-// Submitted by registry <jarle@uninett.no>
-bv
-
-// bw : https://en.wikipedia.org/wiki/.bw
-// http://www.gobin.info/domainname/bw.doc
-// list of other 2nd level tlds ?
-bw
-co.bw
-org.bw
-
-// by : https://en.wikipedia.org/wiki/.by
-// http://tld.by/rules_2006_en.html
-// list of other 2nd level tlds ?
-by
-gov.by
-mil.by
-// Official information does not indicate that com.by is a reserved
-// second-level domain, but it's being used as one (see www.google.com.by and
-// www.yahoo.com.by, for example), so we list it here for safety's sake.
-com.by
-
-// http://hoster.by/
-of.by
-
-// bz : https://en.wikipedia.org/wiki/.bz
-// http://www.belizenic.bz/
-bz
-com.bz
-net.bz
-org.bz
-edu.bz
-gov.bz
-
-// ca : https://en.wikipedia.org/wiki/.ca
-ca
-// ca geographical names
-ab.ca
-bc.ca
-mb.ca
-nb.ca
-nf.ca
-nl.ca
-ns.ca
-nt.ca
-nu.ca
-on.ca
-pe.ca
-qc.ca
-sk.ca
-yk.ca
-// gc.ca: https://en.wikipedia.org/wiki/.gc.ca
-// see also: http://registry.gc.ca/en/SubdomainFAQ
-gc.ca
-
-// cat : https://en.wikipedia.org/wiki/.cat
-cat
-
-// cc : https://en.wikipedia.org/wiki/.cc
-cc
-
-// cd : https://en.wikipedia.org/wiki/.cd
-// see also: https://www.nic.cd/domain/insertDomain_2.jsp?act=1
-cd
-gov.cd
-
-// cf : https://en.wikipedia.org/wiki/.cf
-cf
-
-// cg : https://en.wikipedia.org/wiki/.cg
-cg
-
-// ch : https://en.wikipedia.org/wiki/.ch
-ch
-
-// ci : https://en.wikipedia.org/wiki/.ci
-// http://www.nic.ci/index.php?page=charte
-ci
-org.ci
-or.ci
-com.ci
-co.ci
-edu.ci
-ed.ci
-ac.ci
-net.ci
-go.ci
-asso.ci
-xn--aroport-bya.ci
-aéroport.ci
-int.ci
-presse.ci
-md.ci
-gouv.ci
-
-// ck : https://en.wikipedia.org/wiki/.ck
-*.ck
-!www.ck
-
-// cl : https://en.wikipedia.org/wiki/.cl
-cl
-gov.cl
-gob.cl
-co.cl
-mil.cl
-
-// cm : https://en.wikipedia.org/wiki/.cm plus bug 981927
-cm
-co.cm
-com.cm
-gov.cm
-net.cm
-
-// cn : https://en.wikipedia.org/wiki/.cn
-// Submitted by registry <tanyaling@cnnic.cn>
-cn
-ac.cn
-com.cn
-edu.cn
-gov.cn
-net.cn
-org.cn
-mil.cn
-xn--55qx5d.cn
-公司.cn
-xn--io0a7i.cn
-网络.cn
-xn--od0alg.cn
-網絡.cn
-// cn geographic names
-ah.cn
-bj.cn
-cq.cn
-fj.cn
-gd.cn
-gs.cn
-gz.cn
-gx.cn
-ha.cn
-hb.cn
-he.cn
-hi.cn
-hl.cn
-hn.cn
-jl.cn
-js.cn
-jx.cn
-ln.cn
-nm.cn
-nx.cn
-qh.cn
-sc.cn
-sd.cn
-sh.cn
-sn.cn
-sx.cn
-tj.cn
-xj.cn
-xz.cn
-yn.cn
-zj.cn
-hk.cn
-mo.cn
-tw.cn
-
-// co : https://en.wikipedia.org/wiki/.co
-// Submitted by registry <tecnico@uniandes.edu.co>
-co
-arts.co
-com.co
-edu.co
-firm.co
-gov.co
-info.co
-int.co
-mil.co
-net.co
-nom.co
-org.co
-rec.co
-web.co
-
-// com : https://en.wikipedia.org/wiki/.com
-com
-
-// coop : https://en.wikipedia.org/wiki/.coop
-coop
-
-// cr : http://www.nic.cr/niccr_publico/showRegistroDominiosScreen.do
-cr
-ac.cr
-co.cr
-ed.cr
-fi.cr
-go.cr
-or.cr
-sa.cr
-
-// cu : https://en.wikipedia.org/wiki/.cu
-cu
-com.cu
-edu.cu
-org.cu
-net.cu
-gov.cu
-inf.cu
-
-// cv : https://en.wikipedia.org/wiki/.cv
-cv
-
-// cw : http://www.una.cw/cw_registry/
-// Confirmed by registry <registry@una.net> 2013-03-26
-cw
-com.cw
-edu.cw
-net.cw
-org.cw
-
-// cx : https://en.wikipedia.org/wiki/.cx
-// list of other 2nd level tlds ?
-cx
-gov.cx
-
-// cy : http://www.nic.cy/
-// Submitted by registry Panayiotou Fotia <cydns@ucy.ac.cy>
-cy
-ac.cy
-biz.cy
-com.cy
-ekloges.cy
-gov.cy
-ltd.cy
-name.cy
-net.cy
-org.cy
-parliament.cy
-press.cy
-pro.cy
-tm.cy
-
-// cz : https://en.wikipedia.org/wiki/.cz
-cz
-
-// de : https://en.wikipedia.org/wiki/.de
-// Confirmed by registry <ops@denic.de> (with technical
-// reservations) 2008-07-01
-de
-
-// dj : https://en.wikipedia.org/wiki/.dj
-dj
-
-// dk : https://en.wikipedia.org/wiki/.dk
-// Confirmed by registry <robert@dk-hostmaster.dk> 2008-06-17
-dk
-
-// dm : https://en.wikipedia.org/wiki/.dm
-dm
-com.dm
-net.dm
-org.dm
-edu.dm
-gov.dm
-
-// do : https://en.wikipedia.org/wiki/.do
-do
-art.do
-com.do
-edu.do
-gob.do
-gov.do
-mil.do
-net.do
-org.do
-sld.do
-web.do
-
-// dz : https://en.wikipedia.org/wiki/.dz
-dz
-com.dz
-org.dz
-net.dz
-gov.dz
-edu.dz
-asso.dz
-pol.dz
-art.dz
-
-// ec : http://www.nic.ec/reg/paso1.asp
-// Submitted by registry <vabboud@nic.ec>
-ec
-com.ec
-info.ec
-net.ec
-fin.ec
-k12.ec
-med.ec
-pro.ec
-org.ec
-edu.ec
-gov.ec
-gob.ec
-mil.ec
-
-// edu : https://en.wikipedia.org/wiki/.edu
-edu
-
-// ee : http://www.eenet.ee/EENet/dom_reeglid.html#lisa_B
-ee
-edu.ee
-gov.ee
-riik.ee
-lib.ee
-med.ee
-com.ee
-pri.ee
-aip.ee
-org.ee
-fie.ee
-
-// eg : https://en.wikipedia.org/wiki/.eg
-eg
-com.eg
-edu.eg
-eun.eg
-gov.eg
-mil.eg
-name.eg
-net.eg
-org.eg
-sci.eg
-
-// er : https://en.wikipedia.org/wiki/.er
-*.er
-
-// es : https://www.nic.es/site_ingles/ingles/dominios/index.html
-es
-com.es
-nom.es
-org.es
-gob.es
-edu.es
-
-// et : https://en.wikipedia.org/wiki/.et
-et
-com.et
-gov.et
-org.et
-edu.et
-biz.et
-name.et
-info.et
-net.et
-
-// eu : https://en.wikipedia.org/wiki/.eu
-eu
-
-// fi : https://en.wikipedia.org/wiki/.fi
-fi
-// aland.fi : https://en.wikipedia.org/wiki/.ax
-// This domain is being phased out in favor of .ax. As there are still many
-// domains under aland.fi, we still keep it on the list until aland.fi is
-// completely removed.
-// TODO: Check for updates (expected to be phased out around Q1/2009)
-aland.fi
-
-// fj : https://en.wikipedia.org/wiki/.fj
-*.fj
-
-// fk : https://en.wikipedia.org/wiki/.fk
-*.fk
-
-// fm : https://en.wikipedia.org/wiki/.fm
-fm
-
-// fo : https://en.wikipedia.org/wiki/.fo
-fo
-
-// fr : http://www.afnic.fr/
-// domaines descriptifs : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-descriptifs
-fr
-com.fr
-asso.fr
-nom.fr
-prd.fr
-presse.fr
-tm.fr
-// domaines sectoriels : http://www.afnic.fr/obtenir/chartes/nommage-fr/annexe-sectoriels
-aeroport.fr
-assedic.fr
-avocat.fr
-avoues.fr
-cci.fr
-chambagri.fr
-chirurgiens-dentistes.fr
-experts-comptables.fr
-geometre-expert.fr
-gouv.fr
-greta.fr
-huissier-justice.fr
-medecin.fr
-notaires.fr
-pharmacien.fr
-port.fr
-veterinaire.fr
-
-// ga : https://en.wikipedia.org/wiki/.ga
-ga
-
-// gb : This registry is effectively dormant
-// Submitted by registry <Damien.Shaw@ja.net>
-gb
-
-// gd : https://en.wikipedia.org/wiki/.gd
-gd
-
-// ge : http://www.nic.net.ge/policy_en.pdf
-ge
-com.ge
-edu.ge
-gov.ge
-org.ge
-mil.ge
-net.ge
-pvt.ge
-
-// gf : https://en.wikipedia.org/wiki/.gf
-gf
-
-// gg : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-gg
-co.gg
-net.gg
-org.gg
-
-// gh : https://en.wikipedia.org/wiki/.gh
-// see also: http://www.nic.gh/reg_now.php
-// Although domains directly at second level are not possible at the moment,
-// they have been possible for some time and may come back.
-gh
-com.gh
-edu.gh
-gov.gh
-org.gh
-mil.gh
-
-// gi : http://www.nic.gi/rules.html
-gi
-com.gi
-ltd.gi
-gov.gi
-mod.gi
-edu.gi
-org.gi
-
-// gl : https://en.wikipedia.org/wiki/.gl
-// http://nic.gl
-gl
-co.gl
-com.gl
-edu.gl
-net.gl
-org.gl
-
-// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm
-gm
-
-// gn : http://psg.com/dns/gn/gn.txt
-// Submitted by registry <randy@psg.com>
-gn
-ac.gn
-com.gn
-edu.gn
-gov.gn
-org.gn
-net.gn
-
-// gov : https://en.wikipedia.org/wiki/.gov
-gov
-
-// gp : http://www.nic.gp/index.php?lang=en
-gp
-com.gp
-net.gp
-mobi.gp
-edu.gp
-org.gp
-asso.gp
-
-// gq : https://en.wikipedia.org/wiki/.gq
-gq
-
-// gr : https://grweb.ics.forth.gr/english/1617-B-2005.html
-// Submitted by registry <segred@ics.forth.gr>
-gr
-com.gr
-edu.gr
-net.gr
-org.gr
-gov.gr
-
-// gs : https://en.wikipedia.org/wiki/.gs
-gs
-
-// gt : http://www.gt/politicas_de_registro.html
-gt
-com.gt
-edu.gt
-gob.gt
-ind.gt
-mil.gt
-net.gt
-org.gt
-
-// gu : http://gadao.gov.gu/registration.txt
-*.gu
-
-// gw : https://en.wikipedia.org/wiki/.gw
-gw
-
-// gy : https://en.wikipedia.org/wiki/.gy
-// http://registry.gy/
-gy
-co.gy
-com.gy
-edu.gy
-gov.gy
-net.gy
-org.gy
-
-// hk : https://www.hkdnr.hk
-// Submitted by registry <hk.tech@hkirc.hk>
-hk
-com.hk
-edu.hk
-gov.hk
-idv.hk
-net.hk
-org.hk
-xn--55qx5d.hk
-公司.hk
-xn--wcvs22d.hk
-教育.hk
-xn--lcvr32d.hk
-敎育.hk
-xn--mxtq1m.hk
-政府.hk
-xn--gmqw5a.hk
-個人.hk
-xn--ciqpn.hk
-个人.hk
-xn--gmq050i.hk
-箇人.hk
-xn--zf0avx.hk
-網络.hk
-xn--io0a7i.hk
-网络.hk
-xn--mk0axi.hk
-组織.hk
-xn--od0alg.hk
-網絡.hk
-xn--od0aq3b.hk
-网絡.hk
-xn--tn0ag.hk
-组织.hk
-xn--uc0atv.hk
-組織.hk
-xn--uc0ay4a.hk
-組织.hk
-
-// hm : https://en.wikipedia.org/wiki/.hm
-hm
-
-// hn : http://www.nic.hn/politicas/ps02,,05.html
-hn
-com.hn
-edu.hn
-org.hn
-net.hn
-mil.hn
-gob.hn
-
-// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf
-hr
-iz.hr
-from.hr
-name.hr
-com.hr
-
-// ht : http://www.nic.ht/info/charte.cfm
-ht
-com.ht
-shop.ht
-firm.ht
-info.ht
-adult.ht
-net.ht
-pro.ht
-org.ht
-med.ht
-art.ht
-coop.ht
-pol.ht
-asso.ht
-edu.ht
-rel.ht
-gouv.ht
-perso.ht
-
-// hu : http://www.domain.hu/domain/English/sld.html
-// Confirmed by registry <pasztor@iszt.hu> 2008-06-12
-hu
-co.hu
-info.hu
-org.hu
-priv.hu
-sport.hu
-tm.hu
-2000.hu
-agrar.hu
-bolt.hu
-casino.hu
-city.hu
-erotica.hu
-erotika.hu
-film.hu
-forum.hu
-games.hu
-hotel.hu
-ingatlan.hu
-jogasz.hu
-konyvelo.hu
-lakas.hu
-media.hu
-news.hu
-reklam.hu
-sex.hu
-shop.hu
-suli.hu
-szex.hu
-tozsde.hu
-utazas.hu
-video.hu
-
-// id : https://register.pandi.or.id/
-id
-ac.id
-biz.id
-co.id
-desa.id
-go.id
-mil.id
-my.id
-net.id
-or.id
-sch.id
-web.id
-
-// ie : https://en.wikipedia.org/wiki/.ie
-ie
-gov.ie
-
-// il : http://www.isoc.org.il/domains/
-il
-ac.il
-co.il
-gov.il
-idf.il
-k12.il
-muni.il
-net.il
-org.il
-
-// im : https://www.nic.im/
-// Submitted by registry <info@nic.im>
-im
-ac.im
-co.im
-com.im
-ltd.co.im
-net.im
-org.im
-plc.co.im
-tt.im
-tv.im
-
-// in : https://en.wikipedia.org/wiki/.in
-// see also: https://registry.in/Policies
-// Please note, that nic.in is not an official eTLD, but used by most
-// government institutions.
-in
-co.in
-firm.in
-net.in
-org.in
-gen.in
-ind.in
-nic.in
-ac.in
-edu.in
-res.in
-gov.in
-mil.in
-
-// info : https://en.wikipedia.org/wiki/.info
-info
-
-// int : https://en.wikipedia.org/wiki/.int
-// Confirmed by registry <iana-questions@icann.org> 2008-06-18
-int
-eu.int
-
-// io : http://www.nic.io/rules.html
-// list of other 2nd level tlds ?
-io
-com.io
-
-// iq : http://www.cmc.iq/english/iq/iqregister1.htm
-iq
-gov.iq
-edu.iq
-mil.iq
-com.iq
-org.iq
-net.iq
-
-// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules
-// Also see http://www.nic.ir/Internationalized_Domain_Names
-// Two <iran>.ir entries added at request of <tech-team@nic.ir>, 2010-04-16
-ir
-ac.ir
-co.ir
-gov.ir
-id.ir
-net.ir
-org.ir
-sch.ir
-// xn--mgba3a4f16a.ir (<iran>.ir, Persian YEH)
-xn--mgba3a4f16a.ir
-ایران.ir
-// xn--mgba3a4fra.ir (<iran>.ir, Arabic YEH)
-xn--mgba3a4fra.ir
-ايران.ir
-
-// is : http://www.isnic.is/domain/rules.php
-// Confirmed by registry <marius@isgate.is> 2008-12-06
-is
-net.is
-com.is
-edu.is
-gov.is
-org.is
-int.is
-
-// it : https://en.wikipedia.org/wiki/.it
-it
-gov.it
-edu.it
-// Reserved geo-names:
-// http://www.nic.it/documenti/regolamenti-e-linee-guida/regolamento-assegnazione-versione-6.0.pdf
-// There is also a list of reserved geo-names corresponding to Italian municipalities
-// http://www.nic.it/documenti/appendice-c.pdf, but it is not included here.
-// Regions
-abr.it
-abruzzo.it
-aosta-valley.it
-aostavalley.it
-bas.it
-basilicata.it
-cal.it
-calabria.it
-cam.it
-campania.it
-emilia-romagna.it
-emiliaromagna.it
-emr.it
-friuli-v-giulia.it
-friuli-ve-giulia.it
-friuli-vegiulia.it
-friuli-venezia-giulia.it
-friuli-veneziagiulia.it
-friuli-vgiulia.it
-friuliv-giulia.it
-friulive-giulia.it
-friulivegiulia.it
-friulivenezia-giulia.it
-friuliveneziagiulia.it
-friulivgiulia.it
-fvg.it
-laz.it
-lazio.it
-lig.it
-liguria.it
-lom.it
-lombardia.it
-lombardy.it
-lucania.it
-mar.it
-marche.it
-mol.it
-molise.it
-piedmont.it
-piemonte.it
-pmn.it
-pug.it
-puglia.it
-sar.it
-sardegna.it
-sardinia.it
-sic.it
-sicilia.it
-sicily.it
-taa.it
-tos.it
-toscana.it
-trentino-a-adige.it
-trentino-aadige.it
-trentino-alto-adige.it
-trentino-altoadige.it
-trentino-s-tirol.it
-trentino-stirol.it
-trentino-sud-tirol.it
-trentino-sudtirol.it
-trentino-sued-tirol.it
-trentino-suedtirol.it
-trentinoa-adige.it
-trentinoaadige.it
-trentinoalto-adige.it
-trentinoaltoadige.it
-trentinos-tirol.it
-trentinostirol.it
-trentinosud-tirol.it
-trentinosudtirol.it
-trentinosued-tirol.it
-trentinosuedtirol.it
-tuscany.it
-umb.it
-umbria.it
-val-d-aosta.it
-val-daosta.it
-vald-aosta.it
-valdaosta.it
-valle-aosta.it
-valle-d-aosta.it
-valle-daosta.it
-valleaosta.it
-valled-aosta.it
-valledaosta.it
-vallee-aoste.it
-valleeaoste.it
-vao.it
-vda.it
-ven.it
-veneto.it
-// Provinces
-ag.it
-agrigento.it
-al.it
-alessandria.it
-alto-adige.it
-altoadige.it
-an.it
-ancona.it
-andria-barletta-trani.it
-andria-trani-barletta.it
-andriabarlettatrani.it
-andriatranibarletta.it
-ao.it
-aosta.it
-aoste.it
-ap.it
-aq.it
-aquila.it
-ar.it
-arezzo.it
-ascoli-piceno.it
-ascolipiceno.it
-asti.it
-at.it
-av.it
-avellino.it
-ba.it
-balsan.it
-bari.it
-barletta-trani-andria.it
-barlettatraniandria.it
-belluno.it
-benevento.it
-bergamo.it
-bg.it
-bi.it
-biella.it
-bl.it
-bn.it
-bo.it
-bologna.it
-bolzano.it
-bozen.it
-br.it
-brescia.it
-brindisi.it
-bs.it
-bt.it
-bz.it
-ca.it
-cagliari.it
-caltanissetta.it
-campidano-medio.it
-campidanomedio.it
-campobasso.it
-carbonia-iglesias.it
-carboniaiglesias.it
-carrara-massa.it
-carraramassa.it
-caserta.it
-catania.it
-catanzaro.it
-cb.it
-ce.it
-cesena-forli.it
-cesenaforli.it
-ch.it
-chieti.it
-ci.it
-cl.it
-cn.it
-co.it
-como.it
-cosenza.it
-cr.it
-cremona.it
-crotone.it
-cs.it
-ct.it
-cuneo.it
-cz.it
-dell-ogliastra.it
-dellogliastra.it
-en.it
-enna.it
-fc.it
-fe.it
-fermo.it
-ferrara.it
-fg.it
-fi.it
-firenze.it
-florence.it
-fm.it
-foggia.it
-forli-cesena.it
-forlicesena.it
-fr.it
-frosinone.it
-ge.it
-genoa.it
-genova.it
-go.it
-gorizia.it
-gr.it
-grosseto.it
-iglesias-carbonia.it
-iglesiascarbonia.it
-im.it
-imperia.it
-is.it
-isernia.it
-kr.it
-la-spezia.it
-laquila.it
-laspezia.it
-latina.it
-lc.it
-le.it
-lecce.it
-lecco.it
-li.it
-livorno.it
-lo.it
-lodi.it
-lt.it
-lu.it
-lucca.it
-macerata.it
-mantova.it
-massa-carrara.it
-massacarrara.it
-matera.it
-mb.it
-mc.it
-me.it
-medio-campidano.it
-mediocampidano.it
-messina.it
-mi.it
-milan.it
-milano.it
-mn.it
-mo.it
-modena.it
-monza-brianza.it
-monza-e-della-brianza.it
-monza.it
-monzabrianza.it
-monzaebrianza.it
-monzaedellabrianza.it
-ms.it
-mt.it
-na.it
-naples.it
-napoli.it
-no.it
-novara.it
-nu.it
-nuoro.it
-og.it
-ogliastra.it
-olbia-tempio.it
-olbiatempio.it
-or.it
-oristano.it
-ot.it
-pa.it
-padova.it
-padua.it
-palermo.it
-parma.it
-pavia.it
-pc.it
-pd.it
-pe.it
-perugia.it
-pesaro-urbino.it
-pesarourbino.it
-pescara.it
-pg.it
-pi.it
-piacenza.it
-pisa.it
-pistoia.it
-pn.it
-po.it
-pordenone.it
-potenza.it
-pr.it
-prato.it
-pt.it
-pu.it
-pv.it
-pz.it
-ra.it
-ragusa.it
-ravenna.it
-rc.it
-re.it
-reggio-calabria.it
-reggio-emilia.it
-reggiocalabria.it
-reggioemilia.it
-rg.it
-ri.it
-rieti.it
-rimini.it
-rm.it
-rn.it
-ro.it
-roma.it
-rome.it
-rovigo.it
-sa.it
-salerno.it
-sassari.it
-savona.it
-si.it
-siena.it
-siracusa.it
-so.it
-sondrio.it
-sp.it
-sr.it
-ss.it
-suedtirol.it
-sv.it
-ta.it
-taranto.it
-te.it
-tempio-olbia.it
-tempioolbia.it
-teramo.it
-terni.it
-tn.it
-to.it
-torino.it
-tp.it
-tr.it
-trani-andria-barletta.it
-trani-barletta-andria.it
-traniandriabarletta.it
-tranibarlettaandria.it
-trapani.it
-trentino.it
-trento.it
-treviso.it
-trieste.it
-ts.it
-turin.it
-tv.it
-ud.it
-udine.it
-urbino-pesaro.it
-urbinopesaro.it
-va.it
-varese.it
-vb.it
-vc.it
-ve.it
-venezia.it
-venice.it
-verbania.it
-vercelli.it
-verona.it
-vi.it
-vibo-valentia.it
-vibovalentia.it
-vicenza.it
-viterbo.it
-vr.it
-vs.it
-vt.it
-vv.it
-
-// je : http://www.channelisles.net/register-domains/
-// Confirmed by registry <nigel@channelisles.net> 2013-11-28
-je
-co.je
-net.je
-org.je
-
-// jm : http://www.com.jm/register.html
-*.jm
-
-// jo : http://www.dns.jo/Registration_policy.aspx
-jo
-com.jo
-org.jo
-net.jo
-edu.jo
-sch.jo
-gov.jo
-mil.jo
-name.jo
-
-// jobs : https://en.wikipedia.org/wiki/.jobs
-jobs
-
-// jp : https://en.wikipedia.org/wiki/.jp
-// http://jprs.co.jp/en/jpdomain.html
-// Submitted by registry <info@jprs.jp>
-jp
-// jp organizational type names
-ac.jp
-ad.jp
-co.jp
-ed.jp
-go.jp
-gr.jp
-lg.jp
-ne.jp
-or.jp
-// jp prefecture type names
-aichi.jp
-akita.jp
-aomori.jp
-chiba.jp
-ehime.jp
-fukui.jp
-fukuoka.jp
-fukushima.jp
-gifu.jp
-gunma.jp
-hiroshima.jp
-hokkaido.jp
-hyogo.jp
-ibaraki.jp
-ishikawa.jp
-iwate.jp
-kagawa.jp
-kagoshima.jp
-kanagawa.jp
-kochi.jp
-kumamoto.jp
-kyoto.jp
-mie.jp
-miyagi.jp
-miyazaki.jp
-nagano.jp
-nagasaki.jp
-nara.jp
-niigata.jp
-oita.jp
-okayama.jp
-okinawa.jp
-osaka.jp
-saga.jp
-saitama.jp
-shiga.jp
-shimane.jp
-shizuoka.jp
-tochigi.jp
-tokushima.jp
-tokyo.jp
-tottori.jp
-toyama.jp
-wakayama.jp
-yamagata.jp
-yamaguchi.jp
-yamanashi.jp
-xn--4pvxs.jp
-栃木.jp
-xn--vgu402c.jp
-愛知.jp
-xn--c3s14m.jp
-愛媛.jp
-xn--f6qx53a.jp
-兵庫.jp
-xn--8pvr4u.jp
-熊本.jp
-xn--uist22h.jp
-茨城.jp
-xn--djrs72d6uy.jp
-北海道.jp
-xn--mkru45i.jp
-千葉.jp
-xn--0trq7p7nn.jp
-和歌山.jp
-xn--8ltr62k.jp
-長崎.jp
-xn--2m4a15e.jp
-長野.jp
-xn--efvn9s.jp
-新潟.jp
-xn--32vp30h.jp
-青森.jp
-xn--4it797k.jp
-静岡.jp
-xn--1lqs71d.jp
-東京.jp
-xn--5rtp49c.jp
-石川.jp
-xn--5js045d.jp
-埼玉.jp
-xn--ehqz56n.jp
-三重.jp
-xn--1lqs03n.jp
-京都.jp
-xn--qqqt11m.jp
-佐賀.jp
-xn--kbrq7o.jp
-大分.jp
-xn--pssu33l.jp
-大阪.jp
-xn--ntsq17g.jp
-奈良.jp
-xn--uisz3g.jp
-宮城.jp
-xn--6btw5a.jp
-宮崎.jp
-xn--1ctwo.jp
-富山.jp
-xn--6orx2r.jp
-山口.jp
-xn--rht61e.jp
-山形.jp
-xn--rht27z.jp
-山梨.jp
-xn--djty4k.jp
-岩手.jp
-xn--nit225k.jp
-岐阜.jp
-xn--rht3d.jp
-岡山.jp
-xn--klty5x.jp
-島根.jp
-xn--kltx9a.jp
-広島.jp
-xn--kltp7d.jp
-徳島.jp
-xn--uuwu58a.jp
-沖縄.jp
-xn--zbx025d.jp
-滋賀.jp
-xn--ntso0iqx3a.jp
-神奈川.jp
-xn--elqq16h.jp
-福井.jp
-xn--4it168d.jp
-福岡.jp
-xn--klt787d.jp
-福島.jp
-xn--rny31h.jp
-秋田.jp
-xn--7t0a264c.jp
-群馬.jp
-xn--5rtq34k.jp
-香川.jp
-xn--k7yn95e.jp
-高知.jp
-xn--tor131o.jp
-鳥取.jp
-xn--d5qv7z876c.jp
-鹿児島.jp
-// jp geographic type names
-// http://jprs.jp/doc/rule/saisoku-1.html
-*.kawasaki.jp
-*.kitakyushu.jp
-*.kobe.jp
-*.nagoya.jp
-*.sapporo.jp
-*.sendai.jp
-*.yokohama.jp
-!city.kawasaki.jp
-!city.kitakyushu.jp
-!city.kobe.jp
-!city.nagoya.jp
-!city.sapporo.jp
-!city.sendai.jp
-!city.yokohama.jp
-// 4th level registration
-aisai.aichi.jp
-ama.aichi.jp
-anjo.aichi.jp
-asuke.aichi.jp
-chiryu.aichi.jp
-chita.aichi.jp
-fuso.aichi.jp
-gamagori.aichi.jp
-handa.aichi.jp
-hazu.aichi.jp
-hekinan.aichi.jp
-higashiura.aichi.jp
-ichinomiya.aichi.jp
-inazawa.aichi.jp
-inuyama.aichi.jp
-isshiki.aichi.jp
-iwakura.aichi.jp
-kanie.aichi.jp
-kariya.aichi.jp
-kasugai.aichi.jp
-kira.aichi.jp
-kiyosu.aichi.jp
-komaki.aichi.jp
-konan.aichi.jp
-kota.aichi.jp
-mihama.aichi.jp
-miyoshi.aichi.jp
-nishio.aichi.jp
-nisshin.aichi.jp
-obu.aichi.jp
-oguchi.aichi.jp
-oharu.aichi.jp
-okazaki.aichi.jp
-owariasahi.aichi.jp
-seto.aichi.jp
-shikatsu.aichi.jp
-shinshiro.aichi.jp
-shitara.aichi.jp
-tahara.aichi.jp
-takahama.aichi.jp
-tobishima.aichi.jp
-toei.aichi.jp
-togo.aichi.jp
-tokai.aichi.jp
-tokoname.aichi.jp
-toyoake.aichi.jp
-toyohashi.aichi.jp
-toyokawa.aichi.jp
-toyone.aichi.jp
-toyota.aichi.jp
-tsushima.aichi.jp
-yatomi.aichi.jp
-akita.akita.jp
-daisen.akita.jp
-fujisato.akita.jp
-gojome.akita.jp
-hachirogata.akita.jp
-happou.akita.jp
-higashinaruse.akita.jp
-honjo.akita.jp
-honjyo.akita.jp
-ikawa.akita.jp
-kamikoani.akita.jp
-kamioka.akita.jp
-katagami.akita.jp
-kazuno.akita.jp
-kitaakita.akita.jp
-kosaka.akita.jp
-kyowa.akita.jp
-misato.akita.jp
-mitane.akita.jp
-moriyoshi.akita.jp
-nikaho.akita.jp
-noshiro.akita.jp
-odate.akita.jp
-oga.akita.jp
-ogata.akita.jp
-semboku.akita.jp
-yokote.akita.jp
-yurihonjo.akita.jp
-aomori.aomori.jp
-gonohe.aomori.jp
-hachinohe.aomori.jp
-hashikami.aomori.jp
-hiranai.aomori.jp
-hirosaki.aomori.jp
-itayanagi.aomori.jp
-kuroishi.aomori.jp
-misawa.aomori.jp
-mutsu.aomori.jp
-nakadomari.aomori.jp
-noheji.aomori.jp
-oirase.aomori.jp
-owani.aomori.jp
-rokunohe.aomori.jp
-sannohe.aomori.jp
-shichinohe.aomori.jp
-shingo.aomori.jp
-takko.aomori.jp
-towada.aomori.jp
-tsugaru.aomori.jp
-tsuruta.aomori.jp
-abiko.chiba.jp
-asahi.chiba.jp
-chonan.chiba.jp
-chosei.chiba.jp
-choshi.chiba.jp
-chuo.chiba.jp
-funabashi.chiba.jp
-futtsu.chiba.jp
-hanamigawa.chiba.jp
-ichihara.chiba.jp
-ichikawa.chiba.jp
-ichinomiya.chiba.jp
-inzai.chiba.jp
-isumi.chiba.jp
-kamagaya.chiba.jp
-kamogawa.chiba.jp
-kashiwa.chiba.jp
-katori.chiba.jp
-katsuura.chiba.jp
-kimitsu.chiba.jp
-kisarazu.chiba.jp
-kozaki.chiba.jp
-kujukuri.chiba.jp
-kyonan.chiba.jp
-matsudo.chiba.jp
-midori.chiba.jp
-mihama.chiba.jp
-minamiboso.chiba.jp
-mobara.chiba.jp
-mutsuzawa.chiba.jp
-nagara.chiba.jp
-nagareyama.chiba.jp
-narashino.chiba.jp
-narita.chiba.jp
-noda.chiba.jp
-oamishirasato.chiba.jp
-omigawa.chiba.jp
-onjuku.chiba.jp
-otaki.chiba.jp
-sakae.chiba.jp
-sakura.chiba.jp
-shimofusa.chiba.jp
-shirako.chiba.jp
-shiroi.chiba.jp
-shisui.chiba.jp
-sodegaura.chiba.jp
-sosa.chiba.jp
-tako.chiba.jp
-tateyama.chiba.jp
-togane.chiba.jp
-tohnosho.chiba.jp
-tomisato.chiba.jp
-urayasu.chiba.jp
-yachimata.chiba.jp
-yachiyo.chiba.jp
-yokaichiba.chiba.jp
-yokoshibahikari.chiba.jp
-yotsukaido.chiba.jp
-ainan.ehime.jp
-honai.ehime.jp
-ikata.ehime.jp
-imabari.ehime.jp
-iyo.ehime.jp
-kamijima.ehime.jp
-kihoku.ehime.jp
-kumakogen.ehime.jp
-masaki.ehime.jp
-matsuno.ehime.jp
-matsuyama.ehime.jp
-namikata.ehime.jp
-niihama.ehime.jp
-ozu.ehime.jp
-saijo.ehime.jp
-seiyo.ehime.jp
-shikokuchuo.ehime.jp
-tobe.ehime.jp
-toon.ehime.jp
-uchiko.ehime.jp
-uwajima.ehime.jp
-yawatahama.ehime.jp
-echizen.fukui.jp
-eiheiji.fukui.jp
-fukui.fukui.jp
-ikeda.fukui.jp
-katsuyama.fukui.jp
-mihama.fukui.jp
-minamiechizen.fukui.jp
-obama.fukui.jp
-ohi.fukui.jp
-ono.fukui.jp
-sabae.fukui.jp
-sakai.fukui.jp
-takahama.fukui.jp
-tsuruga.fukui.jp
-wakasa.fukui.jp
-ashiya.fukuoka.jp
-buzen.fukuoka.jp
-chikugo.fukuoka.jp
-chikuho.fukuoka.jp
-chikujo.fukuoka.jp
-chikushino.fukuoka.jp
-chikuzen.fukuoka.jp
-chuo.fukuoka.jp
-dazaifu.fukuoka.jp
-fukuchi.fukuoka.jp
-hakata.fukuoka.jp
-higashi.fukuoka.jp
-hirokawa.fukuoka.jp
-hisayama.fukuoka.jp
-iizuka.fukuoka.jp
-inatsuki.fukuoka.jp
-kaho.fukuoka.jp
-kasuga.fukuoka.jp
-kasuya.fukuoka.jp
-kawara.fukuoka.jp
-keisen.fukuoka.jp
-koga.fukuoka.jp
-kurate.fukuoka.jp
-kurogi.fukuoka.jp
-kurume.fukuoka.jp
-minami.fukuoka.jp
-miyako.fukuoka.jp
-miyama.fukuoka.jp
-miyawaka.fukuoka.jp
-mizumaki.fukuoka.jp
-munakata.fukuoka.jp
-nakagawa.fukuoka.jp
-nakama.fukuoka.jp
-nishi.fukuoka.jp
-nogata.fukuoka.jp
-ogori.fukuoka.jp
-okagaki.fukuoka.jp
-okawa.fukuoka.jp
-oki.fukuoka.jp
-omuta.fukuoka.jp
-onga.fukuoka.jp
-onojo.fukuoka.jp
-oto.fukuoka.jp
-saigawa.fukuoka.jp
-sasaguri.fukuoka.jp
-shingu.fukuoka.jp
-shinyoshitomi.fukuoka.jp
-shonai.fukuoka.jp
-soeda.fukuoka.jp
-sue.fukuoka.jp
-tachiarai.fukuoka.jp
-tagawa.fukuoka.jp
-takata.fukuoka.jp
-toho.fukuoka.jp
-toyotsu.fukuoka.jp
-tsuiki.fukuoka.jp
-ukiha.fukuoka.jp
-umi.fukuoka.jp
-usui.fukuoka.jp
-yamada.fukuoka.jp
-yame.fukuoka.jp
-yanagawa.fukuoka.jp
-yukuhashi.fukuoka.jp
-aizubange.fukushima.jp
-aizumisato.fukushima.jp
-aizuwakamatsu.fukushima.jp
-asakawa.fukushima.jp
-bandai.fukushima.jp
-date.fukushima.jp
-fukushima.fukushima.jp
-furudono.fukushima.jp
-futaba.fukushima.jp
-hanawa.fukushima.jp
-higashi.fukushima.jp
-hirata.fukushima.jp
-hirono.fukushima.jp
-iitate.fukushima.jp
-inawashiro.fukushima.jp
-ishikawa.fukushima.jp
-iwaki.fukushima.jp
-izumizaki.fukushima.jp
-kagamiishi.fukushima.jp
-kaneyama.fukushima.jp
-kawamata.fukushima.jp
-kitakata.fukushima.jp
-kitashiobara.fukushima.jp
-koori.fukushima.jp
-koriyama.fukushima.jp
-kunimi.fukushima.jp
-miharu.fukushima.jp
-mishima.fukushima.jp
-namie.fukushima.jp
-nango.fukushima.jp
-nishiaizu.fukushima.jp
-nishigo.fukushima.jp
-okuma.fukushima.jp
-omotego.fukushima.jp
-ono.fukushima.jp
-otama.fukushima.jp
-samegawa.fukushima.jp
-shimogo.fukushima.jp
-shirakawa.fukushima.jp
-showa.fukushima.jp
-soma.fukushima.jp
-sukagawa.fukushima.jp
-taishin.fukushima.jp
-tamakawa.fukushima.jp
-tanagura.fukushima.jp
-tenei.fukushima.jp
-yabuki.fukushima.jp
-yamato.fukushima.jp
-yamatsuri.fukushima.jp
-yanaizu.fukushima.jp
-yugawa.fukushima.jp
-anpachi.gifu.jp
-ena.gifu.jp
-gifu.gifu.jp
-ginan.gifu.jp
-godo.gifu.jp
-gujo.gifu.jp
-hashima.gifu.jp
-hichiso.gifu.jp
-hida.gifu.jp
-higashishirakawa.gifu.jp
-ibigawa.gifu.jp
-ikeda.gifu.jp
-kakamigahara.gifu.jp
-kani.gifu.jp
-kasahara.gifu.jp
-kasamatsu.gifu.jp
-kawaue.gifu.jp
-kitagata.gifu.jp
-mino.gifu.jp
-minokamo.gifu.jp
-mitake.gifu.jp
-mizunami.gifu.jp
-motosu.gifu.jp
-nakatsugawa.gifu.jp
-ogaki.gifu.jp
-sakahogi.gifu.jp
-seki.gifu.jp
-sekigahara.gifu.jp
-shirakawa.gifu.jp
-tajimi.gifu.jp
-takayama.gifu.jp
-tarui.gifu.jp
-toki.gifu.jp
-tomika.gifu.jp
-wanouchi.gifu.jp
-yamagata.gifu.jp
-yaotsu.gifu.jp
-yoro.gifu.jp
-annaka.gunma.jp
-chiyoda.gunma.jp
-fujioka.gunma.jp
-higashiagatsuma.gunma.jp
-isesaki.gunma.jp
-itakura.gunma.jp
-kanna.gunma.jp
-kanra.gunma.jp
-katashina.gunma.jp
-kawaba.gunma.jp
-kiryu.gunma.jp
-kusatsu.gunma.jp
-maebashi.gunma.jp
-meiwa.gunma.jp
-midori.gunma.jp
-minakami.gunma.jp
-naganohara.gunma.jp
-nakanojo.gunma.jp
-nanmoku.gunma.jp
-numata.gunma.jp
-oizumi.gunma.jp
-ora.gunma.jp
-ota.gunma.jp
-shibukawa.gunma.jp
-shimonita.gunma.jp
-shinto.gunma.jp
-showa.gunma.jp
-takasaki.gunma.jp
-takayama.gunma.jp
-tamamura.gunma.jp
-tatebayashi.gunma.jp
-tomioka.gunma.jp
-tsukiyono.gunma.jp
-tsumagoi.gunma.jp
-ueno.gunma.jp
-yoshioka.gunma.jp
-asaminami.hiroshima.jp
-daiwa.hiroshima.jp
-etajima.hiroshima.jp
-fuchu.hiroshima.jp
-fukuyama.hiroshima.jp
-hatsukaichi.hiroshima.jp
-higashihiroshima.hiroshima.jp
-hongo.hiroshima.jp
-jinsekikogen.hiroshima.jp
-kaita.hiroshima.jp
-kui.hiroshima.jp
-kumano.hiroshima.jp
-kure.hiroshima.jp
-mihara.hiroshima.jp
-miyoshi.hiroshima.jp
-naka.hiroshima.jp
-onomichi.hiroshima.jp
-osakikamijima.hiroshima.jp
-otake.hiroshima.jp
-saka.hiroshima.jp
-sera.hiroshima.jp
-seranishi.hiroshima.jp
-shinichi.hiroshima.jp
-shobara.hiroshima.jp
-takehara.hiroshima.jp
-abashiri.hokkaido.jp
-abira.hokkaido.jp
-aibetsu.hokkaido.jp
-akabira.hokkaido.jp
-akkeshi.hokkaido.jp
-asahikawa.hokkaido.jp
-ashibetsu.hokkaido.jp
-ashoro.hokkaido.jp
-assabu.hokkaido.jp
-atsuma.hokkaido.jp
-bibai.hokkaido.jp
-biei.hokkaido.jp
-bifuka.hokkaido.jp
-bihoro.hokkaido.jp
-biratori.hokkaido.jp
-chippubetsu.hokkaido.jp
-chitose.hokkaido.jp
-date.hokkaido.jp
-ebetsu.hokkaido.jp
-embetsu.hokkaido.jp
-eniwa.hokkaido.jp
-erimo.hokkaido.jp
-esan.hokkaido.jp
-esashi.hokkaido.jp
-fukagawa.hokkaido.jp
-fukushima.hokkaido.jp
-furano.hokkaido.jp
-furubira.hokkaido.jp
-haboro.hokkaido.jp
-hakodate.hokkaido.jp
-hamatonbetsu.hokkaido.jp
-hidaka.hokkaido.jp
-higashikagura.hokkaido.jp
-higashikawa.hokkaido.jp
-hiroo.hokkaido.jp
-hokuryu.hokkaido.jp
-hokuto.hokkaido.jp
-honbetsu.hokkaido.jp
-horokanai.hokkaido.jp
-horonobe.hokkaido.jp
-ikeda.hokkaido.jp
-imakane.hokkaido.jp
-ishikari.hokkaido.jp
-iwamizawa.hokkaido.jp
-iwanai.hokkaido.jp
-kamifurano.hokkaido.jp
-kamikawa.hokkaido.jp
-kamishihoro.hokkaido.jp
-kamisunagawa.hokkaido.jp
-kamoenai.hokkaido.jp
-kayabe.hokkaido.jp
-kembuchi.hokkaido.jp
-kikonai.hokkaido.jp
-kimobetsu.hokkaido.jp
-kitahiroshima.hokkaido.jp
-kitami.hokkaido.jp
-kiyosato.hokkaido.jp
-koshimizu.hokkaido.jp
-kunneppu.hokkaido.jp
-kuriyama.hokkaido.jp
-kuromatsunai.hokkaido.jp
-kushiro.hokkaido.jp
-kutchan.hokkaido.jp
-kyowa.hokkaido.jp
-mashike.hokkaido.jp
-matsumae.hokkaido.jp
-mikasa.hokkaido.jp
-minamifurano.hokkaido.jp
-mombetsu.hokkaido.jp
-moseushi.hokkaido.jp
-mukawa.hokkaido.jp
-muroran.hokkaido.jp
-naie.hokkaido.jp
-nakagawa.hokkaido.jp
-nakasatsunai.hokkaido.jp
-nakatombetsu.hokkaido.jp
-nanae.hokkaido.jp
-nanporo.hokkaido.jp
-nayoro.hokkaido.jp
-nemuro.hokkaido.jp
-niikappu.hokkaido.jp
-niki.hokkaido.jp
-nishiokoppe.hokkaido.jp
-noboribetsu.hokkaido.jp
-numata.hokkaido.jp
-obihiro.hokkaido.jp
-obira.hokkaido.jp
-oketo.hokkaido.jp
-okoppe.hokkaido.jp
-otaru.hokkaido.jp
-otobe.hokkaido.jp
-otofuke.hokkaido.jp
-otoineppu.hokkaido.jp
-oumu.hokkaido.jp
-ozora.hokkaido.jp
-pippu.hokkaido.jp
-rankoshi.hokkaido.jp
-rebun.hokkaido.jp
-rikubetsu.hokkaido.jp
-rishiri.hokkaido.jp
-rishirifuji.hokkaido.jp
-saroma.hokkaido.jp
-sarufutsu.hokkaido.jp
-shakotan.hokkaido.jp
-shari.hokkaido.jp
-shibecha.hokkaido.jp
-shibetsu.hokkaido.jp
-shikabe.hokkaido.jp
-shikaoi.hokkaido.jp
-shimamaki.hokkaido.jp
-shimizu.hokkaido.jp
-shimokawa.hokkaido.jp
-shinshinotsu.hokkaido.jp
-shintoku.hokkaido.jp
-shiranuka.hokkaido.jp
-shiraoi.hokkaido.jp
-shiriuchi.hokkaido.jp
-sobetsu.hokkaido.jp
-sunagawa.hokkaido.jp
-taiki.hokkaido.jp
-takasu.hokkaido.jp
-takikawa.hokkaido.jp
-takinoue.hokkaido.jp
-teshikaga.hokkaido.jp
-tobetsu.hokkaido.jp
-tohma.hokkaido.jp
-tomakomai.hokkaido.jp
-tomari.hokkaido.jp
-toya.hokkaido.jp
-toyako.hokkaido.jp
-toyotomi.hokkaido.jp
-toyoura.hokkaido.jp
-tsubetsu.hokkaido.jp
-tsukigata.hokkaido.jp
-urakawa.hokkaido.jp
-urausu.hokkaido.jp
-uryu.hokkaido.jp
-utashinai.hokkaido.jp
-wakkanai.hokkaido.jp
-wassamu.hokkaido.jp
-yakumo.hokkaido.jp
-yoichi.hokkaido.jp
-aioi.hyogo.jp
-akashi.hyogo.jp
-ako.hyogo.jp
-amagasaki.hyogo.jp
-aogaki.hyogo.jp
-asago.hyogo.jp
-ashiya.hyogo.jp
-awaji.hyogo.jp
-fukusaki.hyogo.jp
-goshiki.hyogo.jp
-harima.hyogo.jp
-himeji.hyogo.jp
-ichikawa.hyogo.jp
-inagawa.hyogo.jp
-itami.hyogo.jp
-kakogawa.hyogo.jp
-kamigori.hyogo.jp
-kamikawa.hyogo.jp
-kasai.hyogo.jp
-kasuga.hyogo.jp
-kawanishi.hyogo.jp
-miki.hyogo.jp
-minamiawaji.hyogo.jp
-nishinomiya.hyogo.jp
-nishiwaki.hyogo.jp
-ono.hyogo.jp
-sanda.hyogo.jp
-sannan.hyogo.jp
-sasayama.hyogo.jp
-sayo.hyogo.jp
-shingu.hyogo.jp
-shinonsen.hyogo.jp
-shiso.hyogo.jp
-sumoto.hyogo.jp
-taishi.hyogo.jp
-taka.hyogo.jp
-takarazuka.hyogo.jp
-takasago.hyogo.jp
-takino.hyogo.jp
-tamba.hyogo.jp
-tatsuno.hyogo.jp
-toyooka.hyogo.jp
-yabu.hyogo.jp
-yashiro.hyogo.jp
-yoka.hyogo.jp
-yokawa.hyogo.jp
-ami.ibaraki.jp
-asahi.ibaraki.jp
-bando.ibaraki.jp
-chikusei.ibaraki.jp
-daigo.ibaraki.jp
-fujishiro.ibaraki.jp
-hitachi.ibaraki.jp
-hitachinaka.ibaraki.jp
-hitachiomiya.ibaraki.jp
-hitachiota.ibaraki.jp
-ibaraki.ibaraki.jp
-ina.ibaraki.jp
-inashiki.ibaraki.jp
-itako.ibaraki.jp
-iwama.ibaraki.jp
-joso.ibaraki.jp
-kamisu.ibaraki.jp
-kasama.ibaraki.jp
-kashima.ibaraki.jp
-kasumigaura.ibaraki.jp
-koga.ibaraki.jp
-miho.ibaraki.jp
-mito.ibaraki.jp
-moriya.ibaraki.jp
-naka.ibaraki.jp
-namegata.ibaraki.jp
-oarai.ibaraki.jp
-ogawa.ibaraki.jp
-omitama.ibaraki.jp
-ryugasaki.ibaraki.jp
-sakai.ibaraki.jp
-sakuragawa.ibaraki.jp
-shimodate.ibaraki.jp
-shimotsuma.ibaraki.jp
-shirosato.ibaraki.jp
-sowa.ibaraki.jp
-suifu.ibaraki.jp
-takahagi.ibaraki.jp
-tamatsukuri.ibaraki.jp
-tokai.ibaraki.jp
-tomobe.ibaraki.jp
-tone.ibaraki.jp
-toride.ibaraki.jp
-tsuchiura.ibaraki.jp
-tsukuba.ibaraki.jp
-uchihara.ibaraki.jp
-ushiku.ibaraki.jp
-yachiyo.ibaraki.jp
-yamagata.ibaraki.jp
-yawara.ibaraki.jp
-yuki.ibaraki.jp
-anamizu.ishikawa.jp
-hakui.ishikawa.jp
-hakusan.ishikawa.jp
-kaga.ishikawa.jp
-kahoku.ishikawa.jp
-kanazawa.ishikawa.jp
-kawakita.ishikawa.jp
-komatsu.ishikawa.jp
-nakanoto.ishikawa.jp
-nanao.ishikawa.jp
-nomi.ishikawa.jp
-nonoichi.ishikawa.jp
-noto.ishikawa.jp
-shika.ishikawa.jp
-suzu.ishikawa.jp
-tsubata.ishikawa.jp
-tsurugi.ishikawa.jp
-uchinada.ishikawa.jp
-wajima.ishikawa.jp
-fudai.iwate.jp
-fujisawa.iwate.jp
-hanamaki.iwate.jp
-hiraizumi.iwate.jp
-hirono.iwate.jp
-ichinohe.iwate.jp
-ichinoseki.iwate.jp
-iwaizumi.iwate.jp
-iwate.iwate.jp
-joboji.iwate.jp
-kamaishi.iwate.jp
-kanegasaki.iwate.jp
-karumai.iwate.jp
-kawai.iwate.jp
-kitakami.iwate.jp
-kuji.iwate.jp
-kunohe.iwate.jp
-kuzumaki.iwate.jp
-miyako.iwate.jp
-mizusawa.iwate.jp
-morioka.iwate.jp
-ninohe.iwate.jp
-noda.iwate.jp
-ofunato.iwate.jp
-oshu.iwate.jp
-otsuchi.iwate.jp
-rikuzentakata.iwate.jp
-shiwa.iwate.jp
-shizukuishi.iwate.jp
-sumita.iwate.jp
-tanohata.iwate.jp
-tono.iwate.jp
-yahaba.iwate.jp
-yamada.iwate.jp
-ayagawa.kagawa.jp
-higashikagawa.kagawa.jp
-kanonji.kagawa.jp
-kotohira.kagawa.jp
-manno.kagawa.jp
-marugame.kagawa.jp
-mitoyo.kagawa.jp
-naoshima.kagawa.jp
-sanuki.kagawa.jp
-tadotsu.kagawa.jp
-takamatsu.kagawa.jp
-tonosho.kagawa.jp
-uchinomi.kagawa.jp
-utazu.kagawa.jp
-zentsuji.kagawa.jp
-akune.kagoshima.jp
-amami.kagoshima.jp
-hioki.kagoshima.jp
-isa.kagoshima.jp
-isen.kagoshima.jp
-izumi.kagoshima.jp
-kagoshima.kagoshima.jp
-kanoya.kagoshima.jp
-kawanabe.kagoshima.jp
-kinko.kagoshima.jp
-kouyama.kagoshima.jp
-makurazaki.kagoshima.jp
-matsumoto.kagoshima.jp
-minamitane.kagoshima.jp
-nakatane.kagoshima.jp
-nishinoomote.kagoshima.jp
-satsumasendai.kagoshima.jp
-soo.kagoshima.jp
-tarumizu.kagoshima.jp
-yusui.kagoshima.jp
-aikawa.kanagawa.jp
-atsugi.kanagawa.jp
-ayase.kanagawa.jp
-chigasaki.kanagawa.jp
-ebina.kanagawa.jp
-fujisawa.kanagawa.jp
-hadano.kanagawa.jp
-hakone.kanagawa.jp
-hiratsuka.kanagawa.jp
-isehara.kanagawa.jp
-kaisei.kanagawa.jp
-kamakura.kanagawa.jp
-kiyokawa.kanagawa.jp
-matsuda.kanagawa.jp
-minamiashigara.kanagawa.jp
-miura.kanagawa.jp
-nakai.kanagawa.jp
-ninomiya.kanagawa.jp
-odawara.kanagawa.jp
-oi.kanagawa.jp
-oiso.kanagawa.jp
-sagamihara.kanagawa.jp
-samukawa.kanagawa.jp
-tsukui.kanagawa.jp
-yamakita.kanagawa.jp
-yamato.kanagawa.jp
-yokosuka.kanagawa.jp
-yugawara.kanagawa.jp
-zama.kanagawa.jp
-zushi.kanagawa.jp
-aki.kochi.jp
-geisei.kochi.jp
-hidaka.kochi.jp
-higashitsuno.kochi.jp
-ino.kochi.jp
-kagami.kochi.jp
-kami.kochi.jp
-kitagawa.kochi.jp
-kochi.kochi.jp
-mihara.kochi.jp
-motoyama.kochi.jp
-muroto.kochi.jp
-nahari.kochi.jp
-nakamura.kochi.jp
-nankoku.kochi.jp
-nishitosa.kochi.jp
-niyodogawa.kochi.jp
-ochi.kochi.jp
-okawa.kochi.jp
-otoyo.kochi.jp
-otsuki.kochi.jp
-sakawa.kochi.jp
-sukumo.kochi.jp
-susaki.kochi.jp
-tosa.kochi.jp
-tosashimizu.kochi.jp
-toyo.kochi.jp
-tsuno.kochi.jp
-umaji.kochi.jp
-yasuda.kochi.jp
-yusuhara.kochi.jp
-amakusa.kumamoto.jp
-arao.kumamoto.jp
-aso.kumamoto.jp
-choyo.kumamoto.jp
-gyokuto.kumamoto.jp
-kamiamakusa.kumamoto.jp
-kikuchi.kumamoto.jp
-kumamoto.kumamoto.jp
-mashiki.kumamoto.jp
-mifune.kumamoto.jp
-minamata.kumamoto.jp
-minamioguni.kumamoto.jp
-nagasu.kumamoto.jp
-nishihara.kumamoto.jp
-oguni.kumamoto.jp
-ozu.kumamoto.jp
-sumoto.kumamoto.jp
-takamori.kumamoto.jp
-uki.kumamoto.jp
-uto.kumamoto.jp
-yamaga.kumamoto.jp
-yamato.kumamoto.jp
-yatsushiro.kumamoto.jp
-ayabe.kyoto.jp
-fukuchiyama.kyoto.jp
-higashiyama.kyoto.jp
-ide.kyoto.jp
-ine.kyoto.jp
-joyo.kyoto.jp
-kameoka.kyoto.jp
-kamo.kyoto.jp
-kita.kyoto.jp
-kizu.kyoto.jp
-kumiyama.kyoto.jp
-kyotamba.kyoto.jp
-kyotanabe.kyoto.jp
-kyotango.kyoto.jp
-maizuru.kyoto.jp
-minami.kyoto.jp
-minamiyamashiro.kyoto.jp
-miyazu.kyoto.jp
-muko.kyoto.jp
-nagaokakyo.kyoto.jp
-nakagyo.kyoto.jp
-nantan.kyoto.jp
-oyamazaki.kyoto.jp
-sakyo.kyoto.jp
-seika.kyoto.jp
-tanabe.kyoto.jp
-uji.kyoto.jp
-ujitawara.kyoto.jp
-wazuka.kyoto.jp
-yamashina.kyoto.jp
-yawata.kyoto.jp
-asahi.mie.jp
-inabe.mie.jp
-ise.mie.jp
-kameyama.mie.jp
-kawagoe.mie.jp
-kiho.mie.jp
-kisosaki.mie.jp
-kiwa.mie.jp
-komono.mie.jp
-kumano.mie.jp
-kuwana.mie.jp
-matsusaka.mie.jp
-meiwa.mie.jp
-mihama.mie.jp
-minamiise.mie.jp
-misugi.mie.jp
-miyama.mie.jp
-nabari.mie.jp
-shima.mie.jp
-suzuka.mie.jp
-tado.mie.jp
-taiki.mie.jp
-taki.mie.jp
-tamaki.mie.jp
-toba.mie.jp
-tsu.mie.jp
-udono.mie.jp
-ureshino.mie.jp
-watarai.mie.jp
-yokkaichi.mie.jp
-furukawa.miyagi.jp
-higashimatsushima.miyagi.jp
-ishinomaki.miyagi.jp
-iwanuma.miyagi.jp
-kakuda.miyagi.jp
-kami.miyagi.jp
-kawasaki.miyagi.jp
-marumori.miyagi.jp
-matsushima.miyagi.jp
-minamisanriku.miyagi.jp
-misato.miyagi.jp
-murata.miyagi.jp
-natori.miyagi.jp
-ogawara.miyagi.jp
-ohira.miyagi.jp
-onagawa.miyagi.jp
-osaki.miyagi.jp
-rifu.miyagi.jp
-semine.miyagi.jp
-shibata.miyagi.jp
-shichikashuku.miyagi.jp
-shikama.miyagi.jp
-shiogama.miyagi.jp
-shiroishi.miyagi.jp
-tagajo.miyagi.jp
-taiwa.miyagi.jp
-tome.miyagi.jp
-tomiya.miyagi.jp
-wakuya.miyagi.jp
-watari.miyagi.jp
-yamamoto.miyagi.jp
-zao.miyagi.jp
-aya.miyazaki.jp
-ebino.miyazaki.jp
-gokase.miyazaki.jp
-hyuga.miyazaki.jp
-kadogawa.miyazaki.jp
-kawaminami.miyazaki.jp
-kijo.miyazaki.jp
-kitagawa.miyazaki.jp
-kitakata.miyazaki.jp
-kitaura.miyazaki.jp
-kobayashi.miyazaki.jp
-kunitomi.miyazaki.jp
-kushima.miyazaki.jp
-mimata.miyazaki.jp
-miyakonojo.miyazaki.jp
-miyazaki.miyazaki.jp
-morotsuka.miyazaki.jp
-nichinan.miyazaki.jp
-nishimera.miyazaki.jp
-nobeoka.miyazaki.jp
-saito.miyazaki.jp
-shiiba.miyazaki.jp
-shintomi.miyazaki.jp
-takaharu.miyazaki.jp
-takanabe.miyazaki.jp
-takazaki.miyazaki.jp
-tsuno.miyazaki.jp
-achi.nagano.jp
-agematsu.nagano.jp
-anan.nagano.jp
-aoki.nagano.jp
-asahi.nagano.jp
-azumino.nagano.jp
-chikuhoku.nagano.jp
-chikuma.nagano.jp
-chino.nagano.jp
-fujimi.nagano.jp
-hakuba.nagano.jp
-hara.nagano.jp
-hiraya.nagano.jp
-iida.nagano.jp
-iijima.nagano.jp
-iiyama.nagano.jp
-iizuna.nagano.jp
-ikeda.nagano.jp
-ikusaka.nagano.jp
-ina.nagano.jp
-karuizawa.nagano.jp
-kawakami.nagano.jp
-kiso.nagano.jp
-kisofukushima.nagano.jp
-kitaaiki.nagano.jp
-komagane.nagano.jp
-komoro.nagano.jp
-matsukawa.nagano.jp
-matsumoto.nagano.jp
-miasa.nagano.jp
-minamiaiki.nagano.jp
-minamimaki.nagano.jp
-minamiminowa.nagano.jp
-minowa.nagano.jp
-miyada.nagano.jp
-miyota.nagano.jp
-mochizuki.nagano.jp
-nagano.nagano.jp
-nagawa.nagano.jp
-nagiso.nagano.jp
-nakagawa.nagano.jp
-nakano.nagano.jp
-nozawaonsen.nagano.jp
-obuse.nagano.jp
-ogawa.nagano.jp
-okaya.nagano.jp
-omachi.nagano.jp
-omi.nagano.jp
-ookuwa.nagano.jp
-ooshika.nagano.jp
-otaki.nagano.jp
-otari.nagano.jp
-sakae.nagano.jp
-sakaki.nagano.jp
-saku.nagano.jp
-sakuho.nagano.jp
-shimosuwa.nagano.jp
-shinanomachi.nagano.jp
-shiojiri.nagano.jp
-suwa.nagano.jp
-suzaka.nagano.jp
-takagi.nagano.jp
-takamori.nagano.jp
-takayama.nagano.jp
-tateshina.nagano.jp
-tatsuno.nagano.jp
-togakushi.nagano.jp
-togura.nagano.jp
-tomi.nagano.jp
-ueda.nagano.jp
-wada.nagano.jp
-yamagata.nagano.jp
-yamanouchi.nagano.jp
-yasaka.nagano.jp
-yasuoka.nagano.jp
-chijiwa.nagasaki.jp
-futsu.nagasaki.jp
-goto.nagasaki.jp
-hasami.nagasaki.jp
-hirado.nagasaki.jp
-iki.nagasaki.jp
-isahaya.nagasaki.jp
-kawatana.nagasaki.jp
-kuchinotsu.nagasaki.jp
-matsuura.nagasaki.jp
-nagasaki.nagasaki.jp
-obama.nagasaki.jp
-omura.nagasaki.jp
-oseto.nagasaki.jp
-saikai.nagasaki.jp
-sasebo.nagasaki.jp
-seihi.nagasaki.jp
-shimabara.nagasaki.jp
-shinkamigoto.nagasaki.jp
-togitsu.nagasaki.jp
-tsushima.nagasaki.jp
-unzen.nagasaki.jp
-ando.nara.jp
-gose.nara.jp
-heguri.nara.jp
-higashiyoshino.nara.jp
-ikaruga.nara.jp
-ikoma.nara.jp
-kamikitayama.nara.jp
-kanmaki.nara.jp
-kashiba.nara.jp
-kashihara.nara.jp
-katsuragi.nara.jp
-kawai.nara.jp
-kawakami.nara.jp
-kawanishi.nara.jp
-koryo.nara.jp
-kurotaki.nara.jp
-mitsue.nara.jp
-miyake.nara.jp
-nara.nara.jp
-nosegawa.nara.jp
-oji.nara.jp
-ouda.nara.jp
-oyodo.nara.jp
-sakurai.nara.jp
-sango.nara.jp
-shimoichi.nara.jp
-shimokitayama.nara.jp
-shinjo.nara.jp
-soni.nara.jp
-takatori.nara.jp
-tawaramoto.nara.jp
-tenkawa.nara.jp
-tenri.nara.jp
-uda.nara.jp
-yamatokoriyama.nara.jp
-yamatotakada.nara.jp
-yamazoe.nara.jp
-yoshino.nara.jp
-aga.niigata.jp
-agano.niigata.jp
-gosen.niigata.jp
-itoigawa.niigata.jp
-izumozaki.niigata.jp
-joetsu.niigata.jp
-kamo.niigata.jp
-kariwa.niigata.jp
-kashiwazaki.niigata.jp
-minamiuonuma.niigata.jp
-mitsuke.niigata.jp
-muika.niigata.jp
-murakami.niigata.jp
-myoko.niigata.jp
-nagaoka.niigata.jp
-niigata.niigata.jp
-ojiya.niigata.jp
-omi.niigata.jp
-sado.niigata.jp
-sanjo.niigata.jp
-seiro.niigata.jp
-seirou.niigata.jp
-sekikawa.niigata.jp
-shibata.niigata.jp
-tagami.niigata.jp
-tainai.niigata.jp
-tochio.niigata.jp
-tokamachi.niigata.jp
-tsubame.niigata.jp
-tsunan.niigata.jp
-uonuma.niigata.jp
-yahiko.niigata.jp
-yoita.niigata.jp
-yuzawa.niigata.jp
-beppu.oita.jp
-bungoono.oita.jp
-bungotakada.oita.jp
-hasama.oita.jp
-hiji.oita.jp
-himeshima.oita.jp
-hita.oita.jp
-kamitsue.oita.jp
-kokonoe.oita.jp
-kuju.oita.jp
-kunisaki.oita.jp
-kusu.oita.jp
-oita.oita.jp
-saiki.oita.jp
-taketa.oita.jp
-tsukumi.oita.jp
-usa.oita.jp
-usuki.oita.jp
-yufu.oita.jp
-akaiwa.okayama.jp
-asakuchi.okayama.jp
-bizen.okayama.jp
-hayashima.okayama.jp
-ibara.okayama.jp
-kagamino.okayama.jp
-kasaoka.okayama.jp
-kibichuo.okayama.jp
-kumenan.okayama.jp
-kurashiki.okayama.jp
-maniwa.okayama.jp
-misaki.okayama.jp
-nagi.okayama.jp
-niimi.okayama.jp
-nishiawakura.okayama.jp
-okayama.okayama.jp
-satosho.okayama.jp
-setouchi.okayama.jp
-shinjo.okayama.jp
-shoo.okayama.jp
-soja.okayama.jp
-takahashi.okayama.jp
-tamano.okayama.jp
-tsuyama.okayama.jp
-wake.okayama.jp
-yakage.okayama.jp
-aguni.okinawa.jp
-ginowan.okinawa.jp
-ginoza.okinawa.jp
-gushikami.okinawa.jp
-haebaru.okinawa.jp
-higashi.okinawa.jp
-hirara.okinawa.jp
-iheya.okinawa.jp
-ishigaki.okinawa.jp
-ishikawa.okinawa.jp
-itoman.okinawa.jp
-izena.okinawa.jp
-kadena.okinawa.jp
-kin.okinawa.jp
-kitadaito.okinawa.jp
-kitanakagusuku.okinawa.jp
-kumejima.okinawa.jp
-kunigami.okinawa.jp
-minamidaito.okinawa.jp
-motobu.okinawa.jp
-nago.okinawa.jp
-naha.okinawa.jp
-nakagusuku.okinawa.jp
-nakijin.okinawa.jp
-nanjo.okinawa.jp
-nishihara.okinawa.jp
-ogimi.okinawa.jp
-okinawa.okinawa.jp
-onna.okinawa.jp
-shimoji.okinawa.jp
-taketomi.okinawa.jp
-tarama.okinawa.jp
-tokashiki.okinawa.jp
-tomigusuku.okinawa.jp
-tonaki.okinawa.jp
-urasoe.okinawa.jp
-uruma.okinawa.jp
-yaese.okinawa.jp
-yomitan.okinawa.jp
-yonabaru.okinawa.jp
-yonaguni.okinawa.jp
-zamami.okinawa.jp
-abeno.osaka.jp
-chihayaakasaka.osaka.jp
-chuo.osaka.jp
-daito.osaka.jp
-fujiidera.osaka.jp
-habikino.osaka.jp
-hannan.osaka.jp
-higashiosaka.osaka.jp
-higashisumiyoshi.osaka.jp
-higashiyodogawa.osaka.jp
-hirakata.osaka.jp
-ibaraki.osaka.jp
-ikeda.osaka.jp
-izumi.osaka.jp
-izumiotsu.osaka.jp
-izumisano.osaka.jp
-kadoma.osaka.jp
-kaizuka.osaka.jp
-kanan.osaka.jp
-kashiwara.osaka.jp
-katano.osaka.jp
-kawachinagano.osaka.jp
-kishiwada.osaka.jp
-kita.osaka.jp
-kumatori.osaka.jp
-matsubara.osaka.jp
-minato.osaka.jp
-minoh.osaka.jp
-misaki.osaka.jp
-moriguchi.osaka.jp
-neyagawa.osaka.jp
-nishi.osaka.jp
-nose.osaka.jp
-osakasayama.osaka.jp
-sakai.osaka.jp
-sayama.osaka.jp
-sennan.osaka.jp
-settsu.osaka.jp
-shijonawate.osaka.jp
-shimamoto.osaka.jp
-suita.osaka.jp
-tadaoka.osaka.jp
-taishi.osaka.jp
-tajiri.osaka.jp
-takaishi.osaka.jp
-takatsuki.osaka.jp
-tondabayashi.osaka.jp
-toyonaka.osaka.jp
-toyono.osaka.jp
-yao.osaka.jp
-ariake.saga.jp
-arita.saga.jp
-fukudomi.saga.jp
-genkai.saga.jp
-hamatama.saga.jp
-hizen.saga.jp
-imari.saga.jp
-kamimine.saga.jp
-kanzaki.saga.jp
-karatsu.saga.jp
-kashima.saga.jp
-kitagata.saga.jp
-kitahata.saga.jp
-kiyama.saga.jp
-kouhoku.saga.jp
-kyuragi.saga.jp
-nishiarita.saga.jp
-ogi.saga.jp
-omachi.saga.jp
-ouchi.saga.jp
-saga.saga.jp
-shiroishi.saga.jp
-taku.saga.jp
-tara.saga.jp
-tosu.saga.jp
-yoshinogari.saga.jp
-arakawa.saitama.jp
-asaka.saitama.jp
-chichibu.saitama.jp
-fujimi.saitama.jp
-fujimino.saitama.jp
-fukaya.saitama.jp
-hanno.saitama.jp
-hanyu.saitama.jp
-hasuda.saitama.jp
-hatogaya.saitama.jp
-hatoyama.saitama.jp
-hidaka.saitama.jp
-higashichichibu.saitama.jp
-higashimatsuyama.saitama.jp
-honjo.saitama.jp
-ina.saitama.jp
-iruma.saitama.jp
-iwatsuki.saitama.jp
-kamiizumi.saitama.jp
-kamikawa.saitama.jp
-kamisato.saitama.jp
-kasukabe.saitama.jp
-kawagoe.saitama.jp
-kawaguchi.saitama.jp
-kawajima.saitama.jp
-kazo.saitama.jp
-kitamoto.saitama.jp
-koshigaya.saitama.jp
-kounosu.saitama.jp
-kuki.saitama.jp
-kumagaya.saitama.jp
-matsubushi.saitama.jp
-minano.saitama.jp
-misato.saitama.jp
-miyashiro.saitama.jp
-miyoshi.saitama.jp
-moroyama.saitama.jp
-nagatoro.saitama.jp
-namegawa.saitama.jp
-niiza.saitama.jp
-ogano.saitama.jp
-ogawa.saitama.jp
-ogose.saitama.jp
-okegawa.saitama.jp
-omiya.saitama.jp
-otaki.saitama.jp
-ranzan.saitama.jp
-ryokami.saitama.jp
-saitama.saitama.jp
-sakado.saitama.jp
-satte.saitama.jp
-sayama.saitama.jp
-shiki.saitama.jp
-shiraoka.saitama.jp
-soka.saitama.jp
-sugito.saitama.jp
-toda.saitama.jp
-tokigawa.saitama.jp
-tokorozawa.saitama.jp
-tsurugashima.saitama.jp
-urawa.saitama.jp
-warabi.saitama.jp
-yashio.saitama.jp
-yokoze.saitama.jp
-yono.saitama.jp
-yorii.saitama.jp
-yoshida.saitama.jp
-yoshikawa.saitama.jp
-yoshimi.saitama.jp
-aisho.shiga.jp
-gamo.shiga.jp
-higashiomi.shiga.jp
-hikone.shiga.jp
-koka.shiga.jp
-konan.shiga.jp
-kosei.shiga.jp
-koto.shiga.jp
-kusatsu.shiga.jp
-maibara.shiga.jp
-moriyama.shiga.jp
-nagahama.shiga.jp
-nishiazai.shiga.jp
-notogawa.shiga.jp
-omihachiman.shiga.jp
-otsu.shiga.jp
-ritto.shiga.jp
-ryuoh.shiga.jp
-takashima.shiga.jp
-takatsuki.shiga.jp
-torahime.shiga.jp
-toyosato.shiga.jp
-yasu.shiga.jp
-akagi.shimane.jp
-ama.shimane.jp
-gotsu.shimane.jp
-hamada.shimane.jp
-higashiizumo.shimane.jp
-hikawa.shimane.jp
-hikimi.shimane.jp
-izumo.shimane.jp
-kakinoki.shimane.jp
-masuda.shimane.jp
-matsue.shimane.jp
-misato.shimane.jp
-nishinoshima.shimane.jp
-ohda.shimane.jp
-okinoshima.shimane.jp
-okuizumo.shimane.jp
-shimane.shimane.jp
-tamayu.shimane.jp
-tsuwano.shimane.jp
-unnan.shimane.jp
-yakumo.shimane.jp
-yasugi.shimane.jp
-yatsuka.shimane.jp
-arai.shizuoka.jp
-atami.shizuoka.jp
-fuji.shizuoka.jp
-fujieda.shizuoka.jp
-fujikawa.shizuoka.jp
-fujinomiya.shizuoka.jp
-fukuroi.shizuoka.jp
-gotemba.shizuoka.jp
-haibara.shizuoka.jp
-hamamatsu.shizuoka.jp
-higashiizu.shizuoka.jp
-ito.shizuoka.jp
-iwata.shizuoka.jp
-izu.shizuoka.jp
-izunokuni.shizuoka.jp
-kakegawa.shizuoka.jp
-kannami.shizuoka.jp
-kawanehon.shizuoka.jp
-kawazu.shizuoka.jp
-kikugawa.shizuoka.jp
-kosai.shizuoka.jp
-makinohara.shizuoka.jp
-matsuzaki.shizuoka.jp
-minamiizu.shizuoka.jp
-mishima.shizuoka.jp
-morimachi.shizuoka.jp
-nishiizu.shizuoka.jp
-numazu.shizuoka.jp
-omaezaki.shizuoka.jp
-shimada.shizuoka.jp
-shimizu.shizuoka.jp
-shimoda.shizuoka.jp
-shizuoka.shizuoka.jp
-susono.shizuoka.jp
-yaizu.shizuoka.jp
-yoshida.shizuoka.jp
-ashikaga.tochigi.jp
-bato.tochigi.jp
-haga.tochigi.jp
-ichikai.tochigi.jp
-iwafune.tochigi.jp
-kaminokawa.tochigi.jp
-kanuma.tochigi.jp
-karasuyama.tochigi.jp
-kuroiso.tochigi.jp
-mashiko.tochigi.jp
-mibu.tochigi.jp
-moka.tochigi.jp
-motegi.tochigi.jp
-nasu.tochigi.jp
-nasushiobara.tochigi.jp
-nikko.tochigi.jp
-nishikata.tochigi.jp
-nogi.tochigi.jp
-ohira.tochigi.jp
-ohtawara.tochigi.jp
-oyama.tochigi.jp
-sakura.tochigi.jp
-sano.tochigi.jp
-shimotsuke.tochigi.jp
-shioya.tochigi.jp
-takanezawa.tochigi.jp
-tochigi.tochigi.jp
-tsuga.tochigi.jp
-ujiie.tochigi.jp
-utsunomiya.tochigi.jp
-yaita.tochigi.jp
-aizumi.tokushima.jp
-anan.tokushima.jp
-ichiba.tokushima.jp
-itano.tokushima.jp
-kainan.tokushima.jp
-komatsushima.tokushima.jp
-matsushige.tokushima.jp
-mima.tokushima.jp
-minami.tokushima.jp
-miyoshi.tokushima.jp
-mugi.tokushima.jp
-nakagawa.tokushima.jp
-naruto.tokushima.jp
-sanagochi.tokushima.jp
-shishikui.tokushima.jp
-tokushima.tokushima.jp
-wajiki.tokushima.jp
-adachi.tokyo.jp
-akiruno.tokyo.jp
-akishima.tokyo.jp
-aogashima.tokyo.jp
-arakawa.tokyo.jp
-bunkyo.tokyo.jp
-chiyoda.tokyo.jp
-chofu.tokyo.jp
-chuo.tokyo.jp
-edogawa.tokyo.jp
-fuchu.tokyo.jp
-fussa.tokyo.jp
-hachijo.tokyo.jp
-hachioji.tokyo.jp
-hamura.tokyo.jp
-higashikurume.tokyo.jp
-higashimurayama.tokyo.jp
-higashiyamato.tokyo.jp
-hino.tokyo.jp
-hinode.tokyo.jp
-hinohara.tokyo.jp
-inagi.tokyo.jp
-itabashi.tokyo.jp
-katsushika.tokyo.jp
-kita.tokyo.jp
-kiyose.tokyo.jp
-kodaira.tokyo.jp
-koganei.tokyo.jp
-kokubunji.tokyo.jp
-komae.tokyo.jp
-koto.tokyo.jp
-kouzushima.tokyo.jp
-kunitachi.tokyo.jp
-machida.tokyo.jp
-meguro.tokyo.jp
-minato.tokyo.jp
-mitaka.tokyo.jp
-mizuho.tokyo.jp
-musashimurayama.tokyo.jp
-musashino.tokyo.jp
-nakano.tokyo.jp
-nerima.tokyo.jp
-ogasawara.tokyo.jp
-okutama.tokyo.jp
-ome.tokyo.jp
-oshima.tokyo.jp
-ota.tokyo.jp
-setagaya.tokyo.jp
-shibuya.tokyo.jp
-shinagawa.tokyo.jp
-shinjuku.tokyo.jp
-suginami.tokyo.jp
-sumida.tokyo.jp
-tachikawa.tokyo.jp
-taito.tokyo.jp
-tama.tokyo.jp
-toshima.tokyo.jp
-chizu.tottori.jp
-hino.tottori.jp
-kawahara.tottori.jp
-koge.tottori.jp
-kotoura.tottori.jp
-misasa.tottori.jp
-nanbu.tottori.jp
-nichinan.tottori.jp
-sakaiminato.tottori.jp
-tottori.tottori.jp
-wakasa.tottori.jp
-yazu.tottori.jp
-yonago.tottori.jp
-asahi.toyama.jp
-fuchu.toyama.jp
-fukumitsu.toyama.jp
-funahashi.toyama.jp
-himi.toyama.jp
-imizu.toyama.jp
-inami.toyama.jp
-johana.toyama.jp
-kamiichi.toyama.jp
-kurobe.toyama.jp
-nakaniikawa.toyama.jp
-namerikawa.toyama.jp
-nanto.toyama.jp
-nyuzen.toyama.jp
-oyabe.toyama.jp
-taira.toyama.jp
-takaoka.toyama.jp
-tateyama.toyama.jp
-toga.toyama.jp
-tonami.toyama.jp
-toyama.toyama.jp
-unazuki.toyama.jp
-uozu.toyama.jp
-yamada.toyama.jp
-arida.wakayama.jp
-aridagawa.wakayama.jp
-gobo.wakayama.jp
-hashimoto.wakayama.jp
-hidaka.wakayama.jp
-hirogawa.wakayama.jp
-inami.wakayama.jp
-iwade.wakayama.jp
-kainan.wakayama.jp
-kamitonda.wakayama.jp
-katsuragi.wakayama.jp
-kimino.wakayama.jp
-kinokawa.wakayama.jp
-kitayama.wakayama.jp
-koya.wakayama.jp
-koza.wakayama.jp
-kozagawa.wakayama.jp
-kudoyama.wakayama.jp
-kushimoto.wakayama.jp
-mihama.wakayama.jp
-misato.wakayama.jp
-nachikatsuura.wakayama.jp
-shingu.wakayama.jp
-shirahama.wakayama.jp
-taiji.wakayama.jp
-tanabe.wakayama.jp
-wakayama.wakayama.jp
-yuasa.wakayama.jp
-yura.wakayama.jp
-asahi.yamagata.jp
-funagata.yamagata.jp
-higashine.yamagata.jp
-iide.yamagata.jp
-kahoku.yamagata.jp
-kaminoyama.yamagata.jp
-kaneyama.yamagata.jp
-kawanishi.yamagata.jp
-mamurogawa.yamagata.jp
-mikawa.yamagata.jp
-murayama.yamagata.jp
-nagai.yamagata.jp
-nakayama.yamagata.jp
-nanyo.yamagata.jp
-nishikawa.yamagata.jp
-obanazawa.yamagata.jp
-oe.yamagata.jp
-oguni.yamagata.jp
-ohkura.yamagata.jp
-oishida.yamagata.jp
-sagae.yamagata.jp
-sakata.yamagata.jp
-sakegawa.yamagata.jp
-shinjo.yamagata.jp
-shirataka.yamagata.jp
-shonai.yamagata.jp
-takahata.yamagata.jp
-tendo.yamagata.jp
-tozawa.yamagata.jp
-tsuruoka.yamagata.jp
-yamagata.yamagata.jp
-yamanobe.yamagata.jp
-yonezawa.yamagata.jp
-yuza.yamagata.jp
-abu.yamaguchi.jp
-hagi.yamaguchi.jp
-hikari.yamaguchi.jp
-hofu.yamaguchi.jp
-iwakuni.yamaguchi.jp
-kudamatsu.yamaguchi.jp
-mitou.yamaguchi.jp
-nagato.yamaguchi.jp
-oshima.yamaguchi.jp
-shimonoseki.yamaguchi.jp
-shunan.yamaguchi.jp
-tabuse.yamaguchi.jp
-tokuyama.yamaguchi.jp
-toyota.yamaguchi.jp
-ube.yamaguchi.jp
-yuu.yamaguchi.jp
-chuo.yamanashi.jp
-doshi.yamanashi.jp
-fuefuki.yamanashi.jp
-fujikawa.yamanashi.jp
-fujikawaguchiko.yamanashi.jp
-fujiyoshida.yamanashi.jp
-hayakawa.yamanashi.jp
-hokuto.yamanashi.jp
-ichikawamisato.yamanashi.jp
-kai.yamanashi.jp
-kofu.yamanashi.jp
-koshu.yamanashi.jp
-kosuge.yamanashi.jp
-minami-alps.yamanashi.jp
-minobu.yamanashi.jp
-nakamichi.yamanashi.jp
-nanbu.yamanashi.jp
-narusawa.yamanashi.jp
-nirasaki.yamanashi.jp
-nishikatsura.yamanashi.jp
-oshino.yamanashi.jp
-otsuki.yamanashi.jp
-showa.yamanashi.jp
-tabayama.yamanashi.jp
-tsuru.yamanashi.jp
-uenohara.yamanashi.jp
-yamanakako.yamanashi.jp
-yamanashi.yamanashi.jp
-
-// ke : http://www.kenic.or.ke/index.php?option=com_content&task=view&id=117&Itemid=145
-*.ke
-
-// kg : http://www.domain.kg/dmn_n.html
-kg
-org.kg
-net.kg
-com.kg
-edu.kg
-gov.kg
-mil.kg
-
-// kh : http://www.mptc.gov.kh/dns_registration.htm
-*.kh
-
-// ki : http://www.ki/dns/index.html
-ki
-edu.ki
-biz.ki
-net.ki
-org.ki
-gov.ki
-info.ki
-com.ki
-
-// km : https://en.wikipedia.org/wiki/.km
-// http://www.domaine.km/documents/charte.doc
-km
-org.km
-nom.km
-gov.km
-prd.km
-tm.km
-edu.km
-mil.km
-ass.km
-com.km
-// These are only mentioned as proposed suggestions at domaine.km, but
-// https://en.wikipedia.org/wiki/.km says they're available for registration:
-coop.km
-asso.km
-presse.km
-medecin.km
-notaires.km
-pharmaciens.km
-veterinaire.km
-gouv.km
-
-// kn : https://en.wikipedia.org/wiki/.kn
-// http://www.dot.kn/domainRules.html
-kn
-net.kn
-org.kn
-edu.kn
-gov.kn
-
-// kp : http://www.kcce.kp/en_index.php
-kp
-com.kp
-edu.kp
-gov.kp
-org.kp
-rep.kp
-tra.kp
-
-// kr : https://en.wikipedia.org/wiki/.kr
-// see also: http://domain.nida.or.kr/eng/registration.jsp
-kr
-ac.kr
-co.kr
-es.kr
-go.kr
-hs.kr
-kg.kr
-mil.kr
-ms.kr
-ne.kr
-or.kr
-pe.kr
-re.kr
-sc.kr
-// kr geographical names
-busan.kr
-chungbuk.kr
-chungnam.kr
-daegu.kr
-daejeon.kr
-gangwon.kr
-gwangju.kr
-gyeongbuk.kr
-gyeonggi.kr
-gyeongnam.kr
-incheon.kr
-jeju.kr
-jeonbuk.kr
-jeonnam.kr
-seoul.kr
-ulsan.kr
-
-// kw : https://en.wikipedia.org/wiki/.kw
-*.kw
-
-// ky : http://www.icta.ky/da_ky_reg_dom.php
-// Confirmed by registry <kysupport@perimeterusa.com> 2008-06-17
-ky
-edu.ky
-gov.ky
-com.ky
-org.ky
-net.ky
-
-// kz : https://en.wikipedia.org/wiki/.kz
-// see also: http://www.nic.kz/rules/index.jsp
-kz
-org.kz
-edu.kz
-net.kz
-gov.kz
-mil.kz
-com.kz
-
-// la : https://en.wikipedia.org/wiki/.la
-// Submitted by registry <gavin.brown@nic.la>
-la
-int.la
-net.la
-info.la
-edu.la
-gov.la
-per.la
-com.la
-org.la
-
-// lb : https://en.wikipedia.org/wiki/.lb
-// Submitted by registry <randy@psg.com>
-lb
-com.lb
-edu.lb
-gov.lb
-net.lb
-org.lb
-
-// lc : https://en.wikipedia.org/wiki/.lc
-// see also: http://www.nic.lc/rules.htm
-lc
-com.lc
-net.lc
-co.lc
-org.lc
-edu.lc
-gov.lc
-
-// li : https://en.wikipedia.org/wiki/.li
-li
-
-// lk : http://www.nic.lk/seclevpr.html
-lk
-gov.lk
-sch.lk
-net.lk
-int.lk
-com.lk
-org.lk
-edu.lk
-ngo.lk
-soc.lk
-web.lk
-ltd.lk
-assn.lk
-grp.lk
-hotel.lk
-ac.lk
-
-// lr : http://psg.com/dns/lr/lr.txt
-// Submitted by registry <randy@psg.com>
-lr
-com.lr
-edu.lr
-gov.lr
-org.lr
-net.lr
-
-// ls : https://en.wikipedia.org/wiki/.ls
-ls
-co.ls
-org.ls
-
-// lt : https://en.wikipedia.org/wiki/.lt
-lt
-// gov.lt : http://www.gov.lt/index_en.php
-gov.lt
-
-// lu : http://www.dns.lu/en/
-lu
-
-// lv : http://www.nic.lv/DNS/En/generic.php
-lv
-com.lv
-edu.lv
-gov.lv
-org.lv
-mil.lv
-id.lv
-net.lv
-asn.lv
-conf.lv
-
-// ly : http://www.nic.ly/regulations.php
-ly
-com.ly
-net.ly
-gov.ly
-plc.ly
-edu.ly
-sch.ly
-med.ly
-org.ly
-id.ly
-
-// ma : https://en.wikipedia.org/wiki/.ma
-// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf
-ma
-co.ma
-net.ma
-gov.ma
-org.ma
-ac.ma
-press.ma
-
-// mc : http://www.nic.mc/
-mc
-tm.mc
-asso.mc
-
-// md : https://en.wikipedia.org/wiki/.md
-md
-
-// me : https://en.wikipedia.org/wiki/.me
-me
-co.me
-net.me
-org.me
-edu.me
-ac.me
-gov.me
-its.me
-priv.me
-
-// mg : http://nic.mg/nicmg/?page_id=39
-mg
-org.mg
-nom.mg
-gov.mg
-prd.mg
-tm.mg
-edu.mg
-mil.mg
-com.mg
-co.mg
-
-// mh : https://en.wikipedia.org/wiki/.mh
-mh
-
-// mil : https://en.wikipedia.org/wiki/.mil
-mil
-
-// mk : https://en.wikipedia.org/wiki/.mk
-// see also: http://dns.marnet.net.mk/postapka.php
-mk
-com.mk
-org.mk
-net.mk
-edu.mk
-gov.mk
-inf.mk
-name.mk
-
-// ml : http://www.gobin.info/domainname/ml-template.doc
-// see also: https://en.wikipedia.org/wiki/.ml
-ml
-com.ml
-edu.ml
-gouv.ml
-gov.ml
-net.ml
-org.ml
-presse.ml
-
-// mm : https://en.wikipedia.org/wiki/.mm
-*.mm
-
-// mn : https://en.wikipedia.org/wiki/.mn
-mn
-gov.mn
-edu.mn
-org.mn
-
-// mo : http://www.monic.net.mo/
-mo
-com.mo
-net.mo
-org.mo
-edu.mo
-gov.mo
-
-// mobi : https://en.wikipedia.org/wiki/.mobi
-mobi
-
-// mp : http://www.dot.mp/
-// Confirmed by registry <dcamacho@saipan.com> 2008-06-17
-mp
-
-// mq : https://en.wikipedia.org/wiki/.mq
-mq
-
-// mr : https://en.wikipedia.org/wiki/.mr
-mr
-gov.mr
-
-// ms : http://www.nic.ms/pdf/MS_Domain_Name_Rules.pdf
-ms
-com.ms
-edu.ms
-gov.ms
-net.ms
-org.ms
-
-// mt : https://www.nic.org.mt/go/policy
-// Submitted by registry <help@nic.org.mt>
-mt
-com.mt
-edu.mt
-net.mt
-org.mt
-
-// mu : https://en.wikipedia.org/wiki/.mu
-mu
-com.mu
-net.mu
-org.mu
-gov.mu
-ac.mu
-co.mu
-or.mu
-
-// museum : http://about.museum/naming/
-// http://index.museum/
-museum
-academy.museum
-agriculture.museum
-air.museum
-airguard.museum
-alabama.museum
-alaska.museum
-amber.museum
-ambulance.museum
-american.museum
-americana.museum
-americanantiques.museum
-americanart.museum
-amsterdam.museum
-and.museum
-annefrank.museum
-anthro.museum
-anthropology.museum
-antiques.museum
-aquarium.museum
-arboretum.museum
-archaeological.museum
-archaeology.museum
-architecture.museum
-art.museum
-artanddesign.museum
-artcenter.museum
-artdeco.museum
-arteducation.museum
-artgallery.museum
-arts.museum
-artsandcrafts.museum
-asmatart.museum
-assassination.museum
-assisi.museum
-association.museum
-astronomy.museum
-atlanta.museum
-austin.museum
-australia.museum
-automotive.museum
-aviation.museum
-axis.museum
-badajoz.museum
-baghdad.museum
-bahn.museum
-bale.museum
-baltimore.museum
-barcelona.museum
-baseball.museum
-basel.museum
-baths.museum
-bauern.museum
-beauxarts.museum
-beeldengeluid.museum
-bellevue.museum
-bergbau.museum
-berkeley.museum
-berlin.museum
-bern.museum
-bible.museum
-bilbao.museum
-bill.museum
-birdart.museum
-birthplace.museum
-bonn.museum
-boston.museum
-botanical.museum
-botanicalgarden.museum
-botanicgarden.museum
-botany.museum
-brandywinevalley.museum
-brasil.museum
-bristol.museum
-british.museum
-britishcolumbia.museum
-broadcast.museum
-brunel.museum
-brussel.museum
-brussels.museum
-bruxelles.museum
-building.museum
-burghof.museum
-bus.museum
-bushey.museum
-cadaques.museum
-california.museum
-cambridge.museum
-can.museum
-canada.museum
-capebreton.museum
-carrier.museum
-cartoonart.museum
-casadelamoneda.museum
-castle.museum
-castres.museum
-celtic.museum
-center.museum
-chattanooga.museum
-cheltenham.museum
-chesapeakebay.museum
-chicago.museum
-children.museum
-childrens.museum
-childrensgarden.museum
-chiropractic.museum
-chocolate.museum
-christiansburg.museum
-cincinnati.museum
-cinema.museum
-circus.museum
-civilisation.museum
-civilization.museum
-civilwar.museum
-clinton.museum
-clock.museum
-coal.museum
-coastaldefence.museum
-cody.museum
-coldwar.museum
-collection.museum
-colonialwilliamsburg.museum
-coloradoplateau.museum
-columbia.museum
-columbus.museum
-communication.museum
-communications.museum
-community.museum
-computer.museum
-computerhistory.museum
-xn--comunicaes-v6a2o.museum
-comunicações.museum
-contemporary.museum
-contemporaryart.museum
-convent.museum
-copenhagen.museum
-corporation.museum
-xn--correios-e-telecomunicaes-ghc29a.museum
-correios-e-telecomunicações.museum
-corvette.museum
-costume.museum
-countryestate.museum
-county.museum
-crafts.museum
-cranbrook.museum
-creation.museum
-cultural.museum
-culturalcenter.museum
-culture.museum
-cyber.museum
-cymru.museum
-dali.museum
-dallas.museum
-database.museum
-ddr.museum
-decorativearts.museum
-delaware.museum
-delmenhorst.museum
-denmark.museum
-depot.museum
-design.museum
-detroit.museum
-dinosaur.museum
-discovery.museum
-dolls.museum
-donostia.museum
-durham.museum
-eastafrica.museum
-eastcoast.museum
-education.museum
-educational.museum
-egyptian.museum
-eisenbahn.museum
-elburg.museum
-elvendrell.museum
-embroidery.museum
-encyclopedic.museum
-england.museum
-entomology.museum
-environment.museum
-environmentalconservation.museum
-epilepsy.museum
-essex.museum
-estate.museum
-ethnology.museum
-exeter.museum
-exhibition.museum
-family.museum
-farm.museum
-farmequipment.museum
-farmers.museum
-farmstead.museum
-field.museum
-figueres.museum
-filatelia.museum
-film.museum
-fineart.museum
-finearts.museum
-finland.museum
-flanders.museum
-florida.museum
-force.museum
-fortmissoula.museum
-fortworth.museum
-foundation.museum
-francaise.museum
-frankfurt.museum
-franziskaner.museum
-freemasonry.museum
-freiburg.museum
-fribourg.museum
-frog.museum
-fundacio.museum
-furniture.museum
-gallery.museum
-garden.museum
-gateway.museum
-geelvinck.museum
-gemological.museum
-geology.museum
-georgia.museum
-giessen.museum
-glas.museum
-glass.museum
-gorge.museum
-grandrapids.museum
-graz.museum
-guernsey.museum
-halloffame.museum
-hamburg.museum
-handson.museum
-harvestcelebration.museum
-hawaii.museum
-health.museum
-heimatunduhren.museum
-hellas.museum
-helsinki.museum
-hembygdsforbund.museum
-heritage.museum
-histoire.museum
-historical.museum
-historicalsociety.museum
-historichouses.museum
-historisch.museum
-historisches.museum
-history.museum
-historyofscience.museum
-horology.museum
-house.museum
-humanities.museum
-illustration.museum
-imageandsound.museum
-indian.museum
-indiana.museum
-indianapolis.museum
-indianmarket.museum
-intelligence.museum
-interactive.museum
-iraq.museum
-iron.museum
-isleofman.museum
-jamison.museum
-jefferson.museum
-jerusalem.museum
-jewelry.museum
-jewish.museum
-jewishart.museum
-jfk.museum
-journalism.museum
-judaica.museum
-judygarland.museum
-juedisches.museum
-juif.museum
-karate.museum
-karikatur.museum
-kids.museum
-koebenhavn.museum
-koeln.museum
-kunst.museum
-kunstsammlung.museum
-kunstunddesign.museum
-labor.museum
-labour.museum
-lajolla.museum
-lancashire.museum
-landes.museum
-lans.museum
-xn--lns-qla.museum
-läns.museum
-larsson.museum
-lewismiller.museum
-lincoln.museum
-linz.museum
-living.museum
-livinghistory.museum
-localhistory.museum
-london.museum
-losangeles.museum
-louvre.museum
-loyalist.museum
-lucerne.museum
-luxembourg.museum
-luzern.museum
-mad.museum
-madrid.museum
-mallorca.museum
-manchester.museum
-mansion.museum
-mansions.museum
-manx.museum
-marburg.museum
-maritime.museum
-maritimo.museum
-maryland.museum
-marylhurst.museum
-media.museum
-medical.museum
-medizinhistorisches.museum
-meeres.museum
-memorial.museum
-mesaverde.museum
-michigan.museum
-midatlantic.museum
-military.museum
-mill.museum
-miners.museum
-mining.museum
-minnesota.museum
-missile.museum
-missoula.museum
-modern.museum
-moma.museum
-money.museum
-monmouth.museum
-monticello.museum
-montreal.museum
-moscow.museum
-motorcycle.museum
-muenchen.museum
-muenster.museum
-mulhouse.museum
-muncie.museum
-museet.museum
-museumcenter.museum
-museumvereniging.museum
-music.museum
-national.museum
-nationalfirearms.museum
-nationalheritage.museum
-nativeamerican.museum
-naturalhistory.museum
-naturalhistorymuseum.museum
-naturalsciences.museum
-nature.museum
-naturhistorisches.museum
-natuurwetenschappen.museum
-naumburg.museum
-naval.museum
-nebraska.museum
-neues.museum
-newhampshire.museum
-newjersey.museum
-newmexico.museum
-newport.museum
-newspaper.museum
-newyork.museum
-niepce.museum
-norfolk.museum
-north.museum
-nrw.museum
-nuernberg.museum
-nuremberg.museum
-nyc.museum
-nyny.museum
-oceanographic.museum
-oceanographique.museum
-omaha.museum
-online.museum
-ontario.museum
-openair.museum
-oregon.museum
-oregontrail.museum
-otago.museum
-oxford.museum
-pacific.museum
-paderborn.museum
-palace.museum
-paleo.museum
-palmsprings.museum
-panama.museum
-paris.museum
-pasadena.museum
-pharmacy.museum
-philadelphia.museum
-philadelphiaarea.museum
-philately.museum
-phoenix.museum
-photography.museum
-pilots.museum
-pittsburgh.museum
-planetarium.museum
-plantation.museum
-plants.museum
-plaza.museum
-portal.museum
-portland.museum
-portlligat.museum
-posts-and-telecommunications.museum
-preservation.museum
-presidio.museum
-press.museum
-project.museum
-public.museum
-pubol.museum
-quebec.museum
-railroad.museum
-railway.museum
-research.museum
-resistance.museum
-riodejaneiro.museum
-rochester.museum
-rockart.museum
-roma.museum
-russia.museum
-saintlouis.museum
-salem.museum
-salvadordali.museum
-salzburg.museum
-sandiego.museum
-sanfrancisco.museum
-santabarbara.museum
-santacruz.museum
-santafe.museum
-saskatchewan.museum
-satx.museum
-savannahga.museum
-schlesisches.museum
-schoenbrunn.museum
-schokoladen.museum
-school.museum
-schweiz.museum
-science.museum
-scienceandhistory.museum
-scienceandindustry.museum
-sciencecenter.museum
-sciencecenters.museum
-science-fiction.museum
-sciencehistory.museum
-sciences.museum
-sciencesnaturelles.museum
-scotland.museum
-seaport.museum
-settlement.museum
-settlers.museum
-shell.museum
-sherbrooke.museum
-sibenik.museum
-silk.museum
-ski.museum
-skole.museum
-society.museum
-sologne.museum
-soundandvision.museum
-southcarolina.museum
-southwest.museum
-space.museum
-spy.museum
-square.museum
-stadt.museum
-stalbans.museum
-starnberg.museum
-state.museum
-stateofdelaware.museum
-station.museum
-steam.museum
-steiermark.museum
-stjohn.museum
-stockholm.museum
-stpetersburg.museum
-stuttgart.museum
-suisse.museum
-surgeonshall.museum
-surrey.museum
-svizzera.museum
-sweden.museum
-sydney.museum
-tank.museum
-tcm.museum
-technology.museum
-telekommunikation.museum
-television.museum
-texas.museum
-textile.museum
-theater.museum
-time.museum
-timekeeping.museum
-topology.museum
-torino.museum
-touch.museum
-town.museum
-transport.museum
-tree.museum
-trolley.museum
-trust.museum
-trustee.museum
-uhren.museum
-ulm.museum
-undersea.museum
-university.museum
-usa.museum
-usantiques.museum
-usarts.museum
-uscountryestate.museum
-usculture.museum
-usdecorativearts.museum
-usgarden.museum
-ushistory.museum
-ushuaia.museum
-uslivinghistory.museum
-utah.museum
-uvic.museum
-valley.museum
-vantaa.museum
-versailles.museum
-viking.museum
-village.museum
-virginia.museum
-virtual.museum
-virtuel.museum
-vlaanderen.museum
-volkenkunde.museum
-wales.museum
-wallonie.museum
-war.museum
-washingtondc.museum
-watchandclock.museum
-watch-and-clock.museum
-western.museum
-westfalen.museum
-whaling.museum
-wildlife.museum
-williamsburg.museum
-windmill.museum
-workshop.museum
-york.museum
-yorkshire.museum
-yosemite.museum
-youth.museum
-zoological.museum
-zoology.museum
-xn--9dbhblg6di.museum
-ירושלים.museum
-xn--h1aegh.museum
-иком.museum
-
-// mv : https://en.wikipedia.org/wiki/.mv
-// "mv" included because, contra Wikipedia, google.mv exists.
-mv
-aero.mv
-biz.mv
-com.mv
-coop.mv
-edu.mv
-gov.mv
-info.mv
-int.mv
-mil.mv
-museum.mv
-name.mv
-net.mv
-org.mv
-pro.mv
-
-// mw : http://www.registrar.mw/
-mw
-ac.mw
-biz.mw
-co.mw
-com.mw
-coop.mw
-edu.mw
-gov.mw
-int.mw
-museum.mw
-net.mw
-org.mw
-
-// mx : http://www.nic.mx/
-// Submitted by registry <farias@nic.mx>
-mx
-com.mx
-org.mx
-gob.mx
-edu.mx
-net.mx
-
-// my : http://www.mynic.net.my/
-my
-com.my
-net.my
-org.my
-gov.my
-edu.my
-mil.my
-name.my
-
-// mz : http://www.uem.mz/
-// Submitted by registry <antonio@uem.mz>
-mz
-ac.mz
-adv.mz
-co.mz
-edu.mz
-gov.mz
-mil.mz
-net.mz
-org.mz
-
-// na : http://www.na-nic.com.na/
-// http://www.info.na/domain/
-na
-info.na
-pro.na
-name.na
-school.na
-or.na
-dr.na
-us.na
-mx.na
-ca.na
-in.na
-cc.na
-tv.na
-ws.na
-mobi.na
-co.na
-com.na
-org.na
-
-// name : has 2nd-level tlds, but there's no list of them
-name
-
-// nc : http://www.cctld.nc/
-nc
-asso.nc
-
-// ne : https://en.wikipedia.org/wiki/.ne
-ne
-
-// net : https://en.wikipedia.org/wiki/.net
-net
-
-// nf : https://en.wikipedia.org/wiki/.nf
-nf
-com.nf
-net.nf
-per.nf
-rec.nf
-web.nf
-arts.nf
-firm.nf
-info.nf
-other.nf
-store.nf
-
-// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds
-ng
-com.ng
-edu.ng
-gov.ng
-i.ng
-mil.ng
-mobi.ng
-name.ng
-net.ng
-org.ng
-sch.ng
-
-// ni : http://www.nic.ni/
-ni
-ac.ni
-biz.ni
-co.ni
-com.ni
-edu.ni
-gob.ni
-in.ni
-info.ni
-int.ni
-mil.ni
-net.ni
-nom.ni
-org.ni
-web.ni
-
-// nl : https://en.wikipedia.org/wiki/.nl
-//      https://www.sidn.nl/
-//      ccTLD for the Netherlands
-nl
-
-// BV.nl will be a registry for dutch BV's (besloten vennootschap)
-bv.nl
-
-// no : http://www.norid.no/regelverk/index.en.html
-// The Norwegian registry has declined to notify us of updates. The web pages
-// referenced below are the official source of the data. There is also an
-// announce mailing list:
-// https://postlister.uninett.no/sympa/info/norid-diskusjon
-no
-// Norid generic domains : http://www.norid.no/regelverk/vedlegg-c.en.html
-fhs.no
-vgs.no
-fylkesbibl.no
-folkebibl.no
-museum.no
-idrett.no
-priv.no
-// Non-Norid generic domains : http://www.norid.no/regelverk/vedlegg-d.en.html
-mil.no
-stat.no
-dep.no
-kommune.no
-herad.no
-// no geographical names : http://www.norid.no/regelverk/vedlegg-b.en.html
-// counties
-aa.no
-ah.no
-bu.no
-fm.no
-hl.no
-hm.no
-jan-mayen.no
-mr.no
-nl.no
-nt.no
-of.no
-ol.no
-oslo.no
-rl.no
-sf.no
-st.no
-svalbard.no
-tm.no
-tr.no
-va.no
-vf.no
-// primary and lower secondary schools per county
-gs.aa.no
-gs.ah.no
-gs.bu.no
-gs.fm.no
-gs.hl.no
-gs.hm.no
-gs.jan-mayen.no
-gs.mr.no
-gs.nl.no
-gs.nt.no
-gs.of.no
-gs.ol.no
-gs.oslo.no
-gs.rl.no
-gs.sf.no
-gs.st.no
-gs.svalbard.no
-gs.tm.no
-gs.tr.no
-gs.va.no
-gs.vf.no
-// cities
-akrehamn.no
-xn--krehamn-dxa.no
-åkrehamn.no
-algard.no
-xn--lgrd-poac.no
-ålgård.no
-arna.no
-brumunddal.no
-bryne.no
-bronnoysund.no
-xn--brnnysund-m8ac.no
-brønnøysund.no
-drobak.no
-xn--drbak-wua.no
-drøbak.no
-egersund.no
-fetsund.no
-floro.no
-xn--flor-jra.no
-florø.no
-fredrikstad.no
-hokksund.no
-honefoss.no
-xn--hnefoss-q1a.no
-hønefoss.no
-jessheim.no
-jorpeland.no
-xn--jrpeland-54a.no
-jørpeland.no
-kirkenes.no
-kopervik.no
-krokstadelva.no
-langevag.no
-xn--langevg-jxa.no
-langevåg.no
-leirvik.no
-mjondalen.no
-xn--mjndalen-64a.no
-mjøndalen.no
-mo-i-rana.no
-mosjoen.no
-xn--mosjen-eya.no
-mosjøen.no
-nesoddtangen.no
-orkanger.no
-osoyro.no
-xn--osyro-wua.no
-osøyro.no
-raholt.no
-xn--rholt-mra.no
-råholt.no
-sandnessjoen.no
-xn--sandnessjen-ogb.no
-sandnessjøen.no
-skedsmokorset.no
-slattum.no
-spjelkavik.no
-stathelle.no
-stavern.no
-stjordalshalsen.no
-xn--stjrdalshalsen-sqb.no
-stjørdalshalsen.no
-tananger.no
-tranby.no
-vossevangen.no
-// communities
-afjord.no
-xn--fjord-lra.no
-åfjord.no
-agdenes.no
-al.no
-xn--l-1fa.no
-ål.no
-alesund.no
-xn--lesund-hua.no
-ålesund.no
-alstahaug.no
-alta.no
-xn--lt-liac.no
-áltá.no
-alaheadju.no
-xn--laheadju-7ya.no
-álaheadju.no
-alvdal.no
-amli.no
-xn--mli-tla.no
-åmli.no
-amot.no
-xn--mot-tla.no
-åmot.no
-andebu.no
-andoy.no
-xn--andy-ira.no
-andøy.no
-andasuolo.no
-ardal.no
-xn--rdal-poa.no
-årdal.no
-aremark.no
-arendal.no
-xn--s-1fa.no
-ås.no
-aseral.no
-xn--seral-lra.no
-åseral.no
-asker.no
-askim.no
-askvoll.no
-askoy.no
-xn--asky-ira.no
-askøy.no
-asnes.no
-xn--snes-poa.no
-åsnes.no
-audnedaln.no
-aukra.no
-aure.no
-aurland.no
-aurskog-holand.no
-xn--aurskog-hland-jnb.no
-aurskog-høland.no
-austevoll.no
-austrheim.no
-averoy.no
-xn--avery-yua.no
-averøy.no
-balestrand.no
-ballangen.no
-balat.no
-xn--blt-elab.no
-bálát.no
-balsfjord.no
-bahccavuotna.no
-xn--bhccavuotna-k7a.no
-báhccavuotna.no
-bamble.no
-bardu.no
-beardu.no
-beiarn.no
-bajddar.no
-xn--bjddar-pta.no
-bájddar.no
-baidar.no
-xn--bidr-5nac.no
-báidár.no
-berg.no
-bergen.no
-berlevag.no
-xn--berlevg-jxa.no
-berlevåg.no
-bearalvahki.no
-xn--bearalvhki-y4a.no
-bearalváhki.no
-bindal.no
-birkenes.no
-bjarkoy.no
-xn--bjarky-fya.no
-bjarkøy.no
-bjerkreim.no
-bjugn.no
-bodo.no
-xn--bod-2na.no
-bodø.no
-badaddja.no
-xn--bdddj-mrabd.no
-bådåddjå.no
-budejju.no
-bokn.no
-bremanger.no
-bronnoy.no
-xn--brnny-wuac.no
-brønnøy.no
-bygland.no
-bykle.no
-barum.no
-xn--brum-voa.no
-bærum.no
-bo.telemark.no
-xn--b-5ga.telemark.no
-bø.telemark.no
-bo.nordland.no
-xn--b-5ga.nordland.no
-bø.nordland.no
-bievat.no
-xn--bievt-0qa.no
-bievát.no
-bomlo.no
-xn--bmlo-gra.no
-bømlo.no
-batsfjord.no
-xn--btsfjord-9za.no
-båtsfjord.no
-bahcavuotna.no
-xn--bhcavuotna-s4a.no
-báhcavuotna.no
-dovre.no
-drammen.no
-drangedal.no
-dyroy.no
-xn--dyry-ira.no
-dyrøy.no
-donna.no
-xn--dnna-gra.no
-dønna.no
-eid.no
-eidfjord.no
-eidsberg.no
-eidskog.no
-eidsvoll.no
-eigersund.no
-elverum.no
-enebakk.no
-engerdal.no
-etne.no
-etnedal.no
-evenes.no
-evenassi.no
-xn--eveni-0qa01ga.no
-evenášši.no
-evje-og-hornnes.no
-farsund.no
-fauske.no
-fuossko.no
-fuoisku.no
-fedje.no
-fet.no
-finnoy.no
-xn--finny-yua.no
-finnøy.no
-fitjar.no
-fjaler.no
-fjell.no
-flakstad.no
-flatanger.no
-flekkefjord.no
-flesberg.no
-flora.no
-fla.no
-xn--fl-zia.no
-flå.no
-folldal.no
-forsand.no
-fosnes.no
-frei.no
-frogn.no
-froland.no
-frosta.no
-frana.no
-xn--frna-woa.no
-fræna.no
-froya.no
-xn--frya-hra.no
-frøya.no
-fusa.no
-fyresdal.no
-forde.no
-xn--frde-gra.no
-førde.no
-gamvik.no
-gangaviika.no
-xn--ggaviika-8ya47h.no
-gáŋgaviika.no
-gaular.no
-gausdal.no
-gildeskal.no
-xn--gildeskl-g0a.no
-gildeskål.no
-giske.no
-gjemnes.no
-gjerdrum.no
-gjerstad.no
-gjesdal.no
-gjovik.no
-xn--gjvik-wua.no
-gjøvik.no
-gloppen.no
-gol.no
-gran.no
-grane.no
-granvin.no
-gratangen.no
-grimstad.no
-grong.no
-kraanghke.no
-xn--kranghke-b0a.no
-kråanghke.no
-grue.no
-gulen.no
-hadsel.no
-halden.no
-halsa.no
-hamar.no
-hamaroy.no
-habmer.no
-xn--hbmer-xqa.no
-hábmer.no
-hapmir.no
-xn--hpmir-xqa.no
-hápmir.no
-hammerfest.no
-hammarfeasta.no
-xn--hmmrfeasta-s4ac.no
-hámmárfeasta.no
-haram.no
-hareid.no
-harstad.no
-hasvik.no
-aknoluokta.no
-xn--koluokta-7ya57h.no
-ákŋoluokta.no
-hattfjelldal.no
-aarborte.no
-haugesund.no
-hemne.no
-hemnes.no
-hemsedal.no
-heroy.more-og-romsdal.no
-xn--hery-ira.xn--mre-og-romsdal-qqb.no
-herøy.møre-og-romsdal.no
-heroy.nordland.no
-xn--hery-ira.nordland.no
-herøy.nordland.no
-hitra.no
-hjartdal.no
-hjelmeland.no
-hobol.no
-xn--hobl-ira.no
-hobøl.no
-hof.no
-hol.no
-hole.no
-holmestrand.no
-holtalen.no
-xn--holtlen-hxa.no
-holtålen.no
-hornindal.no
-horten.no
-hurdal.no
-hurum.no
-hvaler.no
-hyllestad.no
-hagebostad.no
-xn--hgebostad-g3a.no
-hægebostad.no
-hoyanger.no
-xn--hyanger-q1a.no
-høyanger.no
-hoylandet.no
-xn--hylandet-54a.no
-høylandet.no
-ha.no
-xn--h-2fa.no
-hå.no
-ibestad.no
-inderoy.no
-xn--indery-fya.no
-inderøy.no
-iveland.no
-jevnaker.no
-jondal.no
-jolster.no
-xn--jlster-bya.no
-jølster.no
-karasjok.no
-karasjohka.no
-xn--krjohka-hwab49j.no
-kárášjohka.no
-karlsoy.no
-galsa.no
-xn--gls-elac.no
-gálsá.no
-karmoy.no
-xn--karmy-yua.no
-karmøy.no
-kautokeino.no
-guovdageaidnu.no
-klepp.no
-klabu.no
-xn--klbu-woa.no
-klæbu.no
-kongsberg.no
-kongsvinger.no
-kragero.no
-xn--krager-gya.no
-kragerø.no
-kristiansand.no
-kristiansund.no
-krodsherad.no
-xn--krdsherad-m8a.no
-krødsherad.no
-kvalsund.no
-rahkkeravju.no
-xn--rhkkervju-01af.no
-ráhkkerávju.no
-kvam.no
-kvinesdal.no
-kvinnherad.no
-kviteseid.no
-kvitsoy.no
-xn--kvitsy-fya.no
-kvitsøy.no
-kvafjord.no
-xn--kvfjord-nxa.no
-kvæfjord.no
-giehtavuoatna.no
-kvanangen.no
-xn--kvnangen-k0a.no
-kvænangen.no
-navuotna.no
-xn--nvuotna-hwa.no
-návuotna.no
-kafjord.no
-xn--kfjord-iua.no
-kåfjord.no
-gaivuotna.no
-xn--givuotna-8ya.no
-gáivuotna.no
-larvik.no
-lavangen.no
-lavagis.no
-loabat.no
-xn--loabt-0qa.no
-loabát.no
-lebesby.no
-davvesiida.no
-leikanger.no
-leirfjord.no
-leka.no
-leksvik.no
-lenvik.no
-leangaviika.no
-xn--leagaviika-52b.no
-leaŋgaviika.no
-lesja.no
-levanger.no
-lier.no
-lierne.no
-lillehammer.no
-lillesand.no
-lindesnes.no
-lindas.no
-xn--linds-pra.no
-lindås.no
-lom.no
-loppa.no
-lahppi.no
-xn--lhppi-xqa.no
-láhppi.no
-lund.no
-lunner.no
-luroy.no
-xn--lury-ira.no
-lurøy.no
-luster.no
-lyngdal.no
-lyngen.no
-ivgu.no
-lardal.no
-lerdal.no
-xn--lrdal-sra.no
-lærdal.no
-lodingen.no
-xn--ldingen-q1a.no
-lødingen.no
-lorenskog.no
-xn--lrenskog-54a.no
-lørenskog.no
-loten.no
-xn--lten-gra.no
-løten.no
-malvik.no
-masoy.no
-xn--msy-ula0h.no
-måsøy.no
-muosat.no
-xn--muost-0qa.no
-muosát.no
-mandal.no
-marker.no
-marnardal.no
-masfjorden.no
-meland.no
-meldal.no
-melhus.no
-meloy.no
-xn--mely-ira.no
-meløy.no
-meraker.no
-xn--merker-kua.no
-meråker.no
-moareke.no
-xn--moreke-jua.no
-moåreke.no
-midsund.no
-midtre-gauldal.no
-modalen.no
-modum.no
-molde.no
-moskenes.no
-moss.no
-mosvik.no
-malselv.no
-xn--mlselv-iua.no
-målselv.no
-malatvuopmi.no
-xn--mlatvuopmi-s4a.no
-málatvuopmi.no
-namdalseid.no
-aejrie.no
-namsos.no
-namsskogan.no
-naamesjevuemie.no
-xn--nmesjevuemie-tcba.no
-nååmesjevuemie.no
-laakesvuemie.no
-nannestad.no
-narvik.no
-narviika.no
-naustdal.no
-nedre-eiker.no
-nes.akershus.no
-nes.buskerud.no
-nesna.no
-nesodden.no
-nesseby.no
-unjarga.no
-xn--unjrga-rta.no
-unjárga.no
-nesset.no
-nissedal.no
-nittedal.no
-nord-aurdal.no
-nord-fron.no
-nord-odal.no
-norddal.no
-nordkapp.no
-davvenjarga.no
-xn--davvenjrga-y4a.no
-davvenjárga.no
-nordre-land.no
-nordreisa.no
-raisa.no
-xn--risa-5na.no
-ráisa.no
-nore-og-uvdal.no
-notodden.no
-naroy.no
-xn--nry-yla5g.no
-nærøy.no
-notteroy.no
-xn--nttery-byae.no
-nøtterøy.no
-odda.no
-oksnes.no
-xn--ksnes-uua.no
-øksnes.no
-oppdal.no
-oppegard.no
-xn--oppegrd-ixa.no
-oppegård.no
-orkdal.no
-orland.no
-xn--rland-uua.no
-ørland.no
-orskog.no
-xn--rskog-uua.no
-ørskog.no
-orsta.no
-xn--rsta-fra.no
-ørsta.no
-os.hedmark.no
-os.hordaland.no
-osen.no
-osteroy.no
-xn--ostery-fya.no
-osterøy.no
-ostre-toten.no
-xn--stre-toten-zcb.no
-østre-toten.no
-overhalla.no
-ovre-eiker.no
-xn--vre-eiker-k8a.no
-øvre-eiker.no
-oyer.no
-xn--yer-zna.no
-øyer.no
-oygarden.no
-xn--ygarden-p1a.no
-øygarden.no
-oystre-slidre.no
-xn--ystre-slidre-ujb.no
-øystre-slidre.no
-porsanger.no
-porsangu.no
-xn--porsgu-sta26f.no
-porsáŋgu.no
-porsgrunn.no
-radoy.no
-xn--rady-ira.no
-radøy.no
-rakkestad.no
-rana.no
-ruovat.no
-randaberg.no
-rauma.no
-rendalen.no
-rennebu.no
-rennesoy.no
-xn--rennesy-v1a.no
-rennesøy.no
-rindal.no
-ringebu.no
-ringerike.no
-ringsaker.no
-rissa.no
-risor.no
-xn--risr-ira.no
-risør.no
-roan.no
-rollag.no
-rygge.no
-ralingen.no
-xn--rlingen-mxa.no
-rælingen.no
-rodoy.no
-xn--rdy-0nab.no
-rødøy.no
-romskog.no
-xn--rmskog-bya.no
-rømskog.no
-roros.no
-xn--rros-gra.no
-røros.no
-rost.no
-xn--rst-0na.no
-røst.no
-royken.no
-xn--ryken-vua.no
-røyken.no
-royrvik.no
-xn--ryrvik-bya.no
-røyrvik.no
-rade.no
-xn--rde-ula.no
-råde.no
-salangen.no
-siellak.no
-saltdal.no
-salat.no
-xn--slt-elab.no
-sálát.no
-xn--slat-5na.no
-sálat.no
-samnanger.no
-sande.more-og-romsdal.no
-sande.xn--mre-og-romsdal-qqb.no
-sande.møre-og-romsdal.no
-sande.vestfold.no
-sandefjord.no
-sandnes.no
-sandoy.no
-xn--sandy-yua.no
-sandøy.no
-sarpsborg.no
-sauda.no
-sauherad.no
-sel.no
-selbu.no
-selje.no
-seljord.no
-sigdal.no
-siljan.no
-sirdal.no
-skaun.no
-skedsmo.no
-ski.no
-skien.no
-skiptvet.no
-skjervoy.no
-xn--skjervy-v1a.no
-skjervøy.no
-skierva.no
-xn--skierv-uta.no
-skiervá.no
-skjak.no
-xn--skjk-soa.no
-skjåk.no
-skodje.no
-skanland.no
-xn--sknland-fxa.no
-skånland.no
-skanit.no
-xn--sknit-yqa.no
-skánit.no
-smola.no
-xn--smla-hra.no
-smøla.no
-snillfjord.no
-snasa.no
-xn--snsa-roa.no
-snåsa.no
-snoasa.no
-snaase.no
-xn--snase-nra.no
-snåase.no
-sogndal.no
-sokndal.no
-sola.no
-solund.no
-songdalen.no
-sortland.no
-spydeberg.no
-stange.no
-stavanger.no
-steigen.no
-steinkjer.no
-stjordal.no
-xn--stjrdal-s1a.no
-stjørdal.no
-stokke.no
-stor-elvdal.no
-stord.no
-stordal.no
-storfjord.no
-omasvuotna.no
-strand.no
-stranda.no
-stryn.no
-sula.no
-suldal.no
-sund.no
-sunndal.no
-surnadal.no
-sveio.no
-svelvik.no
-sykkylven.no
-sogne.no
-xn--sgne-gra.no
-søgne.no
-somna.no
-xn--smna-gra.no
-sømna.no
-sondre-land.no
-xn--sndre-land-0cb.no
-søndre-land.no
-sor-aurdal.no
-xn--sr-aurdal-l8a.no
-sør-aurdal.no
-sor-fron.no
-xn--sr-fron-q1a.no
-sør-fron.no
-sor-odal.no
-xn--sr-odal-q1a.no
-sør-odal.no
-sor-varanger.no
-xn--sr-varanger-ggb.no
-sør-varanger.no
-matta-varjjat.no
-xn--mtta-vrjjat-k7af.no
-mátta-várjjat.no
-sorfold.no
-xn--srfold-bya.no
-sørfold.no
-sorreisa.no
-xn--srreisa-q1a.no
-sørreisa.no
-sorum.no
-xn--srum-gra.no
-sørum.no
-tana.no
-deatnu.no
-time.no
-tingvoll.no
-tinn.no
-tjeldsund.no
-dielddanuorri.no
-tjome.no
-xn--tjme-hra.no
-tjøme.no
-tokke.no
-tolga.no
-torsken.no
-tranoy.no
-xn--trany-yua.no
-tranøy.no
-tromso.no
-xn--troms-zua.no
-tromsø.no
-tromsa.no
-romsa.no
-trondheim.no
-troandin.no
-trysil.no
-trana.no
-xn--trna-woa.no
-træna.no
-trogstad.no
-xn--trgstad-r1a.no
-trøgstad.no
-tvedestrand.no
-tydal.no
-tynset.no
-tysfjord.no
-divtasvuodna.no
-divttasvuotna.no
-tysnes.no
-tysvar.no
-xn--tysvr-vra.no
-tysvær.no
-tonsberg.no
-xn--tnsberg-q1a.no
-tønsberg.no
-ullensaker.no
-ullensvang.no
-ulvik.no
-utsira.no
-vadso.no
-xn--vads-jra.no
-vadsø.no
-cahcesuolo.no
-xn--hcesuolo-7ya35b.no
-čáhcesuolo.no
-vaksdal.no
-valle.no
-vang.no
-vanylven.no
-vardo.no
-xn--vard-jra.no
-vardø.no
-varggat.no
-xn--vrggt-xqad.no
-várggát.no
-vefsn.no
-vaapste.no
-vega.no
-vegarshei.no
-xn--vegrshei-c0a.no
-vegårshei.no
-vennesla.no
-verdal.no
-verran.no
-vestby.no
-vestnes.no
-vestre-slidre.no
-vestre-toten.no
-vestvagoy.no
-xn--vestvgy-ixa6o.no
-vestvågøy.no
-vevelstad.no
-vik.no
-vikna.no
-vindafjord.no
-volda.no
-voss.no
-varoy.no
-xn--vry-yla5g.no
-værøy.no
-vagan.no
-xn--vgan-qoa.no
-vågan.no
-voagat.no
-vagsoy.no
-xn--vgsy-qoa0j.no
-vågsøy.no
-vaga.no
-xn--vg-yiab.no
-vågå.no
-valer.ostfold.no
-xn--vler-qoa.xn--stfold-9xa.no
-våler.østfold.no
-valer.hedmark.no
-xn--vler-qoa.hedmark.no
-våler.hedmark.no
-
-// np : http://www.mos.com.np/register.html
-*.np
-
-// nr : http://cenpac.net.nr/dns/index.html
-// Submitted by registry <technician@cenpac.net.nr>
-nr
-biz.nr
-info.nr
-gov.nr
-edu.nr
-org.nr
-net.nr
-com.nr
-
-// nu : https://en.wikipedia.org/wiki/.nu
-nu
-
-// nz : https://en.wikipedia.org/wiki/.nz
-// Submitted by registry <jay@nzrs.net.nz>
-nz
-ac.nz
-co.nz
-cri.nz
-geek.nz
-gen.nz
-govt.nz
-health.nz
-iwi.nz
-kiwi.nz
-maori.nz
-mil.nz
-xn--mori-qsa.nz
-māori.nz
-net.nz
-org.nz
-parliament.nz
-school.nz
-
-// om : https://en.wikipedia.org/wiki/.om
-om
-co.om
-com.om
-edu.om
-gov.om
-med.om
-museum.om
-net.om
-org.om
-pro.om
-
-// onion : https://tools.ietf.org/html/rfc7686
-onion
-
-// org : https://en.wikipedia.org/wiki/.org
-org
-
-// pa : http://www.nic.pa/
-// Some additional second level "domains" resolve directly as hostnames, such as
-// pannet.pa, so we add a rule for "pa".
-pa
-ac.pa
-gob.pa
-com.pa
-org.pa
-sld.pa
-edu.pa
-net.pa
-ing.pa
-abo.pa
-med.pa
-nom.pa
-
-// pe : https://www.nic.pe/InformeFinalComision.pdf
-pe
-edu.pe
-gob.pe
-nom.pe
-mil.pe
-org.pe
-com.pe
-net.pe
-
-// pf : http://www.gobin.info/domainname/formulaire-pf.pdf
-pf
-com.pf
-org.pf
-edu.pf
-
-// pg : https://en.wikipedia.org/wiki/.pg
-*.pg
-
-// ph : http://www.domains.ph/FAQ2.asp
-// Submitted by registry <jed@email.com.ph>
-ph
-com.ph
-net.ph
-org.ph
-gov.ph
-edu.ph
-ngo.ph
-mil.ph
-i.ph
-
-// pk : http://pk5.pknic.net.pk/pk5/msgNamepk.PK
-pk
-com.pk
-net.pk
-edu.pk
-org.pk
-fam.pk
-biz.pk
-web.pk
-gov.pk
-gob.pk
-gok.pk
-gon.pk
-gop.pk
-gos.pk
-info.pk
-
-// pl http://www.dns.pl/english/index.html
-// Submitted by registry
-pl
-com.pl
-net.pl
-org.pl
-// pl functional domains (http://www.dns.pl/english/index.html)
-aid.pl
-agro.pl
-atm.pl
-auto.pl
-biz.pl
-edu.pl
-gmina.pl
-gsm.pl
-info.pl
-mail.pl
-miasta.pl
-media.pl
-mil.pl
-nieruchomosci.pl
-nom.pl
-pc.pl
-powiat.pl
-priv.pl
-realestate.pl
-rel.pl
-sex.pl
-shop.pl
-sklep.pl
-sos.pl
-szkola.pl
-targi.pl
-tm.pl
-tourism.pl
-travel.pl
-turystyka.pl
-// Government domains
-gov.pl
-ap.gov.pl
-ic.gov.pl
-is.gov.pl
-us.gov.pl
-kmpsp.gov.pl
-kppsp.gov.pl
-kwpsp.gov.pl
-psp.gov.pl
-wskr.gov.pl
-kwp.gov.pl
-mw.gov.pl
-ug.gov.pl
-um.gov.pl
-umig.gov.pl
-ugim.gov.pl
-upow.gov.pl
-uw.gov.pl
-starostwo.gov.pl
-pa.gov.pl
-po.gov.pl
-psse.gov.pl
-pup.gov.pl
-rzgw.gov.pl
-sa.gov.pl
-so.gov.pl
-sr.gov.pl
-wsa.gov.pl
-sko.gov.pl
-uzs.gov.pl
-wiih.gov.pl
-winb.gov.pl
-pinb.gov.pl
-wios.gov.pl
-witd.gov.pl
-wzmiuw.gov.pl
-piw.gov.pl
-wiw.gov.pl
-griw.gov.pl
-wif.gov.pl
-oum.gov.pl
-sdn.gov.pl
-zp.gov.pl
-uppo.gov.pl
-mup.gov.pl
-wuoz.gov.pl
-konsulat.gov.pl
-oirm.gov.pl
-// pl regional domains (http://www.dns.pl/english/index.html)
-augustow.pl
-babia-gora.pl
-bedzin.pl
-beskidy.pl
-bialowieza.pl
-bialystok.pl
-bielawa.pl
-bieszczady.pl
-boleslawiec.pl
-bydgoszcz.pl
-bytom.pl
-cieszyn.pl
-czeladz.pl
-czest.pl
-dlugoleka.pl
-elblag.pl
-elk.pl
-glogow.pl
-gniezno.pl
-gorlice.pl
-grajewo.pl
-ilawa.pl
-jaworzno.pl
-jelenia-gora.pl
-jgora.pl
-kalisz.pl
-kazimierz-dolny.pl
-karpacz.pl
-kartuzy.pl
-kaszuby.pl
-katowice.pl
-kepno.pl
-ketrzyn.pl
-klodzko.pl
-kobierzyce.pl
-kolobrzeg.pl
-konin.pl
-konskowola.pl
-kutno.pl
-lapy.pl
-lebork.pl
-legnica.pl
-lezajsk.pl
-limanowa.pl
-lomza.pl
-lowicz.pl
-lubin.pl
-lukow.pl
-malbork.pl
-malopolska.pl
-mazowsze.pl
-mazury.pl
-mielec.pl
-mielno.pl
-mragowo.pl
-naklo.pl
-nowaruda.pl
-nysa.pl
-olawa.pl
-olecko.pl
-olkusz.pl
-olsztyn.pl
-opoczno.pl
-opole.pl
-ostroda.pl
-ostroleka.pl
-ostrowiec.pl
-ostrowwlkp.pl
-pila.pl
-pisz.pl
-podhale.pl
-podlasie.pl
-polkowice.pl
-pomorze.pl
-pomorskie.pl
-prochowice.pl
-pruszkow.pl
-przeworsk.pl
-pulawy.pl
-radom.pl
-rawa-maz.pl
-rybnik.pl
-rzeszow.pl
-sanok.pl
-sejny.pl
-slask.pl
-slupsk.pl
-sosnowiec.pl
-stalowa-wola.pl
-skoczow.pl
-starachowice.pl
-stargard.pl
-suwalki.pl
-swidnica.pl
-swiebodzin.pl
-swinoujscie.pl
-szczecin.pl
-szczytno.pl
-tarnobrzeg.pl
-tgory.pl
-turek.pl
-tychy.pl
-ustka.pl
-walbrzych.pl
-warmia.pl
-warszawa.pl
-waw.pl
-wegrow.pl
-wielun.pl
-wlocl.pl
-wloclawek.pl
-wodzislaw.pl
-wolomin.pl
-wroclaw.pl
-zachpomor.pl
-zagan.pl
-zarow.pl
-zgora.pl
-zgorzelec.pl
-
-// pm : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-pm
-
-// pn : http://www.government.pn/PnRegistry/policies.htm
-pn
-gov.pn
-co.pn
-org.pn
-edu.pn
-net.pn
-
-// post : https://en.wikipedia.org/wiki/.post
-post
-
-// pr : http://www.nic.pr/index.asp?f=1
-pr
-com.pr
-net.pr
-org.pr
-gov.pr
-edu.pr
-isla.pr
-pro.pr
-biz.pr
-info.pr
-name.pr
-// these aren't mentioned on nic.pr, but on https://en.wikipedia.org/wiki/.pr
-est.pr
-prof.pr
-ac.pr
-
-// pro : http://registry.pro/get-pro
-pro
-aaa.pro
-aca.pro
-acct.pro
-avocat.pro
-bar.pro
-cpa.pro
-eng.pro
-jur.pro
-law.pro
-med.pro
-recht.pro
-
-// ps : https://en.wikipedia.org/wiki/.ps
-// http://www.nic.ps/registration/policy.html#reg
-ps
-edu.ps
-gov.ps
-sec.ps
-plo.ps
-com.ps
-org.ps
-net.ps
-
-// pt : http://online.dns.pt/dns/start_dns
-pt
-net.pt
-gov.pt
-org.pt
-edu.pt
-int.pt
-publ.pt
-com.pt
-nome.pt
-
-// pw : https://en.wikipedia.org/wiki/.pw
-pw
-co.pw
-ne.pw
-or.pw
-ed.pw
-go.pw
-belau.pw
-
-// py : http://www.nic.py/pautas.html#seccion_9
-// Submitted by registry
-py
-com.py
-coop.py
-edu.py
-gov.py
-mil.py
-net.py
-org.py
-
-// qa : http://domains.qa/en/
-qa
-com.qa
-edu.qa
-gov.qa
-mil.qa
-name.qa
-net.qa
-org.qa
-sch.qa
-
-// re : http://www.afnic.re/obtenir/chartes/nommage-re/annexe-descriptifs
-re
-asso.re
-com.re
-nom.re
-
-// ro : http://www.rotld.ro/
-ro
-arts.ro
-com.ro
-firm.ro
-info.ro
-nom.ro
-nt.ro
-org.ro
-rec.ro
-store.ro
-tm.ro
-www.ro
-
-// rs : https://www.rnids.rs/en/domains/national-domains
-rs
-ac.rs
-co.rs
-edu.rs
-gov.rs
-in.rs
-org.rs
-
-// ru : https://cctld.ru/en/domains/domens_ru/reserved/
-ru
-ac.ru
-edu.ru
-gov.ru
-int.ru
-mil.ru
-test.ru
-
-// rw : http://www.nic.rw/cgi-bin/policy.pl
-rw
-gov.rw
-net.rw
-edu.rw
-ac.rw
-com.rw
-co.rw
-int.rw
-mil.rw
-gouv.rw
-
-// sa : http://www.nic.net.sa/
-sa
-com.sa
-net.sa
-org.sa
-gov.sa
-med.sa
-pub.sa
-edu.sa
-sch.sa
-
-// sb : http://www.sbnic.net.sb/
-// Submitted by registry <lee.humphries@telekom.com.sb>
-sb
-com.sb
-edu.sb
-gov.sb
-net.sb
-org.sb
-
-// sc : http://www.nic.sc/
-sc
-com.sc
-gov.sc
-net.sc
-org.sc
-edu.sc
-
-// sd : http://www.isoc.sd/sudanic.isoc.sd/billing_pricing.htm
-// Submitted by registry <admin@isoc.sd>
-sd
-com.sd
-net.sd
-org.sd
-edu.sd
-med.sd
-tv.sd
-gov.sd
-info.sd
-
-// se : https://en.wikipedia.org/wiki/.se
-// Submitted by registry <patrik.wallstrom@iis.se>
-se
-a.se
-ac.se
-b.se
-bd.se
-brand.se
-c.se
-d.se
-e.se
-f.se
-fh.se
-fhsk.se
-fhv.se
-g.se
-h.se
-i.se
-k.se
-komforb.se
-kommunalforbund.se
-komvux.se
-l.se
-lanbib.se
-m.se
-n.se
-naturbruksgymn.se
-o.se
-org.se
-p.se
-parti.se
-pp.se
-press.se
-r.se
-s.se
-t.se
-tm.se
-u.se
-w.se
-x.se
-y.se
-z.se
-
-// sg : http://www.nic.net.sg/page/registration-policies-procedures-and-guidelines
-sg
-com.sg
-net.sg
-org.sg
-gov.sg
-edu.sg
-per.sg
-
-// sh : http://www.nic.sh/registrar.html
-sh
-com.sh
-net.sh
-gov.sh
-org.sh
-mil.sh
-
-// si : https://en.wikipedia.org/wiki/.si
-si
-
-// sj : No registrations at this time.
-// Submitted by registry <jarle@uninett.no>
-sj
-
-// sk : https://en.wikipedia.org/wiki/.sk
-// list of 2nd level domains ?
-sk
-
-// sl : http://www.nic.sl
-// Submitted by registry <adam@neoip.com>
-sl
-com.sl
-net.sl
-edu.sl
-gov.sl
-org.sl
-
-// sm : https://en.wikipedia.org/wiki/.sm
-sm
-
-// sn : https://en.wikipedia.org/wiki/.sn
-sn
-art.sn
-com.sn
-edu.sn
-gouv.sn
-org.sn
-perso.sn
-univ.sn
-
-// so : http://www.soregistry.com/
-so
-com.so
-net.so
-org.so
-
-// sr : https://en.wikipedia.org/wiki/.sr
-sr
-
-// st : http://www.nic.st/html/policyrules/
-st
-co.st
-com.st
-consulado.st
-edu.st
-embaixada.st
-gov.st
-mil.st
-net.st
-org.st
-principe.st
-saotome.st
-store.st
-
-// su : https://en.wikipedia.org/wiki/.su
-su
-
-// sv : http://www.svnet.org.sv/niveldos.pdf
-sv
-com.sv
-edu.sv
-gob.sv
-org.sv
-red.sv
-
-// sx : https://en.wikipedia.org/wiki/.sx
-// Submitted by registry <jcvignes@openregistry.com>
-sx
-gov.sx
-
-// sy : https://en.wikipedia.org/wiki/.sy
-// see also: http://www.gobin.info/domainname/sy.doc
-sy
-edu.sy
-gov.sy
-net.sy
-mil.sy
-com.sy
-org.sy
-
-// sz : https://en.wikipedia.org/wiki/.sz
-// http://www.sispa.org.sz/
-sz
-co.sz
-ac.sz
-org.sz
-
-// tc : https://en.wikipedia.org/wiki/.tc
-tc
-
-// td : https://en.wikipedia.org/wiki/.td
-td
-
-// tel: https://en.wikipedia.org/wiki/.tel
-// http://www.telnic.org/
-tel
-
-// tf : https://en.wikipedia.org/wiki/.tf
-tf
-
-// tg : https://en.wikipedia.org/wiki/.tg
-// http://www.nic.tg/
-tg
-
-// th : https://en.wikipedia.org/wiki/.th
-// Submitted by registry <krit@thains.co.th>
-th
-ac.th
-co.th
-go.th
-in.th
-mi.th
-net.th
-or.th
-
-// tj : http://www.nic.tj/policy.html
-tj
-ac.tj
-biz.tj
-co.tj
-com.tj
-edu.tj
-go.tj
-gov.tj
-int.tj
-mil.tj
-name.tj
-net.tj
-nic.tj
-org.tj
-test.tj
-web.tj
-
-// tk : https://en.wikipedia.org/wiki/.tk
-tk
-
-// tl : https://en.wikipedia.org/wiki/.tl
-tl
-gov.tl
-
-// tm : http://www.nic.tm/local.html
-tm
-com.tm
-co.tm
-org.tm
-net.tm
-nom.tm
-gov.tm
-mil.tm
-edu.tm
-
-// tn : https://en.wikipedia.org/wiki/.tn
-// http://whois.ati.tn/
-tn
-com.tn
-ens.tn
-fin.tn
-gov.tn
-ind.tn
-intl.tn
-nat.tn
-net.tn
-org.tn
-info.tn
-perso.tn
-tourism.tn
-edunet.tn
-rnrt.tn
-rns.tn
-rnu.tn
-mincom.tn
-agrinet.tn
-defense.tn
-turen.tn
-
-// to : https://en.wikipedia.org/wiki/.to
-// Submitted by registry <egullich@colo.to>
-to
-com.to
-gov.to
-net.to
-org.to
-edu.to
-mil.to
-
-// subTLDs: https://www.nic.tr/forms/eng/policies.pdf
-//     and: https://www.nic.tr/forms/politikalar.pdf
-// Submitted by <mehmetgurevin@gmail.com>
-tr
-com.tr
-info.tr
-biz.tr
-net.tr
-org.tr
-web.tr
-gen.tr
-tv.tr
-av.tr
-dr.tr
-bbs.tr
-name.tr
-tel.tr
-gov.tr
-bel.tr
-pol.tr
-mil.tr
-k12.tr
-edu.tr
-kep.tr
-
-// Used by Northern Cyprus
-nc.tr
-
-// Used by government agencies of Northern Cyprus
-gov.nc.tr
-
-// travel : https://en.wikipedia.org/wiki/.travel
-travel
-
-// tt : http://www.nic.tt/
-tt
-co.tt
-com.tt
-org.tt
-net.tt
-biz.tt
-info.tt
-pro.tt
-int.tt
-coop.tt
-jobs.tt
-mobi.tt
-travel.tt
-museum.tt
-aero.tt
-name.tt
-gov.tt
-edu.tt
-
-// tv : https://en.wikipedia.org/wiki/.tv
-// Not listing any 2LDs as reserved since none seem to exist in practice,
-// Wikipedia notwithstanding.
-tv
-
-// tw : https://en.wikipedia.org/wiki/.tw
-tw
-edu.tw
-gov.tw
-mil.tw
-com.tw
-net.tw
-org.tw
-idv.tw
-game.tw
-ebiz.tw
-club.tw
-xn--zf0ao64a.tw
-網路.tw
-xn--uc0atv.tw
-組織.tw
-xn--czrw28b.tw
-商業.tw
-
-// tz : http://www.tznic.or.tz/index.php/domains
-// Submitted by registry <manager@tznic.or.tz>
-tz
-ac.tz
-co.tz
-go.tz
-hotel.tz
-info.tz
-me.tz
-mil.tz
-mobi.tz
-ne.tz
-or.tz
-sc.tz
-tv.tz
-
-// ua : https://hostmaster.ua/policy/?ua
-// Submitted by registry <dk@cctld.ua>
-ua
-// ua 2LD
-com.ua
-edu.ua
-gov.ua
-in.ua
-net.ua
-org.ua
-// ua geographic names
-// https://hostmaster.ua/2ld/
-cherkassy.ua
-cherkasy.ua
-chernigov.ua
-chernihiv.ua
-chernivtsi.ua
-chernovtsy.ua
-ck.ua
-cn.ua
-cr.ua
-crimea.ua
-cv.ua
-dn.ua
-dnepropetrovsk.ua
-dnipropetrovsk.ua
-dominic.ua
-donetsk.ua
-dp.ua
-if.ua
-ivano-frankivsk.ua
-kh.ua
-kharkiv.ua
-kharkov.ua
-kherson.ua
-khmelnitskiy.ua
-khmelnytskyi.ua
-kiev.ua
-kirovograd.ua
-km.ua
-kr.ua
-krym.ua
-ks.ua
-kv.ua
-kyiv.ua
-lg.ua
-lt.ua
-lugansk.ua
-lutsk.ua
-lv.ua
-lviv.ua
-mk.ua
-mykolaiv.ua
-nikolaev.ua
-od.ua
-odesa.ua
-odessa.ua
-pl.ua
-poltava.ua
-rivne.ua
-rovno.ua
-rv.ua
-sb.ua
-sebastopol.ua
-sevastopol.ua
-sm.ua
-sumy.ua
-te.ua
-ternopil.ua
-uz.ua
-uzhgorod.ua
-vinnica.ua
-vinnytsia.ua
-vn.ua
-volyn.ua
-yalta.ua
-zaporizhzhe.ua
-zaporizhzhia.ua
-zhitomir.ua
-zhytomyr.ua
-zp.ua
-zt.ua
-
-// ug : https://www.registry.co.ug/
-ug
-co.ug
-or.ug
-ac.ug
-sc.ug
-go.ug
-ne.ug
-com.ug
-org.ug
-
-// uk : https://en.wikipedia.org/wiki/.uk
-// Submitted by registry <Michael.Daly@nominet.org.uk>
-uk
-ac.uk
-co.uk
-gov.uk
-ltd.uk
-me.uk
-net.uk
-nhs.uk
-org.uk
-plc.uk
-police.uk
-*.sch.uk
-
-// us : https://en.wikipedia.org/wiki/.us
-us
-dni.us
-fed.us
-isa.us
-kids.us
-nsn.us
-// us geographic names
-ak.us
-al.us
-ar.us
-as.us
-az.us
-ca.us
-co.us
-ct.us
-dc.us
-de.us
-fl.us
-ga.us
-gu.us
-hi.us
-ia.us
-id.us
-il.us
-in.us
-ks.us
-ky.us
-la.us
-ma.us
-md.us
-me.us
-mi.us
-mn.us
-mo.us
-ms.us
-mt.us
-nc.us
-nd.us
-ne.us
-nh.us
-nj.us
-nm.us
-nv.us
-ny.us
-oh.us
-ok.us
-or.us
-pa.us
-pr.us
-ri.us
-sc.us
-sd.us
-tn.us
-tx.us
-ut.us
-vi.us
-vt.us
-va.us
-wa.us
-wi.us
-wv.us
-wy.us
-// The registrar notes several more specific domains available in each state,
-// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat
-// haphazard; in some states these domains resolve as addresses, while in others
-// only subdomains are available, or even nothing at all. We include the
-// most common ones where it's clear that different sites are different
-// entities.
-k12.ak.us
-k12.al.us
-k12.ar.us
-k12.as.us
-k12.az.us
-k12.ca.us
-k12.co.us
-k12.ct.us
-k12.dc.us
-k12.de.us
-k12.fl.us
-k12.ga.us
-k12.gu.us
-// k12.hi.us  Bug 614565 - Hawaii has a state-wide DOE login
-k12.ia.us
-k12.id.us
-k12.il.us
-k12.in.us
-k12.ks.us
-k12.ky.us
-k12.la.us
-k12.ma.us
-k12.md.us
-k12.me.us
-k12.mi.us
-k12.mn.us
-k12.mo.us
-k12.ms.us
-k12.mt.us
-k12.nc.us
-// k12.nd.us  Bug 1028347 - Removed at request of Travis Rosso <trossow@nd.gov>
-k12.ne.us
-k12.nh.us
-k12.nj.us
-k12.nm.us
-k12.nv.us
-k12.ny.us
-k12.oh.us
-k12.ok.us
-k12.or.us
-k12.pa.us
-k12.pr.us
-k12.ri.us
-k12.sc.us
-// k12.sd.us  Bug 934131 - Removed at request of James Booze <James.Booze@k12.sd.us>
-k12.tn.us
-k12.tx.us
-k12.ut.us
-k12.vi.us
-k12.vt.us
-k12.va.us
-k12.wa.us
-k12.wi.us
-// k12.wv.us  Bug 947705 - Removed at request of Verne Britton <verne@wvnet.edu>
-k12.wy.us
-cc.ak.us
-cc.al.us
-cc.ar.us
-cc.as.us
-cc.az.us
-cc.ca.us
-cc.co.us
-cc.ct.us
-cc.dc.us
-cc.de.us
-cc.fl.us
-cc.ga.us
-cc.gu.us
-cc.hi.us
-cc.ia.us
-cc.id.us
-cc.il.us
-cc.in.us
-cc.ks.us
-cc.ky.us
-cc.la.us
-cc.ma.us
-cc.md.us
-cc.me.us
-cc.mi.us
-cc.mn.us
-cc.mo.us
-cc.ms.us
-cc.mt.us
-cc.nc.us
-cc.nd.us
-cc.ne.us
-cc.nh.us
-cc.nj.us
-cc.nm.us
-cc.nv.us
-cc.ny.us
-cc.oh.us
-cc.ok.us
-cc.or.us
-cc.pa.us
-cc.pr.us
-cc.ri.us
-cc.sc.us
-cc.sd.us
-cc.tn.us
-cc.tx.us
-cc.ut.us
-cc.vi.us
-cc.vt.us
-cc.va.us
-cc.wa.us
-cc.wi.us
-cc.wv.us
-cc.wy.us
-lib.ak.us
-lib.al.us
-lib.ar.us
-lib.as.us
-lib.az.us
-lib.ca.us
-lib.co.us
-lib.ct.us
-lib.dc.us
-// lib.de.us  Issue #243 - Moved to Private section at request of Ed Moore <Ed.Moore@lib.de.us>
-lib.fl.us
-lib.ga.us
-lib.gu.us
-lib.hi.us
-lib.ia.us
-lib.id.us
-lib.il.us
-lib.in.us
-lib.ks.us
-lib.ky.us
-lib.la.us
-lib.ma.us
-lib.md.us
-lib.me.us
-lib.mi.us
-lib.mn.us
-lib.mo.us
-lib.ms.us
-lib.mt.us
-lib.nc.us
-lib.nd.us
-lib.ne.us
-lib.nh.us
-lib.nj.us
-lib.nm.us
-lib.nv.us
-lib.ny.us
-lib.oh.us
-lib.ok.us
-lib.or.us
-lib.pa.us
-lib.pr.us
-lib.ri.us
-lib.sc.us
-lib.sd.us
-lib.tn.us
-lib.tx.us
-lib.ut.us
-lib.vi.us
-lib.vt.us
-lib.va.us
-lib.wa.us
-lib.wi.us
-// lib.wv.us  Bug 941670 - Removed at request of Larry W Arnold <arnold@wvlc.lib.wv.us>
-lib.wy.us
-// k12.ma.us contains school districts in Massachusetts. The 4LDs are
-//  managed independently except for private (PVT), charter (CHTR) and
-//  parochial (PAROCH) schools.  Those are delegated directly to the
-//  5LD operators.   <k12-ma-hostmaster _ at _ rsuc.gweep.net>
-pvt.k12.ma.us
-chtr.k12.ma.us
-paroch.k12.ma.us
-
-// uy : http://www.nic.org.uy/
-uy
-com.uy
-edu.uy
-gub.uy
-mil.uy
-net.uy
-org.uy
-
-// uz : http://www.reg.uz/
-uz
-co.uz
-com.uz
-net.uz
-org.uz
-
-// va : https://en.wikipedia.org/wiki/.va
-va
-
-// vc : https://en.wikipedia.org/wiki/.vc
-// Submitted by registry <kshah@ca.afilias.info>
-vc
-com.vc
-net.vc
-org.vc
-gov.vc
-mil.vc
-edu.vc
-
-// ve : https://registro.nic.ve/
-// Submitted by registry
-ve
-arts.ve
-co.ve
-com.ve
-e12.ve
-edu.ve
-firm.ve
-gob.ve
-gov.ve
-info.ve
-int.ve
-mil.ve
-net.ve
-org.ve
-rec.ve
-store.ve
-tec.ve
-web.ve
-
-// vg : https://en.wikipedia.org/wiki/.vg
-vg
-
-// vi : http://www.nic.vi/newdomainform.htm
-// http://www.nic.vi/Domain_Rules/body_domain_rules.html indicates some other
-// TLDs are "reserved", such as edu.vi and gov.vi, but doesn't actually say they
-// are available for registration (which they do not seem to be).
-vi
-co.vi
-com.vi
-k12.vi
-net.vi
-org.vi
-
-// vn : https://www.dot.vn/vnnic/vnnic/domainregistration.jsp
-vn
-com.vn
-net.vn
-org.vn
-edu.vn
-gov.vn
-int.vn
-ac.vn
-biz.vn
-info.vn
-name.vn
-pro.vn
-health.vn
-
-// vu : https://en.wikipedia.org/wiki/.vu
-// http://www.vunic.vu/
-vu
-com.vu
-edu.vu
-net.vu
-org.vu
-
-// wf : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-wf
-
-// ws : https://en.wikipedia.org/wiki/.ws
-// http://samoanic.ws/index.dhtml
-ws
-com.ws
-net.ws
-org.ws
-gov.ws
-edu.ws
-
-// yt : http://www.afnic.fr/medias/documents/AFNIC-naming-policy2012.pdf
-yt
-
-// IDN ccTLDs
-// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then
-// U-label, and follow this format:
-// // A-Label ("<Latin renderings>", <language name>[, variant info]) : <ISO 3166 ccTLD>
-// // [sponsoring org]
-// U-Label
-
-// xn--mgbaam7a8h ("Emerat", Arabic) : AE
-// http://nic.ae/english/arabicdomain/rules.jsp
-xn--mgbaam7a8h
-امارات
-
-// xn--y9a3aq ("hye", Armenian) : AM
-// ISOC AM (operated by .am Registry)
-xn--y9a3aq
-հայ
-
-// xn--54b7fta0cc ("Bangla", Bangla) : BD
-xn--54b7fta0cc
-বাংলা
-
-// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY
-// Operated by .by registry
-xn--90ais
-бел
-
-// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-xn--fiqs8s
-中国
-
-// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN
-// CNNIC
-// http://cnnic.cn/html/Dir/2005/10/11/3218.htm
-xn--fiqz9s
-中國
-
-// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ
-xn--lgbbat1ad8j
-الجزائر
-
-// xn--wgbh1c ("Egypt/Masr", Arabic) : EG
-// http://www.dotmasr.eg/
-xn--wgbh1c
-مصر
-
-// xn--e1a4c ("eu", Cyrillic) : EU
-xn--e1a4c
-ею
-
-// xn--node ("ge", Georgian Mkhedruli) : GE
-xn--node
-გე
-
-// xn--qxam ("el", Greek) : GR
-// Hellenic Ministry of Infrastructure, Transport, and Networks
-xn--qxam
-ελ
-
-// xn--j6w193g ("Hong Kong", Chinese) : HK
-// https://www2.hkirc.hk/register/rules.jsp
-xn--j6w193g
-香港
-
-// xn--h2brj9c ("Bharat", Devanagari) : IN
-// India
-xn--h2brj9c
-भारत
-
-// xn--mgbbh1a71e ("Bharat", Arabic) : IN
-// India
-xn--mgbbh1a71e
-بھارت
-
-// xn--fpcrj9c3d ("Bharat", Telugu) : IN
-// India
-xn--fpcrj9c3d
-భారత్
-
-// xn--gecrj9c ("Bharat", Gujarati) : IN
-// India
-xn--gecrj9c
-ભારત
-
-// xn--s9brj9c ("Bharat", Gurmukhi) : IN
-// India
-xn--s9brj9c
-ਭਾਰਤ
-
-// xn--45brj9c ("Bharat", Bengali) : IN
-// India
-xn--45brj9c
-ভারত
-
-// xn--xkc2dl3a5ee0h ("India", Tamil) : IN
-// India
-xn--xkc2dl3a5ee0h
-இந்தியா
-
-// xn--mgba3a4f16a ("Iran", Persian) : IR
-xn--mgba3a4f16a
-ایران
-
-// xn--mgba3a4fra ("Iran", Arabic) : IR
-xn--mgba3a4fra
-ايران
-
-// xn--mgbtx2b ("Iraq", Arabic) : IQ
-// Communications and Media Commission
-xn--mgbtx2b
-عراق
-
-// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO
-// National Information Technology Center (NITC)
-// Royal Scientific Society, Al-Jubeiha
-xn--mgbayh7gpa
-الاردن
-
-// xn--3e0b707e ("Republic of Korea", Hangul) : KR
-xn--3e0b707e
-한국
-
-// xn--80ao21a ("Kaz", Kazakh) : KZ
-xn--80ao21a
-қаз
-
-// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK
-// http://nic.lk
-xn--fzc2c9e2c
-ලංකා
-
-// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK
-// http://nic.lk
-xn--xkc2al3hye2a
-இலங்கை
-
-// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA
-xn--mgbc0a9azcg
-المغرب
-
-// xn--d1alf ("mkd", Macedonian) : MK
-// MARnet
-xn--d1alf
-мкд
-
-// xn--l1acc ("mon", Mongolian) : MN
-xn--l1acc
-мон
-
-// xn--mix891f ("Macao", Chinese, Traditional) : MO
-// MONIC / HNET Asia (Registry Operator for .mo)
-xn--mix891f
-澳門
-
-// xn--mix082f ("Macao", Chinese, Simplified) : MO
-xn--mix082f
-澳门
-
-// xn--mgbx4cd0ab ("Malaysia", Malay) : MY
-xn--mgbx4cd0ab
-مليسيا
-
-// xn--mgb9awbf ("Oman", Arabic) : OM
-xn--mgb9awbf
-عمان
-
-// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK
-xn--mgbai9azgqp6j
-پاکستان
-
-// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK
-xn--mgbai9a5eva00b
-پاكستان
-
-// xn--ygbi2ammx ("Falasteen", Arabic) : PS
-// The Palestinian National Internet Naming Authority (PNINA)
-// http://www.pnina.ps
-xn--ygbi2ammx
-فلسطين
-
-// xn--90a3ac ("srb", Cyrillic) : RS
-// https://www.rnids.rs/en/domains/national-domains
-xn--90a3ac
-срб
-xn--o1ac.xn--90a3ac
-пр.срб
-xn--c1avg.xn--90a3ac
-орг.срб
-xn--90azh.xn--90a3ac
-обр.срб
-xn--d1at.xn--90a3ac
-од.срб
-xn--o1ach.xn--90a3ac
-упр.срб
-xn--80au.xn--90a3ac
-ак.срб
-
-// xn--p1ai ("rf", Russian-Cyrillic) : RU
-// http://www.cctld.ru/en/docs/rulesrf.php
-xn--p1ai
-рф
-
-// xn--wgbl6a ("Qatar", Arabic) : QA
-// http://www.ict.gov.qa/
-xn--wgbl6a
-قطر
-
-// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA
-// http://www.nic.net.sa/
-xn--mgberp4a5d4ar
-السعودية
-
-// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant)  : SA
-xn--mgberp4a5d4a87g
-السعودیة
-
-// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA
-xn--mgbqly7c0a67fbc
-السعودیۃ
-
-// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA
-xn--mgbqly7cvafr
-السعوديه
-
-// xn--mgbpl2fh ("sudan", Arabic) : SD
-// Operated by .sd registry
-xn--mgbpl2fh
-سودان
-
-// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG
-xn--yfro4i67o
-新加坡
-
-// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG
-xn--clchc0ea0b2g2a9gcd
-சிங்கப்பூர்
-
-// xn--ogbpf8fl ("Syria", Arabic) : SY
-xn--ogbpf8fl
-سورية
-
-// xn--mgbtf8fl ("Syria", Arabic, variant) : SY
-xn--mgbtf8fl
-سوريا
-
-// xn--o3cw4h ("Thai", Thai) : TH
-// http://www.thnic.co.th
-xn--o3cw4h
-ไทย
-
-// xn--pgbs0dh ("Tunisia", Arabic) : TN
-// http://nic.tn
-xn--pgbs0dh
-تونس
-
-// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-xn--kpry57d
-台灣
-
-// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW
-// http://www.twnic.net/english/dn/dn_07a.htm
-xn--kprw13d
-台湾
-
-// xn--nnx388a ("Taiwan", Chinese, variant) : TW
-xn--nnx388a
-臺灣
-
-// xn--j1amh ("ukr", Cyrillic) : UA
-xn--j1amh
-укр
-
-// xn--mgb2ddes ("AlYemen", Arabic) : YE
-xn--mgb2ddes
-اليمن
-
-// xxx : http://icmregistry.com
-xxx
-
-// ye : http://www.y.net.ye/services/domain_name.htm
-*.ye
-
-// za : http://www.zadna.org.za/content/page/domain-information
-ac.za
-agric.za
-alt.za
-co.za
-edu.za
-gov.za
-grondar.za
-law.za
-mil.za
-net.za
-ngo.za
-nis.za
-nom.za
-org.za
-school.za
-tm.za
-web.za
-
-// zm : https://zicta.zm/
-// Submitted by registry <info@zicta.zm>
-zm
-ac.zm
-biz.zm
-co.zm
-com.zm
-edu.zm
-gov.zm
-info.zm
-mil.zm
-net.zm
-org.zm
-sch.zm
-
-// zw : https://en.wikipedia.org/wiki/.zw
-*.zw
-
-
-// List of new gTLDs imported from https://newgtlds.icann.org/newgtlds.csv on 2016-11-29T01:06:51Z
-
-// aaa : 2015-02-26 American Automobile Association, Inc.
-aaa
-
-// aarp : 2015-05-21 AARP
-aarp
-
-// abarth : 2015-07-30 Fiat Chrysler Automobiles N.V.
-abarth
-
-// abb : 2014-10-24 ABB Ltd
-abb
-
-// abbott : 2014-07-24 Abbott Laboratories, Inc.
-abbott
-
-// abbvie : 2015-07-30 AbbVie Inc.
-abbvie
-
-// abc : 2015-07-30 Disney Enterprises, Inc.
-abc
-
-// able : 2015-06-25 Able Inc.
-able
-
-// abogado : 2014-04-24 Top Level Domain Holdings Limited
-abogado
-
-// abudhabi : 2015-07-30 Abu Dhabi Systems and Information Centre
-abudhabi
-
-// academy : 2013-11-07 Half Oaks, LLC
-academy
-
-// accenture : 2014-08-15 Accenture plc
-accenture
-
-// accountant : 2014-11-20 dot Accountant Limited
-accountant
-
-// accountants : 2014-03-20 Knob Town, LLC
-accountants
-
-// aco : 2015-01-08 ACO Severin Ahlmann GmbH & Co. KG
-aco
-
-// active : 2014-05-01 The Active Network, Inc
-active
-
-// actor : 2013-12-12 United TLD Holdco Ltd.
-actor
-
-// adac : 2015-07-16 Allgemeiner Deutscher Automobil-Club e.V. (ADAC)
-adac
-
-// ads : 2014-12-04 Charleston Road Registry Inc.
-ads
-
-// adult : 2014-10-16 ICM Registry AD LLC
-adult
-
-// aeg : 2015-03-19 Aktiebolaget Electrolux
-aeg
-
-// aetna : 2015-05-21 Aetna Life Insurance Company
-aetna
-
-// afamilycompany : 2015-07-23 Johnson Shareholdings, Inc.
-afamilycompany
-
-// afl : 2014-10-02 Australian Football League
-afl
-
-// africa : 2014-03-24 ZA Central Registry NPC trading as Registry.Africa
-africa
-
-// agakhan : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-agakhan
-
-// agency : 2013-11-14 Steel Falls, LLC
-agency
-
-// aig : 2014-12-18 American International Group, Inc.
-aig
-
-// aigo : 2015-08-06 aigo Digital Technology Co,Ltd.
-aigo
-
-// airbus : 2015-07-30 Airbus S.A.S.
-airbus
-
-// airforce : 2014-03-06 United TLD Holdco Ltd.
-airforce
-
-// airtel : 2014-10-24 Bharti Airtel Limited
-airtel
-
-// akdn : 2015-04-23 Fondation Aga Khan (Aga Khan Foundation)
-akdn
-
-// alfaromeo : 2015-07-31 Fiat Chrysler Automobiles N.V.
-alfaromeo
-
-// alibaba : 2015-01-15 Alibaba Group Holding Limited
-alibaba
-
-// alipay : 2015-01-15 Alibaba Group Holding Limited
-alipay
-
-// allfinanz : 2014-07-03 Allfinanz Deutsche Vermögensberatung Aktiengesellschaft
-allfinanz
-
-// allstate : 2015-07-31 Allstate Fire and Casualty Insurance Company
-allstate
-
-// ally : 2015-06-18 Ally Financial Inc.
-ally
-
-// alsace : 2014-07-02 REGION D ALSACE
-alsace
-
-// alstom : 2015-07-30 ALSTOM
-alstom
-
-// americanexpress : 2015-07-31 American Express Travel Related Services Company, Inc.
-americanexpress
-
-// americanfamily : 2015-07-23 AmFam, Inc.
-americanfamily
-
-// amex : 2015-07-31 American Express Travel Related Services Company, Inc.
-amex
-
-// amfam : 2015-07-23 AmFam, Inc.
-amfam
-
-// amica : 2015-05-28 Amica Mutual Insurance Company
-amica
-
-// amsterdam : 2014-07-24 Gemeente Amsterdam
-amsterdam
-
-// analytics : 2014-12-18 Campus IP LLC
-analytics
-
-// android : 2014-08-07 Charleston Road Registry Inc.
-android
-
-// anquan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-anquan
-
-// anz : 2015-07-31 Australia and New Zealand Banking Group Limited
-anz
-
-// aol : 2015-09-17 AOL Inc.
-aol
-
-// apartments : 2014-12-11 June Maple, LLC
-apartments
-
-// app : 2015-05-14 Charleston Road Registry Inc.
-app
-
-// apple : 2015-05-14 Apple Inc.
-apple
-
-// aquarelle : 2014-07-24 Aquarelle.com
-aquarelle
-
-// arab : 2015-11-12 League of Arab States
-arab
-
-// aramco : 2014-11-20 Aramco Services Company
-aramco
-
-// archi : 2014-02-06 STARTING DOT LIMITED
-archi
-
-// army : 2014-03-06 United TLD Holdco Ltd.
-army
-
-// art : 2016-03-24 UK Creative Ideas Limited
-art
-
-// arte : 2014-12-11 Association Relative à la Télévision Européenne G.E.I.E.
-arte
-
-// asda : 2015-07-31 Wal-Mart Stores, Inc.
-asda
-
-// associates : 2014-03-06 Baxter Hill, LLC
-associates
-
-// athleta : 2015-07-30 The Gap, Inc.
-athleta
-
-// attorney : 2014-03-20
-attorney
-
-// auction : 2014-03-20
-auction
-
-// audi : 2015-05-21 AUDI Aktiengesellschaft
-audi
-
-// audible : 2015-06-25 Amazon EU S.à r.l.
-audible
-
-// audio : 2014-03-20 Uniregistry, Corp.
-audio
-
-// auspost : 2015-08-13 Australian Postal Corporation
-auspost
-
-// author : 2014-12-18 Amazon EU S.à r.l.
-author
-
-// auto : 2014-11-13
-auto
-
-// autos : 2014-01-09 DERAutos, LLC
-autos
-
-// avianca : 2015-01-08 Aerovias del Continente Americano S.A. Avianca
-avianca
-
-// aws : 2015-06-25 Amazon EU S.à r.l.
-aws
-
-// axa : 2013-12-19 AXA SA
-axa
-
-// azure : 2014-12-18 Microsoft Corporation
-azure
-
-// baby : 2015-04-09 Johnson & Johnson Services, Inc.
-baby
-
-// baidu : 2015-01-08 Baidu, Inc.
-baidu
-
-// banamex : 2015-07-30 Citigroup Inc.
-banamex
-
-// bananarepublic : 2015-07-31 The Gap, Inc.
-bananarepublic
-
-// band : 2014-06-12
-band
-
-// bank : 2014-09-25 fTLD Registry Services LLC
-bank
-
-// bar : 2013-12-12 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-bar
-
-// barcelona : 2014-07-24 Municipi de Barcelona
-barcelona
-
-// barclaycard : 2014-11-20 Barclays Bank PLC
-barclaycard
-
-// barclays : 2014-11-20 Barclays Bank PLC
-barclays
-
-// barefoot : 2015-06-11 Gallo Vineyards, Inc.
-barefoot
-
-// bargains : 2013-11-14 Half Hallow, LLC
-bargains
-
-// baseball : 2015-10-29 MLB Advanced Media DH, LLC
-baseball
-
-// basketball : 2015-08-20 Fédération Internationale de Basketball (FIBA)
-basketball
-
-// bauhaus : 2014-04-17 Werkhaus GmbH
-bauhaus
-
-// bayern : 2014-01-23 Bayern Connect GmbH
-bayern
-
-// bbc : 2014-12-18 British Broadcasting Corporation
-bbc
-
-// bbt : 2015-07-23 BB&T Corporation
-bbt
-
-// bbva : 2014-10-02 BANCO BILBAO VIZCAYA ARGENTARIA, S.A.
-bbva
-
-// bcg : 2015-04-02 The Boston Consulting Group, Inc.
-bcg
-
-// bcn : 2014-07-24 Municipi de Barcelona
-bcn
-
-// beats : 2015-05-14 Beats Electronics, LLC
-beats
-
-// beauty : 2015-12-03 L'Oréal
-beauty
-
-// beer : 2014-01-09 Top Level Domain Holdings Limited
-beer
-
-// bentley : 2014-12-18 Bentley Motors Limited
-bentley
-
-// berlin : 2013-10-31 dotBERLIN GmbH & Co. KG
-berlin
-
-// best : 2013-12-19 BestTLD Pty Ltd
-best
-
-// bestbuy : 2015-07-31 BBY Solutions, Inc.
-bestbuy
-
-// bet : 2015-05-07 Afilias plc
-bet
-
-// bharti : 2014-01-09 Bharti Enterprises (Holding) Private Limited
-bharti
-
-// bible : 2014-06-19 American Bible Society
-bible
-
-// bid : 2013-12-19 dot Bid Limited
-bid
-
-// bike : 2013-08-27 Grand Hollow, LLC
-bike
-
-// bing : 2014-12-18 Microsoft Corporation
-bing
-
-// bingo : 2014-12-04 Sand Cedar, LLC
-bingo
-
-// bio : 2014-03-06 STARTING DOT LIMITED
-bio
-
-// black : 2014-01-16 Afilias Limited
-black
-
-// blackfriday : 2014-01-16 Uniregistry, Corp.
-blackfriday
-
-// blanco : 2015-07-16 BLANCO GmbH + Co KG
-blanco
-
-// blockbuster : 2015-07-30 Dish DBS Corporation
-blockbuster
-
-// blog : 2015-05-14
-blog
-
-// bloomberg : 2014-07-17 Bloomberg IP Holdings LLC
-bloomberg
-
-// blue : 2013-11-07 Afilias Limited
-blue
-
-// bms : 2014-10-30 Bristol-Myers Squibb Company
-bms
-
-// bmw : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-bmw
-
-// bnl : 2014-07-24 Banca Nazionale del Lavoro
-bnl
-
-// bnpparibas : 2014-05-29 BNP Paribas
-bnpparibas
-
-// boats : 2014-12-04 DERBoats, LLC
-boats
-
-// boehringer : 2015-07-09 Boehringer Ingelheim International GmbH
-boehringer
-
-// bofa : 2015-07-31 NMS Services, Inc.
-bofa
-
-// bom : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-bom
-
-// bond : 2014-06-05 Bond University Limited
-bond
-
-// boo : 2014-01-30 Charleston Road Registry Inc.
-boo
-
-// book : 2015-08-27 Amazon EU S.à r.l.
-book
-
-// booking : 2015-07-16 Booking.com B.V.
-booking
-
-// boots : 2015-01-08 THE BOOTS COMPANY PLC
-boots
-
-// bosch : 2015-06-18 Robert Bosch GMBH
-bosch
-
-// bostik : 2015-05-28 Bostik SA
-bostik
-
-// boston : 2015-12-10
-boston
-
-// bot : 2014-12-18 Amazon EU S.à r.l.
-bot
-
-// boutique : 2013-11-14 Over Galley, LLC
-boutique
-
-// box : 2015-11-12 NS1 Limited
-box
-
-// bradesco : 2014-12-18 Banco Bradesco S.A.
-bradesco
-
-// bridgestone : 2014-12-18 Bridgestone Corporation
-bridgestone
-
-// broadway : 2014-12-22 Celebrate Broadway, Inc.
-broadway
-
-// broker : 2014-12-11 IG Group Holdings PLC
-broker
-
-// brother : 2015-01-29 Brother Industries, Ltd.
-brother
-
-// brussels : 2014-02-06 DNS.be vzw
-brussels
-
-// budapest : 2013-11-21 Top Level Domain Holdings Limited
-budapest
-
-// bugatti : 2015-07-23 Bugatti International SA
-bugatti
-
-// build : 2013-11-07 Plan Bee LLC
-build
-
-// builders : 2013-11-07 Atomic Madison, LLC
-builders
-
-// business : 2013-11-07 Spring Cross, LLC
-business
-
-// buy : 2014-12-18 Amazon EU S.à r.l.
-buy
-
-// buzz : 2013-10-02 DOTSTRATEGY CO.
-buzz
-
-// bzh : 2014-02-27 Association www.bzh
-bzh
-
-// cab : 2013-10-24 Half Sunset, LLC
-cab
-
-// cafe : 2015-02-11 Pioneer Canyon, LLC
-cafe
-
-// cal : 2014-07-24 Charleston Road Registry Inc.
-cal
-
-// call : 2014-12-18 Amazon EU S.à r.l.
-call
-
-// calvinklein : 2015-07-30 PVH gTLD Holdings LLC
-calvinklein
-
-// cam : 2016-04-21 AC Webconnecting Holding B.V.
-cam
-
-// camera : 2013-08-27 Atomic Maple, LLC
-camera
-
-// camp : 2013-11-07 Delta Dynamite, LLC
-camp
-
-// cancerresearch : 2014-05-15 Australian Cancer Research Foundation
-cancerresearch
-
-// canon : 2014-09-12 Canon Inc.
-canon
-
-// capetown : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-capetown
-
-// capital : 2014-03-06 Delta Mill, LLC
-capital
-
-// capitalone : 2015-08-06 Capital One Financial Corporation
-capitalone
-
-// car : 2015-01-22
-car
-
-// caravan : 2013-12-12 Caravan International, Inc.
-caravan
-
-// cards : 2013-12-05 Foggy Hollow, LLC
-cards
-
-// care : 2014-03-06 Goose Cross
-care
-
-// career : 2013-10-09 dotCareer LLC
-career
-
-// careers : 2013-10-02 Wild Corner, LLC
-careers
-
-// cars : 2014-11-13
-cars
-
-// cartier : 2014-06-23 Richemont DNS Inc.
-cartier
-
-// casa : 2013-11-21 Top Level Domain Holdings Limited
-casa
-
-// case : 2015-09-03 CNH Industrial N.V.
-case
-
-// caseih : 2015-09-03 CNH Industrial N.V.
-caseih
-
-// cash : 2014-03-06 Delta Lake, LLC
-cash
-
-// casino : 2014-12-18 Binky Sky, LLC
-casino
-
-// catering : 2013-12-05 New Falls. LLC
-catering
-
-// catholic : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-catholic
-
-// cba : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-cba
-
-// cbn : 2014-08-22 The Christian Broadcasting Network, Inc.
-cbn
-
-// cbre : 2015-07-02 CBRE, Inc.
-cbre
-
-// cbs : 2015-08-06 CBS Domains Inc.
-cbs
-
-// ceb : 2015-04-09 The Corporate Executive Board Company
-ceb
-
-// center : 2013-11-07 Tin Mill, LLC
-center
-
-// ceo : 2013-11-07 CEOTLD Pty Ltd
-ceo
-
-// cern : 2014-06-05 European Organization for Nuclear Research ("CERN")
-cern
-
-// cfa : 2014-08-28 CFA Institute
-cfa
-
-// cfd : 2014-12-11 IG Group Holdings PLC
-cfd
-
-// chanel : 2015-04-09 Chanel International B.V.
-chanel
-
-// channel : 2014-05-08 Charleston Road Registry Inc.
-channel
-
-// chase : 2015-04-30 JPMorgan Chase & Co.
-chase
-
-// chat : 2014-12-04 Sand Fields, LLC
-chat
-
-// cheap : 2013-11-14 Sand Cover, LLC
-cheap
-
-// chintai : 2015-06-11 CHINTAI Corporation
-chintai
-
-// chloe : 2014-10-16 Richemont DNS Inc.
-chloe
-
-// christmas : 2013-11-21 Uniregistry, Corp.
-christmas
-
-// chrome : 2014-07-24 Charleston Road Registry Inc.
-chrome
-
-// chrysler : 2015-07-30 FCA US LLC.
-chrysler
-
-// church : 2014-02-06 Holly Fields, LLC
-church
-
-// cipriani : 2015-02-19 Hotel Cipriani Srl
-cipriani
-
-// circle : 2014-12-18 Amazon EU S.à r.l.
-circle
-
-// cisco : 2014-12-22 Cisco Technology, Inc.
-cisco
-
-// citadel : 2015-07-23 Citadel Domain LLC
-citadel
-
-// citi : 2015-07-30 Citigroup Inc.
-citi
-
-// citic : 2014-01-09 CITIC Group Corporation
-citic
-
-// city : 2014-05-29 Snow Sky, LLC
-city
-
-// cityeats : 2014-12-11 Lifestyle Domain Holdings, Inc.
-cityeats
-
-// claims : 2014-03-20 Black Corner, LLC
-claims
-
-// cleaning : 2013-12-05 Fox Shadow, LLC
-cleaning
-
-// click : 2014-06-05 Uniregistry, Corp.
-click
-
-// clinic : 2014-03-20 Goose Park, LLC
-clinic
-
-// clinique : 2015-10-01 The Estée Lauder Companies Inc.
-clinique
-
-// clothing : 2013-08-27 Steel Lake, LLC
-clothing
-
-// cloud : 2015-04-16 ARUBA S.p.A.
-cloud
-
-// club : 2013-11-08 .CLUB DOMAINS, LLC
-club
-
-// clubmed : 2015-06-25 Club Méditerranée S.A.
-clubmed
-
-// coach : 2014-10-09 Koko Island, LLC
-coach
-
-// codes : 2013-10-31 Puff Willow, LLC
-codes
-
-// coffee : 2013-10-17 Trixy Cover, LLC
-coffee
-
-// college : 2014-01-16 XYZ.COM LLC
-college
-
-// cologne : 2014-02-05 NetCologne Gesellschaft für Telekommunikation mbH
-cologne
-
-// comcast : 2015-07-23 Comcast IP Holdings I, LLC
-comcast
-
-// commbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-commbank
-
-// community : 2013-12-05 Fox Orchard, LLC
-community
-
-// company : 2013-11-07 Silver Avenue, LLC
-company
-
-// compare : 2015-10-08 iSelect Ltd
-compare
-
-// computer : 2013-10-24 Pine Mill, LLC
-computer
-
-// comsec : 2015-01-08 VeriSign, Inc.
-comsec
-
-// condos : 2013-12-05 Pine House, LLC
-condos
-
-// construction : 2013-09-16 Fox Dynamite, LLC
-construction
-
-// consulting : 2013-12-05
-consulting
-
-// contact : 2015-01-08 Top Level Spectrum, Inc.
-contact
-
-// contractors : 2013-09-10 Magic Woods, LLC
-contractors
-
-// cooking : 2013-11-21 Top Level Domain Holdings Limited
-cooking
-
-// cookingchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
-cookingchannel
-
-// cool : 2013-11-14 Koko Lake, LLC
-cool
-
-// corsica : 2014-09-25 Collectivité Territoriale de Corse
-corsica
-
-// country : 2013-12-19 Top Level Domain Holdings Limited
-country
-
-// coupon : 2015-02-26 Amazon EU S.à r.l.
-coupon
-
-// coupons : 2015-03-26 Black Island, LLC
-coupons
-
-// courses : 2014-12-04 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-courses
-
-// credit : 2014-03-20 Snow Shadow, LLC
-credit
-
-// creditcard : 2014-03-20 Binky Frostbite, LLC
-creditcard
-
-// creditunion : 2015-01-22 CUNA Performance Resources, LLC
-creditunion
-
-// cricket : 2014-10-09 dot Cricket Limited
-cricket
-
-// crown : 2014-10-24 Crown Equipment Corporation
-crown
-
-// crs : 2014-04-03 Federated Co-operatives Limited
-crs
-
-// cruise : 2015-12-10 Viking River Cruises (Bermuda) Ltd.
-cruise
-
-// cruises : 2013-12-05 Spring Way, LLC
-cruises
-
-// csc : 2014-09-25 Alliance-One Services, Inc.
-csc
-
-// cuisinella : 2014-04-03 SALM S.A.S.
-cuisinella
-
-// cymru : 2014-05-08 Nominet UK
-cymru
-
-// cyou : 2015-01-22 Beijing Gamease Age Digital Technology Co., Ltd.
-cyou
-
-// dabur : 2014-02-06 Dabur India Limited
-dabur
-
-// dad : 2014-01-23 Charleston Road Registry Inc.
-dad
-
-// dance : 2013-10-24 United TLD Holdco Ltd.
-dance
-
-// data : 2016-06-02 Dish DBS Corporation
-data
-
-// date : 2014-11-20 dot Date Limited
-date
-
-// dating : 2013-12-05 Pine Fest, LLC
-dating
-
-// datsun : 2014-03-27 NISSAN MOTOR CO., LTD.
-datsun
-
-// day : 2014-01-30 Charleston Road Registry Inc.
-day
-
-// dclk : 2014-11-20 Charleston Road Registry Inc.
-dclk
-
-// dds : 2015-05-07 Top Level Domain Holdings Limited
-dds
-
-// deal : 2015-06-25 Amazon EU S.à r.l.
-deal
-
-// dealer : 2014-12-22 Dealer Dot Com, Inc.
-dealer
-
-// deals : 2014-05-22 Sand Sunset, LLC
-deals
-
-// degree : 2014-03-06
-degree
-
-// delivery : 2014-09-11 Steel Station, LLC
-delivery
-
-// dell : 2014-10-24 Dell Inc.
-dell
-
-// deloitte : 2015-07-31 Deloitte Touche Tohmatsu
-deloitte
-
-// delta : 2015-02-19 Delta Air Lines, Inc.
-delta
-
-// democrat : 2013-10-24 United TLD Holdco Ltd.
-democrat
-
-// dental : 2014-03-20 Tin Birch, LLC
-dental
-
-// dentist : 2014-03-20
-dentist
-
-// desi : 2013-11-14 Desi Networks LLC
-desi
-
-// design : 2014-11-07 Top Level Design, LLC
-design
-
-// dev : 2014-10-16 Charleston Road Registry Inc.
-dev
-
-// dhl : 2015-07-23 Deutsche Post AG
-dhl
-
-// diamonds : 2013-09-22 John Edge, LLC
-diamonds
-
-// diet : 2014-06-26 Uniregistry, Corp.
-diet
-
-// digital : 2014-03-06 Dash Park, LLC
-digital
-
-// direct : 2014-04-10 Half Trail, LLC
-direct
-
-// directory : 2013-09-20 Extra Madison, LLC
-directory
-
-// discount : 2014-03-06 Holly Hill, LLC
-discount
-
-// discover : 2015-07-23 Discover Financial Services
-discover
-
-// dish : 2015-07-30 Dish DBS Corporation
-dish
-
-// diy : 2015-11-05 Lifestyle Domain Holdings, Inc.
-diy
-
-// dnp : 2013-12-13 Dai Nippon Printing Co., Ltd.
-dnp
-
-// docs : 2014-10-16 Charleston Road Registry Inc.
-docs
-
-// doctor : 2016-06-02 Brice Trail, LLC
-doctor
-
-// dodge : 2015-07-30 FCA US LLC.
-dodge
-
-// dog : 2014-12-04 Koko Mill, LLC
-dog
-
-// doha : 2014-09-18 Communications Regulatory Authority (CRA)
-doha
-
-// domains : 2013-10-17 Sugar Cross, LLC
-domains
-
-// dot : 2015-05-21 Dish DBS Corporation
-dot
-
-// download : 2014-11-20 dot Support Limited
-download
-
-// drive : 2015-03-05 Charleston Road Registry Inc.
-drive
-
-// dtv : 2015-06-04 Dish DBS Corporation
-dtv
-
-// dubai : 2015-01-01 Dubai Smart Government Department
-dubai
-
-// duck : 2015-07-23 Johnson Shareholdings, Inc.
-duck
-
-// dunlop : 2015-07-02 The Goodyear Tire & Rubber Company
-dunlop
-
-// duns : 2015-08-06 The Dun & Bradstreet Corporation
-duns
-
-// dupont : 2015-06-25 E. I. du Pont de Nemours and Company
-dupont
-
-// durban : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-durban
-
-// dvag : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-dvag
-
-// dvr : 2016-05-26 Hughes Satellite Systems Corporation
-dvr
-
-// dwg : 2015-07-23 Autodesk, Inc.
-dwg
-
-// earth : 2014-12-04 Interlink Co., Ltd.
-earth
-
-// eat : 2014-01-23 Charleston Road Registry Inc.
-eat
-
-// eco : 2016-07-08 Big Room Inc.
-eco
-
-// edeka : 2014-12-18 EDEKA Verband kaufmännischer Genossenschaften e.V.
-edeka
-
-// education : 2013-11-07 Brice Way, LLC
-education
-
-// email : 2013-10-31 Spring Madison, LLC
-email
-
-// emerck : 2014-04-03 Merck KGaA
-emerck
-
-// energy : 2014-09-11 Binky Birch, LLC
-energy
-
-// engineer : 2014-03-06 United TLD Holdco Ltd.
-engineer
-
-// engineering : 2014-03-06 Romeo Canyon
-engineering
-
-// enterprises : 2013-09-20 Snow Oaks, LLC
-enterprises
-
-// epost : 2015-07-23 Deutsche Post AG
-epost
-
-// epson : 2014-12-04 Seiko Epson Corporation
-epson
-
-// equipment : 2013-08-27 Corn Station, LLC
-equipment
-
-// ericsson : 2015-07-09 Telefonaktiebolaget L M Ericsson
-ericsson
-
-// erni : 2014-04-03 ERNI Group Holding AG
-erni
-
-// esq : 2014-05-08 Charleston Road Registry Inc.
-esq
-
-// estate : 2013-08-27 Trixy Park, LLC
-estate
-
-// esurance : 2015-07-23 Esurance Insurance Company
-esurance
-
-// etisalat : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
-etisalat
-
-// eurovision : 2014-04-24 European Broadcasting Union (EBU)
-eurovision
-
-// eus : 2013-12-12 Puntueus Fundazioa
-eus
-
-// events : 2013-12-05 Pioneer Maple, LLC
-events
-
-// everbank : 2014-05-15 EverBank
-everbank
-
-// exchange : 2014-03-06 Spring Falls, LLC
-exchange
-
-// expert : 2013-11-21 Magic Pass, LLC
-expert
-
-// exposed : 2013-12-05 Victor Beach, LLC
-exposed
-
-// express : 2015-02-11 Sea Sunset, LLC
-express
-
-// extraspace : 2015-05-14 Extra Space Storage LLC
-extraspace
-
-// fage : 2014-12-18 Fage International S.A.
-fage
-
-// fail : 2014-03-06 Atomic Pipe, LLC
-fail
-
-// fairwinds : 2014-11-13 FairWinds Partners, LLC
-fairwinds
-
-// faith : 2014-11-20 dot Faith Limited
-faith
-
-// family : 2015-04-02
-family
-
-// fan : 2014-03-06
-fan
-
-// fans : 2014-11-07 Asiamix Digital Limited
-fans
-
-// farm : 2013-11-07 Just Maple, LLC
-farm
-
-// farmers : 2015-07-09 Farmers Insurance Exchange
-farmers
-
-// fashion : 2014-07-03 Top Level Domain Holdings Limited
-fashion
-
-// fast : 2014-12-18 Amazon EU S.à r.l.
-fast
-
-// fedex : 2015-08-06 Federal Express Corporation
-fedex
-
-// feedback : 2013-12-19 Top Level Spectrum, Inc.
-feedback
-
-// ferrari : 2015-07-31 Fiat Chrysler Automobiles N.V.
-ferrari
-
-// ferrero : 2014-12-18 Ferrero Trading Lux S.A.
-ferrero
-
-// fiat : 2015-07-31 Fiat Chrysler Automobiles N.V.
-fiat
-
-// fidelity : 2015-07-30 Fidelity Brokerage Services LLC
-fidelity
-
-// fido : 2015-08-06 Rogers Communications Partnership
-fido
-
-// film : 2015-01-08 Motion Picture Domain Registry Pty Ltd
-film
-
-// final : 2014-10-16 Núcleo de Informação e Coordenação do Ponto BR - NIC.br
-final
-
-// finance : 2014-03-20 Cotton Cypress, LLC
-finance
-
-// financial : 2014-03-06 Just Cover, LLC
-financial
-
-// fire : 2015-06-25 Amazon EU S.à r.l.
-fire
-
-// firestone : 2014-12-18 Bridgestone Corporation
-firestone
-
-// firmdale : 2014-03-27 Firmdale Holdings Limited
-firmdale
-
-// fish : 2013-12-12 Fox Woods, LLC
-fish
-
-// fishing : 2013-11-21 Top Level Domain Holdings Limited
-fishing
-
-// fit : 2014-11-07 Top Level Domain Holdings Limited
-fit
-
-// fitness : 2014-03-06 Brice Orchard, LLC
-fitness
-
-// flickr : 2015-04-02 Yahoo! Domain Services Inc.
-flickr
-
-// flights : 2013-12-05 Fox Station, LLC
-flights
-
-// flir : 2015-07-23 FLIR Systems, Inc.
-flir
-
-// florist : 2013-11-07 Half Cypress, LLC
-florist
-
-// flowers : 2014-10-09 Uniregistry, Corp.
-flowers
-
-// fly : 2014-05-08 Charleston Road Registry Inc.
-fly
-
-// foo : 2014-01-23 Charleston Road Registry Inc.
-foo
-
-// food : 2016-04-21 Lifestyle Domain Holdings, Inc.
-food
-
-// foodnetwork : 2015-07-02 Lifestyle Domain Holdings, Inc.
-foodnetwork
-
-// football : 2014-12-18 Foggy Farms, LLC
-football
-
-// ford : 2014-11-13 Ford Motor Company
-ford
-
-// forex : 2014-12-11 IG Group Holdings PLC
-forex
-
-// forsale : 2014-05-22
-forsale
-
-// forum : 2015-04-02 Fegistry, LLC
-forum
-
-// foundation : 2013-12-05 John Dale, LLC
-foundation
-
-// fox : 2015-09-11 FOX Registry, LLC
-fox
-
-// free : 2015-12-10 Amazon EU S.à r.l.
-free
-
-// fresenius : 2015-07-30 Fresenius Immobilien-Verwaltungs-GmbH
-fresenius
-
-// frl : 2014-05-15 FRLregistry B.V.
-frl
-
-// frogans : 2013-12-19 OP3FT
-frogans
-
-// frontdoor : 2015-07-02 Lifestyle Domain Holdings, Inc.
-frontdoor
-
-// frontier : 2015-02-05 Frontier Communications Corporation
-frontier
-
-// ftr : 2015-07-16 Frontier Communications Corporation
-ftr
-
-// fujitsu : 2015-07-30 Fujitsu Limited
-fujitsu
-
-// fujixerox : 2015-07-23 Xerox DNHC LLC
-fujixerox
-
-// fun : 2016-01-14
-fun
-
-// fund : 2014-03-20 John Castle, LLC
-fund
-
-// furniture : 2014-03-20 Lone Fields, LLC
-furniture
-
-// futbol : 2013-09-20
-futbol
-
-// fyi : 2015-04-02 Silver Tigers, LLC
-fyi
-
-// gal : 2013-11-07 Asociación puntoGAL
-gal
-
-// gallery : 2013-09-13 Sugar House, LLC
-gallery
-
-// gallo : 2015-06-11 Gallo Vineyards, Inc.
-gallo
-
-// gallup : 2015-02-19 Gallup, Inc.
-gallup
-
-// game : 2015-05-28 Uniregistry, Corp.
-game
-
-// games : 2015-05-28
-games
-
-// gap : 2015-07-31 The Gap, Inc.
-gap
-
-// garden : 2014-06-26 Top Level Domain Holdings Limited
-garden
-
-// gbiz : 2014-07-17 Charleston Road Registry Inc.
-gbiz
-
-// gdn : 2014-07-31 Joint Stock Company "Navigation-information systems"
-gdn
-
-// gea : 2014-12-04 GEA Group Aktiengesellschaft
-gea
-
-// gent : 2014-01-23 COMBELL GROUP NV/SA
-gent
-
-// genting : 2015-03-12 Resorts World Inc Pte. Ltd.
-genting
-
-// george : 2015-07-31 Wal-Mart Stores, Inc.
-george
-
-// ggee : 2014-01-09 GMO Internet, Inc.
-ggee
-
-// gift : 2013-10-17 Uniregistry, Corp.
-gift
-
-// gifts : 2014-07-03 Goose Sky, LLC
-gifts
-
-// gives : 2014-03-06 United TLD Holdco Ltd.
-gives
-
-// giving : 2014-11-13 Giving Limited
-giving
-
-// glade : 2015-07-23 Johnson Shareholdings, Inc.
-glade
-
-// glass : 2013-11-07 Black Cover, LLC
-glass
-
-// gle : 2014-07-24 Charleston Road Registry Inc.
-gle
-
-// global : 2014-04-17 Dot GLOBAL AS
-global
-
-// globo : 2013-12-19 Globo Comunicação e Participações S.A
-globo
-
-// gmail : 2014-05-01 Charleston Road Registry Inc.
-gmail
-
-// gmbh : 2016-01-29 Extra Dynamite, LLC
-gmbh
-
-// gmo : 2014-01-09 GMO Internet, Inc.
-gmo
-
-// gmx : 2014-04-24 1&1 Mail & Media GmbH
-gmx
-
-// godaddy : 2015-07-23 Go Daddy East, LLC
-godaddy
-
-// gold : 2015-01-22 June Edge, LLC
-gold
-
-// goldpoint : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-goldpoint
-
-// golf : 2014-12-18 Lone falls, LLC
-golf
-
-// goo : 2014-12-18 NTT Resonant Inc.
-goo
-
-// goodhands : 2015-07-31 Allstate Fire and Casualty Insurance Company
-goodhands
-
-// goodyear : 2015-07-02 The Goodyear Tire & Rubber Company
-goodyear
-
-// goog : 2014-11-20 Charleston Road Registry Inc.
-goog
-
-// google : 2014-07-24 Charleston Road Registry Inc.
-google
-
-// gop : 2014-01-16 Republican State Leadership Committee, Inc.
-gop
-
-// got : 2014-12-18 Amazon EU S.à r.l.
-got
-
-// grainger : 2015-05-07 Grainger Registry Services, LLC
-grainger
-
-// graphics : 2013-09-13 Over Madison, LLC
-graphics
-
-// gratis : 2014-03-20 Pioneer Tigers, LLC
-gratis
-
-// green : 2014-05-08 Afilias Limited
-green
-
-// gripe : 2014-03-06 Corn Sunset, LLC
-gripe
-
-// grocery : 2016-06-16 Wal-Mart Stores, Inc.
-grocery
-
-// group : 2014-08-15 Romeo Town, LLC
-group
-
-// guardian : 2015-07-30 The Guardian Life Insurance Company of America
-guardian
-
-// gucci : 2014-11-13 Guccio Gucci S.p.a.
-gucci
-
-// guge : 2014-08-28 Charleston Road Registry Inc.
-guge
-
-// guide : 2013-09-13 Snow Moon, LLC
-guide
-
-// guitars : 2013-11-14 Uniregistry, Corp.
-guitars
-
-// guru : 2013-08-27 Pioneer Cypress, LLC
-guru
-
-// hair : 2015-12-03 L'Oréal
-hair
-
-// hamburg : 2014-02-20 Hamburg Top-Level-Domain GmbH
-hamburg
-
-// hangout : 2014-11-13 Charleston Road Registry Inc.
-hangout
-
-// haus : 2013-12-05
-haus
-
-// hbo : 2015-07-30 HBO Registry Services, Inc.
-hbo
-
-// hdfc : 2015-07-30 HOUSING DEVELOPMENT FINANCE CORPORATION LIMITED
-hdfc
-
-// hdfcbank : 2015-02-12 HDFC Bank Limited
-hdfcbank
-
-// health : 2015-02-11 DotHealth, LLC
-health
-
-// healthcare : 2014-06-12 Silver Glen, LLC
-healthcare
-
-// help : 2014-06-26 Uniregistry, Corp.
-help
-
-// helsinki : 2015-02-05 City of Helsinki
-helsinki
-
-// here : 2014-02-06 Charleston Road Registry Inc.
-here
-
-// hermes : 2014-07-10 HERMES INTERNATIONAL
-hermes
-
-// hgtv : 2015-07-02 Lifestyle Domain Holdings, Inc.
-hgtv
-
-// hiphop : 2014-03-06 Uniregistry, Corp.
-hiphop
-
-// hisamitsu : 2015-07-16 Hisamitsu Pharmaceutical Co.,Inc.
-hisamitsu
-
-// hitachi : 2014-10-31 Hitachi, Ltd.
-hitachi
-
-// hiv : 2014-03-13
-hiv
-
-// hkt : 2015-05-14 PCCW-HKT DataCom Services Limited
-hkt
-
-// hockey : 2015-03-19 Half Willow, LLC
-hockey
-
-// holdings : 2013-08-27 John Madison, LLC
-holdings
-
-// holiday : 2013-11-07 Goose Woods, LLC
-holiday
-
-// homedepot : 2015-04-02 Homer TLC, Inc.
-homedepot
-
-// homegoods : 2015-07-16 The TJX Companies, Inc.
-homegoods
-
-// homes : 2014-01-09 DERHomes, LLC
-homes
-
-// homesense : 2015-07-16 The TJX Companies, Inc.
-homesense
-
-// honda : 2014-12-18 Honda Motor Co., Ltd.
-honda
-
-// honeywell : 2015-07-23 Honeywell GTLD LLC
-honeywell
-
-// horse : 2013-11-21 Top Level Domain Holdings Limited
-horse
-
-// hospital : 2016-10-20 Ruby Pike, LLC
-hospital
-
-// host : 2014-04-17 DotHost Inc.
-host
-
-// hosting : 2014-05-29 Uniregistry, Corp.
-hosting
-
-// hot : 2015-08-27 Amazon EU S.à r.l.
-hot
-
-// hoteles : 2015-03-05 Travel Reservations SRL
-hoteles
-
-// hotels : 2016-04-07 Booking.com B.V.
-hotels
-
-// hotmail : 2014-12-18 Microsoft Corporation
-hotmail
-
-// house : 2013-11-07 Sugar Park, LLC
-house
-
-// how : 2014-01-23 Charleston Road Registry Inc.
-how
-
-// hsbc : 2014-10-24 HSBC Holdings PLC
-hsbc
-
-// htc : 2015-04-02 HTC corporation
-htc
-
-// hughes : 2015-07-30 Hughes Satellite Systems Corporation
-hughes
-
-// hyatt : 2015-07-30 Hyatt GTLD, L.L.C.
-hyatt
-
-// hyundai : 2015-07-09 Hyundai Motor Company
-hyundai
-
-// ibm : 2014-07-31 International Business Machines Corporation
-ibm
-
-// icbc : 2015-02-19 Industrial and Commercial Bank of China Limited
-icbc
-
-// ice : 2014-10-30 IntercontinentalExchange, Inc.
-ice
-
-// icu : 2015-01-08 One.com A/S
-icu
-
-// ieee : 2015-07-23 IEEE Global LLC
-ieee
-
-// ifm : 2014-01-30 ifm electronic gmbh
-ifm
-
-// iinet : 2014-07-03 Connect West Pty. Ltd.
-iinet
-
-// ikano : 2015-07-09 Ikano S.A.
-ikano
-
-// imamat : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
-imamat
-
-// imdb : 2015-06-25 Amazon EU S.à r.l.
-imdb
-
-// immo : 2014-07-10 Auburn Bloom, LLC
-immo
-
-// immobilien : 2013-11-07 United TLD Holdco Ltd.
-immobilien
-
-// industries : 2013-12-05 Outer House, LLC
-industries
-
-// infiniti : 2014-03-27 NISSAN MOTOR CO., LTD.
-infiniti
-
-// ing : 2014-01-23 Charleston Road Registry Inc.
-ing
-
-// ink : 2013-12-05 Top Level Design, LLC
-ink
-
-// institute : 2013-11-07 Outer Maple, LLC
-institute
-
-// insurance : 2015-02-19 fTLD Registry Services LLC
-insurance
-
-// insure : 2014-03-20 Pioneer Willow, LLC
-insure
-
-// intel : 2015-08-06 Intel Corporation
-intel
-
-// international : 2013-11-07 Wild Way, LLC
-international
-
-// intuit : 2015-07-30 Intuit Administrative Services, Inc.
-intuit
-
-// investments : 2014-03-20 Holly Glen, LLC
-investments
-
-// ipiranga : 2014-08-28 Ipiranga Produtos de Petroleo S.A.
-ipiranga
-
-// irish : 2014-08-07 Dot-Irish LLC
-irish
-
-// iselect : 2015-02-11 iSelect Ltd
-iselect
-
-// ismaili : 2015-08-06 Fondation Aga Khan (Aga Khan Foundation)
-ismaili
-
-// ist : 2014-08-28 Istanbul Metropolitan Municipality
-ist
-
-// istanbul : 2014-08-28 Istanbul Metropolitan Municipality
-istanbul
-
-// itau : 2014-10-02 Itau Unibanco Holding S.A.
-itau
-
-// itv : 2015-07-09 ITV Services Limited
-itv
-
-// iveco : 2015-09-03 CNH Industrial N.V.
-iveco
-
-// iwc : 2014-06-23 Richemont DNS Inc.
-iwc
-
-// jaguar : 2014-11-13 Jaguar Land Rover Ltd
-jaguar
-
-// java : 2014-06-19 Oracle Corporation
-java
-
-// jcb : 2014-11-20 JCB Co., Ltd.
-jcb
-
-// jcp : 2015-04-23 JCP Media, Inc.
-jcp
-
-// jeep : 2015-07-30 FCA US LLC.
-jeep
-
-// jetzt : 2014-01-09
-jetzt
-
-// jewelry : 2015-03-05 Wild Bloom, LLC
-jewelry
-
-// jio : 2015-04-02 Affinity Names, Inc.
-jio
-
-// jlc : 2014-12-04 Richemont DNS Inc.
-jlc
-
-// jll : 2015-04-02 Jones Lang LaSalle Incorporated
-jll
-
-// jmp : 2015-03-26 Matrix IP LLC
-jmp
-
-// jnj : 2015-06-18 Johnson & Johnson Services, Inc.
-jnj
-
-// joburg : 2014-03-24 ZA Central Registry NPC trading as ZA Central Registry
-joburg
-
-// jot : 2014-12-18 Amazon EU S.à r.l.
-jot
-
-// joy : 2014-12-18 Amazon EU S.à r.l.
-joy
-
-// jpmorgan : 2015-04-30 JPMorgan Chase & Co.
-jpmorgan
-
-// jprs : 2014-09-18 Japan Registry Services Co., Ltd.
-jprs
-
-// juegos : 2014-03-20 Uniregistry, Corp.
-juegos
-
-// juniper : 2015-07-30 JUNIPER NETWORKS, INC.
-juniper
-
-// kaufen : 2013-11-07 United TLD Holdco Ltd.
-kaufen
-
-// kddi : 2014-09-12 KDDI CORPORATION
-kddi
-
-// kerryhotels : 2015-04-30 Kerry Trading Co. Limited
-kerryhotels
-
-// kerrylogistics : 2015-04-09 Kerry Trading Co. Limited
-kerrylogistics
-
-// kerryproperties : 2015-04-09 Kerry Trading Co. Limited
-kerryproperties
-
-// kfh : 2014-12-04 Kuwait Finance House
-kfh
-
-// kia : 2015-07-09 KIA MOTORS CORPORATION
-kia
-
-// kim : 2013-09-23 Afilias Limited
-kim
-
-// kinder : 2014-11-07 Ferrero Trading Lux S.A.
-kinder
-
-// kindle : 2015-06-25 Amazon EU S.à r.l.
-kindle
-
-// kitchen : 2013-09-20 Just Goodbye, LLC
-kitchen
-
-// kiwi : 2013-09-20 DOT KIWI LIMITED
-kiwi
-
-// koeln : 2014-01-09 NetCologne Gesellschaft für Telekommunikation mbH
-koeln
-
-// komatsu : 2015-01-08 Komatsu Ltd.
-komatsu
-
-// kosher : 2015-08-20 Kosher Marketing Assets LLC
-kosher
-
-// kpmg : 2015-04-23 KPMG International Cooperative (KPMG International Genossenschaft)
-kpmg
-
-// kpn : 2015-01-08 Koninklijke KPN N.V.
-kpn
-
-// krd : 2013-12-05 KRG Department of Information Technology
-krd
-
-// kred : 2013-12-19 KredTLD Pty Ltd
-kred
-
-// kuokgroup : 2015-04-09 Kerry Trading Co. Limited
-kuokgroup
-
-// kyoto : 2014-11-07 Academic Institution: Kyoto Jyoho Gakuen
-kyoto
-
-// lacaixa : 2014-01-09 CAIXA D'ESTALVIS I PENSIONS DE BARCELONA
-lacaixa
-
-// ladbrokes : 2015-08-06 LADBROKES INTERNATIONAL PLC
-ladbrokes
-
-// lamborghini : 2015-06-04 Automobili Lamborghini S.p.A.
-lamborghini
-
-// lamer : 2015-10-01 The Estée Lauder Companies Inc.
-lamer
-
-// lancaster : 2015-02-12 LANCASTER
-lancaster
-
-// lancia : 2015-07-31 Fiat Chrysler Automobiles N.V.
-lancia
-
-// lancome : 2015-07-23 L'Oréal
-lancome
-
-// land : 2013-09-10 Pine Moon, LLC
-land
-
-// landrover : 2014-11-13 Jaguar Land Rover Ltd
-landrover
-
-// lanxess : 2015-07-30 LANXESS Corporation
-lanxess
-
-// lasalle : 2015-04-02 Jones Lang LaSalle Incorporated
-lasalle
-
-// lat : 2014-10-16 ECOM-LAC Federaciòn de Latinoamèrica y el Caribe para Internet y el Comercio Electrònico
-lat
-
-// latino : 2015-07-30 Dish DBS Corporation
-latino
-
-// latrobe : 2014-06-16 La Trobe University
-latrobe
-
-// law : 2015-01-22 Minds + Machines Group Limited
-law
-
-// lawyer : 2014-03-20
-lawyer
-
-// lds : 2014-03-20 IRI Domain Management, LLC ("Applicant")
-lds
-
-// lease : 2014-03-06 Victor Trail, LLC
-lease
-
-// leclerc : 2014-08-07 A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc
-leclerc
-
-// lefrak : 2015-07-16 LeFrak Organization, Inc.
-lefrak
-
-// legal : 2014-10-16 Blue Falls, LLC
-legal
-
-// lego : 2015-07-16 LEGO Juris A/S
-lego
-
-// lexus : 2015-04-23 TOYOTA MOTOR CORPORATION
-lexus
-
-// lgbt : 2014-05-08 Afilias Limited
-lgbt
-
-// liaison : 2014-10-02 Liaison Technologies, Incorporated
-liaison
-
-// lidl : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-lidl
-
-// life : 2014-02-06 Trixy Oaks, LLC
-life
-
-// lifeinsurance : 2015-01-15 American Council of Life Insurers
-lifeinsurance
-
-// lifestyle : 2014-12-11 Lifestyle Domain Holdings, Inc.
-lifestyle
-
-// lighting : 2013-08-27 John McCook, LLC
-lighting
-
-// like : 2014-12-18 Amazon EU S.à r.l.
-like
-
-// lilly : 2015-07-31 Eli Lilly and Company
-lilly
-
-// limited : 2014-03-06 Big Fest, LLC
-limited
-
-// limo : 2013-10-17 Hidden Frostbite, LLC
-limo
-
-// lincoln : 2014-11-13 Ford Motor Company
-lincoln
-
-// linde : 2014-12-04 Linde Aktiengesellschaft
-linde
-
-// link : 2013-11-14 Uniregistry, Corp.
-link
-
-// lipsy : 2015-06-25 Lipsy Ltd
-lipsy
-
-// live : 2014-12-04
-live
-
-// living : 2015-07-30 Lifestyle Domain Holdings, Inc.
-living
-
-// lixil : 2015-03-19 LIXIL Group Corporation
-lixil
-
-// loan : 2014-11-20 dot Loan Limited
-loan
-
-// loans : 2014-03-20 June Woods, LLC
-loans
-
-// locker : 2015-06-04 Dish DBS Corporation
-locker
-
-// locus : 2015-06-25 Locus Analytics LLC
-locus
-
-// loft : 2015-07-30 Annco, Inc.
-loft
-
-// lol : 2015-01-30 Uniregistry, Corp.
-lol
-
-// london : 2013-11-14 Dot London Domains Limited
-london
-
-// lotte : 2014-11-07 Lotte Holdings Co., Ltd.
-lotte
-
-// lotto : 2014-04-10 Afilias Limited
-lotto
-
-// love : 2014-12-22 Merchant Law Group LLP
-love
-
-// lpl : 2015-07-30 LPL Holdings, Inc.
-lpl
-
-// lplfinancial : 2015-07-30 LPL Holdings, Inc.
-lplfinancial
-
-// ltd : 2014-09-25 Over Corner, LLC
-ltd
-
-// ltda : 2014-04-17 DOMAIN ROBOT SERVICOS DE HOSPEDAGEM NA INTERNET LTDA
-ltda
-
-// lundbeck : 2015-08-06 H. Lundbeck A/S
-lundbeck
-
-// lupin : 2014-11-07 LUPIN LIMITED
-lupin
-
-// luxe : 2014-01-09 Top Level Domain Holdings Limited
-luxe
-
-// luxury : 2013-10-17 Luxury Partners, LLC
-luxury
-
-// macys : 2015-07-31 Macys, Inc.
-macys
-
-// madrid : 2014-05-01 Comunidad de Madrid
-madrid
-
-// maif : 2014-10-02 Mutuelle Assurance Instituteur France (MAIF)
-maif
-
-// maison : 2013-12-05 Victor Frostbite, LLC
-maison
-
-// makeup : 2015-01-15 L'Oréal
-makeup
-
-// man : 2014-12-04 MAN SE
-man
-
-// management : 2013-11-07 John Goodbye, LLC
-management
-
-// mango : 2013-10-24 PUNTO FA S.L.
-mango
-
-// map : 2016-06-09 Charleston Road Registry Inc.
-map
-
-// market : 2014-03-06
-market
-
-// marketing : 2013-11-07 Fern Pass, LLC
-marketing
-
-// markets : 2014-12-11 IG Group Holdings PLC
-markets
-
-// marriott : 2014-10-09 Marriott Worldwide Corporation
-marriott
-
-// marshalls : 2015-07-16 The TJX Companies, Inc.
-marshalls
-
-// maserati : 2015-07-31 Fiat Chrysler Automobiles N.V.
-maserati
-
-// mattel : 2015-08-06 Mattel Sites, Inc.
-mattel
-
-// mba : 2015-04-02 Lone Hollow, LLC
-mba
-
-// mcd : 2015-07-30 McDonald’s Corporation
-mcd
-
-// mcdonalds : 2015-07-30 McDonald’s Corporation
-mcdonalds
-
-// mckinsey : 2015-07-31 McKinsey Holdings, Inc.
-mckinsey
-
-// med : 2015-08-06 Medistry LLC
-med
-
-// media : 2014-03-06 Grand Glen, LLC
-media
-
-// meet : 2014-01-16
-meet
-
-// melbourne : 2014-05-29 The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation
-melbourne
-
-// meme : 2014-01-30 Charleston Road Registry Inc.
-meme
-
-// memorial : 2014-10-16 Dog Beach, LLC
-memorial
-
-// men : 2015-02-26 Exclusive Registry Limited
-men
-
-// menu : 2013-09-11 Wedding TLD2, LLC
-menu
-
-// meo : 2014-11-07 PT Comunicacoes S.A.
-meo
-
-// merckmsd : 2016-07-14 MSD Registry Holdings, Inc.
-merckmsd
-
-// metlife : 2015-05-07 MetLife Services and Solutions, LLC
-metlife
-
-// miami : 2013-12-19 Top Level Domain Holdings Limited
-miami
-
-// microsoft : 2014-12-18 Microsoft Corporation
-microsoft
-
-// mini : 2014-01-09 Bayerische Motoren Werke Aktiengesellschaft
-mini
-
-// mint : 2015-07-30 Intuit Administrative Services, Inc.
-mint
-
-// mit : 2015-07-02 Massachusetts Institute of Technology
-mit
-
-// mitsubishi : 2015-07-23 Mitsubishi Corporation
-mitsubishi
-
-// mlb : 2015-05-21 MLB Advanced Media DH, LLC
-mlb
-
-// mls : 2015-04-23 The Canadian Real Estate Association
-mls
-
-// mma : 2014-11-07 MMA IARD
-mma
-
-// mobile : 2016-06-02 Dish DBS Corporation
-mobile
-
-// mobily : 2014-12-18 GreenTech Consultancy Company W.L.L.
-mobily
-
-// moda : 2013-11-07 United TLD Holdco Ltd.
-moda
-
-// moe : 2013-11-13 Interlink Co., Ltd.
-moe
-
-// moi : 2014-12-18 Amazon EU S.à r.l.
-moi
-
-// mom : 2015-04-16 Uniregistry, Corp.
-mom
-
-// monash : 2013-09-30 Monash University
-monash
-
-// money : 2014-10-16 Outer McCook, LLC
-money
-
-// monster : 2015-09-11 Monster Worldwide, Inc.
-monster
-
-// montblanc : 2014-06-23 Richemont DNS Inc.
-montblanc
-
-// mopar : 2015-07-30 FCA US LLC.
-mopar
-
-// mormon : 2013-12-05 IRI Domain Management, LLC ("Applicant")
-mormon
-
-// mortgage : 2014-03-20
-mortgage
-
-// moscow : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-moscow
-
-// moto : 2015-06-04
-moto
-
-// motorcycles : 2014-01-09 DERMotorcycles, LLC
-motorcycles
-
-// mov : 2014-01-30 Charleston Road Registry Inc.
-mov
-
-// movie : 2015-02-05 New Frostbite, LLC
-movie
-
-// movistar : 2014-10-16 Telefónica S.A.
-movistar
-
-// msd : 2015-07-23 MSD Registry Holdings, Inc.
-msd
-
-// mtn : 2014-12-04 MTN Dubai Limited
-mtn
-
-// mtpc : 2014-11-20 Mitsubishi Tanabe Pharma Corporation
-mtpc
-
-// mtr : 2015-03-12 MTR Corporation Limited
-mtr
-
-// mutual : 2015-04-02 Northwestern Mutual MU TLD Registry, LLC
-mutual
-
-// mutuelle : 2015-06-18 Fédération Nationale de la Mutualité Française
-mutuelle
-
-// nab : 2015-08-20 National Australia Bank Limited
-nab
-
-// nadex : 2014-12-11 IG Group Holdings PLC
-nadex
-
-// nagoya : 2013-10-24 GMO Registry, Inc.
-nagoya
-
-// nationwide : 2015-07-23 Nationwide Mutual Insurance Company
-nationwide
-
-// natura : 2015-03-12 NATURA COSMÉTICOS S.A.
-natura
-
-// navy : 2014-03-06 United TLD Holdco Ltd.
-navy
-
-// nba : 2015-07-31 NBA REGISTRY, LLC
-nba
-
-// nec : 2015-01-08 NEC Corporation
-nec
-
-// netbank : 2014-06-26 COMMONWEALTH BANK OF AUSTRALIA
-netbank
-
-// netflix : 2015-06-18 Netflix, Inc.
-netflix
-
-// network : 2013-11-14 Trixy Manor, LLC
-network
-
-// neustar : 2013-12-05 NeuStar, Inc.
-neustar
-
-// new : 2014-01-30 Charleston Road Registry Inc.
-new
-
-// newholland : 2015-09-03 CNH Industrial N.V.
-newholland
-
-// news : 2014-12-18
-news
-
-// next : 2015-06-18 Next plc
-next
-
-// nextdirect : 2015-06-18 Next plc
-nextdirect
-
-// nexus : 2014-07-24 Charleston Road Registry Inc.
-nexus
-
-// nfl : 2015-07-23 NFL Reg Ops LLC
-nfl
-
-// ngo : 2014-03-06 Public Interest Registry
-ngo
-
-// nhk : 2014-02-13 Japan Broadcasting Corporation (NHK)
-nhk
-
-// nico : 2014-12-04 DWANGO Co., Ltd.
-nico
-
-// nike : 2015-07-23 NIKE, Inc.
-nike
-
-// nikon : 2015-05-21 NIKON CORPORATION
-nikon
-
-// ninja : 2013-11-07 United TLD Holdco Ltd.
-ninja
-
-// nissan : 2014-03-27 NISSAN MOTOR CO., LTD.
-nissan
-
-// nissay : 2015-10-29 Nippon Life Insurance Company
-nissay
-
-// nokia : 2015-01-08 Nokia Corporation
-nokia
-
-// northwesternmutual : 2015-06-18 Northwestern Mutual Registry, LLC
-northwesternmutual
-
-// norton : 2014-12-04 Symantec Corporation
-norton
-
-// now : 2015-06-25 Amazon EU S.à r.l.
-now
-
-// nowruz : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-nowruz
-
-// nowtv : 2015-05-14 Starbucks (HK) Limited
-nowtv
-
-// nra : 2014-05-22 NRA Holdings Company, INC.
-nra
-
-// nrw : 2013-11-21 Minds + Machines GmbH
-nrw
-
-// ntt : 2014-10-31 NIPPON TELEGRAPH AND TELEPHONE CORPORATION
-ntt
-
-// nyc : 2014-01-23 The City of New York by and through the New York City Department of Information Technology & Telecommunications
-nyc
-
-// obi : 2014-09-25 OBI Group Holding SE & Co. KGaA
-obi
-
-// observer : 2015-04-30
-observer
-
-// off : 2015-07-23 Johnson Shareholdings, Inc.
-off
-
-// office : 2015-03-12 Microsoft Corporation
-office
-
-// okinawa : 2013-12-05 BusinessRalliart Inc.
-okinawa
-
-// olayan : 2015-05-14 Crescent Holding GmbH
-olayan
-
-// olayangroup : 2015-05-14 Crescent Holding GmbH
-olayangroup
-
-// oldnavy : 2015-07-31 The Gap, Inc.
-oldnavy
-
-// ollo : 2015-06-04 Dish DBS Corporation
-ollo
-
-// omega : 2015-01-08 The Swatch Group Ltd
-omega
-
-// one : 2014-11-07 One.com A/S
-one
-
-// ong : 2014-03-06 Public Interest Registry
-ong
-
-// onl : 2013-09-16 I-Registry Ltd.
-onl
-
-// online : 2015-01-15 DotOnline Inc.
-online
-
-// onyourside : 2015-07-23 Nationwide Mutual Insurance Company
-onyourside
-
-// ooo : 2014-01-09 INFIBEAM INCORPORATION LIMITED
-ooo
-
-// open : 2015-07-31 American Express Travel Related Services Company, Inc.
-open
-
-// oracle : 2014-06-19 Oracle Corporation
-oracle
-
-// orange : 2015-03-12 Orange Brand Services Limited
-orange
-
-// organic : 2014-03-27 Afilias Limited
-organic
-
-// orientexpress : 2015-02-05
-orientexpress
-
-// origins : 2015-10-01 The Estée Lauder Companies Inc.
-origins
-
-// osaka : 2014-09-04 Interlink Co., Ltd.
-osaka
-
-// otsuka : 2013-10-11 Otsuka Holdings Co., Ltd.
-otsuka
-
-// ott : 2015-06-04 Dish DBS Corporation
-ott
-
-// ovh : 2014-01-16 OVH SAS
-ovh
-
-// page : 2014-12-04 Charleston Road Registry Inc.
-page
-
-// pamperedchef : 2015-02-05 The Pampered Chef, Ltd.
-pamperedchef
-
-// panasonic : 2015-07-30 Panasonic Corporation
-panasonic
-
-// panerai : 2014-11-07 Richemont DNS Inc.
-panerai
-
-// paris : 2014-01-30 City of Paris
-paris
-
-// pars : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-pars
-
-// partners : 2013-12-05 Magic Glen, LLC
-partners
-
-// parts : 2013-12-05 Sea Goodbye, LLC
-parts
-
-// party : 2014-09-11 Blue Sky Registry Limited
-party
-
-// passagens : 2015-03-05 Travel Reservations SRL
-passagens
-
-// pay : 2015-08-27 Amazon EU S.à r.l.
-pay
-
-// pccw : 2015-05-14 PCCW Enterprises Limited
-pccw
-
-// pet : 2015-05-07 Afilias plc
-pet
-
-// pfizer : 2015-09-11 Pfizer Inc.
-pfizer
-
-// pharmacy : 2014-06-19 National Association of Boards of Pharmacy
-pharmacy
-
-// phd : 2016-07-28 Charleston Road Registry Inc.
-phd
-
-// philips : 2014-11-07 Koninklijke Philips N.V.
-philips
-
-// phone : 2016-06-02 Dish DBS Corporation
-phone
-
-// photo : 2013-11-14 Uniregistry, Corp.
-photo
-
-// photography : 2013-09-20 Sugar Glen, LLC
-photography
-
-// photos : 2013-10-17 Sea Corner, LLC
-photos
-
-// physio : 2014-05-01 PhysBiz Pty Ltd
-physio
-
-// piaget : 2014-10-16 Richemont DNS Inc.
-piaget
-
-// pics : 2013-11-14 Uniregistry, Corp.
-pics
-
-// pictet : 2014-06-26 Pictet Europe S.A.
-pictet
-
-// pictures : 2014-03-06 Foggy Sky, LLC
-pictures
-
-// pid : 2015-01-08 Top Level Spectrum, Inc.
-pid
-
-// pin : 2014-12-18 Amazon EU S.à r.l.
-pin
-
-// ping : 2015-06-11 Ping Registry Provider, Inc.
-ping
-
-// pink : 2013-10-01 Afilias Limited
-pink
-
-// pioneer : 2015-07-16 Pioneer Corporation
-pioneer
-
-// pizza : 2014-06-26 Foggy Moon, LLC
-pizza
-
-// place : 2014-04-24 Snow Galley, LLC
-place
-
-// play : 2015-03-05 Charleston Road Registry Inc.
-play
-
-// playstation : 2015-07-02 Sony Computer Entertainment Inc.
-playstation
-
-// plumbing : 2013-09-10 Spring Tigers, LLC
-plumbing
-
-// plus : 2015-02-05 Sugar Mill, LLC
-plus
-
-// pnc : 2015-07-02 PNC Domain Co., LLC
-pnc
-
-// pohl : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-pohl
-
-// poker : 2014-07-03 Afilias Domains No. 5 Limited
-poker
-
-// politie : 2015-08-20 Politie Nederland
-politie
-
-// porn : 2014-10-16 ICM Registry PN LLC
-porn
-
-// pramerica : 2015-07-30 Prudential Financial, Inc.
-pramerica
-
-// praxi : 2013-12-05 Praxi S.p.A.
-praxi
-
-// press : 2014-04-03 DotPress Inc.
-press
-
-// prime : 2015-06-25 Amazon EU S.à r.l.
-prime
-
-// prod : 2014-01-23 Charleston Road Registry Inc.
-prod
-
-// productions : 2013-12-05 Magic Birch, LLC
-productions
-
-// prof : 2014-07-24 Charleston Road Registry Inc.
-prof
-
-// progressive : 2015-07-23 Progressive Casualty Insurance Company
-progressive
-
-// promo : 2014-12-18
-promo
-
-// properties : 2013-12-05 Big Pass, LLC
-properties
-
-// property : 2014-05-22 Uniregistry, Corp.
-property
-
-// protection : 2015-04-23
-protection
-
-// pru : 2015-07-30 Prudential Financial, Inc.
-pru
-
-// prudential : 2015-07-30 Prudential Financial, Inc.
-prudential
-
-// pub : 2013-12-12 United TLD Holdco Ltd.
-pub
-
-// pwc : 2015-10-29 PricewaterhouseCoopers LLP
-pwc
-
-// qpon : 2013-11-14 dotCOOL, Inc.
-qpon
-
-// quebec : 2013-12-19 PointQuébec Inc
-quebec
-
-// quest : 2015-03-26 Quest ION Limited
-quest
-
-// qvc : 2015-07-30 QVC, Inc.
-qvc
-
-// racing : 2014-12-04 Premier Registry Limited
-racing
-
-// radio : 2016-07-21 European Broadcasting Union (EBU)
-radio
-
-// raid : 2015-07-23 Johnson Shareholdings, Inc.
-raid
-
-// read : 2014-12-18 Amazon EU S.à r.l.
-read
-
-// realestate : 2015-09-11 dotRealEstate LLC
-realestate
-
-// realtor : 2014-05-29 Real Estate Domains LLC
-realtor
-
-// realty : 2015-03-19 Fegistry, LLC
-realty
-
-// recipes : 2013-10-17 Grand Island, LLC
-recipes
-
-// red : 2013-11-07 Afilias Limited
-red
-
-// redstone : 2014-10-31 Redstone Haute Couture Co., Ltd.
-redstone
-
-// redumbrella : 2015-03-26 Travelers TLD, LLC
-redumbrella
-
-// rehab : 2014-03-06 United TLD Holdco Ltd.
-rehab
-
-// reise : 2014-03-13
-reise
-
-// reisen : 2014-03-06 New Cypress, LLC
-reisen
-
-// reit : 2014-09-04 National Association of Real Estate Investment Trusts, Inc.
-reit
-
-// reliance : 2015-04-02 Reliance Industries Limited
-reliance
-
-// ren : 2013-12-12 Beijing Qianxiang Wangjing Technology Development Co., Ltd.
-ren
-
-// rent : 2014-12-04 DERRent, LLC
-rent
-
-// rentals : 2013-12-05 Big Hollow,LLC
-rentals
-
-// repair : 2013-11-07 Lone Sunset, LLC
-repair
-
-// report : 2013-12-05 Binky Glen, LLC
-report
-
-// republican : 2014-03-20 United TLD Holdco Ltd.
-republican
-
-// rest : 2013-12-19 Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable
-rest
-
-// restaurant : 2014-07-03 Snow Avenue, LLC
-restaurant
-
-// review : 2014-11-20 dot Review Limited
-review
-
-// reviews : 2013-09-13
-reviews
-
-// rexroth : 2015-06-18 Robert Bosch GMBH
-rexroth
-
-// rich : 2013-11-21 I-Registry Ltd.
-rich
-
-// richardli : 2015-05-14 Pacific Century Asset Management (HK) Limited
-richardli
-
-// ricoh : 2014-11-20 Ricoh Company, Ltd.
-ricoh
-
-// rightathome : 2015-07-23 Johnson Shareholdings, Inc.
-rightathome
-
-// ril : 2015-04-02 Reliance Industries Limited
-ril
-
-// rio : 2014-02-27 Empresa Municipal de Informática SA - IPLANRIO
-rio
-
-// rip : 2014-07-10 United TLD Holdco Ltd.
-rip
-
-// rmit : 2015-11-19 Royal Melbourne Institute of Technology
-rmit
-
-// rocher : 2014-12-18 Ferrero Trading Lux S.A.
-rocher
-
-// rocks : 2013-11-14
-rocks
-
-// rodeo : 2013-12-19 Top Level Domain Holdings Limited
-rodeo
-
-// rogers : 2015-08-06 Rogers Communications Partnership
-rogers
-
-// room : 2014-12-18 Amazon EU S.à r.l.
-room
-
-// rsvp : 2014-05-08 Charleston Road Registry Inc.
-rsvp
-
-// ruhr : 2013-10-02 regiodot GmbH & Co. KG
-ruhr
-
-// run : 2015-03-19 Snow Park, LLC
-run
-
-// rwe : 2015-04-02 RWE AG
-rwe
-
-// ryukyu : 2014-01-09 BusinessRalliart Inc.
-ryukyu
-
-// saarland : 2013-12-12 dotSaarland GmbH
-saarland
-
-// safe : 2014-12-18 Amazon EU S.à r.l.
-safe
-
-// safety : 2015-01-08 Safety Registry Services, LLC.
-safety
-
-// sakura : 2014-12-18 SAKURA Internet Inc.
-sakura
-
-// sale : 2014-10-16
-sale
-
-// salon : 2014-12-11 Outer Orchard, LLC
-salon
-
-// samsclub : 2015-07-31 Wal-Mart Stores, Inc.
-samsclub
-
-// samsung : 2014-04-03 SAMSUNG SDS CO., LTD
-samsung
-
-// sandvik : 2014-11-13 Sandvik AB
-sandvik
-
-// sandvikcoromant : 2014-11-07 Sandvik AB
-sandvikcoromant
-
-// sanofi : 2014-10-09 Sanofi
-sanofi
-
-// sap : 2014-03-27 SAP AG
-sap
-
-// sapo : 2014-11-07 PT Comunicacoes S.A.
-sapo
-
-// sarl : 2014-07-03 Delta Orchard, LLC
-sarl
-
-// sas : 2015-04-02 Research IP LLC
-sas
-
-// save : 2015-06-25 Amazon EU S.à r.l.
-save
-
-// saxo : 2014-10-31 Saxo Bank A/S
-saxo
-
-// sbi : 2015-03-12 STATE BANK OF INDIA
-sbi
-
-// sbs : 2014-11-07 SPECIAL BROADCASTING SERVICE CORPORATION
-sbs
-
-// sca : 2014-03-13 SVENSKA CELLULOSA AKTIEBOLAGET SCA (publ)
-sca
-
-// scb : 2014-02-20 The Siam Commercial Bank Public Company Limited ("SCB")
-scb
-
-// schaeffler : 2015-08-06 Schaeffler Technologies AG & Co. KG
-schaeffler
-
-// schmidt : 2014-04-03 SALM S.A.S.
-schmidt
-
-// scholarships : 2014-04-24 Scholarships.com, LLC
-scholarships
-
-// school : 2014-12-18 Little Galley, LLC
-school
-
-// schule : 2014-03-06 Outer Moon, LLC
-schule
-
-// schwarz : 2014-09-18 Schwarz Domains und Services GmbH & Co. KG
-schwarz
-
-// science : 2014-09-11 dot Science Limited
-science
-
-// scjohnson : 2015-07-23 Johnson Shareholdings, Inc.
-scjohnson
-
-// scor : 2014-10-31 SCOR SE
-scor
-
-// scot : 2014-01-23 Dot Scot Registry Limited
-scot
-
-// search : 2016-06-09 Charleston Road Registry Inc.
-search
-
-// seat : 2014-05-22 SEAT, S.A. (Sociedad Unipersonal)
-seat
-
-// secure : 2015-08-27 Amazon EU S.à r.l.
-secure
-
-// security : 2015-05-14
-security
-
-// seek : 2014-12-04 Seek Limited
-seek
-
-// select : 2015-10-08 iSelect Ltd
-select
-
-// sener : 2014-10-24 Sener Ingeniería y Sistemas, S.A.
-sener
-
-// services : 2014-02-27 Fox Castle, LLC
-services
-
-// ses : 2015-07-23 SES
-ses
-
-// seven : 2015-08-06 Seven West Media Ltd
-seven
-
-// sew : 2014-07-17 SEW-EURODRIVE GmbH & Co KG
-sew
-
-// sex : 2014-11-13 ICM Registry SX LLC
-sex
-
-// sexy : 2013-09-11 Uniregistry, Corp.
-sexy
-
-// sfr : 2015-08-13 Societe Francaise du Radiotelephone - SFR
-sfr
-
-// shangrila : 2015-09-03 Shangri‐La International Hotel Management Limited
-shangrila
-
-// sharp : 2014-05-01 Sharp Corporation
-sharp
-
-// shaw : 2015-04-23 Shaw Cablesystems G.P.
-shaw
-
-// shell : 2015-07-30 Shell Information Technology International Inc
-shell
-
-// shia : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-shia
-
-// shiksha : 2013-11-14 Afilias Limited
-shiksha
-
-// shoes : 2013-10-02 Binky Galley, LLC
-shoes
-
-// shop : 2016-04-08 GMO Registry, Inc.
-shop
-
-// shopping : 2016-03-31
-shopping
-
-// shouji : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-shouji
-
-// show : 2015-03-05 Snow Beach, LLC
-show
-
-// showtime : 2015-08-06 CBS Domains Inc.
-showtime
-
-// shriram : 2014-01-23 Shriram Capital Ltd.
-shriram
-
-// silk : 2015-06-25 Amazon EU S.à r.l.
-silk
-
-// sina : 2015-03-12 Sina Corporation
-sina
-
-// singles : 2013-08-27 Fern Madison, LLC
-singles
-
-// site : 2015-01-15 DotSite Inc.
-site
-
-// ski : 2015-04-09 STARTING DOT LIMITED
-ski
-
-// skin : 2015-01-15 L'Oréal
-skin
-
-// sky : 2014-06-19 Sky IP International Ltd, a company incorporated in England and Wales, operating via its registered Swiss branch
-sky
-
-// skype : 2014-12-18 Microsoft Corporation
-skype
-
-// sling : 2015-07-30 Hughes Satellite Systems Corporation
-sling
-
-// smart : 2015-07-09 Smart Communications, Inc. (SMART)
-smart
-
-// smile : 2014-12-18 Amazon EU S.à r.l.
-smile
-
-// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
-sncf
-
-// soccer : 2015-03-26 Foggy Shadow, LLC
-soccer
-
-// social : 2013-11-07 United TLD Holdco Ltd.
-social
-
-// softbank : 2015-07-02 SoftBank Corp.
-softbank
-
-// software : 2014-03-20
-software
-
-// sohu : 2013-12-19 Sohu.com Limited
-sohu
-
-// solar : 2013-11-07 Ruby Town, LLC
-solar
-
-// solutions : 2013-11-07 Silver Cover, LLC
-solutions
-
-// song : 2015-02-26 Amazon EU S.à r.l.
-song
-
-// sony : 2015-01-08 Sony Corporation
-sony
-
-// soy : 2014-01-23 Charleston Road Registry Inc.
-soy
-
-// space : 2014-04-03 DotSpace Inc.
-space
-
-// spiegel : 2014-02-05 SPIEGEL-Verlag Rudolf Augstein GmbH & Co. KG
-spiegel
-
-// spot : 2015-02-26 Amazon EU S.à r.l.
-spot
-
-// spreadbetting : 2014-12-11 IG Group Holdings PLC
-spreadbetting
-
-// srl : 2015-05-07 mySRL GmbH
-srl
-
-// srt : 2015-07-30 FCA US LLC.
-srt
-
-// stada : 2014-11-13 STADA Arzneimittel AG
-stada
-
-// staples : 2015-07-30 Staples, Inc.
-staples
-
-// star : 2015-01-08 Star India Private Limited
-star
-
-// starhub : 2015-02-05 StarHub Ltd
-starhub
-
-// statebank : 2015-03-12 STATE BANK OF INDIA
-statebank
-
-// statefarm : 2015-07-30 State Farm Mutual Automobile Insurance Company
-statefarm
-
-// statoil : 2014-12-04 Statoil ASA
-statoil
-
-// stc : 2014-10-09 Saudi Telecom Company
-stc
-
-// stcgroup : 2014-10-09 Saudi Telecom Company
-stcgroup
-
-// stockholm : 2014-12-18 Stockholms kommun
-stockholm
-
-// storage : 2014-12-22 Self Storage Company LLC
-storage
-
-// store : 2015-04-09 DotStore Inc.
-store
-
-// stream : 2016-01-08 dot Stream Limited
-stream
-
-// studio : 2015-02-11
-studio
-
-// study : 2014-12-11 OPEN UNIVERSITIES AUSTRALIA PTY LTD
-study
-
-// style : 2014-12-04 Binky Moon, LLC
-style
-
-// sucks : 2014-12-22 Vox Populi Registry Inc.
-sucks
-
-// supplies : 2013-12-19 Atomic Fields, LLC
-supplies
-
-// supply : 2013-12-19 Half Falls, LLC
-supply
-
-// support : 2013-10-24 Grand Orchard, LLC
-support
-
-// surf : 2014-01-09 Top Level Domain Holdings Limited
-surf
-
-// surgery : 2014-03-20 Tin Avenue, LLC
-surgery
-
-// suzuki : 2014-02-20 SUZUKI MOTOR CORPORATION
-suzuki
-
-// swatch : 2015-01-08 The Swatch Group Ltd
-swatch
-
-// swiftcover : 2015-07-23 Swiftcover Insurance Services Limited
-swiftcover
-
-// swiss : 2014-10-16 Swiss Confederation
-swiss
-
-// sydney : 2014-09-18 State of New South Wales, Department of Premier and Cabinet
-sydney
-
-// symantec : 2014-12-04 Symantec Corporation
-symantec
-
-// systems : 2013-11-07 Dash Cypress, LLC
-systems
-
-// tab : 2014-12-04 Tabcorp Holdings Limited
-tab
-
-// taipei : 2014-07-10 Taipei City Government
-taipei
-
-// talk : 2015-04-09 Amazon EU S.à r.l.
-talk
-
-// taobao : 2015-01-15 Alibaba Group Holding Limited
-taobao
-
-// target : 2015-07-31 Target Domain Holdings, LLC
-target
-
-// tatamotors : 2015-03-12 Tata Motors Ltd
-tatamotors
-
-// tatar : 2014-04-24 Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic"
-tatar
-
-// tattoo : 2013-08-30 Uniregistry, Corp.
-tattoo
-
-// tax : 2014-03-20 Storm Orchard, LLC
-tax
-
-// taxi : 2015-03-19 Pine Falls, LLC
-taxi
-
-// tci : 2014-09-12 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-tci
-
-// tdk : 2015-06-11 TDK Corporation
-tdk
-
-// team : 2015-03-05 Atomic Lake, LLC
-team
-
-// tech : 2015-01-30 Dot Tech LLC
-tech
-
-// technology : 2013-09-13 Auburn Falls
-technology
-
-// telecity : 2015-02-19 TelecityGroup International Limited
-telecity
-
-// telefonica : 2014-10-16 Telefónica S.A.
-telefonica
-
-// temasek : 2014-08-07 Temasek Holdings (Private) Limited
-temasek
-
-// tennis : 2014-12-04 Cotton Bloom, LLC
-tennis
-
-// teva : 2015-07-02 Teva Pharmaceutical Industries Limited
-teva
-
-// thd : 2015-04-02 Homer TLC, Inc.
-thd
-
-// theater : 2015-03-19 Blue Tigers, LLC
-theater
-
-// theatre : 2015-05-07
-theatre
-
-// theguardian : 2015-04-30 Guardian News and Media Limited
-theguardian
-
-// tiaa : 2015-07-23 Teachers Insurance and Annuity Association of America
-tiaa
-
-// tickets : 2015-02-05 Accent Media Limited
-tickets
-
-// tienda : 2013-11-14 Victor Manor, LLC
-tienda
-
-// tiffany : 2015-01-30 Tiffany and Company
-tiffany
-
-// tips : 2013-09-20 Corn Willow, LLC
-tips
-
-// tires : 2014-11-07 Dog Edge, LLC
-tires
-
-// tirol : 2014-04-24 punkt Tirol GmbH
-tirol
-
-// tjmaxx : 2015-07-16 The TJX Companies, Inc.
-tjmaxx
-
-// tjx : 2015-07-16 The TJX Companies, Inc.
-tjx
-
-// tkmaxx : 2015-07-16 The TJX Companies, Inc.
-tkmaxx
-
-// tmall : 2015-01-15 Alibaba Group Holding Limited
-tmall
-
-// today : 2013-09-20 Pearl Woods, LLC
-today
-
-// tokyo : 2013-11-13 GMO Registry, Inc.
-tokyo
-
-// tools : 2013-11-21 Pioneer North, LLC
-tools
-
-// top : 2014-03-20 Jiangsu Bangning Science & Technology Co.,Ltd.
-top
-
-// toray : 2014-12-18 Toray Industries, Inc.
-toray
-
-// toshiba : 2014-04-10 TOSHIBA Corporation
-toshiba
-
-// total : 2015-08-06 Total SA
-total
-
-// tours : 2015-01-22 Sugar Station, LLC
-tours
-
-// town : 2014-03-06 Koko Moon, LLC
-town
-
-// toyota : 2015-04-23 TOYOTA MOTOR CORPORATION
-toyota
-
-// toys : 2014-03-06 Pioneer Orchard, LLC
-toys
-
-// trade : 2014-01-23 Elite Registry Limited
-trade
-
-// trading : 2014-12-11 IG Group Holdings PLC
-trading
-
-// training : 2013-11-07 Wild Willow, LLC
-training
-
-// travelchannel : 2015-07-02 Lifestyle Domain Holdings, Inc.
-travelchannel
-
-// travelers : 2015-03-26 Travelers TLD, LLC
-travelers
-
-// travelersinsurance : 2015-03-26 Travelers TLD, LLC
-travelersinsurance
-
-// trust : 2014-10-16
-trust
-
-// trv : 2015-03-26 Travelers TLD, LLC
-trv
-
-// tube : 2015-06-11 Latin American Telecom LLC
-tube
-
-// tui : 2014-07-03 TUI AG
-tui
-
-// tunes : 2015-02-26 Amazon EU S.à r.l.
-tunes
-
-// tushu : 2014-12-18 Amazon EU S.à r.l.
-tushu
-
-// tvs : 2015-02-19 T V SUNDRAM IYENGAR  & SONS LIMITED
-tvs
-
-// ubank : 2015-08-20 National Australia Bank Limited
-ubank
-
-// ubs : 2014-12-11 UBS AG
-ubs
-
-// uconnect : 2015-07-30 FCA US LLC.
-uconnect
-
-// unicom : 2015-10-15 China United Network Communications Corporation Limited
-unicom
-
-// university : 2014-03-06 Little Station, LLC
-university
-
-// uno : 2013-09-11 Dot Latin LLC
-uno
-
-// uol : 2014-05-01 UBN INTERNET LTDA.
-uol
-
-// ups : 2015-06-25 UPS Market Driver, Inc.
-ups
-
-// vacations : 2013-12-05 Atomic Tigers, LLC
-vacations
-
-// vana : 2014-12-11 Lifestyle Domain Holdings, Inc.
-vana
-
-// vanguard : 2015-09-03 The Vanguard Group, Inc.
-vanguard
-
-// vegas : 2014-01-16 Dot Vegas, Inc.
-vegas
-
-// ventures : 2013-08-27 Binky Lake, LLC
-ventures
-
-// verisign : 2015-08-13 VeriSign, Inc.
-verisign
-
-// versicherung : 2014-03-20 dotversicherung-registry GmbH
-versicherung
-
-// vet : 2014-03-06
-vet
-
-// viajes : 2013-10-17 Black Madison, LLC
-viajes
-
-// video : 2014-10-16
-video
-
-// vig : 2015-05-14 VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe
-vig
-
-// viking : 2015-04-02 Viking River Cruises (Bermuda) Ltd.
-viking
-
-// villas : 2013-12-05 New Sky, LLC
-villas
-
-// vin : 2015-06-18 Holly Shadow, LLC
-vin
-
-// vip : 2015-01-22 Minds + Machines Group Limited
-vip
-
-// virgin : 2014-09-25 Virgin Enterprises Limited
-virgin
-
-// visa : 2015-07-30 Visa Worldwide Pte. Limited
-visa
-
-// vision : 2013-12-05 Koko Station, LLC
-vision
-
-// vista : 2014-09-18 Vistaprint Limited
-vista
-
-// vistaprint : 2014-09-18 Vistaprint Limited
-vistaprint
-
-// viva : 2014-11-07 Saudi Telecom Company
-viva
-
-// vivo : 2015-07-31 Telefonica Brasil S.A.
-vivo
-
-// vlaanderen : 2014-02-06 DNS.be vzw
-vlaanderen
-
-// vodka : 2013-12-19 Top Level Domain Holdings Limited
-vodka
-
-// volkswagen : 2015-05-14 Volkswagen Group of America Inc.
-volkswagen
-
-// volvo : 2015-11-12 Volvo Holding Sverige Aktiebolag
-volvo
-
-// vote : 2013-11-21 Monolith Registry LLC
-vote
-
-// voting : 2013-11-13 Valuetainment Corp.
-voting
-
-// voto : 2013-11-21 Monolith Registry LLC
-voto
-
-// voyage : 2013-08-27 Ruby House, LLC
-voyage
-
-// vuelos : 2015-03-05 Travel Reservations SRL
-vuelos
-
-// wales : 2014-05-08 Nominet UK
-wales
-
-// walmart : 2015-07-31 Wal-Mart Stores, Inc.
-walmart
-
-// walter : 2014-11-13 Sandvik AB
-walter
-
-// wang : 2013-10-24 Zodiac Leo Limited
-wang
-
-// wanggou : 2014-12-18 Amazon EU S.à r.l.
-wanggou
-
-// warman : 2015-06-18 Weir Group IP Limited
-warman
-
-// watch : 2013-11-14 Sand Shadow, LLC
-watch
-
-// watches : 2014-12-22 Richemont DNS Inc.
-watches
-
-// weather : 2015-01-08 The Weather Channel, LLC
-weather
-
-// weatherchannel : 2015-03-12 The Weather Channel, LLC
-weatherchannel
-
-// webcam : 2014-01-23 dot Webcam Limited
-webcam
-
-// weber : 2015-06-04 Saint-Gobain Weber SA
-weber
-
-// website : 2014-04-03 DotWebsite Inc.
-website
-
-// wed : 2013-10-01 Atgron, Inc.
-wed
-
-// wedding : 2014-04-24 Top Level Domain Holdings Limited
-wedding
-
-// weibo : 2015-03-05 Sina Corporation
-weibo
-
-// weir : 2015-01-29 Weir Group IP Limited
-weir
-
-// whoswho : 2014-02-20 Who's Who Registry
-whoswho
-
-// wien : 2013-10-28 punkt.wien GmbH
-wien
-
-// wiki : 2013-11-07 Top Level Design, LLC
-wiki
-
-// williamhill : 2014-03-13 William Hill Organization Limited
-williamhill
-
-// win : 2014-11-20 First Registry Limited
-win
-
-// windows : 2014-12-18 Microsoft Corporation
-windows
-
-// wine : 2015-06-18 June Station, LLC
-wine
-
-// winners : 2015-07-16 The TJX Companies, Inc.
-winners
-
-// wme : 2014-02-13 William Morris Endeavor Entertainment, LLC
-wme
-
-// wolterskluwer : 2015-08-06 Wolters Kluwer N.V.
-wolterskluwer
-
-// woodside : 2015-07-09 Woodside Petroleum Limited
-woodside
-
-// work : 2013-12-19 Top Level Domain Holdings Limited
-work
-
-// works : 2013-11-14 Little Dynamite, LLC
-works
-
-// world : 2014-06-12 Bitter Fields, LLC
-world
-
-// wow : 2015-10-08 Amazon EU S.à r.l.
-wow
-
-// wtc : 2013-12-19 World Trade Centers Association, Inc.
-wtc
-
-// wtf : 2014-03-06 Hidden Way, LLC
-wtf
-
-// xbox : 2014-12-18 Microsoft Corporation
-xbox
-
-// xerox : 2014-10-24 Xerox DNHC LLC
-xerox
-
-// xfinity : 2015-07-09 Comcast IP Holdings I, LLC
-xfinity
-
-// xihuan : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-xihuan
-
-// xin : 2014-12-11 Elegant Leader Limited
-xin
-
-// xn--11b4c3d : 2015-01-15 VeriSign Sarl
-xn--11b4c3d
-कॉम
-
-// xn--1ck2e1b : 2015-02-26 Amazon EU S.à r.l.
-xn--1ck2e1b
-セール
-
-// xn--1qqw23a : 2014-01-09 Guangzhou YU Wei Information Technology Co., Ltd.
-xn--1qqw23a
-佛山
-
-// xn--30rr7y : 2014-06-12 Excellent First Limited
-xn--30rr7y
-慈善
-
-// xn--3bst00m : 2013-09-13 Eagle Horizon Limited
-xn--3bst00m
-集团
-
-// xn--3ds443g : 2013-09-08 TLD REGISTRY LIMITED
-xn--3ds443g
-在线
-
-// xn--3oq18vl8pn36a : 2015-07-02 Volkswagen (China) Investment Co., Ltd.
-xn--3oq18vl8pn36a
-大众汽车
-
-// xn--3pxu8k : 2015-01-15 VeriSign Sarl
-xn--3pxu8k
-点看
-
-// xn--42c2d9a : 2015-01-15 VeriSign Sarl
-xn--42c2d9a
-คอม
-
-// xn--45q11c : 2013-11-21 Zodiac Scorpio Limited
-xn--45q11c
-八卦
-
-// xn--4gbrim : 2013-10-04 Suhub Electronic Establishment
-xn--4gbrim
-موقع
-
-// xn--4gq48lf9j : 2015-07-31 Wal-Mart Stores, Inc.
-xn--4gq48lf9j
-一号店
-
-// xn--55qw42g : 2013-11-08 China Organizational Name Administration Center
-xn--55qw42g
-公益
-
-// xn--55qx5d : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-xn--55qx5d
-公司
-
-// xn--5su34j936bgsg : 2015-09-03 Shangri‐La International Hotel Management Limited
-xn--5su34j936bgsg
-香格里拉
-
-// xn--5tzm5g : 2014-12-22 Global Website TLD Asia Limited
-xn--5tzm5g
-网站
-
-// xn--6frz82g : 2013-09-23 Afilias Limited
-xn--6frz82g
-移动
-
-// xn--6qq986b3xl : 2013-09-13 Tycoon Treasure Limited
-xn--6qq986b3xl
-我爱你
-
-// xn--80adxhks : 2013-12-19 Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID)
-xn--80adxhks
-москва
-
-// xn--80aqecdr1a : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-xn--80aqecdr1a
-католик
-
-// xn--80asehdb : 2013-07-14 CORE Association
-xn--80asehdb
-онлайн
-
-// xn--80aswg : 2013-07-14 CORE Association
-xn--80aswg
-сайт
-
-// xn--8y0a063a : 2015-03-26 China United Network Communications Corporation Limited
-xn--8y0a063a
-联通
-
-// xn--9dbq2a : 2015-01-15 VeriSign Sarl
-xn--9dbq2a
-קום
-
-// xn--9et52u : 2014-06-12 RISE VICTORY LIMITED
-xn--9et52u
-时尚
-
-// xn--9krt00a : 2015-03-12 Sina Corporation
-xn--9krt00a
-微博
-
-// xn--b4w605ferd : 2014-08-07 Temasek Holdings (Private) Limited
-xn--b4w605ferd
-淡马锡
-
-// xn--bck1b9a5dre4c : 2015-02-26 Amazon EU S.à r.l.
-xn--bck1b9a5dre4c
-ファッション
-
-// xn--c1avg : 2013-11-14 Public Interest Registry
-xn--c1avg
-орг
-
-// xn--c2br7g : 2015-01-15 VeriSign Sarl
-xn--c2br7g
-नेट
-
-// xn--cck2b3b : 2015-02-26 Amazon EU S.à r.l.
-xn--cck2b3b
-ストア
-
-// xn--cg4bki : 2013-09-27 SAMSUNG SDS CO., LTD
-xn--cg4bki
-삼성
-
-// xn--czr694b : 2014-01-16 Dot Trademark TLD Holding Company Limted
-xn--czr694b
-商标
-
-// xn--czrs0t : 2013-12-19 Wild Island, LLC
-xn--czrs0t
-商店
-
-// xn--czru2d : 2013-11-21 Zodiac Capricorn Limited
-xn--czru2d
-商城
-
-// xn--d1acj3b : 2013-11-20 The Foundation for Network Initiatives “The Smart Internet”
-xn--d1acj3b
-дети
-
-// xn--eckvdtc9d : 2014-12-18 Amazon EU S.à r.l.
-xn--eckvdtc9d
-ポイント
-
-// xn--efvy88h : 2014-08-22 Xinhua News Agency Guangdong Branch 新华通讯社广东分社
-xn--efvy88h
-新闻
-
-// xn--estv75g : 2015-02-19 Industrial and Commercial Bank of China Limited
-xn--estv75g
-工行
-
-// xn--fct429k : 2015-04-09 Amazon EU S.à r.l.
-xn--fct429k
-家電
-
-// xn--fhbei : 2015-01-15 VeriSign Sarl
-xn--fhbei
-كوم
-
-// xn--fiq228c5hs : 2013-09-08 TLD REGISTRY LIMITED
-xn--fiq228c5hs
-中文网
-
-// xn--fiq64b : 2013-10-14 CITIC Group Corporation
-xn--fiq64b
-中信
-
-// xn--fjq720a : 2014-05-22 Will Bloom, LLC
-xn--fjq720a
-娱乐
-
-// xn--flw351e : 2014-07-31 Charleston Road Registry Inc.
-xn--flw351e
-谷歌
-
-// xn--fzys8d69uvgm : 2015-05-14 PCCW Enterprises Limited
-xn--fzys8d69uvgm
-電訊盈科
-
-// xn--g2xx48c : 2015-01-30 Minds + Machines Group Limited
-xn--g2xx48c
-购物
-
-// xn--gckr3f0f : 2015-02-26 Amazon EU S.à r.l.
-xn--gckr3f0f
-クラウド
-
-// xn--gk3at1e : 2015-10-08 Amazon EU S.à r.l.
-xn--gk3at1e
-通販
-
-// xn--hxt814e : 2014-05-15 Zodiac Libra Limited
-xn--hxt814e
-网店
-
-// xn--i1b6b1a6a2e : 2013-11-14 Public Interest Registry
-xn--i1b6b1a6a2e
-संगठन
-
-// xn--imr513n : 2014-12-11 Dot Trademark TLD Holding Company Limted
-xn--imr513n
-餐厅
-
-// xn--io0a7i : 2013-11-14 Computer Network Information Center of Chinese Academy of Sciences (China Internet Network Information Center)
-xn--io0a7i
-网络
-
-// xn--j1aef : 2015-01-15 VeriSign Sarl
-xn--j1aef
-ком
-
-// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
-xn--jlq61u9w7b
-诺基亚
-
-// xn--jvr189m : 2015-02-26 Amazon EU S.à r.l.
-xn--jvr189m
-食品
-
-// xn--kcrx77d1x4a : 2014-11-07 Koninklijke Philips N.V.
-xn--kcrx77d1x4a
-飞利浦
-
-// xn--kpu716f : 2014-12-22 Richemont DNS Inc.
-xn--kpu716f
-手表
-
-// xn--kput3i : 2014-02-13 Beijing RITT-Net Technology Development Co., Ltd
-xn--kput3i
-手机
-
-// xn--mgba3a3ejt : 2014-11-20 Aramco Services Company
-xn--mgba3a3ejt
-ارامكو
-
-// xn--mgba7c0bbn0a : 2015-05-14 Crescent Holding GmbH
-xn--mgba7c0bbn0a
-العليان
-
-// xn--mgbaakc7dvf : 2015-09-03 Emirates Telecommunications Corporation (trading as Etisalat)
-xn--mgbaakc7dvf
-اتصالات
-
-// xn--mgbab2bd : 2013-10-31 CORE Association
-xn--mgbab2bd
-بازار
-
-// xn--mgbb9fbpob : 2014-12-18 GreenTech Consultancy Company W.L.L.
-xn--mgbb9fbpob
-موبايلي
-
-// xn--mgbca7dzdo : 2015-07-30 Abu Dhabi Systems and Information Centre
-xn--mgbca7dzdo
-ابوظبي
-
-// xn--mgbi4ecexp : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-xn--mgbi4ecexp
-كاثوليك
-
-// xn--mgbt3dhd : 2014-09-04 Asia Green IT System Bilgisayar San. ve Tic. Ltd. Sti.
-xn--mgbt3dhd
-همراه
-
-// xn--mk1bu44c : 2015-01-15 VeriSign Sarl
-xn--mk1bu44c
-닷컴
-
-// xn--mxtq1m : 2014-03-06 Net-Chinese Co., Ltd.
-xn--mxtq1m
-政府
-
-// xn--ngbc5azd : 2013-07-13 International Domain Registry Pty. Ltd.
-xn--ngbc5azd
-شبكة
-
-// xn--ngbe9e0a : 2014-12-04 Kuwait Finance House
-xn--ngbe9e0a
-بيتك
-
-// xn--ngbrx : 2015-11-12 League of Arab States
-xn--ngbrx
-عرب
-
-// xn--nqv7f : 2013-11-14 Public Interest Registry
-xn--nqv7f
-机构
-
-// xn--nqv7fs00ema : 2013-11-14 Public Interest Registry
-xn--nqv7fs00ema
-组织机构
-
-// xn--nyqy26a : 2014-11-07 Stable Tone Limited
-xn--nyqy26a
-健康
-
-// xn--p1acf : 2013-12-12 Rusnames Limited
-xn--p1acf
-рус
-
-// xn--pbt977c : 2014-12-22 Richemont DNS Inc.
-xn--pbt977c
-珠宝
-
-// xn--pssy2u : 2015-01-15 VeriSign Sarl
-xn--pssy2u
-大拿
-
-// xn--q9jyb4c : 2013-09-17 Charleston Road Registry Inc.
-xn--q9jyb4c
-みんな
-
-// xn--qcka1pmc : 2014-07-31 Charleston Road Registry Inc.
-xn--qcka1pmc
-グーグル
-
-// xn--rhqv96g : 2013-09-11 Stable Tone Limited
-xn--rhqv96g
-世界
-
-// xn--rovu88b : 2015-02-26 Amazon EU S.à r.l.
-xn--rovu88b
-書籍
-
-// xn--ses554g : 2014-01-16
-xn--ses554g
-网址
-
-// xn--t60b56a : 2015-01-15 VeriSign Sarl
-xn--t60b56a
-닷넷
-
-// xn--tckwe : 2015-01-15 VeriSign Sarl
-xn--tckwe
-コム
-
-// xn--tiq49xqyj : 2015-10-21 Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication)
-xn--tiq49xqyj
-天主教
-
-// xn--unup4y : 2013-07-14 Spring Fields, LLC
-xn--unup4y
-游戏
-
-// xn--vermgensberater-ctb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-xn--vermgensberater-ctb
-vermögensberater
-
-// xn--vermgensberatung-pwb : 2014-06-23 Deutsche Vermögensberatung Aktiengesellschaft DVAG
-xn--vermgensberatung-pwb
-vermögensberatung
-
-// xn--vhquv : 2013-08-27 Dash McCook, LLC
-xn--vhquv
-企业
-
-// xn--vuq861b : 2014-10-16 Beijing Tele-info Network Technology Co., Ltd.
-xn--vuq861b
-信息
-
-// xn--w4r85el8fhu5dnra : 2015-04-30 Kerry Trading Co. Limited
-xn--w4r85el8fhu5dnra
-嘉里大酒店
-
-// xn--w4rs40l : 2015-07-30 Kerry Trading Co. Limited
-xn--w4rs40l
-嘉里
-
-// xn--xhq521b : 2013-11-14 Guangzhou YU Wei Information Technology Co., Ltd.
-xn--xhq521b
-广东
-
-// xn--zfr164b : 2013-11-08 China Organizational Name Administration Center
-xn--zfr164b
-政务
-
-// xperia : 2015-05-14 Sony Mobile Communications AB
-xperia
-
-// xyz : 2013-12-05 XYZ.COM LLC
-xyz
-
-// yachts : 2014-01-09 DERYachts, LLC
-yachts
-
-// yahoo : 2015-04-02 Yahoo! Domain Services Inc.
-yahoo
-
-// yamaxun : 2014-12-18 Amazon EU S.à r.l.
-yamaxun
-
-// yandex : 2014-04-10 YANDEX, LLC
-yandex
-
-// yodobashi : 2014-11-20 YODOBASHI CAMERA CO.,LTD.
-yodobashi
-
-// yoga : 2014-05-29 Top Level Domain Holdings Limited
-yoga
-
-// yokohama : 2013-12-12 GMO Registry, Inc.
-yokohama
-
-// you : 2015-04-09 Amazon EU S.à r.l.
-you
-
-// youtube : 2014-05-01 Charleston Road Registry Inc.
-youtube
-
-// yun : 2015-01-08 QIHOO 360 TECHNOLOGY CO. LTD.
-yun
-
-// zappos : 2015-06-25 Amazon EU S.à r.l.
-zappos
-
-// zara : 2014-11-07 Industria de Diseño Textil, S.A. (INDITEX, S.A.)
-zara
-
-// zero : 2014-12-18 Amazon EU S.à r.l.
-zero
-
-// zip : 2014-05-08 Charleston Road Registry Inc.
-zip
-
-// zippo : 2015-07-02 Zadco Company
-zippo
-
-// zone : 2013-11-14 Outer Falls, LLC
-zone
-
-// zuerich : 2014-11-07 Kanton Zürich (Canton of Zurich)
-zuerich
-
-
-// ===END ICANN DOMAINS===
-// ===BEGIN PRIVATE DOMAINS===
-// (Note: these are in alphabetical order by company name)
-
-// Agnat sp. z o.o. : https://domena.pl
-// Submitted by Przemyslaw Plewa <it-admin@domena.pl>
-beep.pl
-
-// Alces Software Ltd : http://alces-software.com
-// Submitted by Mark J. Titorenko <mark.titorenko@alces-software.com>
-*.compute.estate
-*.alces.network
-
-// alwaysdata : https://www.alwaysdata.com
-// Submitted by Cyril <admin@alwaysdata.com>
-*.alwaysdata.net
-
-// Amazon CloudFront : https://aws.amazon.com/cloudfront/
-// Submitted by Donavan Miller <donavanm@amazon.com>
-cloudfront.net
-
-// Amazon Elastic Compute Cloud: https://aws.amazon.com/ec2/
-// Submitted by Luke Wells <psl-maintainers@amazon.com>
-*.compute.amazonaws.com
-*.compute-1.amazonaws.com
-*.compute.amazonaws.com.cn
-us-east-1.amazonaws.com
-
-// Amazon Elastic Beanstalk : https://aws.amazon.com/elasticbeanstalk/
-// Submitted by Luke Wells <psl-maintainers@amazon.com>
-elasticbeanstalk.cn-north-1.amazonaws.com.cn
-*.elasticbeanstalk.com
-
-// Amazon Elastic Load Balancing : https://aws.amazon.com/elasticloadbalancing/
-// Submitted by Luke Wells <psl-maintainers@amazon.com>
-*.elb.amazonaws.com
-*.elb.amazonaws.com.cn
-
-// Amazon S3 : https://aws.amazon.com/s3/
-// Submitted by Luke Wells <psl-maintainers@amazon.com>
-s3.amazonaws.com
-s3-ap-northeast-1.amazonaws.com
-s3-ap-northeast-2.amazonaws.com
-s3-ap-south-1.amazonaws.com
-s3-ap-southeast-1.amazonaws.com
-s3-ap-southeast-2.amazonaws.com
-s3-ca-central-1.amazonaws.com
-s3-eu-central-1.amazonaws.com
-s3-eu-west-1.amazonaws.com
-s3-eu-west-2.amazonaws.com
-s3-external-1.amazonaws.com
-s3-fips-us-gov-west-1.amazonaws.com
-s3-sa-east-1.amazonaws.com
-s3-us-gov-west-1.amazonaws.com
-s3-us-east-2.amazonaws.com
-s3-us-west-1.amazonaws.com
-s3-us-west-2.amazonaws.com
-s3.ap-northeast-2.amazonaws.com
-s3.ap-south-1.amazonaws.com
-s3.cn-north-1.amazonaws.com.cn
-s3.ca-central-1.amazonaws.com
-s3.eu-central-1.amazonaws.com
-s3.eu-west-2.amazonaws.com
-s3.us-east-2.amazonaws.com
-s3.dualstack.ap-northeast-1.amazonaws.com
-s3.dualstack.ap-northeast-2.amazonaws.com
-s3.dualstack.ap-south-1.amazonaws.com
-s3.dualstack.ap-southeast-1.amazonaws.com
-s3.dualstack.ap-southeast-2.amazonaws.com
-s3.dualstack.ca-central-1.amazonaws.com
-s3.dualstack.eu-central-1.amazonaws.com
-s3.dualstack.eu-west-1.amazonaws.com
-s3.dualstack.eu-west-2.amazonaws.com
-s3.dualstack.sa-east-1.amazonaws.com
-s3.dualstack.us-east-1.amazonaws.com
-s3.dualstack.us-east-2.amazonaws.com
-s3-website-us-east-1.amazonaws.com
-s3-website-us-west-1.amazonaws.com
-s3-website-us-west-2.amazonaws.com
-s3-website-ap-northeast-1.amazonaws.com
-s3-website-ap-southeast-1.amazonaws.com
-s3-website-ap-southeast-2.amazonaws.com
-s3-website-eu-west-1.amazonaws.com
-s3-website-sa-east-1.amazonaws.com
-s3-website.ap-northeast-2.amazonaws.com
-s3-website.ap-south-1.amazonaws.com
-s3-website.ca-central-1.amazonaws.com
-s3-website.eu-central-1.amazonaws.com
-s3-website.eu-west-2.amazonaws.com
-s3-website.us-east-2.amazonaws.com
-
-// Amune : https://amune.org/
-// Submitted by Team Amune <cert@amune.org>
-t3l3p0rt.net
-tele.amune.org
-
-// Aptible : https://www.aptible.com/
-// Submitted by Thomas Orozco <thomas@aptible.com>
-on-aptible.com
-
-// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/
-// Submitted by Hector Martin <marcan@euskalencounter.org>
-user.party.eus
-
-// Association potager.org : https://potager.org/
-// Submitted by Lunar <jardiniers@potager.org>
-pimienta.org
-poivron.org
-potager.org
-sweetpepper.org
-
-// ASUSTOR Inc. : http://www.asustor.com
-// Submitted by Vincent Tseng <vincenttseng@asustor.com>
-myasustor.com
-
-// AVM : https://avm.de
-// Submitted by Andreas Weise <a.weise@avm.de>
-myfritz.net
-
-// backplane : https://www.backplane.io
-// Submitted by Anthony Voutas <anthony@backplane.io>
-backplaneapp.io
-
-// BetaInABox
-// Submitted by Adrian <adrian@betainabox.com>
-betainabox.com
-
-// BinaryLane : http://www.binarylane.com
-// Submitted by Nathan O'Sullivan <nathan@mammoth.com.au>
-bnr.la
-
-// Boxfuse : https://boxfuse.com
-// Submitted by Axel Fontaine <axel@boxfuse.com>
-boxfuse.io
-
-// BrowserSafetyMark
-// Submitted by Dave Tharp <browsersafetymark.io@quicinc.com>
-browsersafetymark.io
-
-// callidomus: https://www.callidomus.com/
-// Submitted by Marcus Popp <admin@callidomus.com>
-mycd.eu
-
-// CentralNic : http://www.centralnic.com/names/domains
-// Submitted by registry <gavin.brown@centralnic.com>
-ae.org
-ar.com
-br.com
-cn.com
-com.de
-com.se
-de.com
-eu.com
-gb.com
-gb.net
-hu.com
-hu.net
-jp.net
-jpn.com
-kr.com
-mex.com
-no.com
-qc.com
-ru.com
-sa.com
-se.com
-se.net
-uk.com
-uk.net
-us.com
-uy.com
-za.bz
-za.com
-
-// Africa.com Web Solutions Ltd : https://registry.africa.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-africa.com
-
-// iDOT Services Limited : http://www.domain.gr.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-gr.com
-
-// Radix FZC : http://domains.in.net
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-in.net
-
-// US REGISTRY LLC : http://us.org
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-us.org
-
-// co.com Registry, LLC : https://registry.co.com
-// Submitted by Gavin Brown <gavin.brown@centralnic.com>
-co.com
-
-// c.la : http://www.c.la/
-c.la
-
-// certmgr.org : https://certmgr.org
-// Submitted by B. Blechschmidt <hostmaster@certmgr.org>
-certmgr.org
-
-// Citrix : https://citrix.com
-// Submitted by Alex Stoddard <alex.stoddard@citrix.com>
-xenapponazure.com
-
-// ClearVox : http://www.clearvox.nl/
-// Submitted by Leon Rowland <leon@clearvox.nl>
-virtueeldomein.nl
-
-// cloudControl : https://www.cloudcontrol.com/
-// Submitted by Tobias Wilken <tw@cloudcontrol.com>
-cloudcontrolled.com
-cloudcontrolapp.com
-
-// co.ca : http://registry.co.ca/
-co.ca
-
-// i-registry s.r.o. : http://www.i-registry.cz/
-// Submitted by Martin Semrad <semrad@i-registry.cz>
-co.cz
-
-// CDN77.com : http://www.cdn77.com
-// Submitted by Jan Krpes <jan.krpes@cdn77.com>
-c.cdn77.org
-cdn77-ssl.net
-r.cdn77.net
-rsc.cdn77.org
-ssl.origin.cdn77-secure.org
-
-// Cloud DNS Ltd : http://www.cloudns.net
-// Submitted by Aleksander Hristov <noc@cloudns.net>
-cloudns.asia
-cloudns.biz
-cloudns.club
-cloudns.cc
-cloudns.eu
-cloudns.in
-cloudns.info
-cloudns.org
-cloudns.pro
-cloudns.pw
-cloudns.us
-
-// CoDNS B.V.
-co.nl
-co.no
-
-// Commerce Guys, SAS
-// Submitted by Damien Tournoud <damien@commerceguys.com>
-*.platform.sh
-
-// COSIMO GmbH http://www.cosimo.de
-// Submitted by Rene Marticke <rmarticke@cosimo.de>
-dyn.cosidns.de
-dynamisches-dns.de
-dnsupdater.de
-internet-dns.de
-l-o-g-i-n.de
-dynamic-dns.info
-feste-ip.net
-knx-server.net
-static-access.net
-
-// Craynic, s.r.o. : http://www.craynic.com/
-// Submitted by Ales Krajnik <ales.krajnik@craynic.com>
-realm.cz
-
-// Cryptonomic : https://cryptonomic.net/
-// Submitted by Andrew Cady <public-suffix-list@cryptonomic.net>
-*.cryptonomic.net
-
-// Cupcake : https://cupcake.io/
-// Submitted by Jonathan Rudenberg <jonathan@cupcake.io>
-cupcake.is
-
-// cyon GmbH : https://www.cyon.ch/
-// Submitted by Dominic Luechinger <dol@cyon.ch>
-cyon.link
-cyon.site
-
-// Daplie, Inc : https://daplie.com
-// Submitted by AJ ONeal <aj@daplie.com>
-daplie.me
-
-// Dansk.net : http://www.dansk.net/
-// Submitted by Anani Voule <digital@digital.co.dk>
-biz.dk
-co.dk
-firm.dk
-reg.dk
-store.dk
-
-// deSEC : https://desec.io/
-// Submitted by Peter Thomassen <peter@desec.io>
-dedyn.io
-
-// DNShome : https://www.dnshome.de/
-// Submitted by Norbert Auler <mail@dnshome.de>
-dnshome.de
-
-// DreamHost : http://www.dreamhost.com/
-// Submitted by Andrew Farmer <andrew.farmer@dreamhost.com>
-dreamhosters.com
-
-// Drobo : http://www.drobo.com/
-// Submitted by Ricardo Padilha <rpadilha@drobo.com>
-mydrobo.com
-
-// Drud Holdings, LLC. : https://www.drud.com/
-// Submitted by Kevin Bridges <kevin@drud.com>
-drud.io
-drud.us
-
-// DuckDNS : http://www.duckdns.org/
-// Submitted by Richard Harper <richard@duckdns.org>
-duckdns.org
-
-// dy.fi : http://dy.fi/
-// Submitted by Heikki Hannikainen <hessu@hes.iki.fi>
-dy.fi
-tunk.org
-
-// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/
-dyndns-at-home.com
-dyndns-at-work.com
-dyndns-blog.com
-dyndns-free.com
-dyndns-home.com
-dyndns-ip.com
-dyndns-mail.com
-dyndns-office.com
-dyndns-pics.com
-dyndns-remote.com
-dyndns-server.com
-dyndns-web.com
-dyndns-wiki.com
-dyndns-work.com
-dyndns.biz
-dyndns.info
-dyndns.org
-dyndns.tv
-at-band-camp.net
-ath.cx
-barrel-of-knowledge.info
-barrell-of-knowledge.info
-better-than.tv
-blogdns.com
-blogdns.net
-blogdns.org
-blogsite.org
-boldlygoingnowhere.org
-broke-it.net
-buyshouses.net
-cechire.com
-dnsalias.com
-dnsalias.net
-dnsalias.org
-dnsdojo.com
-dnsdojo.net
-dnsdojo.org
-does-it.net
-doesntexist.com
-doesntexist.org
-dontexist.com
-dontexist.net
-dontexist.org
-doomdns.com
-doomdns.org
-dvrdns.org
-dyn-o-saur.com
-dynalias.com
-dynalias.net
-dynalias.org
-dynathome.net
-dyndns.ws
-endofinternet.net
-endofinternet.org
-endoftheinternet.org
-est-a-la-maison.com
-est-a-la-masion.com
-est-le-patron.com
-est-mon-blogueur.com
-for-better.biz
-for-more.biz
-for-our.info
-for-some.biz
-for-the.biz
-forgot.her.name
-forgot.his.name
-from-ak.com
-from-al.com
-from-ar.com
-from-az.net
-from-ca.com
-from-co.net
-from-ct.com
-from-dc.com
-from-de.com
-from-fl.com
-from-ga.com
-from-hi.com
-from-ia.com
-from-id.com
-from-il.com
-from-in.com
-from-ks.com
-from-ky.com
-from-la.net
-from-ma.com
-from-md.com
-from-me.org
-from-mi.com
-from-mn.com
-from-mo.com
-from-ms.com
-from-mt.com
-from-nc.com
-from-nd.com
-from-ne.com
-from-nh.com
-from-nj.com
-from-nm.com
-from-nv.com
-from-ny.net
-from-oh.com
-from-ok.com
-from-or.com
-from-pa.com
-from-pr.com
-from-ri.com
-from-sc.com
-from-sd.com
-from-tn.com
-from-tx.com
-from-ut.com
-from-va.com
-from-vt.com
-from-wa.com
-from-wi.com
-from-wv.com
-from-wy.com
-ftpaccess.cc
-fuettertdasnetz.de
-game-host.org
-game-server.cc
-getmyip.com
-gets-it.net
-go.dyndns.org
-gotdns.com
-gotdns.org
-groks-the.info
-groks-this.info
-ham-radio-op.net
-here-for-more.info
-hobby-site.com
-hobby-site.org
-home.dyndns.org
-homedns.org
-homeftp.net
-homeftp.org
-homeip.net
-homelinux.com
-homelinux.net
-homelinux.org
-homeunix.com
-homeunix.net
-homeunix.org
-iamallama.com
-in-the-band.net
-is-a-anarchist.com
-is-a-blogger.com
-is-a-bookkeeper.com
-is-a-bruinsfan.org
-is-a-bulls-fan.com
-is-a-candidate.org
-is-a-caterer.com
-is-a-celticsfan.org
-is-a-chef.com
-is-a-chef.net
-is-a-chef.org
-is-a-conservative.com
-is-a-cpa.com
-is-a-cubicle-slave.com
-is-a-democrat.com
-is-a-designer.com
-is-a-doctor.com
-is-a-financialadvisor.com
-is-a-geek.com
-is-a-geek.net
-is-a-geek.org
-is-a-green.com
-is-a-guru.com
-is-a-hard-worker.com
-is-a-hunter.com
-is-a-knight.org
-is-a-landscaper.com
-is-a-lawyer.com
-is-a-liberal.com
-is-a-libertarian.com
-is-a-linux-user.org
-is-a-llama.com
-is-a-musician.com
-is-a-nascarfan.com
-is-a-nurse.com
-is-a-painter.com
-is-a-patsfan.org
-is-a-personaltrainer.com
-is-a-photographer.com
-is-a-player.com
-is-a-republican.com
-is-a-rockstar.com
-is-a-socialist.com
-is-a-soxfan.org
-is-a-student.com
-is-a-teacher.com
-is-a-techie.com
-is-a-therapist.com
-is-an-accountant.com
-is-an-actor.com
-is-an-actress.com
-is-an-anarchist.com
-is-an-artist.com
-is-an-engineer.com
-is-an-entertainer.com
-is-by.us
-is-certified.com
-is-found.org
-is-gone.com
-is-into-anime.com
-is-into-cars.com
-is-into-cartoons.com
-is-into-games.com
-is-leet.com
-is-lost.org
-is-not-certified.com
-is-saved.org
-is-slick.com
-is-uberleet.com
-is-very-bad.org
-is-very-evil.org
-is-very-good.org
-is-very-nice.org
-is-very-sweet.org
-is-with-theband.com
-isa-geek.com
-isa-geek.net
-isa-geek.org
-isa-hockeynut.com
-issmarterthanyou.com
-isteingeek.de
-istmein.de
-kicks-ass.net
-kicks-ass.org
-knowsitall.info
-land-4-sale.us
-lebtimnetz.de
-leitungsen.de
-likes-pie.com
-likescandy.com
-merseine.nu
-mine.nu
-misconfused.org
-mypets.ws
-myphotos.cc
-neat-url.com
-office-on-the.net
-on-the-web.tv
-podzone.net
-podzone.org
-readmyblog.org
-saves-the-whales.com
-scrapper-site.net
-scrapping.cc
-selfip.biz
-selfip.com
-selfip.info
-selfip.net
-selfip.org
-sells-for-less.com
-sells-for-u.com
-sells-it.net
-sellsyourhome.org
-servebbs.com
-servebbs.net
-servebbs.org
-serveftp.net
-serveftp.org
-servegame.org
-shacknet.nu
-simple-url.com
-space-to-rent.com
-stuff-4-sale.org
-stuff-4-sale.us
-teaches-yoga.com
-thruhere.net
-traeumtgerade.de
-webhop.biz
-webhop.info
-webhop.net
-webhop.org
-worse-than.tv
-writesthisblog.com
-
-// ddnss.de : https://www.ddnss.de/
-// Submitted by Robert Niedziela <webmaster@ddnss.de>
-ddnss.de
-dyn.ddnss.de
-dyndns.ddnss.de
-dyndns1.de
-dyn-ip24.de
-home-webserver.de
-dyn.home-webserver.de
-myhome-server.de
-ddnss.org
-
-// dynv6 : https://dynv6.com
-// Submitted by Dominik Menke <dom@digineo.de> 2016-01-18
-dynv6.net
-
-// E4YOU spol. s.r.o. : https://e4you.cz/
-// Submitted by Vladimir Dudr <info@e4you.cz>
-e4.cz
-
-// Enonic : http://enonic.com/
-// Submitted by Erik Kaareng-Sunde <esu@enonic.com>
-enonic.io
-customer.enonic.io
-
-// EU.org https://eu.org/
-// Submitted by Pierre Beyssac <hostmaster@eu.org>
-eu.org
-al.eu.org
-asso.eu.org
-at.eu.org
-au.eu.org
-be.eu.org
-bg.eu.org
-ca.eu.org
-cd.eu.org
-ch.eu.org
-cn.eu.org
-cy.eu.org
-cz.eu.org
-de.eu.org
-dk.eu.org
-edu.eu.org
-ee.eu.org
-es.eu.org
-fi.eu.org
-fr.eu.org
-gr.eu.org
-hr.eu.org
-hu.eu.org
-ie.eu.org
-il.eu.org
-in.eu.org
-int.eu.org
-is.eu.org
-it.eu.org
-jp.eu.org
-kr.eu.org
-lt.eu.org
-lu.eu.org
-lv.eu.org
-mc.eu.org
-me.eu.org
-mk.eu.org
-mt.eu.org
-my.eu.org
-net.eu.org
-ng.eu.org
-nl.eu.org
-no.eu.org
-nz.eu.org
-paris.eu.org
-pl.eu.org
-pt.eu.org
-q-a.eu.org
-ro.eu.org
-ru.eu.org
-se.eu.org
-si.eu.org
-sk.eu.org
-tr.eu.org
-uk.eu.org
-us.eu.org
-
-// Evennode : http://www.evennode.com/
-// Submitted by Michal Kralik <support@evennode.com>
-eu-1.evennode.com
-eu-2.evennode.com
-us-1.evennode.com
-us-2.evennode.com
-
-// Facebook, Inc.
-// Submitted by Peter Ruibal <public-suffix@fb.com>
-apps.fbsbx.com
-
-// FAITID : https://faitid.org/
-// Submitted by Maxim Alzoba <tech.contact@faitid.org>
-// https://www.flexireg.net/stat_info
-ru.net
-adygeya.ru
-bashkiria.ru
-bir.ru
-cbg.ru
-com.ru
-dagestan.ru
-grozny.ru
-kalmykia.ru
-kustanai.ru
-marine.ru
-mordovia.ru
-msk.ru
-mytis.ru
-nalchik.ru
-nov.ru
-pyatigorsk.ru
-spb.ru
-vladikavkaz.ru
-vladimir.ru
-abkhazia.su
-adygeya.su
-aktyubinsk.su
-arkhangelsk.su
-armenia.su
-ashgabad.su
-azerbaijan.su
-balashov.su
-bashkiria.su
-bryansk.su
-bukhara.su
-chimkent.su
-dagestan.su
-east-kazakhstan.su
-exnet.su
-georgia.su
-grozny.su
-ivanovo.su
-jambyl.su
-kalmykia.su
-kaluga.su
-karacol.su
-karaganda.su
-karelia.su
-khakassia.su
-krasnodar.su
-kurgan.su
-kustanai.su
-lenug.su
-mangyshlak.su
-mordovia.su
-msk.su
-murmansk.su
-nalchik.su
-navoi.su
-north-kazakhstan.su
-nov.su
-obninsk.su
-penza.su
-pokrovsk.su
-sochi.su
-spb.su
-tashkent.su
-termez.su
-togliatti.su
-troitsk.su
-tselinograd.su
-tula.su
-tuva.su
-vladikavkaz.su
-vladimir.su
-vologda.su
-
-// Fastly Inc. : http://www.fastly.com/
-// Submitted by Fastly Security <security@fastly.com>
-map.fastly.net
-a.prod.fastly.net
-global.prod.fastly.net
-a.ssl.fastly.net
-b.ssl.fastly.net
-global.ssl.fastly.net
-fastlylb.net
-map.fastlylb.net
-
-// Featherhead : https://featherhead.xyz/
-// Submitted by Simon Menke <simon@featherhead.xyz>
-fhapp.xyz
-
-// Firebase, Inc.
-// Submitted by Chris Raynor <chris@firebase.com>
-firebaseapp.com
-
-// Flynn : https://flynn.io
-// Submitted by Jonathan Rudenberg <jonathan@flynn.io>
-flynnhub.com
-
-// Freebox : http://www.freebox.fr
-// Submitted by Romain Fliedel <rfliedel@freebox.fr>
-freebox-os.com
-freeboxos.com
-fbx-os.fr
-fbxos.fr
-freebox-os.fr
-freeboxos.fr
-
-// Fusion Intranet : https://www.fusion-intranet.com
-// Submitted by Matthias Burtscher <matthias.burtscher@fusonic.net>
-myfusion.cloud
-
-// Futureweb OG : http://www.futureweb.at
-// Submitted by Andreas Schnederle-Wagner <schnederle@futureweb.at>
-futurehosting.at
-futuremailing.at
-*.ex.ortsinfo.at
-*.kunden.ortsinfo.at
-*.statics.cloud
-
-// GDS : https://www.gov.uk/service-manual/operations/operating-servicegovuk-subdomains
-// Submitted by David Illsley <david.illsley@digital.cabinet-office.gov.uk>
-service.gov.uk
-
-// GitHub, Inc.
-// Submitted by Patrick Toomey <security@github.com>
-github.io
-githubusercontent.com
-githubcloud.com
-*.api.githubcloud.com
-*.ext.githubcloud.com
-gist.githubcloud.com
-*.githubcloudusercontent.com
-
-// GitLab, Inc.
-// Submitted by Alex Hanselka <alex@gitlab.com>
-gitlab.io
-
-// UKHomeOffice : https://www.gov.uk/government/organisations/home-office
-// Submitted by Jon Shanks <jon.shanks@digital.homeoffice.gov.uk>
-homeoffice.gov.uk
-
-// GlobeHosting, Inc.
-// Submitted by Zoltan Egresi <egresi@globehosting.com>
-ro.im
-shop.ro
-
-// GoIP DNS Services : http://www.goip.de
-// Submitted by Christian Poulter <milchstrasse@goip.de>
-goip.de
-
-// Google, Inc.
-// Submitted by Eduardo Vela <evn@google.com>
-*.0emm.com
-appspot.com
-blogspot.ae
-blogspot.al
-blogspot.am
-blogspot.ba
-blogspot.be
-blogspot.bg
-blogspot.bj
-blogspot.ca
-blogspot.cf
-blogspot.ch
-blogspot.cl
-blogspot.co.at
-blogspot.co.id
-blogspot.co.il
-blogspot.co.ke
-blogspot.co.nz
-blogspot.co.uk
-blogspot.co.za
-blogspot.com
-blogspot.com.ar
-blogspot.com.au
-blogspot.com.br
-blogspot.com.by
-blogspot.com.co
-blogspot.com.cy
-blogspot.com.ee
-blogspot.com.eg
-blogspot.com.es
-blogspot.com.mt
-blogspot.com.ng
-blogspot.com.tr
-blogspot.com.uy
-blogspot.cv
-blogspot.cz
-blogspot.de
-blogspot.dk
-blogspot.fi
-blogspot.fr
-blogspot.gr
-blogspot.hk
-blogspot.hr
-blogspot.hu
-blogspot.ie
-blogspot.in
-blogspot.is
-blogspot.it
-blogspot.jp
-blogspot.kr
-blogspot.li
-blogspot.lt
-blogspot.lu
-blogspot.md
-blogspot.mk
-blogspot.mr
-blogspot.mx
-blogspot.my
-blogspot.nl
-blogspot.no
-blogspot.pe
-blogspot.pt
-blogspot.qa
-blogspot.re
-blogspot.ro
-blogspot.rs
-blogspot.ru
-blogspot.se
-blogspot.sg
-blogspot.si
-blogspot.sk
-blogspot.sn
-blogspot.td
-blogspot.tw
-blogspot.ug
-blogspot.vn
-cloudfunctions.net
-codespot.com
-googleapis.com
-googlecode.com
-pagespeedmobilizer.com
-publishproxy.com
-withgoogle.com
-withyoutube.com
-
-// Hashbang : https://hashbang.sh
-hashbang.sh
-
-// Hasura : https://hasura.io
-// Submitted by Shahidh K Muhammed <shahidh@hasura.io>
-hasura-app.io
-
-// Hepforge : https://www.hepforge.org
-// Submitted by David Grellscheid <admin@hepforge.org>
-hepforge.org
-
-// Heroku : https://www.heroku.com/
-// Submitted by Tom Maher <tmaher@heroku.com>
-herokuapp.com
-herokussl.com
-
-// iki.fi
-// Submitted by Hannu Aronsson <haa@iki.fi>
-iki.fi
-
-// info.at : http://www.info.at/
-biz.at
-info.at
-
-// Interlegis : http://www.interlegis.leg.br
-// Submitted by Gabriel Ferreira <registrobr@interlegis.leg.br>
-ac.leg.br
-al.leg.br
-am.leg.br
-ap.leg.br
-ba.leg.br
-ce.leg.br
-df.leg.br
-es.leg.br
-go.leg.br
-ma.leg.br
-mg.leg.br
-ms.leg.br
-mt.leg.br
-pa.leg.br
-pb.leg.br
-pe.leg.br
-pi.leg.br
-pr.leg.br
-rj.leg.br
-rn.leg.br
-ro.leg.br
-rr.leg.br
-rs.leg.br
-sc.leg.br
-se.leg.br
-sp.leg.br
-to.leg.br
-
-// Joyent : https://www.joyent.com/
-// Submitted by Brian Bennett <brian.bennett@joyent.com>
-*.triton.zone
-*.cns.joyent.com
-
-// JS.ORG : http://dns.js.org
-// Submitted by Stefan Keim <admin@js.org>
-js.org
-
-// Keyweb AG : https://www.keyweb.de
-// Submitted by Martin Dannehl <postmaster@keymachine.de>
-keymachine.de
-
-// KnightPoint Systems, LLC : http://www.knightpoint.com/
-// Submitted by Roy Keene <rkeene@knightpoint.com>
-knightpoint.systems
-
-// .KRD : http://nic.krd/data/krd/Registration%20Policy.pdf
-co.krd
-edu.krd
-
-// Magento Commerce
-// Submitted by Damien Tournoud <dtournoud@magento.cloud>
-*.magentosite.cloud
-
-// Meteor Development Group : https://www.meteor.com/hosting
-// Submitted by Pierre Carrier <pierre@meteor.com>
-meteorapp.com
-eu.meteorapp.com
-
-// Michau Enterprises Limited : http://www.co.pl/
-co.pl
-
-// Microsoft : http://microsoft.com
-// Submitted by Barry Dorrans <bdorrans@microsoft.com>
-azurewebsites.net
-azure-mobile.net
-cloudapp.net
-
-// Mozilla Foundation : https://mozilla.org/
-// Submitted by glob <glob@mozilla.com>
-bmoattachments.org
-
-// Neustar Inc.
-// Submitted by Trung Tran <Trung.Tran@neustar.biz>
-4u.com
-
-// ngrok : https://ngrok.com/
-// Submitted by Alan Shreve <alan@ngrok.com>
-ngrok.io
-
-// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/
-// Submitted by Jeff Wheelhouse <support@nearlyfreespeech.net>
-nfshost.com
-
-// nsupdate.info : https://www.nsupdate.info/
-// Submitted by Thomas Waldmann <info@nsupdate.info>
-nsupdate.info
-nerdpol.ovh
-
-// No-IP.com : https://noip.com/
-// Submitted by Deven Reza <publicsuffixlist@noip.com>
-blogsyte.com
-brasilia.me
-cable-modem.org
-ciscofreak.com
-collegefan.org
-couchpotatofries.org
-damnserver.com
-ddns.me
-ditchyourip.com
-dnsfor.me
-dnsiskinky.com
-dvrcam.info
-dynns.com
-eating-organic.net
-fantasyleague.cc
-geekgalaxy.com
-golffan.us
-health-carereform.com
-homesecuritymac.com
-homesecuritypc.com
-hopto.me
-ilovecollege.info
-loginto.me
-mlbfan.org
-mmafan.biz
-myactivedirectory.com
-mydissent.net
-myeffect.net
-mymediapc.net
-mypsx.net
-mysecuritycamera.com
-mysecuritycamera.net
-mysecuritycamera.org
-net-freaks.com
-nflfan.org
-nhlfan.net
-no-ip.ca
-no-ip.co.uk
-no-ip.net
-noip.us
-onthewifi.com
-pgafan.net
-point2this.com
-pointto.us
-privatizehealthinsurance.net
-quicksytes.com
-read-books.org
-securitytactics.com
-serveexchange.com
-servehumour.com
-servep2p.com
-servesarcasm.com
-stufftoread.com
-ufcfan.org
-unusualperson.com
-workisboring.com
-3utilities.com
-bounceme.net
-ddns.net
-ddnsking.com
-gotdns.ch
-hopto.org
-myftp.biz
-myftp.org
-myvnc.com
-no-ip.biz
-no-ip.info
-no-ip.org
-noip.me
-redirectme.net
-servebeer.com
-serveblog.net
-servecounterstrike.com
-serveftp.com
-servegame.com
-servehalflife.com
-servehttp.com
-serveirc.com
-serveminecraft.net
-servemp3.com
-servepics.com
-servequake.com
-sytes.net
-webhop.me
-zapto.org
-
-// NYC.mn : http://www.information.nyc.mn
-// Submitted by Matthew Brown <mattbrown@nyc.mn>
-nyc.mn
-
-// One Fold Media : http://www.onefoldmedia.com/
-// Submitted by Eddie Jones <eddie@onefoldmedia.com>
-nid.io
-
-// OpenCraft GmbH : http://opencraft.com/
-// Submitted by Sven Marnach <sven@opencraft.com>
-opencraft.hosting
-
-// Opera Software, A.S.A.
-// Submitted by Yngve Pettersen <yngve@opera.com>
-operaunite.com
-
-// OutSystems
-// Submitted by Duarte Santos <domain-admin@outsystemscloud.com>
-outsystemscloud.com
-
-// OwnProvider : http://www.ownprovider.com
-// Submitted by Jan Moennich <jan.moennich@ownprovider.com>
-ownprovider.com
-
-// oy.lc
-// Submitted by Charly Coste <changaco@changaco.oy.lc>
-oy.lc
-
-// Pagefog : https://pagefog.com/
-// Submitted by Derek Myers <derek@pagefog.com>
-pgfog.com
-
-// Pagefront : https://www.pagefronthq.com/
-// Submitted by Jason Kriss <jason@pagefronthq.com>
-pagefrontapp.com
-
-// .pl domains (grandfathered)
-art.pl
-gliwice.pl
-krakow.pl
-poznan.pl
-wroc.pl
-zakopane.pl
-
-// Pantheon Systems, Inc. : https://pantheon.io/
-// Submitted by Gary Dylina <gary@pantheon.io>
-pantheonsite.io
-gotpantheon.com
-
-// Peplink | Pepwave : http://peplink.com/
-// Submitted by Steve Leung <steveleung@peplink.com>
-mypep.link
-
-// Planet-Work : https://www.planet-work.com/
-// Submitted by Frédéric VANNIÈRE <f.vanniere@planet-work.com>
-on-web.fr
-
-// prgmr.com : https://prgmr.com/
-// Submitted by Sarah Newman <owner@prgmr.com>
-xen.prgmr.com
-
-// priv.at : http://www.nic.priv.at/
-// Submitted by registry <lendl@nic.at>
-priv.at
-
-// Protonet GmbH : http://protonet.io
-// Submitted by Martin Meier <admin@protonet.io>
-protonet.io
-
-// Publication Presse Communication SARL : https://ppcom.fr
-// Submitted by Yaacov Akiba Slama <admin@chirurgiens-dentistes-en-france.fr>
-chirurgiens-dentistes-en-france.fr
-
-// QA2
-// Submitted by Daniel Dent (https://www.danieldent.com/)
-qa2.com
-
-// QNAP System Inc : https://www.qnap.com
-// Submitted by Nick Chang <nickchang@qnap.com>
-dev-myqnapcloud.com
-alpha-myqnapcloud.com
-myqnapcloud.com
-
-// Rackmaze LLC : https://www.rackmaze.com
-// Submitted by Kirill Pertsev <kika@rackmaze.com>
-rackmaze.com
-rackmaze.net
-
-// Red Hat, Inc. OpenShift : https://openshift.redhat.com/
-// Submitted by Tim Kramer <tkramer@rhcloud.com>
-rhcloud.com
-
-// RethinkDB : https://www.rethinkdb.com/
-// Submitted by Chris Kastorff <info@rethinkdb.com>
-hzc.io
-
-// Revitalised Limited : http://www.revitalised.co.uk
-// Submitted by Jack Price <jack@revitalised.co.uk>
-wellbeingzone.eu
-ptplus.fit
-wellbeingzone.co.uk
-
-// Sandstorm Development Group, Inc. : https://sandcats.io/
-// Submitted by Asheesh Laroia <asheesh@sandstorm.io>
-sandcats.io
-
-// SBE network solutions GmbH : https://www.sbe.de/
-// Submitted by Norman Meilick <nm@sbe.de>
-logoip.de
-logoip.com
-
-// Securepoint GmbH : https://www.securepoint.de
-// Submitted by Erik Anders <erik.anders@securepoint.de>
-firewall-gateway.com
-firewall-gateway.de
-my-gateway.de
-my-router.de
-spdns.de
-spdns.eu
-firewall-gateway.net
-my-firewall.org
-myfirewall.org
-spdns.org
-
-// Service Online LLC : http://drs.ua/
-// Submitted by Serhii Bulakh <support@drs.ua>
-biz.ua
-co.ua
-pp.ua
-
-// ShiftEdit : https://shiftedit.net/
-// Submitted by Adam Jimenez <adam@shiftcreate.com>
-shiftedit.io
-
-// Shopblocks : http://www.shopblocks.com/
-// Submitted by Alex Bowers <alex@shopblocks.com>
-myshopblocks.com
-
-// SinaAppEngine : http://sae.sina.com.cn/
-// Submitted by SinaAppEngine <saesupport@sinacloud.com>
-1kapp.com
-appchizi.com
-applinzi.com
-sinaapp.com
-vipsinaapp.com
-
-// Skyhat : http://www.skyhat.io
-// Submitted by Shante Adam <shante@skyhat.io>
-bounty-full.com
-alpha.bounty-full.com
-beta.bounty-full.com
-
-// staticland : https://static.land
-// Submitted by Seth Vincent <sethvincent@gmail.com>
-static.land
-dev.static.land
-sites.static.land
-
-// SourceLair PC : https://www.sourcelair.com
-// Submitted by Antonis Kalipetis <akalipetis@sourcelair.com>
-apps.lair.io
-*.stolos.io
-
-// SpaceKit : https://www.spacekit.io/
-// Submitted by Reza Akhavan <spacekit.io@gmail.com>
-spacekit.io
-
-// Stackspace : https://www.stackspace.io/
-// Submitted by Lina He <info@stackspace.io>
-stackspace.space
-
-// Synology, Inc. : https://www.synology.com/
-// Submitted by Rony Weng <ronyweng@synology.com>
-diskstation.me
-dscloud.biz
-dscloud.me
-dscloud.mobi
-dsmynas.com
-dsmynas.net
-dsmynas.org
-familyds.com
-familyds.net
-familyds.org
-i234.me
-myds.me
-synology.me
-
-// TAIFUN Software AG : http://taifun-software.de
-// Submitted by Bjoern Henke <dev-server@taifun-software.de>
-taifun-dns.de
-
-// TASK geographical domains (www.task.gda.pl/uslugi/dns)
-gda.pl
-gdansk.pl
-gdynia.pl
-med.pl
-sopot.pl
-
-// TownNews.com : http://www.townnews.com
-// Submitted by Dustin Ward <dward@townnews.com>
-bloxcms.com
-townnews-staging.com
-
-// TransIP : htts://www.transip.nl
-// Submitted by Rory Breuk <rbreuk@transip.nl>
-*.transurl.be
-*.transurl.eu
-*.transurl.nl
-
-// TuxFamily : http://tuxfamily.org
-// Submitted by TuxFamily administrators <adm@staff.tuxfamily.org>
-tuxfamily.org
-
-// TwoDNS : https://www.twodns.de/
-// Submitted by TwoDNS-Support <support@two-dns.de>
-dd-dns.de
-diskstation.eu
-diskstation.org
-dray-dns.de
-draydns.de
-dyn-vpn.de
-dynvpn.de
-mein-vigor.de
-my-vigor.de
-my-wan.de
-syno-ds.de
-synology-diskstation.de
-synology-ds.de
-
-// UDR Limited : http://www.udr.hk.com
-// Submitted by registry <hostmaster@udr.hk.com>
-hk.com
-hk.org
-ltd.hk
-inc.hk
-
-// .US
-// Submitted by Ed Moore <Ed.Moore@lib.de.us>
-lib.de.us
-
-// Viprinet Europe GmbH : http://www.viprinet.com
-// Submitted by Simon Kissel <hostmaster@viprinet.com>
-router.management
-
-// Western Digital Technologies, Inc : https://www.wdc.com
-// Submitted by Jung Jin <jungseok.jin@wdc.com>
-remotewd.com
-
-// Wikimedia Labs : https://wikitech.wikimedia.org
-// Submitted by Yuvi Panda <yuvipanda@wikimedia.org>
-wmflabs.org
-
-// Yola : https://www.yola.com/
-// Submitted by Stefano Rivera <stefano@yola.com>
-yolasite.com
-
-// Yombo : https://yombo.net
-// Submitted by Mitch Schwenk <mitch@yombo.net>
-ybo.faith
-yombo.me
-homelink.one
-ybo.party
-ybo.review
-ybo.science
-ybo.trade
-
-// ZaNiC : http://www.za.net/
-// Submitted by registry <hostmaster@nic.za.net>
-za.net
-za.org
-
-// Zeit, Inc. : https://zeit.domains/
-// Submitted by Olli Vanhoja <olli@zeit.co>
-now.sh
-
-// 1GB LLC : https://www.1gb.ua/
-// Submitted by 1GB LLC <noc@1gb.com.ua>
-cc.ua
-inf.ua
-ltd.ua
-
-// ===END PRIVATE DOMAINS===
index 308d569716a3be9c915a16bec27d1ac85eb6a95b..472bb7c283dc6c40f39678cfc75b971c3bdb7015 100644 (file)
@@ -33,7 +33,6 @@
 #
 # 44444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
 #
-#.cloudflare.com-v1    !!! Please install additional package "ddns-scripts_cloudflare"
 #.cloudflare.com-v4    !!! Please install additional package "ddns-scripts_cloudflare.com-v4"
 #.FreeDNS.42.pl        !!! Please install additional package "ddns-scripts_freedns_42_pl"
 #.godaddy.com-v1       !!! Please install additional package "ddns-scripts_godaddy.com-v1"
 
 "editdns.net"          "http://dyndns-free.editdns.net/api/dynLinux.php?p=[PASSWORD]&r=[DOMAIN]"
 
-"goip.de"              "http://www.goip.de/setip?username=[USERNAME]&password=[PASSWORD]&subdomain=[DOMAIN]&ip4=[IP]"
+"goip.de"              "http://www.goip.de/setip?username=[USERNAME]&password=[PASSWORD]&subdomain=[DOMAIN]&ip=[IP]"
 
 "google.com"           "http://[USERNAME]:[PASSWORD]@domains.google.com/nic/update?hostname=[DOMAIN]&myip=[IP]"        "good|nochg"
 
index b108d3f21f1345f4ad698c27589be0cb23d68477..8a2028ba4537ccdc96149e5882a07632baf0df37 100644 (file)
@@ -33,7 +33,6 @@
 #
 # 66666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
 #
-#.cloudflare.com-v1    !!! Please install additional package "ddns-scripts_cloudflare"
 #.cloudflare.com-v4    !!! Please install additional package "ddns-scripts_cloudflare.com-v4"
 #.godaddy.com-v1       !!! Please install additional package "ddns-scripts_godaddy.com-v1"
 #.no-ip.com / noip.com !!! Please install additional package "ddns-scripts_no-ip_com"
diff --git a/net/ddns-scripts/files/update_cloudflare_com_v1.sh b/net/ddns-scripts/files/update_cloudflare_com_v1.sh
deleted file mode 100755 (executable)
index 9fa9431..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-#.Distributed under the terms of the GNU General Public License (GPL) version 2.0
-#
-# script for sending updates to cloudflare.com
-#.2014-2017 Christian Schoenebeck <christian dot schoenebeck at gmail dot com>
-# many thanks to Paul for testing and feedback during development
-#
-# This script is parsed by dynamic_dns_functions.sh inside send_update() function
-#
-# using following options from /etc/config/ddns
-# option username - your cloudflare e-mail
-# option password - cloudflare api key, you can get it from cloudflare.com/my-account/
-# option domain   - your full hostname to update, in cloudflare its subdomain.domain
-#                      i.e. myhost.example.com where myhost is the subdomain and example.com is your domain
-#
-# variable __IP already defined with the ip-address to use for update
-#
-[ $use_https -eq 0 ] && write_log 14 "Cloudflare only support updates via Secure HTTP (HTTPS). Please correct configuration!"
-[ -z "$username" ] && write_log 14 "Service section not configured correctly! Missing 'username'"
-[ -z "$password" ] && write_log 14 "Service section not configured correctly! Missing 'password'"
-
-local __RECID __URL __KEY __KEYS __FOUND __SUBDOM __DOMAIN __FQDN
-
-# split __SUBDOM __DOMAIN from $domain
-# given data:
-# @example.com for "domain record"
-# host.sub@example.com for a "host record"
-__SUBDOM=$(printf %s "$domain" | cut -d@ -f1)
-__DOMAIN=$(printf %s "$domain" | cut -d@ -f2)
-
-# Cloudflare v1 needs:
-# __DOMAIN = the base domain i.e. example.com
-# __SUBDOM = the host.sub to change if a "host record" or blank if domain record
-# __FQDN   = the FQDN to detect record_id to change
-# i.e. example.com for the "domain record" or host.sub.example.com for "host record"
-if [ -z "$__SUBDOM" -o "$__SUBDOM" = "$__DOMAIN" ]; then
-       __SUBDOM=""
-       __FQDN="$__DOMAIN"
-else
-       __FQDN="${__SUBDOM}.${__DOMAIN}"
-fi
-
-# parse OpenWrt script with
-# functions for parsing and generating json
-. /usr/share/libubox/jshn.sh
-
-# function copied from /usr/share/libubox/jshn.sh
-# from BB14.09 for backward compatibility to AA12.09
-type "json_get_keys" >/dev/null 2>&1 || json_get_keys() {
-       local __dest="$1"
-       local _tbl_cur
-
-       if [ -n "$2" ]; then
-               json_get_var _tbl_cur "$2"
-       else
-               _json_get_var _tbl_cur JSON_CUR
-       fi
-       local __var="${JSON_PREFIX}KEYS_${_tbl_cur}"
-       eval "export -- \"$__dest=\${$__var}\"; [ -n \"\${$__var+x}\" ]"
-}
-
-# function to "sed" unwanted string parts from DATFILE
-cleanup() {
-       # based on the sample output on cloudflare.com homepage we need to do some cleanup
-       sed -i 's/^[ \t]*//;s/[ \t]*$//' $DATFILE       # remove invisible chars at beginning and end of lines
-       sed -i '/^-$/d' $DATFILE                        # remove lines with "-" (dash)
-       sed -i '/^$/d' $DATFILE                         # remove empty lines
-       sed -i "#'##g" $DATFILE                         # remove "'" (single quote)
-}
-
-[ -n "$rec_id" ] && __RECID="$rec_id" || {
-       # build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
-       # to "rec_load_all" to detect rec_id needed for update
-       __URL="https://www.cloudflare.com/api_json.html"        # https://www.cloudflare.com/api_json.html
-       __URL="${__URL}?a=rec_load_all"                         #  -d 'a=rec_load_all'
-       __URL="${__URL}&tkn=$password"                          #  -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
-       __URL="${__URL}&email=$username"                        #  -d 'email=sample@example.com'
-       __URL="${__URL}&z=$__DOMAIN"                            #  -d 'z=example.com'
-
-       # lets request the data
-       do_transfer "$__URL" || return 1
-
-       cleanup                         # cleanup dat file
-       json_load "$(cat $DATFILE)"     # lets extract data
-       __FOUND=0                       # found record indicator
-       json_get_var __RES "result"     # cloudflare result of last request
-       json_get_var __MSG "msg"        # cloudflare error message
-       [ "$__RES" != "success" ] && {
-               write_log 4 "'rec_load_all' failed with error: \n$__MSG"
-               return 1
-       }
-
-       json_select "response"
-       json_select "recs"
-       json_select "objs"
-       json_get_keys __KEYS
-       for __KEY in $__KEYS; do
-               local __ZONE __DISPLAY __NAME __TYPE
-               json_select "$__KEY"
-       #       json_get_var __ZONE "zone_name"         # for debugging
-       #       json_get_var __DISPLAY "display_name"   # for debugging
-               json_get_var __NAME "name"
-               json_get_var __TYPE "type"
-               if [ "$__NAME" = "$__FQDN" ]; then
-                       # we must verify IPv4 and IPv6 because there might be both for the same host
-                       [ \( $use_ipv6 -eq 0 -a "$__TYPE" = "A" \) -o \( $use_ipv6 -eq 1 -a "$__TYPE" = "AAAA" \) ] && {
-                               __FOUND=1       # mark found
-                               break           # found leave for loop
-                       }
-               fi
-               json_select ..
-       done
-       [ $__FOUND -eq 0 ] && {
-               # we don't need to continue trying to update cloudflare because record to update does not exist
-               # user has to setup record first outside ddns-scripts
-               write_log 14 "No valid record found at Cloudflare setup. Please create first!"
-       }
-       json_get_var __RECID "rec_id"   # last thing to do get rec_id
-       json_cleanup                    # cleanup
-       write_log 7 "rec_id '$__RECID' detected for host/domain '$__FQDN'"
-}
-
-# build url according to cloudflare client api at https://www.cloudflare.com/docs/client-api.html
-# for "rec_edit" to update IP address
-__URL="https://www.cloudflare.com/api_json.html"       # https://www.cloudflare.com/api_json.html
-__URL="${__URL}?a=rec_edit"                            #  -d 'a=rec_edit'
-__URL="${__URL}&tkn=$password"                         #  -d 'tkn=8afbe6dea02407989af4dd4c97bb6e25'
-__URL="${__URL}&id=$__RECID"                           #  -d 'id=9001'
-__URL="${__URL}&email=$username"                       #  -d 'email=sample@example.com'
-__URL="${__URL}&z=$__DOMAIN"                           #  -d 'z=example.com'
-
-[ $use_ipv6 -eq 0 ] && __URL="${__URL}&type=A"         #  -d 'type=A'          (IPv4)
-[ $use_ipv6 -eq 1 ] && __URL="${__URL}&type=AAAA"      #  -d 'type=AAAA'       (IPv6)
-
-# handle subdomain or domain record
-[ -n "$__SUBDOM" ] && __URL="${__URL}&name=$__SUBDOM"  #  -d 'name=sub'        (HOST/SUBDOMAIN)
-[ -z "$__SUBDOM" ] && __URL="${__URL}&name=$__DOMAIN"  #  -d 'name=example.com'(DOMAIN)
-
-__URL="${__URL}&content=$__IP"                         #  -d 'content=1.2.3.4'
-__URL="${__URL}&service_mode=0"                                #  -d 'service_mode=0'
-__URL="${__URL}&ttl=1"                                 #  -d 'ttl=1'
-
-# lets do the update
-do_transfer "$__URL" || return 1
-
-cleanup                                # cleanup tmp file
-json_load "$(cat $DATFILE)"    # lets extract data
-json_get_var __RES "result"    # cloudflare result of last request
-json_get_var __MSG "msg"       # cloudflare error message
-[ "$__RES" != "success" ] && {
-       write_log 4 "'rec_edit' failed with error:\n$__MSG"
-       return 1
-}
-write_log 7 "Update of rec_id '$__RECID' successful"
-return 0
index 1a800d28602eaddba890185eb45a9524e6fb1d75..f78bce0bcaca4cea72d2ae6df158cd0e70585719 100755 (executable)
@@ -14,7 +14,8 @@
 # option username  - your cloudflare e-mail
 # option password  - cloudflare api key, you can get it from cloudflare.com/my-account/
 # option domain    - "hostname@yourdomain.TLD" # syntax changed to remove split_FQDN() function and tld_names.dat.gz
-# option param_opt - Whether the record is receiving the performance and security benefits of Cloudflare (not empty => false)
+#
+# The proxy status would not be changed by this script. Please change it in Cloudflare dashboard manually. 
 #
 # variable __IP already defined with the ip-address to use for update
 #
@@ -176,11 +177,8 @@ __DATA=$(grep -o '"content":"[^"]*' $DATFILE | grep -o '[^"]*$' | head -1)
 
 # update is needed
 # let's build data to send
-# set proxied parameter (default "true")
-[ -z "$param_opt" ] && __PROXIED="true" || {
-       __PROXIED="false"
-       write_log 7 "Cloudflare 'proxied' disabled"
-}
+# set proxied parameter
+__PROXIED=$(grep -o '"proxied":[^",]*' $DATFILE | grep -o '[^:]*$')
 
 # use file to work around " needed for json
 cat > $DATFILE << EOF
index 587100339fcc77354c1f605e760344c946f84e5f..14d9713b6d3d9ef867efaa217b3e778f98662d3a 100755 (executable)
@@ -11,7 +11,7 @@ XMLDATA="<?xml version='1.0'?><methodCall><methodName>xname.updateArecord</metho
 XMLDATA=$(echo $XMLDATA | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#$URL_PASS#g" \
 -e "s#\[ZONENAME\]#$zone#g" -e "s#\[RECORDNAME\]#$record#g" -e "s#\[IP\]#$__IP#g")
 $PROG -d "$XMLDATA" -o $DATFILE $__URL || return 1
-write_log 7 "'freedns.42.pl' answered:\n$(cat $DATFILE)"
+write_log 7 "'freedns.42.pl' answered:${N}$(cat $DATFILE)"
 grep "<fault>" $DATFILE > /dev/null 2>&1 && return 1
 grep '<name>serial</name>' $DATFILE >/dev/null 2>&1
 return $?
index 9d73448e0165a5fc21c4023e6b687749b0c496d2..7d4354bd6d2b794d177001b038d950041730346b 100755 (executable)
@@ -26,7 +26,7 @@ __URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#
 
 do_transfer "$__URL" || return 1
 
-write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
+write_log 7 "'no-ip.com' answered:${N}$(cat $DATFILE)"
 # analyse provider answers
 # "good [IP_ADR]"      = successful
 # "nochg [IP_ADR]"     = no change but OK
@@ -43,7 +43,7 @@ __URL=$(echo $__UPDURL | sed -e "s#\[USERNAME\]#$URL_USER#g" -e "s#\[PASSWORD\]#
 
 do_transfer "$__URL" || return 1
 
-write_log 7 "'no-ip.com' answered:\n$(cat $DATFILE)"
+write_log 7 "'no-ip.com' answered:${N}$(cat $DATFILE)"
 # analyse provider answers
 # "good [IP_ADR]"      = successful
 # "nochg [IP_ADR]"     = no change but OK
index 539533cc58c11d33e4cdb8fe5c0c04f563a89391..983664cbcade827e548d01aab0bdb42c62082bdd 100755 (executable)
@@ -43,6 +43,6 @@ EOF
 $__PROG -d $__TCP $DATFILE >$ERRFILE 2>&1
 
 # nsupdate always return success
-write_log 7 "(k)nsupdate reports:\n$(cat $ERRFILE)"
+write_log 7 "(k)nsupdate reports:${N}$(cat $ERRFILE)"
 
-return 0
\ No newline at end of file
+return 0
diff --git a/net/ddns-scripts/tools/public_suffix_list.sh b/net/ddns-scripts/tools/public_suffix_list.sh
deleted file mode 100755 (executable)
index 4868471..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-URL="https://publicsuffix.org/list/public_suffix_list.dat"
-TMPFILE=$(dirname $0)/public_suffix_list.tmp
-DATFILE=$(dirname $0)/public_suffix_list.dat
-
-wget -O $TMPFILE $URL || exit 1
-
-# there might be backslashes (at line end they produce problems)
-sed -i 's/\\//g' $TMPFILE
-
-# clear DATFILE if exist
-printf %s "" > $DATFILE
-L=0; M=0
-export CHARSET=UTF-8   # needed for idn
-cat ${TMPFILE} | while read LINE; do
-       L=$(( L + 1 ))
-       printf "\\r\\t%s\\t%s" "in: $L   " "out: $(( $L + $M ))   "
-       printf %s\\n "$LINE" | grep -E "^\/\/" >/dev/null 2>&1 && {
-               # do not modify lines beginning with "//"
-               printf %s\\n "$LINE" >> $DATFILE
-               continue
-       }
-       printf %s\\n "$LINE" | grep -E "^$" >/dev/null 2>&1 && {
-               # do not modify empty lines
-               printf %s\\n "$LINE" >> $DATFILE
-               continue
-       }
-       ASCII=$(idn -a "$LINE") # write ASCII and UTF-8
-       if [ "$ASCII" != "$LINE" ]; then
-               printf %s\\n "$ASCII" >> $DATFILE
-               printf "\\t%s\\n" "add: $ASCII"
-               M=$(( M + 1 ))
-       fi
-       printf %s\\n "$LINE" >> $DATFILE
-done
-rm -f $TMPFILE
-gzip -f9 $DATFILE
-
diff --git a/net/foolsm/Makefile b/net/foolsm/Makefile
new file mode 100644 (file)
index 0000000..43c1d1d
--- /dev/null
@@ -0,0 +1,55 @@
+#
+# Copyright (C) 2010-2011 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=foolsm
+PKG_VERSION:=1.0.10
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://lsm.foobar.fi/download
+PKG_HASH:=33210209ca38b3bfef1a9180f765266a134fc811dea8bc06450a3bd48d1d083e
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/foolsm
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+ssmtp
+  TITLE:=A link state monitor
+  URL:=http://lsm.foobar.fi/
+endef
+
+define Package/foolsm/description
+       foolsm is a link state monitor for carrying out actions when a link
+       transistions from the up to down state or vice versa.
+endef
+
+define Package/foolsm/conffiles
+/etc/foolsm/foolsm.conf
+endef
+
+define Package/foolsm/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/foolsm $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc/foolsm/script.d
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_DATA) ./files/connections.conf $(1)/etc/foolsm/connections.conf
+       $(INSTALL_DATA) ./files/foolsm.conf $(1)/etc/foolsm/foolsm.conf
+       $(INSTALL_BIN) ./files/foolsm_script $(1)/etc/foolsm/script
+       $(INSTALL_BIN) ./files/foolsm.init $(1)/etc/init.d/foolsm
+endef
+
+define Package/foolsm/conffiles
+/etc/foolsm/connections.conf
+/etc/foolsm/foolsm.conf
+endef
+
+$(eval $(call BuildPackage,foolsm))
diff --git a/net/foolsm/files/connections.conf b/net/foolsm/files/connections.conf
new file mode 100644 (file)
index 0000000..087a895
--- /dev/null
@@ -0,0 +1,13 @@
+connection {
+   name=Provider1
+   checkip=1.1.1.1
+   device=pppoe-wan
+   ttl=2
+}
+
+connection {
+   name=Provider2
+   checkip=2.2.2.2
+   device=eth0.2
+   ttl=1
+}
diff --git a/net/foolsm/files/foolsm.conf b/net/foolsm/files/foolsm.conf
new file mode 100644 (file)
index 0000000..db3db91
--- /dev/null
@@ -0,0 +1,43 @@
+#
+# (C) 2009 Mika Ilmaranta <ilmis at nullnet.fi>
+#
+# License: GPLv2
+#
+
+#
+# Debug level: 0 .. 8 are normal, 9 gives lots of stuff and 100 doesn't
+# bother to detach
+#
+#debug=10
+#debug=9
+debug=8
+# reopen_on_enodev=1
+
+#
+# Defaults for the connection entries
+#
+defaults {
+  name=defaults
+  checkip=127.0.0.1
+  eventscript=/etc/foolsm/script
+  notifyscript=
+  max_packet_loss=20
+  max_successive_pkts_lost=7
+  min_packet_loss=5
+  min_successive_pkts_rcvd=10
+  interval_ms=2000
+  timeout_ms=2000
+  warn_email=root
+  check_arp=0
+  sourceip=
+# if using ping probes for monitoring only then defaults should
+# not define a default device for packets to autodiscover their path
+# to destination
+#  device=eth0
+# use system default ttl
+  ttl=0
+}
+
+include /etc/foolsm/connections.conf
+
+#EOF
diff --git a/net/foolsm/files/foolsm.init b/net/foolsm/files/foolsm.init
new file mode 100644 (file)
index 0000000..9c4b61f
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2010-2011 OpenWrt.org
+
+START=45
+
+SERVICE_USE_PID=1
+SERVICE_PID_FILE=/var/run/foolsm.pid
+
+start() {
+       service_start /usr/sbin/foolsm -c /etc/foolsm/foolsm.conf -p $SERVICE_PID_FILE
+}
+
+stop() {
+       service_stop /usr/sbin/foolsm
+}
+
+reload() {
+       service_reload /usr/sbin/foolsm
+}
diff --git a/net/foolsm/files/foolsm_script b/net/foolsm/files/foolsm_script
new file mode 100644 (file)
index 0000000..07c4ada
--- /dev/null
@@ -0,0 +1,57 @@
+#!/bin/sh
+#
+# (C) 2009 Mika Ilmaranta <ilmis@nullnet.fi>
+# (C) 2009 Tom Eastep <teastep@shorewall.net>
+#
+# License: GPLv2
+#
+
+DATE=$(/bin/date)
+
+STATE=${1}
+NAME=${2}
+CHECKIP=${3}
+DEVICE=${4}
+WARN_EMAIL=${5}
+REPLIED=${6}
+WAITING=${7}
+TIMEOUT=${8}
+REPLY_LATE=${9}
+CONS_RCVD=${10}
+CONS_WAIT=${11}
+CONS_MISS=${12}
+AVG_RTT=${13}
+
+cat <<EOM | ssmtp ${WARN_EMAIL}
+Subject: "LSM: ${NAME} ${STATE}, DEV ${DEVICE}"
+
+Hi,
+
+Your connection ${NAME} has changed it's state to ${STATE} at ${DATE}.
+
+Following parameters were passed:
+
+newstate     = ${STATE}
+name         = ${NAME}
+checkip      = ${CHECKIP}
+device       = ${DEVICE}
+warn_email   = ${WARN_EMAIL}
+
+Packet counters:
+
+replied      = ${REPLIED} packets replied
+waiting      = ${WAITING} packets waiting for reply
+timeout      = ${TIMEOUT} packets that have timed out (= packet loss)
+reply_late   = ${REPLY_LATE} packets that received a reply after timeout
+cons_rcvd    = ${CONS_RCVD} consecutively received replies in sequence
+cons_wait    = ${CONS_WAIT} consecutive packets waiting for reply
+cons_miss    = ${CONS_MISS} consecutive packets that have timed out
+avg_rtt      = ${AVG_RTT} average rtt, notice that waiting and timed out packets have rtt = 0 when calculating this
+
+Your LSM Daemon
+
+EOM
+
+exit 0
+
+#EOF
diff --git a/net/foolsm/patches/100-plugin-export-dir.patch b/net/foolsm/patches/100-plugin-export-dir.patch
new file mode 100644 (file)
index 0000000..028413f
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/defs.h   2016-11-10 07:22:50.275506874 -0500
++++ b/defs.h   2016-11-10 07:22:58.639469850 -0500
+@@ -22,7 +22,7 @@
+ #define min(x, y) ((x)<(y) ? (x) : (y))
+-#define PLUGIN_EXPORT_DIR "/var/lib/foolsm"
++#define PLUGIN_EXPORT_DIR "/tmp"
+ #endif
diff --git a/net/foolsm/patches/110-missing-WAIT_ANY.patch b/net/foolsm/patches/110-missing-WAIT_ANY.patch
new file mode 100644 (file)
index 0000000..4409a8c
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/forkexec.c       2017-11-02 07:45:28.679821530 -0400
++++ /bforkexec.c       2017-11-02 07:44:54.527653043 -0400
+@@ -108,7 +108,7 @@
+       int script_status;
+       pid_t pid;
+-      while ((pid = waitpid(WAIT_ANY, &script_status, WNOHANG)) != 0) {
++      while ((pid = waitpid(-1, &script_status, WNOHANG)) != 0) {
+               if(pid == -1) {
+                       if(cfg.debug >= 9 && errno != ECHILD)
+                               syslog(LOG_ERR, "%s: %s: %d: waitpid failed %s", __FILE__, __FUNCTION__, __LINE__, strerror(errno));
index 2ab3e2af713bf5581b2209386659281c15d47525..84edea45ad7b6b8e6f7cc6f01e02c902bd08c3ca 100644 (file)
@@ -11,12 +11,12 @@ PKG_LICENSE:=ASL-2.0
 PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
 PKG_NAME:=go-ethereum
-PKG_VERSION:=1.8.11
+PKG_VERSION:=1.8.12
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/ethereum/go-ethereum/tar.gz/v${PKG_VERSION}?
-PKG_HASH:=ad18cc1d3154499ade6c712eab4b005d9dc0abf61282cfb349900d30dfba019a
+PKG_HASH:=53cfd6ff2f82f7a42fa5175e2a795aada4425a22353e5d46008cd566bfb5e239
 
 PKG_BUILD_DEPENDS:=golang/host
 PKG_BUILD_PARALLEL:=1
index 208a990cd3a3f81359f0d0793001d87462eac971..f966ad34a8d4f1f098ab16e2d2055f6ff29e6094 100644 (file)
@@ -5,7 +5,7 @@ PKG_SOURCE_VERSION:=2b99bddcb6961cfda34087138acdda4b8b9ccb9f
 PKG_MIRROR_HASH:=7b1567d4d4b316ed4b70372bbcfc2039a93d6a7bbf24c2b3036b2c7f3bccc9b4
 
 PKG_VERSION:=0.10.2-git-20180607-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
@@ -72,13 +72,6 @@ define Package/gnunet/description
  well as their helpers.
 endef
 
-define Package/gnunet/config
-config GNUNET_HAS_ICONV_SUPPORT
-       depends on PACKAGE_gnunet && (!USE_UCLIBC || (USE_UCLIBC && BUILD_NLS))
-       bool
-       default y
-endef
-
 define BuildComponent
   PKG_CONFIG_DEPENDS+=CONFIG_PACKAGE_$(PKG_NAME)-$(1)
 
@@ -287,7 +280,7 @@ DEPENDS_fs-heap:=+gnunet-datastore
 PLUGIN_fs-heap:=datastore_heap
 CONFLICTS_fs-heap:=gnunet-fs-mysql gnunet-fs-pgsql gnunet-fs-sqlite
 
-DEPENDS_mysql:=+libmysqlclient @GNUNET_HAS_ICONV_SUPPORT
+DEPENDS_mysql:=+libmysqlclient
 LIB_mysql:=mysql my
 
 DEPENDS_social-mysql:=+gnunet-mysql +gnunet-social
index 7c5a714e028d3395e98ba9c42f9e6bd0dd015cfa..7a90da2400b280ef93771abb707bb24423cb4a57 100644 (file)
@@ -1,6 +1,7 @@
 #
 # Copyright (C) 2010-2016 OpenWrt.org
 # Copyright (C) 2009-2016 Thomas Heil <heil@terminal-consulting.de>
+# Copyright (C) 2018 Christian Lachner <gladiac@gmail.com>
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=haproxy
-PKG_VERSION:=1.8.12
-PKG_RELEASE:=00
+PKG_VERSION:=1.8.13
+PKG_RELEASE:=1
 
 PKG_SOURCE:=haproxy-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://www.haproxy.org/download/1.8/src/
-PKG_HASH:=f438a98e657935fa8fad48b98d9029a399e0ad9105cf0e7e8e54365f93d83e9b
+PKG_HASH:=2bf5dafbb5f1530c0e67ab63666565de948591f8e0ee2a1d3c84c45e738220f1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_LICENSE:=GPL-2.0
-MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
-
-ifneq ($(PKG_RELEASE),00)
-       BUILD_VERSION:=-patch$(PKG_RELEASE)
-endif
+MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>, \
+               Christian Lachner <gladiac@gmail.com>
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -34,17 +32,17 @@ define Package/haproxy/Default
   URL:=https://www.haproxy.org/
 endef
 
-define Download/lua534
-       FILE:=lua-5.3.4.tar.gz
+define Download/lua535
+       FILE:=lua-5.3.5.tar.gz
        URL:=https://www.lua.org/ftp/
-       HASH:=f681aa518233bc407e23acf0f5887c884f17436f000d453b2491a9f11a52400c
+       HASH:=0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac
 endef
 
 define Build/Prepare
        $(call Build/Prepare/Default)
 ifeq ($(ENABLE_LUA),y)
-       tar -zxvf $(DL_DIR)/lua-5.3.4.tar.gz -C $(PKG_BUILD_DIR)
-       ln -s $(PKG_BUILD_DIR)/lua-5.3.4 $(PKG_BUILD_DIR)/lua
+       tar -zxvf $(DL_DIR)/lua-5.3.5.tar.gz -C $(PKG_BUILD_DIR)
+       ln -s $(PKG_BUILD_DIR)/lua-5.3.5 $(PKG_BUILD_DIR)/lua
 endif
 endef
 
@@ -115,9 +113,9 @@ endif
 
 ifeq ($(ENABLE_LUA),y)
        ADDON+=USE_LUA=1
-       ADDON+=LUA_LIB_NAME="lua534"
-       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.4/include"
-       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.4/lib"
+       ADDON+=LUA_LIB_NAME="lua535"
+       ADDON+=LUA_INC="$(STAGING_DIR)/lua-5.3.5/include"
+       ADDON+=LUA_LIB="$(STAGING_DIR)/lua-5.3.5/lib"
 endif
 
 ifeq ($(ENABLE_REGPARM),y)
@@ -127,14 +125,14 @@ endif
 ifeq ($(ENABLE_LUA),y)
 define Build/Compile/lua
        $(MAKE) TARGET=$(LINUX_TARGET) -C $(PKG_BUILD_DIR)/lua \
-               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.4/" \
+               INSTALL_TOP="$(STAGING_DIR)/lua-5.3.5/" \
                CC="$(TARGET_CC)" \
                CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \
                LDFLAGS="$(TARGET_LDFLAGS) -lncurses -lreadline" \
                LD="$(TARGET_LD)" \
                linux install
 
-       mv $(STAGING_DIR)/lua-5.3.4/lib/liblua.a $(STAGING_DIR)/lua-5.3.4/lib/liblua534.a
+       mv $(STAGING_DIR)/lua-5.3.5/lib/liblua.a $(STAGING_DIR)/lua-5.3.5/lib/liblua535.a
 endef
 endif
 
@@ -147,7 +145,7 @@ define Build/Compile
                SMALL_OPTS="-DBUFSIZE=16384 -DMAXREWRITE=1030 -DSYSTEM_MAXCONN=165530 " \
                USE_LINUX_TPROXY=1 USE_LINUX_SPLICE=1 USE_TFO=1 \
                USE_ZLIB=yes USE_PCRE=1 USE_PCRE_JIT=1 USE_GETADDRINFO=1 \
-               VERSION="$(PKG_VERSION)$(BUILD_VERSION)" \
+               VERSION="$(PKG_VERSION)-$(PKG_RELEASE)" \
                $(ADDON) \
                CFLAGS="$(TARGET_CFLAGS)" \
                LD="$(TARGET_CC)" \
@@ -165,7 +163,7 @@ define Build/Compile
                DESTDIR="$(PKG_INSTALL_DIR)" \
                $(MAKE_FLAGS) \
                ADDLIB="-lcrypto" \
-               VERSION="$(PKG_VERSION)-patch$(PKG_RELEASE)" \
+               VERSION="$(PKG_VERSION)-$(PKG_RELEASE)" \
                halog
 endef
 
@@ -198,7 +196,7 @@ define Package/halog/install
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/contrib/halog/halog $(1)/usr/bin/
 endef
 
-$(eval $(call Download,lua534))
+$(eval $(call Download,lua535))
 $(eval $(call BuildPackage,haproxy))
 $(eval $(call BuildPackage,halog))
 $(eval $(call BuildPackage,haproxy-nossl))
index 533b97e80480de716e8310135d5cea5e1303885e..77ed6415aca2da962fb77d9b1136eef817c16fcb 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 CLONEURL=http://git.haproxy.org/git/haproxy-1.8.git
-BASE_TAG=v1.8.12
+BASE_TAG=v1.8.13
 TMP_REPODIR=tmprepo
 PATCHESDIR=patches
 
index 1da72132d9399db778835f11f6830ea4dfd86acd..caf294bafc47901d9107d16763ec0827abd92b96 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=inadyn
-PKG_VERSION:=2.3
+PKG_VERSION:=2.3.1
 PKG_RELEASE:=1
 PKG_MAINTAINER:=
 PKG_LICENSE:=GPL-2.0
@@ -16,7 +16,7 @@ PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/troglobit/inadyn/releases/download/v$(PKG_VERSION)
-PKG_HASH:=4a98b80d8565b9e4cb32b19b7a8b06a22a7d9a6f4f03a5298a8d441b6187c760
+PKG_HASH:=81c942db6eab27fa16e868175bdb7aff963eeee06d48bc5443e0dcd6f7c2da40
 
 PKG_FIXUP:=autoreconf
 
index a987fceb1d0720191f4f2bd2d0f15746fa4b9f98..24b3ce9e2774411b499c596165c47089c835e22b 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=ipsec-tools
 PKG_VERSION:=0.8.2
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 PKG_MAINTAINER:=Noah Meyerhans <frodo@morgul.net>, \
        Vitaly Protsko <villy@sft.ru>
 PKG_LICENSE := BSD-3-Clause
diff --git a/net/ipsec-tools/patches/012-fix-implicit-int.patch b/net/ipsec-tools/patches/012-fix-implicit-int.patch
new file mode 100644 (file)
index 0000000..1fa7cb2
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/racoon/isakmp_xauth.c
++++ b/src/racoon/isakmp_xauth.c
+@@ -376,6 +376,7 @@ xauth_reply(iph1, port, id, res)
+       struct ph1handle *iph1;
+       int port;
+       int id;
++      int res;
+ {
+       struct xauth_state *xst = &iph1->mode_cfg->xauth;
+       char *usr = xst->authdata.generic.usr;
+
diff --git a/net/ipsec-tools/patches/015-openssl-1.1.patch b/net/ipsec-tools/patches/015-openssl-1.1.patch
new file mode 100644 (file)
index 0000000..5d55c59
--- /dev/null
@@ -0,0 +1,1096 @@
+From 071fec7181255b9234add44865a435dfdefee520 Mon Sep 17 00:00:00 2001
+In-Reply-To: <20180528120513.560-1-cote2004-github@yahoo.com>
+References: <20180528120513.560-1-cote2004-github@yahoo.com>
+From: Eneas U de Queiroz <cote2004-github@yahoo.com>
+Date: Wed, 30 May 2018 15:42:20 -0300
+Subject: [PATCH v2 1/1] ipsec-tools: add openssl 1.1 support
+To: equeiroz@troianet.com.br
+
+This patch updates the calls to openssl 1.1 API, and adds a
+compatibility layer so it compiles with (at least) openssl 1.0.2, I
+haven't tested it with lower versions, but all that's needed is to edit
+the openssl_compat.* files and add the missing functions there--they're
+usually trivial.
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com>
+---
+ src/racoon/Makefile.am      |  10 +--
+ src/racoon/algorithm.c      |   6 +-
+ src/racoon/cfparse.y        |   2 +-
+ src/racoon/crypto_openssl.c | 197 +++++++++++++++++++++-------------------
+ src/racoon/crypto_openssl.h |   2 +-
+ src/racoon/eaytest.c        |   7 +-
+ src/racoon/ipsec_doi.c      |   2 +-
+ src/racoon/openssl_compat.c | 213 ++++++++++++++++++++++++++++++++++++++++++++
+ src/racoon/openssl_compat.h |  45 ++++++++++
+ src/racoon/plainrsa-gen.c   |  41 +++++----
+ src/racoon/prsa_par.y       |  28 ++++--
+ src/racoon/rsalist.c        |   5 +-
+ 12 files changed, 431 insertions(+), 127 deletions(-)
+ create mode 100644 src/racoon/openssl_compat.c
+ create mode 100644 src/racoon/openssl_compat.h
+
+diff --git a/src/racoon/Makefile.am b/src/racoon/Makefile.am
+index dbaded9..4c585f3 100644
+--- a/src/racoon/Makefile.am
++++ b/src/racoon/Makefile.am
+@@ -4,7 +4,7 @@ sbin_PROGRAMS = racoon racoonctl plainrsa-gen
+ noinst_PROGRAMS = eaytest
+ include_racoon_HEADERS = racoonctl.h var.h vmbuf.h misc.h gcmalloc.h admin.h \
+       schedule.h sockmisc.h isakmp_var.h isakmp.h isakmp_xauth.h \
+-      isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h
++      isakmp_cfg.h isakmp_unity.h ipsec_doi.h evt.h openssl_compat.h
+ lib_LTLIBRARIES = libracoon.la
+ adminsockdir=${localstatedir}/racoon
+@@ -32,7 +32,7 @@ racoon_SOURCES = \
+       gssapi.c dnssec.c getcertsbyname.c privsep.c \
+       pfkey.c admin.c evt.c ipsec_doi.c oakley.c grabmyaddr.c vendorid.c \
+       policy.c localconf.c remoteconf.c crypto_openssl.c algorithm.c \
+-      proposal.c sainfo.c strnames.c \
++      openssl_compat.c proposal.c sainfo.c strnames.c \
+       plog.c logger.c schedule.c str2val.c \
+       safefile.c backupsa.c genlist.c rsalist.c \
+       cftoken.l cfparse.y prsa_tok.l prsa_par.y 
+@@ -51,12 +51,12 @@ libracoon_la_SOURCES = kmpstat.c vmbuf.c sockmisc.c misc.c
+ libracoon_la_CFLAGS = -DNOUSE_PRIVSEP $(AM_CFLAGS)
+ plainrsa_gen_SOURCES = plainrsa-gen.c plog.c \
+-      crypto_openssl.c logger.c 
++      crypto_openssl.c logger.c openssl_compat.c
+ EXTRA_plainrsa_gen_SOURCES = $(MISSING_ALGOS)
+ plainrsa_gen_LDADD = $(CRYPTOBJS) vmbuf.o misc.o
+ plainrsa_gen_DEPENDENCIES = $(CRYPTOBJS) vmbuf.o misc.o
+-eaytest_SOURCES = eaytest.c plog.c logger.c
++eaytest_SOURCES = eaytest.c plog.c logger.c openssl_compat.c
+ EXTRA_eaytest_SOURCES = missing/crypto/sha2/sha2.c
+ eaytest_LDADD =       crypto_openssl_test.o vmbuf.o str2val.o misc_noplog.o \
+       $(CRYPTOBJS)
+@@ -75,7 +75,7 @@ noinst_HEADERS = \
+       debugrm.h         isakmp.h      misc.h          sainfo.h \
+       dhgroup.h         isakmp_agg.h  netdb_dnssec.h  schedule.h \
+       isakmp_cfg.h      isakmp_xauth.h isakmp_unity.h isakmp_frag.h \
+-      throttle.h        privsep.h \
++      throttle.h        privsep.h     openssl_compat.h \
+       cfparse_proto.h   cftoken_proto.h genlist.h     rsalist.h \
+       missing/crypto/sha2/sha2.h missing/crypto/rijndael/rijndael_local.h \
+       missing/crypto/rijndael/rijndael-api-fst.h \
+diff --git a/src/racoon/algorithm.c b/src/racoon/algorithm.c
+index 3fd50f6..66c874b 100644
+--- a/src/racoon/algorithm.c
++++ b/src/racoon/algorithm.c
+@@ -128,7 +128,7 @@ static struct enc_algorithm oakley_encdef[] = {
+ { "aes",      algtype_aes,    OAKLEY_ATTR_ENC_ALG_AES,        16,
+               eay_aes_encrypt,        eay_aes_decrypt,
+               eay_aes_weakkey,        eay_aes_keylen, },
+-#ifdef HAVE_OPENSSL_CAMELLIA_H
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ { "camellia", algtype_camellia,       OAKLEY_ATTR_ENC_ALG_CAMELLIA,   16,
+               eay_camellia_encrypt,   eay_camellia_decrypt,
+               eay_camellia_weakkey,   eay_camellia_keylen, },
+@@ -168,7 +168,7 @@ static struct enc_algorithm ipsec_encdef[] = {
+ { "twofish",  algtype_twofish,        IPSECDOI_ESP_TWOFISH,           16,
+               NULL,                   NULL,
+               NULL,                   eay_twofish_keylen, },
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ { "3idea",    algtype_3idea,          IPSECDOI_ESP_3IDEA,             8,
+               NULL,                   NULL,
+               NULL,                   NULL, },
+@@ -179,7 +179,7 @@ static struct enc_algorithm ipsec_encdef[] = {
+ { "rc4",      algtype_rc4,            IPSECDOI_ESP_RC4,               8,
+               NULL,                   NULL,
+               NULL,                   NULL, },
+-#ifdef HAVE_OPENSSL_CAMELLIA_H
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ { "camellia", algtype_camellia,       IPSECDOI_ESP_CAMELLIA,          16,
+               NULL,                   NULL,
+               NULL,                   eay_camellia_keylen, },
+diff --git a/src/racoon/cfparse.y b/src/racoon/cfparse.y
+index 0d9bd67..8415752 100644
+--- a/src/racoon/cfparse.y
++++ b/src/racoon/cfparse.y
+@@ -2564,7 +2564,7 @@ set_isakmp_proposal(rmconf)
+               plog(LLV_DEBUG2, LOCATION, NULL,
+                       "encklen=%d\n", s->encklen);
+-              memset(types, 0, ARRAYLEN(types));
++              memset(types, 0, sizeof types);
+               types[algclass_isakmp_enc] = s->algclass[algclass_isakmp_enc];
+               types[algclass_isakmp_hash] = s->algclass[algclass_isakmp_hash];
+               types[algclass_isakmp_dh] = s->algclass[algclass_isakmp_dh];
+diff --git a/src/racoon/crypto_openssl.c b/src/racoon/crypto_openssl.c
+index 55b076a..8fb358f 100644
+--- a/src/racoon/crypto_openssl.c
++++ b/src/racoon/crypto_openssl.c
+@@ -90,6 +90,7 @@
+ #endif
+ #endif
+ #include "plog.h"
++#include "openssl_compat.h"
+ #define USE_NEW_DES_API
+@@ -316,9 +317,12 @@ eay_cmp_asn1dn(n1, n2)
+                       i = idx+1;
+                       goto end;
+               }
+-              if ((ea->value->length == 1 && ea->value->data[0] == '*') ||
+-                  (eb->value->length == 1 && eb->value->data[0] == '*')) {
+-                      if (OBJ_cmp(ea->object,eb->object)) {
++              ASN1_STRING *sa = X509_NAME_ENTRY_get_data(ea);
++              ASN1_STRING *sb = X509_NAME_ENTRY_get_data(eb);
++              if ((ASN1_STRING_length(sa) == 1 && ASN1_STRING_get0_data(sa)[0] == '*') ||
++                  (ASN1_STRING_length(sb) == 1 && ASN1_STRING_get0_data(sb)[0] == '*')) {
++                      if (OBJ_cmp(X509_NAME_ENTRY_get_object(ea),
++                                  X509_NAME_ENTRY_get_object(eb))) {
+                               i = idx+1;
+                               goto end;
+                       }
+@@ -430,7 +434,7 @@ cb_check_cert_local(ok, ctx)
+       if (!ok) {
+               X509_NAME_oneline(
+-                              X509_get_subject_name(ctx->current_cert),
++                              X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)),
+                               buf,
+                               256);
+               /*
+@@ -438,7 +442,8 @@ cb_check_cert_local(ok, ctx)
+                * ok if they are self signed. But we should still warn
+                * the user.
+                */
+-              switch (ctx->error) {
++              int ctx_error = X509_STORE_CTX_get_error(ctx);
++              switch (ctx_error) {
+               case X509_V_ERR_CERT_HAS_EXPIRED:
+               case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
+               case X509_V_ERR_INVALID_CA:
+@@ -453,9 +458,9 @@ cb_check_cert_local(ok, ctx)
+               }
+               plog(log_tag, LOCATION, NULL,
+                       "%s(%d) at depth:%d SubjectName:%s\n",
+-                      X509_verify_cert_error_string(ctx->error),
+-                      ctx->error,
+-                      ctx->error_depth,
++                      X509_verify_cert_error_string(ctx_error),
++                      ctx_error,
++                      X509_STORE_CTX_get_error_depth(ctx),
+                       buf);
+       }
+       ERR_clear_error();
+@@ -477,10 +482,11 @@ cb_check_cert_remote(ok, ctx)
+       if (!ok) {
+               X509_NAME_oneline(
+-                              X509_get_subject_name(ctx->current_cert),
++                              X509_get_subject_name(X509_STORE_CTX_get_current_cert(ctx)),
+                               buf,
+                               256);
+-              switch (ctx->error) {
++              int ctx_error=X509_STORE_CTX_get_error(ctx);
++              switch (ctx_error) {
+               case X509_V_ERR_UNABLE_TO_GET_CRL:
+                       ok = 1;
+                       log_tag = LLV_WARNING;
+@@ -490,9 +496,9 @@ cb_check_cert_remote(ok, ctx)
+               }
+               plog(log_tag, LOCATION, NULL,
+                       "%s(%d) at depth:%d SubjectName:%s\n",
+-                      X509_verify_cert_error_string(ctx->error),
+-                      ctx->error,
+-                      ctx->error_depth,
++                      X509_verify_cert_error_string(ctx_error),
++                      ctx_error,
++                      X509_STORE_CTX_get_error_depth(ctx),
+                       buf);
+       }
+       ERR_clear_error();
+@@ -516,14 +522,15 @@ eay_get_x509asn1subjectname(cert)
+       if (x509 == NULL)
+               goto error;
++      X509_NAME *subject_name = X509_get_subject_name(x509);
+       /* get the length of the name */
+-      len = i2d_X509_NAME(x509->cert_info->subject, NULL);
++      len = i2d_X509_NAME(subject_name, NULL);
+       name = vmalloc(len);
+       if (!name)
+               goto error;
+       /* get the name */
+       bp = (unsigned char *) name->v;
+-      len = i2d_X509_NAME(x509->cert_info->subject, &bp);
++      len = i2d_X509_NAME(subject_name, &bp);
+       X509_free(x509);
+@@ -661,15 +668,16 @@ eay_get_x509asn1issuername(cert)
+       if (x509 == NULL)
+               goto error;
++      X509_NAME *issuer_name = X509_get_issuer_name(x509);
+       /* get the length of the name */
+-      len = i2d_X509_NAME(x509->cert_info->issuer, NULL);
++      len = i2d_X509_NAME(issuer_name, NULL);
+       name = vmalloc(len);
+       if (name == NULL)
+               goto error;
+       /* get the name */
+       bp = (unsigned char *) name->v;
+-      len = i2d_X509_NAME(x509->cert_info->issuer, &bp);
++      len = i2d_X509_NAME(issuer_name, &bp);
+       X509_free(x509);
+@@ -850,7 +858,7 @@ eay_check_x509sign(source, sig, cert)
+               return -1;
+       }
+-      res = eay_rsa_verify(source, sig, evp->pkey.rsa);
++      res = eay_rsa_verify(source, sig, EVP_PKEY_get0_RSA(evp));
+       EVP_PKEY_free(evp);
+       X509_free(x509);
+@@ -992,7 +1000,7 @@ eay_get_x509sign(src, privkey)
+       if (evp == NULL)
+               return NULL;
+-      sig = eay_rsa_sign(src, evp->pkey.rsa);
++      sig = eay_rsa_sign(src, EVP_PKEY_get0_RSA(evp));
+       EVP_PKEY_free(evp);
+@@ -1079,7 +1087,11 @@ eay_strerror()
+       int line, flags;
+       unsigned long es;
++#if OPENSSL_VERSION_NUMBER >= 0x10100000L
++      es = 0; /* even when allowed by OPENSSL_API_COMPAT, it is defined as 0 */
++#else
+       es = CRYPTO_thread_id();
++#endif
+       while ((l = ERR_get_error_line_data(&file, &line, &data, &flags)) != 0){
+               n = snprintf(ebuf + len, sizeof(ebuf) - len,
+@@ -1100,7 +1112,7 @@ vchar_t *
+ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc)
+ {
+       vchar_t *res;
+-      EVP_CIPHER_CTX ctx;
++      EVP_CIPHER_CTX *ctx;
+       if (!e)
+               return NULL;
+@@ -1111,7 +1123,7 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc
+       if ((res = vmalloc(data->l)) == NULL)
+               return NULL;
+-      EVP_CIPHER_CTX_init(&ctx);
++      ctx = EVP_CIPHER_CTX_new();
+       switch(EVP_CIPHER_nid(e)){
+       case NID_bf_cbc:
+@@ -1125,54 +1137,41 @@ evp_crypt(vchar_t *data, vchar_t *key, vchar_t *iv, const EVP_CIPHER *e, int enc
+               /* XXX: can we do that also for algos with a fixed key size ?
+                */
+               /* init context without key/iv
+-         */
+-        if (!EVP_CipherInit(&ctx, e, NULL, NULL, enc))
+-        {
+-            OpenSSL_BUG();
+-            vfree(res);
+-            return NULL;
+-        }
++                 */
++              if (!EVP_CipherInit(ctx, e, NULL, NULL, enc))
++                      goto out;
+               
+-        /* update key size
+-         */
+-        if (!EVP_CIPHER_CTX_set_key_length(&ctx, key->l))
+-        {
+-            OpenSSL_BUG();
+-            vfree(res);
+-            return NULL;
+-        }
+-
+-        /* finalize context init with desired key size
+-         */
+-        if (!EVP_CipherInit(&ctx, NULL, (u_char *) key->v,
++              /* update key size
++               */
++              if (!EVP_CIPHER_CTX_set_key_length(ctx, key->l))
++                      goto out;
++
++              /* finalize context init with desired key size
++               */
++              if (!EVP_CipherInit(ctx, NULL, (u_char *) key->v,
+                                                       (u_char *) iv->v, enc))
+-        {
+-            OpenSSL_BUG();
+-            vfree(res);
+-            return NULL;
+-              }
++                      goto out;
+               break;
+       default:
+-              if (!EVP_CipherInit(&ctx, e, (u_char *) key->v, 
+-                                                      (u_char *) iv->v, enc)) {
+-                      OpenSSL_BUG();
+-                      vfree(res);
+-                      return NULL;
+-              }
++              if (!EVP_CipherInit(ctx, e, (u_char *) key->v,
++                                                      (u_char *) iv->v, enc))
++                      goto out;
+       }
+       /* disable openssl padding */
+-      EVP_CIPHER_CTX_set_padding(&ctx, 0); 
++      EVP_CIPHER_CTX_set_padding(ctx, 0);
+       
+-      if (!EVP_Cipher(&ctx, (u_char *) res->v, (u_char *) data->v, data->l)) {
+-              OpenSSL_BUG();
+-              vfree(res);
+-              return NULL;
+-      }
++      if (!EVP_Cipher(ctx, (u_char *) res->v, (u_char *) data->v, data->l))
++              goto out;
+-      EVP_CIPHER_CTX_cleanup(&ctx);
++      EVP_CIPHER_CTX_free(ctx);
+       return res;
++out:
++      EVP_CIPHER_CTX_free(ctx);
++      OpenSSL_BUG();
++      vfree(res);
++      return NULL;
+ }
+ int
+@@ -1230,7 +1229,7 @@ eay_des_keylen(len)
+       return evp_keylen(len, EVP_des_cbc());
+ }
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+ /*
+  * IDEA-CBC
+  */
+@@ -1587,7 +1586,7 @@ eay_aes_keylen(len)
+       return len;
+ }
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ /*
+  * CAMELLIA-CBC
+  */
+@@ -1680,9 +1679,9 @@ eay_hmac_init(key, md)
+       vchar_t *key;
+       const EVP_MD *md;
+ {
+-      HMAC_CTX *c = racoon_malloc(sizeof(*c));
++      HMAC_CTX *c = HMAC_CTX_new();
+-      HMAC_Init(c, key->v, key->l, md);
++      HMAC_Init_ex(c, key->v, key->l, md, NULL);
+       return (caddr_t)c;
+ }
+@@ -1761,8 +1760,7 @@ eay_hmacsha2_512_final(c)
+       HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+       res->l = l;
+-      HMAC_cleanup((HMAC_CTX *)c);
+-      (void)racoon_free(c);
++      HMAC_CTX_free((HMAC_CTX *)c);
+       if (SHA512_DIGEST_LENGTH != res->l) {
+               plog(LLV_ERROR, LOCATION, NULL,
+@@ -1811,8 +1809,7 @@ eay_hmacsha2_384_final(c)
+       HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+       res->l = l;
+-      HMAC_cleanup((HMAC_CTX *)c);
+-      (void)racoon_free(c);
++      HMAC_CTX_free((HMAC_CTX *)c);
+       if (SHA384_DIGEST_LENGTH != res->l) {
+               plog(LLV_ERROR, LOCATION, NULL,
+@@ -1861,8 +1858,7 @@ eay_hmacsha2_256_final(c)
+       HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+       res->l = l;
+-      HMAC_cleanup((HMAC_CTX *)c);
+-      (void)racoon_free(c);
++      HMAC_CTX_free((HMAC_CTX *)c);
+       if (SHA256_DIGEST_LENGTH != res->l) {
+               plog(LLV_ERROR, LOCATION, NULL,
+@@ -1912,8 +1908,7 @@ eay_hmacsha1_final(c)
+       HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+       res->l = l;
+-      HMAC_cleanup((HMAC_CTX *)c);
+-      (void)racoon_free(c);
++      HMAC_CTX_free((HMAC_CTX *)c);
+       if (SHA_DIGEST_LENGTH != res->l) {
+               plog(LLV_ERROR, LOCATION, NULL,
+@@ -1962,8 +1957,7 @@ eay_hmacmd5_final(c)
+       HMAC_Final((HMAC_CTX *)c, (unsigned char *) res->v, &l);
+       res->l = l;
+-      HMAC_cleanup((HMAC_CTX *)c);
+-      (void)racoon_free(c);
++      HMAC_CTX_free((HMAC_CTX *)c);
+       if (MD5_DIGEST_LENGTH != res->l) {
+               plog(LLV_ERROR, LOCATION, NULL,
+@@ -2266,6 +2260,7 @@ eay_dh_generate(prime, g, publen, pub, priv)
+       u_int32_t g;
+ {
+       BIGNUM *p = NULL;
++      BIGNUM *BNg = NULL;
+       DH *dh = NULL;
+       int error = -1;
+@@ -2276,25 +2271,28 @@ eay_dh_generate(prime, g, publen, pub, priv)
+       if ((dh = DH_new()) == NULL)
+               goto end;
+-      dh->p = p;
+-      p = NULL;       /* p is now part of dh structure */
+-      dh->g = NULL;
+-      if ((dh->g = BN_new()) == NULL)
++      if ((BNg = BN_new()) == NULL)
+               goto end;
+-      if (!BN_set_word(dh->g, g))
++      if (!BN_set_word(BNg, g))
+               goto end;
++      if (! DH_set0_pqg(dh, p, NULL, BNg))
++              goto end;
++      BNg = NULL;
++      p = NULL;       /* p is now part of dh structure */
+       if (publen != 0)
+-              dh->length = publen;
++              DH_set_length(dh, publen);
+       /* generate public and private number */
+       if (!DH_generate_key(dh))
+               goto end;
+       /* copy results to buffers */
+-      if (eay_bn2v(pub, dh->pub_key) < 0)
++      BIGNUM *pub_key, *priv_key;
++      DH_get0_key(dh, (const BIGNUM**) &pub_key, (const BIGNUM**) &priv_key);
++      if (eay_bn2v(pub, pub_key) < 0)
+               goto end;
+-      if (eay_bn2v(priv, dh->priv_key) < 0) {
++      if (eay_bn2v(priv, priv_key) < 0) {
+               vfree(*pub);
+               goto end;
+       }
+@@ -2306,6 +2304,8 @@ end:
+               DH_free(dh);
+       if (p != 0)
+               BN_free(p);
++      if (BNg != 0)
++              BN_free(BNg);
+       return(error);
+ }
+@@ -2319,6 +2319,10 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+       int l;
+       unsigned char *v = NULL;
+       int error = -1;
++      BIGNUM *p = BN_new();
++      BIGNUM *BNg = BN_new();
++      BIGNUM *pub_key = BN_new();
++      BIGNUM *priv_key = BN_new();
+       /* make public number to compute */
+       if (eay_v2bn(&dh_pub, pub2) < 0)
+@@ -2327,19 +2331,21 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+       /* make DH structure */
+       if ((dh = DH_new()) == NULL)
+               goto end;
+-      if (eay_v2bn(&dh->p, prime) < 0)
++      if (p == NULL || BNg == NULL || pub_key == NULL || priv_key == NULL)
+               goto end;
+-      if (eay_v2bn(&dh->pub_key, pub) < 0)
++
++      if (eay_v2bn(&p, prime) < 0)
+               goto end;
+-      if (eay_v2bn(&dh->priv_key, priv) < 0)
++      if (eay_v2bn(&pub_key, pub) < 0)
+               goto end;
+-      dh->length = pub2->l * 8;
+-
+-      dh->g = NULL;
+-      if ((dh->g = BN_new()) == NULL)
++      if (eay_v2bn(&priv_key, priv) < 0)
+               goto end;
+-      if (!BN_set_word(dh->g, g))
++      if (!BN_set_word(BNg, g))
+               goto end;
++      DH_set0_key(dh, pub_key, priv_key);
++      DH_set_length(dh, pub2->l * 8);
++      DH_set0_pqg(dh, p, NULL, BNg);
++      pub_key = priv_key = p = BNg = NULL;
+       if ((v = racoon_calloc(prime->l, sizeof(u_char))) == NULL)
+               goto end;
+@@ -2350,6 +2356,14 @@ eay_dh_compute(prime, g, pub, priv, pub2, key)
+       error = 0;
+ end:
++      if (p != NULL)
++              BN_free(p);
++      if (BNg != NULL)
++              BN_free(BNg);
++      if (pub_key != NULL)
++              BN_free(pub_key);
++      if (priv_key != NULL)
++              BN_free(priv_key);
+       if (dh_pub != NULL)
+               BN_free(dh_pub);
+       if (dh != NULL)
+@@ -2400,12 +2414,14 @@ eay_bn2v(var, bn)
+ void
+ eay_init()
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       OpenSSL_add_all_algorithms();
+       ERR_load_crypto_strings();
+ #ifdef HAVE_OPENSSL_ENGINE_H
+       ENGINE_load_builtin_engines();
+       ENGINE_register_all_complete();
+ #endif
++#endif
+ }
+ vchar_t *
+@@ -2504,8 +2520,7 @@ binbuf_pubkey2rsa(vchar_t *binbuf)
+               goto out;
+       }
+       
+-      rsa_pub->n = mod;
+-      rsa_pub->e = exp;
++      RSA_set0_key(rsa_pub, mod, exp, NULL);
+ out:
+       return rsa_pub;
+@@ -2582,5 +2597,5 @@ eay_random()
+ const char *
+ eay_version()
+ {
+-      return SSLeay_version(SSLEAY_VERSION);
++      return OpenSSL_version(OPENSSL_VERSION);
+ }
+diff --git a/src/racoon/crypto_openssl.h b/src/racoon/crypto_openssl.h
+index 66fac73..ee5b765 100644
+--- a/src/racoon/crypto_openssl.h
++++ b/src/racoon/crypto_openssl.h
+@@ -124,7 +124,7 @@ extern vchar_t *eay_aes_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
+ extern int eay_aes_weakkey __P((vchar_t *));
+ extern int eay_aes_keylen __P((int));
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+ /* Camellia */
+ extern vchar_t *eay_camellia_encrypt __P((vchar_t *, vchar_t *, vchar_t *));
+ extern vchar_t *eay_camellia_decrypt __P((vchar_t *, vchar_t *, vchar_t *));
+diff --git a/src/racoon/eaytest.c b/src/racoon/eaytest.c
+index 1474bdc..ae09db3 100644
+--- a/src/racoon/eaytest.c
++++ b/src/racoon/eaytest.c
+@@ -62,6 +62,7 @@
+ #include "dhgroup.h"
+ #include "crypto_openssl.h"
+ #include "gnuc.h"
++#include "openssl_compat.h"
+ #include "package_version.h"
+@@ -103,7 +104,7 @@ rsa_verify_with_pubkey(src, sig, pubkey_txt)
+               printf ("PEM_read_PUBKEY(): %s\n", eay_strerror());
+               return -1;
+       }
+-      error = eay_check_rsasign(src, sig, evp->pkey.rsa);
++      error = eay_check_rsasign(src, sig, EVP_PKEY_get0_RSA(evp));
+       return error;
+ }
+@@ -698,7 +699,7 @@ ciphertest(ac, av)
+                         eay_cast_encrypt, eay_cast_decrypt) < 0)
+         return -1;
+       
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+       if (ciphertest_1 ("IDEA",
+                         &data, 8,
+                         &key, key.l,
+@@ -715,7 +716,7 @@ ciphertest(ac, av)
+                         eay_rc5_encrypt, eay_rc5_decrypt) < 0)
+         return -1;
+ #endif
+-#if defined(HAVE_OPENSSL_CAMELLIA_H)
++#if defined(HAVE_OPENSSL_CAMELLIA_H) && ! defined(OPENSSL_NO_CAMELLIA)
+       if (ciphertest_1 ("CAMELLIA",
+                         &data, 16,
+                         &key, key.l,
+diff --git a/src/racoon/ipsec_doi.c b/src/racoon/ipsec_doi.c
+index 84a4c71..b52469f 100644
+--- a/src/racoon/ipsec_doi.c
++++ b/src/racoon/ipsec_doi.c
+@@ -715,7 +715,7 @@ out:
+       /* key length must not be specified on some algorithms */
+       if (keylen) {
+               if (sa->enctype == OAKLEY_ATTR_ENC_ALG_DES
+-#ifdef HAVE_OPENSSL_IDEA_H
++#if defined(HAVE_OPENSSL_IDEA_H) && ! defined(OPENSSL_NO_IDEA)
+                || sa->enctype == OAKLEY_ATTR_ENC_ALG_IDEA
+ #endif
+                || sa->enctype == OAKLEY_ATTR_ENC_ALG_3DES) {
+diff --git a/src/racoon/openssl_compat.c b/src/racoon/openssl_compat.c
+new file mode 100644
+index 0000000..864b5fb
+--- /dev/null
++++ b/src/racoon/openssl_compat.c
+@@ -0,0 +1,213 @@
++/*
++ * Copyright 2016 The OpenSSL Project Authors. All Rights Reserved.
++ *
++ * Licensed under the OpenSSL license (the "License").  You may not use
++ * this file except in compliance with the License.  You can obtain a copy
++ * in the file LICENSE in the source distribution or at
++ * https://www.openssl.org/source/license.html
++ */
++
++#include "openssl_compat.h"
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
++#include <string.h>
++
++static void *OPENSSL_zalloc(size_t num)
++{
++    void *ret = OPENSSL_malloc(num);
++
++    if (ret != NULL)
++        memset(ret, 0, num);
++    return ret;
++}
++
++int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d)
++{
++    /* If the fields n and e in r are NULL, the corresponding input
++     * parameters MUST be non-NULL for n and e.  d may be
++     * left NULL (in case only the public key is used).
++     */
++    if ((r->n == NULL && n == NULL)
++        || (r->e == NULL && e == NULL))
++        return 0;
++
++    if (n != NULL) {
++        BN_free(r->n);
++        r->n = n;
++    }
++    if (e != NULL) {
++        BN_free(r->e);
++        r->e = e;
++    }
++    if (d != NULL) {
++        BN_free(r->d);
++        r->d = d;
++    }
++
++    return 1;
++}
++
++int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q)
++{
++    /* If the fields p and q in r are NULL, the corresponding input
++     * parameters MUST be non-NULL.
++     */
++    if ((r->p == NULL && p == NULL)
++        || (r->q == NULL && q == NULL))
++        return 0;
++
++    if (p != NULL) {
++        BN_free(r->p);
++        r->p = p;
++    }
++    if (q != NULL) {
++        BN_free(r->q);
++        r->q = q;
++    }
++
++    return 1;
++}
++
++int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp)
++{
++    /* If the fields dmp1, dmq1 and iqmp in r are NULL, the corresponding input
++     * parameters MUST be non-NULL.
++     */
++    if ((r->dmp1 == NULL && dmp1 == NULL)
++        || (r->dmq1 == NULL && dmq1 == NULL)
++        || (r->iqmp == NULL && iqmp == NULL))
++        return 0;
++
++    if (dmp1 != NULL) {
++        BN_free(r->dmp1);
++        r->dmp1 = dmp1;
++    }
++    if (dmq1 != NULL) {
++        BN_free(r->dmq1);
++        r->dmq1 = dmq1;
++    }
++    if (iqmp != NULL) {
++        BN_free(r->iqmp);
++        r->iqmp = iqmp;
++    }
++
++    return 1;
++}
++
++void RSA_get0_key(const RSA *r,
++                  const BIGNUM **n, const BIGNUM **e, const BIGNUM **d)
++{
++    if (n != NULL)
++        *n = r->n;
++    if (e != NULL)
++        *e = r->e;
++    if (d != NULL)
++        *d = r->d;
++}
++
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q)
++{
++    if (p != NULL)
++        *p = r->p;
++    if (q != NULL)
++        *q = r->q;
++}
++
++void RSA_get0_crt_params(const RSA *r,
++                         const BIGNUM **dmp1, const BIGNUM **dmq1,
++                         const BIGNUM **iqmp)
++{
++    if (dmp1 != NULL)
++        *dmp1 = r->dmp1;
++    if (dmq1 != NULL)
++        *dmq1 = r->dmq1;
++    if (iqmp != NULL)
++        *iqmp = r->iqmp;
++}
++
++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
++{
++    /* If the fields p and g in d are NULL, the corresponding input
++     * parameters MUST be non-NULL.  q may remain NULL.
++     */
++    if ((dh->p == NULL && p == NULL)
++        || (dh->g == NULL && g == NULL))
++        return 0;
++
++    if (p != NULL) {
++        BN_free(dh->p);
++        dh->p = p;
++    }
++    if (q != NULL) {
++        BN_free(dh->q);
++        dh->q = q;
++    }
++    if (g != NULL) {
++        BN_free(dh->g);
++        dh->g = g;
++    }
++
++    if (q != NULL) {
++        dh->length = BN_num_bits(q);
++    }
++
++    return 1;
++}
++
++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key)
++{
++    if (pub_key != NULL)
++        *pub_key = dh->pub_key;
++    if (priv_key != NULL)
++        *priv_key = dh->priv_key;
++}
++
++int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key)
++{
++    /* If the field pub_key in dh is NULL, the corresponding input
++     * parameters MUST be non-NULL.  The priv_key field may
++     * be left NULL.
++     */
++    if (dh->pub_key == NULL && pub_key == NULL)
++        return 0;
++
++    if (pub_key != NULL) {
++        BN_free(dh->pub_key);
++        dh->pub_key = pub_key;
++    }
++    if (priv_key != NULL) {
++        BN_free(dh->priv_key);
++        dh->priv_key = priv_key;
++    }
++
++    return 1;
++}
++
++int DH_set_length(DH *dh, long length)
++{
++    dh->length = length;
++    return 1;
++}
++
++HMAC_CTX *HMAC_CTX_new(void)
++{
++    return OPENSSL_zalloc(sizeof(HMAC_CTX));
++}
++
++void HMAC_CTX_free(HMAC_CTX *ctx)
++{
++    HMAC_CTX_cleanup(ctx);
++    OPENSSL_free(ctx);
++}
++
++RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey)
++{
++    if (pkey->type != EVP_PKEY_RSA) {
++        return NULL;
++    }
++    return pkey->pkey.rsa;
++}
++
++
++#endif /* OPENSSL_VERSION_NUMBER */
+diff --git a/src/racoon/openssl_compat.h b/src/racoon/openssl_compat.h
+new file mode 100644
+index 0000000..9e152c2
+--- /dev/null
++++ b/src/racoon/openssl_compat.h
+@@ -0,0 +1,45 @@
++#ifndef OPENSSL_COMPAT_H
++#define OPENSSL_COMPAT_H
++
++#include <openssl/opensslv.h>
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
++#include <openssl/rsa.h>
++#include <openssl/dh.h>
++#include <openssl/evp.h>
++#include <openssl/hmac.h>
++
++int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d);
++int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q);
++int RSA_set0_crt_params(RSA *r, BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp);
++void RSA_get0_key(const RSA *r, const BIGNUM **n, const BIGNUM **e, const BIGNUM **d);
++void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q);
++void RSA_get0_crt_params(const RSA *r, const BIGNUM **dmp1, const BIGNUM **dmq1, const BIGNUM **iqmp);
++
++int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
++void DH_get0_key(const DH *dh, const BIGNUM **pub_key, const BIGNUM **priv_key);
++int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key);
++int DH_set_length(DH *dh, long length);
++
++HMAC_CTX *HMAC_CTX_new(void);
++void HMAC_CTX_free(HMAC_CTX* ctx);
++
++RSA *EVP_PKEY_get0_RSA(EVP_PKEY *pkey);
++
++#define ASN1_STRING_length(s) s->length
++#define ASN1_STRING_get0_data(s) s->data
++
++#define X509_get_subject_name(x) x->cert_info->subject
++#define X509_get_issuer_name(x) x->cert_info->issuer
++#define X509_NAME_ENTRY_get_data(n) n->value
++#define X509_NAME_ENTRY_get_object(n) n->object
++#define X509_STORE_CTX_get_current_cert(ctx) ctx->current_cert
++#define X509_STORE_CTX_get_error(ctx) ctx->error
++#define X509_STORE_CTX_get_error_depth(ctx) ctx->error_depth
++
++#define OPENSSL_VERSION SSLEAY_VERSION
++#define OpenSSL_version SSLeay_version
++
++#endif /* OPENSSL_VERSION_NUMBER */
++
++#endif /* OPENSSL_COMPAT_H */
+diff --git a/src/racoon/plainrsa-gen.c b/src/racoon/plainrsa-gen.c
+index cad1861..b949b08 100644
+--- a/src/racoon/plainrsa-gen.c
++++ b/src/racoon/plainrsa-gen.c
+@@ -60,6 +60,7 @@
+ #include "vmbuf.h"
+ #include "plog.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+ #include "package_version.h"
+@@ -90,12 +91,14 @@ mix_b64_pubkey(const RSA *key)
+       char *binbuf;
+       long binlen, ret;
+       vchar_t *res;
+-      
+-      binlen = 1 + BN_num_bytes(key->e) + BN_num_bytes(key->n);
++      const BIGNUM *e, *n;
++
++      RSA_get0_key(key, &n, &e, NULL);
++      binlen = 1 + BN_num_bytes(e) + BN_num_bytes(n);
+       binbuf = malloc(binlen);
+       memset(binbuf, 0, binlen);
+-      binbuf[0] = BN_bn2bin(key->e, (unsigned char *) &binbuf[1]);
+-      ret = BN_bn2bin(key->n, (unsigned char *) (&binbuf[binbuf[0] + 1]));
++      binbuf[0] = BN_bn2bin(e, (unsigned char *) &binbuf[1]);
++      ret = BN_bn2bin(n, (unsigned char *) (&binbuf[binbuf[0] + 1]));
+       if (1 + binbuf[0] + ret != binlen) {
+               plog(LLV_ERROR, LOCATION, NULL,
+                    "Pubkey generation failed. This is really strange...\n");
+@@ -131,16 +134,20 @@ print_rsa_key(FILE *fp, const RSA *key)
+       
+       fprintf(fp, "# : PUB 0s%s\n", pubkey64->v);
+       fprintf(fp, ": RSA\t{\n");
+-      fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(key->n));
++      const BIGNUM *n, *e, *d, *p, *q, *dmp1, *dmq1, *iqmp;
++      RSA_get0_key(key, &n, &e, &d);
++      RSA_get0_factors(key, &p, &q);
++      RSA_get0_crt_params(key, &dmp1, &dmq1, &iqmp);
++      fprintf(fp, "\t# RSA %d bits\n", BN_num_bits(n));
+       fprintf(fp, "\t# pubkey=0s%s\n", pubkey64->v);
+-      fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(key->n)));
+-      fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(key->e)));
+-      fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(key->d)));
+-      fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(key->p)));
+-      fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(key->q)));
+-      fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(key->dmp1)));
+-      fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(key->dmq1)));
+-      fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(key->iqmp)));
++      fprintf(fp, "\tModulus: 0x%s\n", lowercase(BN_bn2hex(n)));
++      fprintf(fp, "\tPublicExponent: 0x%s\n", lowercase(BN_bn2hex(e)));
++      fprintf(fp, "\tPrivateExponent: 0x%s\n", lowercase(BN_bn2hex(d)));
++      fprintf(fp, "\tPrime1: 0x%s\n", lowercase(BN_bn2hex(p)));
++      fprintf(fp, "\tPrime2: 0x%s\n", lowercase(BN_bn2hex(q)));
++      fprintf(fp, "\tExponent1: 0x%s\n", lowercase(BN_bn2hex(dmp1)));
++      fprintf(fp, "\tExponent2: 0x%s\n", lowercase(BN_bn2hex(dmq1)));
++      fprintf(fp, "\tCoefficient: 0x%s\n", lowercase(BN_bn2hex(iqmp)));
+       fprintf(fp, "  }\n");
+       vfree(pubkey64);
+@@ -203,11 +210,13 @@ int
+ gen_rsa_key(FILE *fp, size_t bits, unsigned long exp)
+ {
+       int ret;
+-      RSA *key;
++      RSA *key = RSA_new();
++      BIGNUM *e = BN_new();
+-      key = RSA_generate_key(bits, exp, NULL, NULL);
+-      if (!key) {
++      BN_set_word(e, exp);
++      if (! RSA_generate_key_ex(key, bits, e, NULL)) {
+               fprintf(stderr, "RSA_generate_key(): %s\n", eay_strerror());
++              RSA_free(key);
+               return -1;
+       }
+       
+diff --git a/src/racoon/prsa_par.y b/src/racoon/prsa_par.y
+index 1987e4d..27ce4c6 100644
+--- a/src/racoon/prsa_par.y
++++ b/src/racoon/prsa_par.y
+@@ -68,6 +68,7 @@
+ #include "isakmp_var.h"
+ #include "handler.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+ #include "sockmisc.h"
+ #include "rsalist.h"
+@@ -85,7 +86,18 @@ char *prsa_cur_fname = NULL;
+ struct genlist *prsa_cur_list = NULL;
+ enum rsa_key_type prsa_cur_type = RSA_TYPE_ANY;
+-static RSA *rsa_cur;
++struct my_rsa_st {
++      BIGNUM *n;
++      BIGNUM *e;
++      BIGNUM *d;
++      BIGNUM *p;
++      BIGNUM *q;
++      BIGNUM *dmp1;
++      BIGNUM *dmq1;
++      BIGNUM *iqmp;
++};
++
++static struct my_rsa_st *rsa_cur;
+ void
+ prsaerror(const char *s, ...)
+@@ -201,8 +213,12 @@ rsa_statement:
+                               rsa_cur->iqmp = NULL;
+                       }
+               }
+-              $$ = rsa_cur;
+-              rsa_cur = RSA_new();
++              RSA * rsa_tmp = RSA_new();
++              RSA_set0_key(rsa_tmp, rsa_cur->n, rsa_cur->e, rsa_cur->d);
++              RSA_set0_factors(rsa_tmp, rsa_cur->p, rsa_cur->q);
++              RSA_set0_crt_params(rsa_tmp, rsa_cur->dmp1, rsa_cur->dmq1, rsa_cur->iqmp);
++              $$ = rsa_tmp;
++              memset(rsa_cur, 0, sizeof(struct my_rsa_st));
+       }
+       | TAG_PUB BASE64
+       {
+@@ -351,10 +367,12 @@ prsa_parse_file(struct genlist *list, char *fname, enum rsa_key_type type)
+       prsa_cur_fname = fname;
+       prsa_cur_list = list;
+       prsa_cur_type = type;
+-      rsa_cur = RSA_new();
++      rsa_cur = malloc(sizeof(struct my_rsa_st));
++      memset(rsa_cur, 0, sizeof(struct my_rsa_st));
+       ret = prsaparse();
+       if (rsa_cur) {
+-              RSA_free(rsa_cur);
++              memset(rsa_cur, 0, sizeof(struct my_rsa_st));
++              free(rsa_cur);
+               rsa_cur = NULL;
+       }
+       fclose (fp);
+diff --git a/src/racoon/rsalist.c b/src/racoon/rsalist.c
+index f152c82..96e8363 100644
+--- a/src/racoon/rsalist.c
++++ b/src/racoon/rsalist.c
+@@ -52,6 +52,7 @@
+ #include "genlist.h"
+ #include "remoteconf.h"
+ #include "crypto_openssl.h"
++#include "openssl_compat.h"
+ #ifndef LIST_FIRST
+ #define LIST_FIRST(head)        ((head)->lh_first)
+@@ -98,7 +99,9 @@ rsa_key_dup(struct rsa_key *key)
+               return NULL;
+       if (key->rsa) {
+-              new->rsa = key->rsa->d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa);
++              const BIGNUM *d;
++              RSA_get0_key(key->rsa, NULL, NULL, &d);
++              new->rsa = (d != NULL ? RSAPrivateKey_dup(key->rsa) : RSAPublicKey_dup(key->rsa));
+               if (new->rsa == NULL)
+                       goto dup_error;
+       }
+-- 
+2.16.1
+
index 7cd65cac4cced55efde8fa5cce0eff95d5b54145..ed543ada596abdea042dddb1b175079b75b95b6b 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=knxd
-PKG_VERSION:=0.14.24
-PKG_RELEASE:=2
+PKG_VERSION:=0.14.25
+PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/knxd/knxd.git
-PKG_SOURCE_VERSION:=d29f7047a8b20a7ac57c3c9ad349c12be60f9fee
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=07857ce8c7c8be965b1baf81566671ab89c3ae8bbcd8f1fe05df0c38a4465664
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/knxd/knxd/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=c9b7d97328da1682bcae1330163e56e1ea2fba0b85de769feb6f5b7aff925a83
 
 PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
 
@@ -27,7 +24,6 @@ PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=LICENSE
 
 PKG_BUILD_PARALLEL:=1
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 PKG_BUILD_DEPENDS:=argp-standalone
 
 PKG_FIXUP:=autoreconf
index 92d87b8e052f78854adf5ec633ed9718bc2356f1..cb0ab7d7fcd84297c03dd8945c4d9b3e43c6214e 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2015 OpenWrt.org
+# Copyright (C) 2006-2018 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lighttpd
 PKG_VERSION:=1.4.49
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://download.lighttpd.net/lighttpd/releases-1.4.x
@@ -26,6 +26,8 @@ REBUILD_MODULES=authn_gssapi authn_ldap authn_mysql cml magnet mysql_vhost trigg
 PKG_CONFIG_DEPENDS:=CONFIG_LIGHTTPD_SSL $(patsubst %,CONFIG_PACKAGE_lighttpd-mod-%,$(REBUILD_MODULES))
 
 include $(INCLUDE_DIR)/package.mk
+# iconv is required for lighttpd's mysql plugin
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/lighttpd/Default
   SUBMENU:=Web Servers/Proxies
@@ -92,7 +94,7 @@ else
   CONFIGURE_ARGS+= --without-ldap
 endif
 
-ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-authn_mysql),)
+ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-authn_mysql)$(CONFIG_PACKAGE_lighttpd-mod-mysql_vhost),)
   CONFIGURE_ARGS+= --with-mysql
 else
   CONFIGURE_ARGS+= --without-mysql
@@ -110,12 +112,6 @@ else
   CONFIGURE_ARGS+= --without-lua
 endif
 
-ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-mysql_vhost),)
-  CONFIGURE_ARGS+= --with-mysql
-else
-  CONFIGURE_ARGS+= --without-mysql
-endif
-
 #ifneq ($(SDK)$(CONFIG_PACKAGE_lighttpd-mod-cml)$(CONFIG_PACKAGE_lighttpd-mod-trigger_b4_dl),)
 #  CONFIGURE_ARGS+= --with-memcached
 #else
index 6c97d7b3e1cda40e95d34cf8fd829da0aadd83ce..4ba840e7ae63b733ab69f9ce9f246181078759f7 100644 (file)
@@ -8,20 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=linknx
-PKG_VERSION:=0.0.1.34
+PKG_VERSION:=0.0.1.36
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Othmar Truniger <github@truniger.ch>
 PKG_LICENSE:=GPL-2.0+
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/linknx/linknx.git
-PKG_SOURCE_VERSION:=831ed395e232ead88e92cdf19f12e227e80e22cf
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.xz
-PKG_MIRROR_HASH:=1c53d181b5577d759b4d0faa5a267dd0a040d9fee1bfc6ad9545374b9002900f
+PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/linknx/linknx/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=e271ae32e2b68dff67864812c67e891d361f02960777bfb13f199dee0884f38f
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
 PKG_BUILD_DEPENDS:=argp-standalone
 PKG_FORTIFY_SOURCE:=1
 
@@ -33,7 +29,7 @@ define Package/linknx
   SECTION:=net
   CATEGORY:=Network
   TITLE:=KNX home automation platform
-  URL:=http://sourceforge.net/projects/linknx/
+  URL:=https://github.com/linknx/linknx
   DEPENDS:=+pthsem +lua +luac +libstdcpp +libcurl +libesmtp
 endef
 
index faba7a2d918c2139c39da7fe435720453b51e802..6d20d5a5901709acb05137ad9091acc030e79051 100644 (file)
@@ -8,14 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=miniupnpd
-PKG_VERSION:=2.1
-PKG_RELEASE:=2
+PKG_VERSION:=2.1.20180706
+PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=http://miniupnp.free.fr/files
+PKG_SOURCE_URL:=https://miniupnp.tuxfamily.org/files
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=950894779661197fe093855fda29a728f434b5756eb4fa6cb5f7b9bff7ffe0c1
+PKG_HASH:=fc2d2fd044d8c3f8d02b63d70489bb35ece836a4fc1b6386865ac8fbe8d8b006
 
-PKG_MAINTAINER:=Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
 PKG_LICENSE:=BSD-3-Clause
 
 include $(INCLUDE_DIR)/package.mk
@@ -27,7 +26,7 @@ define Package/miniupnpd
   DEPENDS:=+iptables +libip4tc +IPV6:libip6tc +IPV6:ip6tables +libuuid
   TITLE:=Lightweight UPnP IGD, NAT-PMP & PCP daemon
   SUBMENU:=Firewall
-  URL:=http://miniupnp.free.fr/
+  URL:=https://miniupnp.tuxfamily.org/
 endef
 
 define Package/miniupnpd/conffiles
@@ -39,7 +38,8 @@ define Build/Prepare
        echo "$(VERSION_NUMBER)" | tr '() ' '_' >$(PKG_BUILD_DIR)/os.openwrt
 endef
 
-TARGET_CFLAGS += -flto -ffunction-sections -fdata-sections
+TARGET_CFLAGS := $(filter-out -O%,$(TARGET_CFLAGS))
+TARGET_CFLAGS += -flto -ffunction-sections -fdata-sections -O2
 TARGET_LDFLAGS += $(FPIC) -flto -Wl,--gc-sections
 MAKE_FLAGS += \
        TARGET_OPENWRT=1 TEST=0 LIBS="" \
index cb2dee11ccbef7fb7f224a25987ef28c84dbbd5a..b19b8520e383270549bed6ccff5c9f734807963a 100644 (file)
@@ -28,7 +28,7 @@
  if [ -z "$V6SOCKETS_ARE_V6ONLY" ] ; then
 --- a/Makefile.linux
 +++ b/Makefile.linux
-@@ -73,7 +73,10 @@ CPPFLAGS += -DIPTABLES_143
+@@ -74,7 +74,10 @@ CPPFLAGS += -DIPTABLES_143
  endif
  
  CFLAGS  += $(shell $(PKG_CONFIG) --cflags libiptc)
@@ -39,7 +39,7 @@
  LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-L libiptc)
  LDFLAGS += $(shell $(PKG_CONFIG) --libs-only-other libiptc)
  else
-@@ -153,6 +156,8 @@ LDLIBS += $(shell $(PKG_CONFIG) --static
+@@ -154,6 +157,8 @@ LDLIBS += $(shell $(PKG_CONFIG) --static
  LDLIBS += $(shell $(PKG_CONFIG) --static --libs-only-l libnetfilter_conntrack)
  endif # ($(TEST),1)
  
@@ -48,7 +48,7 @@
  LDLIBS += $(shell $(PKG_CONFIG) --static --libs-only-l libssl)
  
  TEST := $(shell $(PKG_CONFIG) --exists uuid && echo 1)
-@@ -161,6 +166,7 @@ LDLIBS += $(shell $(PKG_CONFIG) --static
+@@ -162,6 +167,7 @@ LDLIBS += $(shell $(PKG_CONFIG) --static
  else
  $(info please install uuid-dev package / libuuid)
  endif # ($(TEST),1)
index 7fd4fe4aa7d15dda62b57aa00cd91ea57d62d950..9435b1354d816549ffb0bdfc5f17594ee0fedadd 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mtr
 PKG_VERSION:=0.92
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
 
@@ -32,7 +32,7 @@ define Package/mtr
   CATEGORY:=Network
   DEPENDS:=+libncurses
   TITLE:=Full screen ncurses traceroute tool
-  URL:=http://www.bitwizard.nl/mtr/
+  URL:=https://www.bitwizard.nl/mtr/
 endef
 
 define Package/mtr/description
@@ -48,25 +48,17 @@ endef
 
 CONFIGURE_ARGS += \
        --without-gtk \
-       --without-glib \
        $(call autoconf_bool,CONFIG_IPV6,ipv6)
 
 define Build/Configure
-       (cd $(PKG_BUILD_DIR); touch \
-               configure.in \
-               aclocal.m4 \
-               Makefile.in \
-               img/Makefile.in \
-               stamp-h.in \
-               config.h.in \
-               configure \
-       );
+       echo $(PKG_VERSION) > .tarball-version
        $(call Build/Configure/Default)
 endef
 
 define Package/mtr/install
        $(INSTALL_DIR) $(1)/usr/sbin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/mtr $(1)/usr/sbin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/mtr-packet $(1)/usr/sbin/
 endef
 
 $(eval $(call BuildPackage,mtr))
diff --git a/net/mtr/patches/010-remove-libcap-support.patch b/net/mtr/patches/010-remove-libcap-support.patch
new file mode 100644 (file)
index 0000000..db15a51
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/configure.ac b/configure.ac
+index a08ce67..83bf094 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -106,10 +106,6 @@ AS_IF([test "x$with_ncurses" = "xyes"],
+ ])
+ AM_CONDITIONAL([WITH_CURSES], [test "x$with_ncurses" = xyes])
+-AC_CHECK_LIB([cap], [cap_set_proc], [],
+-  AS_IF([test "$host_os" = linux-gnu],
+-    AC_MSG_WARN([Capabilities support is strongly recommended for increased security.  See SECURITY for more information.])))
+-
+ # Enable ipinfo
+ AC_ARG_WITH([ipinfo],
+   [AS_HELP_STRING([--without-ipinfo], [Do not try to use ipinfo lookup at all])],
diff --git a/net/mtr/patches/020-Sami-Kerola-prevent-MTR-reporting-unknown-revision.patch b/net/mtr/patches/020-Sami-Kerola-prevent-MTR-reporting-unknown-revision.patch
new file mode 100644 (file)
index 0000000..4923d72
--- /dev/null
@@ -0,0 +1,24 @@
+From 94218682b15832fd6f8ed09a767941974075a1b4 Mon Sep 17 00:00:00 2001
+From: "R.E. Wolff" <R.E.Wolff@BitWizard.nl>
+Date: Tue, 7 Nov 2017 17:24:14 +0100
+Subject: [PATCH] Sami Kerola: prevent MTR reporting unknown revision
+
+---
+ Makefile.am | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index c0709ca..23ac1fc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -156,3 +156,7 @@ endif  # if CYGWIN
+ if BUILD_BASH_COMPLETION
+ dist_bashcompletion_DATA = bash-completion/mtr
+ endif
++
++dist-hook:
++      $(AM_V_GEN)echo $(VERSION) > $(distdir)/.tarball-version
++
+-- 
+2.17.1
+
index d3dda58f19b29abb002430cddf439167dd2174f7..ecb4efa123934b38829d2afe6240964a8a86fd2a 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=net-snmp
 PKG_VERSION:=5.7.3
-PKG_RELEASE:=9
+PKG_RELEASE:=10
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/net-snmp
index cce00b2deb31db2bf7720a54765c556dfc918217..9ebcb491cf4191418748362422c34f3c1d2adbba 100644 (file)
@@ -338,6 +338,7 @@ start_service() {
 
 stop_service() {
        [ -f "$CONFIGFILE" ] && rm -f "$CONFIGFILE"
+       procd_set_config_changed firewall
 }
 
 service_triggers(){
@@ -350,3 +351,7 @@ service_triggers(){
 
        procd_add_reload_trigger 'snmpd'
 }
+
+service_started() {
+       procd_set_config_changed firewall
+}
index 430b963dadc28fe23defb8299516cb9a52c37f72..6cbae4dcca820821f0928e4688ab10aeaa106d96 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=netatalk
 PKG_VERSION:=3.1.11
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/netatalk
@@ -25,7 +25,7 @@ define Package/netatalk
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Filesystem
-  DEPENDS:=+libattr +libdb47 +libgcrypt +libopenssl $(LIBRPC_DEPENDS)
+  DEPENDS:=+libattr +libdb47 +libgcrypt +libopenssl
   TITLE:=netatalk
   URL:=http://netatalk.sourceforge.net
   MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
@@ -38,7 +38,6 @@ define Package/netatalk/decription
 endef
 
 TARGET_CFLAGS += -std=gnu99
-TARGET_LDFLAGS += $(LIBRPC)
 
 CONFIGURE_ARGS += \
        --disable-afs \
index 6917a094d73485d9f5d2723f47314b8599049ed1..de88938f28501829721555147a8a050ee13db418 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nfs-kernel-server
 PKG_VERSION:=2.3.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_HASH:=1748a046e452ceb2285cc07b61ec0f85af7c92ac443e111a6c8a1061254ca717
 
 PKG_SOURCE_URL:=@SF/nfs
@@ -19,6 +19,8 @@ PKG_BUILD_DIR:=$(BUILD_DIR)/nfs-utils-$(PKG_VERSION)
 PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 PKG_BUILD_DEPENDS:=$(PKG_NAME)/host
+HOST_BUILD_DEPENDS:=libtirpc/host
+PKG_CONFIG_DEPENDS:= CONFIG_IPV6
 
 include $(INCLUDE_DIR)/host-build.mk
 include $(INCLUDE_DIR)/package.mk
@@ -27,7 +29,7 @@ define Package/nfs-kernel-server/Default
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Filesystem
-  DEPENDS:=+libwrap +libblkid +libuuid $(LIBRPC_DEPENDS)
+  DEPENDS:=+libwrap +libblkid +libuuid +libtirpc
   URL:=http://nfs.sourceforge.net/
   MAINTAINER:=Peter Wagner <tripolar@gmx.at>
 endef
@@ -35,7 +37,7 @@ endef
 define Package/nfs-kernel-server
   $(call Package/nfs-kernel-server/Default)
   TITLE:=Kernel NFS server support
-  DEPENDS+= +kmod-fs-nfsd +kmod-fs-nfs +portmap
+  DEPENDS+= +kmod-fs-nfsd +kmod-fs-nfs +rpcbind
 endef
 
 define Package/nfs-kernel-server/description
@@ -60,7 +62,7 @@ define Package/nfs-utils
   $(call Package/nfs-kernel-server/Default)
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS+= +libevent2 +USE_UCLIBC:librpc
+  DEPENDS+= +libevent2
   TITLE:=updated mount utility (includes nfs4)
 endef
 
@@ -71,19 +73,24 @@ endef
 TARGET_CFLAGS += -Wno-error=implicit-function-declaration \
                 -Wno-error=strict-prototypes \
                 -Wno-error=incompatible-pointer-types \
-                -Wno-error=undef
-TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib $(LIBRPC) \
+                -Wno-error=format-security \
+                -Wno-error=undef \
+                -Wno-error=missing-include-dirs
+
+TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib \
                  -L$(STAGING_DIR)/usr/lib/libevent
 
 CONFIGURE_ARGS += \
        --disable-gss \
        --disable-nfsv4 \
        --disable-nfsv41 \
-       --disable-ipv6 \
        --enable-static \
        --enable-shared \
-       --disable-caps \
-       --disable-tirpc
+       --disable-caps
+
+ifeq ($(CONFIG_IPV6),n)
+CONFIGURE_ARGS += --disable-ipv6
+endif
 
 CONFIGURE_VARS += \
        libblkid_cv_is_recent=yes \
@@ -98,14 +105,13 @@ MAKE_FLAGS += \
        RPCGEN_PATH=$(STAGING_DIR_HOSTPKG)/bin/rpcgen \
        RPCGEN=$(STAGING_DIR_HOSTPKG)/bin/rpcgen
 
-HOST_CFLAGS += -Dlinux
+HOST_CFLAGS += -Dlinux \
+       -Wno-error=missing-include-dirs
 
 HOST_CONFIGURE_ARGS += \
        --disable-gss \
        --disable-nfsv4 \
        --disable-nfsv41 \
-       --disable-ipv6 \
-       --disable-tirpc \
        --without-tcp-wrappers
 
 HOST_CONFIGURE_VARS += \
@@ -115,6 +121,7 @@ HOST_CONFIGURE_VARS += \
        ac_cv_header_event_h=yes \
        ac_cv_header_nfsidmap_h=yes \
        ac_cv_header_blkid_blkid_h=yes \
+       ac_cv_lib_resolv___res_querydomain=yes \
        GSSGLUE_CFLAGS=" " \
        GSSGLUE_LIBS=" " \
        RPCSECGSS_CFLAGS=" " \
index 2c65ea72ef4402632714e70d0aeeb99401a8c8d5..28c36cb3b7f84d40ac347ce9414d2ab0df908167 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nginx
-PKG_VERSION:=1.15.1
-PKG_RELEASE:=3
+PKG_VERSION:=1.15.2
+PKG_RELEASE:=2
 
 PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://nginx.org/download/
-PKG_HASH:=c7206858d7f832b8ef73a45c9b8f8e436bcb1ee88db2bc85b8e438ecec9d5460
+PKG_HASH:=eeba09aecfbe8277ac33a5a2486ec2d6731739f3c1c701b42a0c3784af67ad90
 
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de> \
                                Ansuel Smith <ansuelsmth@gmail.com>
@@ -439,7 +439,7 @@ ifeq ($(CONFIG_NGINX_RTMP_MODULE),y)
   $(eval $(call Download,nginx-rtmp))
 
   define  Prepare/nginx-rtmp
-       $(eval $(call Download,nginx-rtmp))
+       $(eval $(Download/nginx-rtmp))
        gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
   endef
 endif
@@ -457,7 +457,7 @@ ifeq ($(CONFIG_NGINX_TS_MODULE),y)
   $(eval $(call Download,nginx-ts))
 
   define  Prepare/nginx-ts
-       $(eval $(call Download,nginx-ts))
+       $(eval $(Download/nginx-ts))
        gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
   endef
 endif
@@ -483,11 +483,11 @@ endif
 
 ifeq ($(CONFIG_NGINX_LUA),y)
   define Download/lua-nginx
-    VERSION:=576a10d246daf81c0ce1b959c50ee807769c01a8
+    VERSION:=e94f2e5d64daa45ff396e262d8dab8e56f5f10e0
     SUBDIR:=lua-nginx
     FILE:=lua-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
     URL:=https://github.com/openresty/lua-nginx-module.git
-    MIRROR_HASH:=85ab2fc752d4e09f266209fdec507b30c57bb966c34bbff148cf3459ae5cac80
+    MIRROR_HASH:=ae439f9a8b3c34d7240735b844db72ee721af4791bbaff5692bca20e6785f541
     PROTO:=git
   endef
   $(eval $(call Download,lua-nginx))
index 82180239dd7ef3babc72809fd7733dd3beb2504a..28be2fb7179a157fe885a2d436909cdf0a3290af 100644 (file)
@@ -1,6 +1,6 @@
 --- a/auto/options
 +++ b/auto/options
-@@ -391,8 +391,7 @@
+@@ -397,8 +397,7 @@ $0: warning: the \"--with-sha1-asm\" opt
          --test-build-solaris-sendfilev)  NGX_TEST_BUILD_SOLARIS_SENDFILEV=YES ;;
  
          *)
index 460307e56edf684cd9fde6e0ae8c684ab9e2c599..59f1e67d60e6477a73563bec9b84e6c6603b4fde 100644 (file)
@@ -8,18 +8,18 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ntpclient
-PKG_VERSION:=2010_365
+PKG_VERSION:=2015_365
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=http://doolittle.icarus.com/ntpclient/
-PKG_HASH:=9ad9b028385082fb804167f464e2db0a0b3d33780acd399327e64898b8fcfddd
+PKG_SOURCE_URL:=http://doolittle.icarus.com/ntpclient
+PKG_HASH:=95c3646919a9a2278fa384aa8e37117b250577ff8b09b8c93ba53e04e729b54b
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_LICENSE:=GPL-2.0
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-2010
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-2015
 
 include $(INCLUDE_DIR)/package.mk
 
index aa35f963017d0f42eb41b7d04f3efe28583e8f9f..15135f0f2e53f1c8a01fb7df63195031b15e5d66 100644 (file)
@@ -1,6 +1,6 @@
 --- a/ntpclient.c
 +++ b/ntpclient.c
-@@ -611,7 +611,7 @@ int main(int argc, char *argv[]) {
+@@ -608,7 +608,7 @@ int main(int argc, char *argv[]) {
        ntpc.cross_check=1;
  
        for (;;) {
@@ -9,8 +9,8 @@
                if (c == EOF) break;
                switch (c) {
                        case 'c':
-@@ -660,6 +660,10 @@ int main(int argc, char *argv[]) {
-                               (ntpc.cross_check)=0;
+@@ -657,6 +657,10 @@ int main(int argc, char *argv[]) {
+                               ntpc.cross_check = 0;
                                break;
  
 +                      case 'D':
index 020f198506ad625bdde200bd1b89b16e173862f3..12b07c5d06f674c9717db5a02eb6bb7f1e07534c 100644 (file)
@@ -10,15 +10,11 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ntripcaster
 PKG_VERSION:=0.1.5
+PKG_RELEASE:=2
 
-PKG_RELEASE=$(PKG_SOURCE_VERSION)
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/nunojpg/ntripcaster.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=03878920195cf854b38a1ea424f1cae57353fa87
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=264656e5f9f9583c477208f005371124bfcbb7ba548f418eb5f1215059d1294b
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/nunojpg/ntripcaster/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=2184af9821cf73bac1df229f1e61ca1d3e288c9de6087bee1ae218b54c588452
 
 PKG_LICENSE:=GPL-2.0+
 
@@ -31,7 +27,7 @@ define Package/ntripcaster
   CATEGORY:=Network
   SUBMENU:=NTRIP
   TITLE:=Standard Ntrip Broadcaster
-  URL:=http://igs.bkg.bund.de/ntrip/download
+  URL:=https://igs.bkg.bund.de/ntrip
   DEPENDS:=+libpthread
 endef
 
index 391f625e3f6753db5e0417d205eb44cd37baab88..09199516e00bcf9dc2b8ad21c3be4694ca12886a 100644 (file)
@@ -9,16 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ntripclient
-PKG_VERSION:=1.5.0
+PKG_VERSION:=1.51
+PKG_RELEASE:=1
 
-PKG_RELEASE=$(PKG_SOURCE_VERSION)
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/nunojpg/ntripclient.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=dcfb2cb3e6f31b7291a94e7f86379c78ffc0d44e
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=8d16f2bd0295a2e77fe8651e5f973c3ca4cf0d62fc4d671ebb54cfa8dc7debd0
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/nunojpg/ntripclient/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=d668e87b2260ef262e2066ac0ed217ec77478170deaf76ff48f2116a23c48ae5
 
 PKG_LICENSE:=GPL-2.0+
 
index 62becdb4074c3137890daee00c6f65f41719a038..d4b34d4d15f4dbd87911c94ad17d52a5cd51a240 100644 (file)
@@ -9,16 +9,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ntripserver
-PKG_VERSION:=1.5.1
+PKG_VERSION:=1.51
+PKG_RELEASE:=1
 
-PKG_RELEASE=$(PKG_SOURCE_VERSION)
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/nunojpg/ntripserver.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=c3034ab575e8442222eb8c2ee9e224cac99cfa6d
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=71f168c4b41c9e1063280fc8aa21d8794c064708fbfa4929093ef5a139e2e736
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/nunojpg/ntripserver/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=3878c13d1b56e14085ce995565a2113aa592e3aa0b0eacfc65b6e3f5bdfc07e7
 
 PKG_LICENSE:=GPL-2.0+
 
index 850c4a9fafa6f49f90cef8f6f86cb9107558c1fb..2a253f8c0849b76dde0d6120801c161d8b0ed60a 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=nut
 PKG_VERSION:=2.7.4
-PKG_RELEASE:=6
+PKG_RELEASE:=7
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.networkupstools.org/source/2.7/
index 388c376ee9e5d048942470db900926a253b80ca6..af814078106534f4848d8be2fae67175f397aebd 100755 (executable)
@@ -126,8 +126,11 @@ nut_upsmon_add() {
        local password
        local system
 
-       # If no core config, use defaults
-       [ -r $UPSMON_C ] || nut_upsmon_conf ""
+       # if UPSMON_C is a symlink we're only doing generated config
+       [ -L $UPSMON_C ] && {
+               rm -f $UPSMON_C
+               nut_upsmon_conf ""
+       }
 
        config_get upsname "$cfg" upsname
        config_get hostname "$cfg" hostname localhost
@@ -143,7 +146,8 @@ nut_upsmon_add() {
 }
 
 start_service() {
-       rm -f $UPSMON_C
+       mkdir -p "$(dirname "$UPSMON_C")"
+       chmod 750 "$(dirname "$UPSMON_C")"
 
        config_load nut_monitor
 
@@ -156,20 +160,22 @@ start_service() {
        chmod 640 $UPSMON_C
        chmod 640 /var/etc/nut/nut.conf
 
+       chown ${runas:-root}:$(id -gn ${runas:-root}) /var/etc/nut
+       chown ${runas:-root}:$(id -gn ${runas:-root}) /var/etc/nut/nut.conf
+       chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
+
        [ -d /var/run/nut ] || {
                mkdir -m 0750 -p /var/run/nut
                chown ${runas:-root}:$(id -gn ${runas:-root}) /var/run/nut
        }
 
-       chown ${runas:-root}:$(id -gn ${runas:-root}) $UPSMON_C
-       $DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
+       exec $DEBUG /usr/sbin/upsmon $UPSMON_OPTIONS
 }
 
 stop_service() {
-       [ -r $PID_F ] && /usr/sbin/upsmon -c stop
-       rm -f $UPSMON_C
+       exec /usr/sbin/upsmon -c stop
 }
 
 reload_service() {
-       upsmon -c reload
+       exec /usr/sbin/upsmon -c reload
 }
index d5269cc039c55280738e21ca2906b882384d68a8..806748aec8a39f08c1baf3fa97b5e7c4c6cef635 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=p910nd
 PKG_VERSION:=0.97
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=@SF/p910nd
index f0289036e6694d63b34628b6077d6e4d6a3705b9..57e4c5209480781ac5b607d5b76c93b18bbd7d4c 100644 (file)
@@ -1,6 +1,6 @@
 #!/bin/sh /etc/rc.common
 # Copyright (C) 2007 OpenWrt.org
-START=50
+START=99
 USE_PROCD=1
 
 append_bool() {
@@ -40,6 +40,7 @@ start_p910nd() {
                append_string "$section" port ""
                procd_open_instance $name
                procd_set_param command /usr/sbin/p910nd $args
+               procd_set_param respawn
                procd_close_instance
        fi
 }
diff --git a/net/portmap/Makefile b/net/portmap/Makefile
deleted file mode 100644 (file)
index 0615551..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-#
-# Copyright (C) 2006-2011 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=portmap
-PKG_VERSION:=6.0
-PKG_RELEASE:=4
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tgz
-PKG_SOURCE_URL:=http://neil.brown.name/portmap/
-PKG_HASH:=02c820d39f3e6e729d1bea3287a2d8a6c684f1006fb9612f97dcad4a281d41de
-
-PKG_LICENSE:=BSD-4c
-PKG_LICENSE_FILES:=portmap.man
-
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
-
-include $(INCLUDE_DIR)/package.mk
-
-define Package/portmap
-  SECTION:=net
-  CATEGORY:=Network
-  DEPENDS:=+libwrap $(LIBRPC_DEPENDS)
-  TITLE:=The RPC Portmapper
-  URL:=http://neil.brown.name/portmap/
-  MAINTAINER:=Peter Wagner <tripolar@gmx.at>
-  USERID:=rpc=65533:rpc=65533
-endef
-
-define Package/portmap/description
- Portmap is a server that converts RPC (Remote Procedure Call) program
- numbers into DARPA protocol port numbers.
-endef
-
-MAKE_FLAGS += \
-       CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) -DHOSTS_ACCESS -DFACILITY=LOG_DAEMON -DIGNORE_SIGCHLD" \
-       RPCUSER="rpc" \
-       LDLIBS="$(TARGET_LDFLAGS) -lwrap $(LIBRPC)" \
-       all
-
-define Package/portmap/install
-       $(INSTALL_DIR) $(1)/usr/sbin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/portmap $(1)/usr/sbin/
-       $(INSTALL_DIR) $(1)/etc/init.d
-       $(INSTALL_BIN) ./files/portmap.init $(1)/etc/init.d/portmap
-endef
-
-$(eval $(call BuildPackage,portmap))
diff --git a/net/portmap/files/portmap.init b/net/portmap/files/portmap.init
deleted file mode 100644 (file)
index 621c313..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2006-2011 OpenWrt.org
-
-START=19
-STOP=19
-
-USE_PROCD=1
-
-start_service() {
-       procd_open_instance
-       procd_set_param command /usr/sbin/portmap -f
-       procd_close_instance
-}
diff --git a/net/portmap/patches/101-no_pie.patch b/net/portmap/patches/101-no_pie.patch
deleted file mode 100644 (file)
index 6cbdece..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur portmap_6.0.org/Makefile portmap_6.0/Makefile
---- portmap_6.0.org/Makefile   2008-04-19 22:44:35.000000000 +0200
-+++ portmap_6.0/Makefile       2008-04-19 00:02:01.000000000 +0200
-@@ -127,7 +127,7 @@
- CPPFLAGS += $(HOSTS_ACCESS)
- portmap: CFLAGS   += -fpie
- portmap: LDLIBS   += $(WRAP_LIB)
--portmap: LDFLAGS  += -pie
-+#portmap: LDFLAGS  += -pie
- portmap: portmap.o pmap_check.o from_local.o
- from_local: CPPFLAGS += -DTEST
index b71251d077b2beab40fae395741d9a6ecadd33be..605d09922c574ac29db1dbbce44995fe1237510b 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=privoxy
 PKG_VERSION:=3.0.26
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=privoxy-$(PKG_VERSION)-stable-src.tar.gz
 PKG_SOURCE_URL:=@SF/ijbswa
index b2592b35a90a7f801b927b77594f4df464806637..d9c92fb7dab5805287f70f02b338c879f3870af6 100644 (file)
@@ -40,6 +40,11 @@ _uci2conf() {
                                                ;;
                                esac
                        }
+
+                       list_cb()
+                       {
+                               option_cb "$@"
+                       }
                fi
        }
 
index 29c53a53748a151e26bba1925d1bbab33f4ffb56..fc46ea203f469db4bdb86e07977f8bd272c965b4 100644 (file)
@@ -8,15 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=redsocks
-PKG_VERSION:=0.4-20150907
+PKG_VERSION:=0.5
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=30ced050c58cbdd39732921a794b053127e9c45ebdcdd4a6023bdc5e434607da
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/darkk/redsocks.git
-PKG_SOURCE_VERSION:=2118c616b4970a0436eceaa57a6e3451ec98ad2b
+PKG_SOURCE:=$(PKG_NAME)-release-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/darkk/redsocks/tar.gz/release-$(PKG_VERSION)?
+PKG_HASH:=bbeb531d7f1986d7102f1bd6733dacce41d3f3ba7d604f1aab61c63e0ba2ee62
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-release-$(PKG_VERSION)
 
 PKG_MAINTAINER:=Johannes Morgenroth <jm@m-network.de>
 PKG_LICENSE:=Apache-2.0
@@ -26,7 +24,7 @@ include $(INCLUDE_DIR)/package.mk
 define Package/redsocks
   SECTION:=net
   CATEGORY:=Network
-  DEPENDS:=+libevent2
+  DEPENDS:=+libevent2-core
   TITLE:=Redirect any TCP connection to a SOCKS or HTTPS proxy server
 endef
 
@@ -40,10 +38,10 @@ define Package/redsocks/description
  uses the system firewall's redirection facility to intercept TCP connections,
  thus the redirection is system-wide, with fine-grained control, and does
  not depend on LD_PRELOAD libraries.
+
  Redsocks supports tunneling TCP connections and UDP packets. It has
  authentication support for both, SOCKS and HTTP proxies.
+
  Also included is a small DNS server returning answers with the "truncated" flag
  set for any UDP query, forcing the resolver to use TCP.
 endef
diff --git a/net/rpcbind/Makefile b/net/rpcbind/Makefile
new file mode 100644 (file)
index 0000000..bf0ea7b
--- /dev/null
@@ -0,0 +1,75 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=rpcbind
+PKG_VERSION:=0.2.4
+PKG_RELEASE:=2
+
+PKG_SOURCE_URL:=@SF/rpcbind
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_HASH:=074a9a530dc7c11e0d905aa59bcb0847c009313f02e98d3d798aa9568f414c66
+
+PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_FIXUP:=autoreconf
+PKG_REMOVE_FILES:=autogen.sh aclocal.m4
+PKG_INSTALL:=1
+
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_RPCBIND_LIBWRAP \
+       CONFIG_RPCBIND_WARMSTARTS
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/rpcbind
+  SECTION:=net
+  CATEGORY:=Network
+  DEPENDS:=+libtirpc +RPCBIND_LIBWRAP:libwrap
+  TITLE:=Universal addresses to RPC mapper
+  URL:=http://libtirpc.sourceforge.net/
+  USERID:=rpc=65533:rpc=65533
+endef
+
+define Package/rpcbind/description
+  The rpcbind utility is a server that converts RPC program numbers into universal addresses.
+  It must be running on the host to be able to make RPC calls on a server on that machine.
+
+  Rpcbind replaces portmap for NFS v2/v3. It has more features, like ipv6 support.
+  Note: Nfs4 only configurations can run without it.
+endef
+
+define Package/rpcbind/config
+if PACKAGE_rpcbind
+       config RPCBIND_LIBWRAP
+               bool "Enable libwrap (TCP wrappers) support."
+               default y
+
+       config RPCBIND_WARMSTARTS
+               bool "Enable warmstarts support"
+               default y
+               help
+                 The warmstart feature saves RPC registrations on termination.
+endif
+endef
+
+CONFIGURE_ARGS += \
+       --with-rpcuser=rpc \
+       --without-systemdsystemunitdir
+
+ifeq ($(CONFIG_RPCBIND_LIBWRAP),y)
+       CONFIGURE_ARGS += --enable-libwrap
+else
+       CONFIGURE_ARGS += --disable-libwrap
+endif
+ifeq ($(CONFIG_RPCBIND_WARMSTARTS),y)
+       CONFIGURE_ARGS += --enable-warmstarts
+endif
+
+define Package/rpcbind/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/{rpcbind,rpcinfo} $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/rpcbind.init $(1)/etc/init.d/rpcbind
+endef
+
+$(eval $(call BuildPackage,rpcbind))
diff --git a/net/rpcbind/files/rpcbind.init b/net/rpcbind/files/rpcbind.init
new file mode 100644 (file)
index 0000000..f3efaed
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh /etc/rc.common
+
+START=19
+STOP=19
+
+USE_PROCD=1
+
+start_service() { 
+       procd_open_instance
+       procd_set_param command /usr/bin/rpcbind -f -w
+       procd_set_param respawn
+       procd_close_instance
+}
diff --git a/net/samba4/Config.in b/net/samba4/Config.in
new file mode 100644 (file)
index 0000000..404f62a
--- /dev/null
@@ -0,0 +1,90 @@
+config SAMBA4_SERVER_ACL
+       bool "ACL support (xattr)"
+       depends on PACKAGE_samba4-server
+       select PACKAGE_acl
+       help
+               installs: sharesec
+                       modules: vfs_acl_xattr vfs_acl_tdb vfs_posixacl
+
+               Extended access control list support
+       default n
+
+config SAMBA4_SERVER_AD_DC
+       bool "Active Directory Domain Controller support (requires krb5-server) (EXPERIMENTAL)"
+       depends on PACKAGE_samba4-server
+       select PACKAGE_python-base
+       select PACKAGE_python-crypto
+       select PACKAGE_libopenssl
+       select PACKAGE_libgnutls
+       select PACKAGE_libopenldap
+       help
+               installs: samba (meta-daemon) python-crypt ntlm_auth
+                       scripts: samba-tool
+
+               Run as a Active Directory Domain Controller
+               see: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
+               HINT: see section (# Using the Domain Controller as a File Server)
+               NOTE: Extroot is recommend for this setup, as it is not optimized to run completely from RAM/tempfs!
+       default n
+
+config SAMBA4_SERVER_AVAHI
+       bool "Avahi support"
+       depends on PACKAGE_samba4-server
+       select PACKAGE_libavahi-client
+       help
+               Announce Samba resources via DNS/DNS-SD using the Avahi daemon
+       default n
+
+config SAMBA4_SERVER_VFS
+       bool "Common VFS modules"
+       depends on PACKAGE_samba4-server
+       help
+               installs:
+                       modules: (vfs_btrfs) vfs_fruit vfs_shadow_copy2 vfs_recycle vfs_fake_perms vfs_readonly vfs_cap vfs_offline vfs_crossrename
+
+               Commonly used VFS modules, vfs_btrfs requires kmod-fs-btrfs to be selected separately
+        default y
+
+config SAMBA4_SERVER_QUOTAS
+       bool "Disk quota support"
+       depends on PACKAGE_samba4-server
+       help
+               installs:
+                       modules: vfs_default_quota
+
+               Support for disk quotas using the quotas VFS module (vfs_default_quota)
+       default n
+
+config SAMBA4_SERVER_VFSX
+       bool "Extended VFS modules"
+       depends on PACKAGE_samba4-server
+       help
+               installs:
+                       modules: vfs_virusfilter vfs_shell_snap vfs_commit vfs_worm vfs_xattr_tdb vfs_streams_xattr vfs_aio_fork vfs_aio_pthread (vfs_linux_xfs_sgid) vfs_netatalk vfs_dirsort vfs_fileid vfs_catia
+
+               Additional VFS modules that aren't commonly used, vfs_linux_xfs_sgid requires kmod-fs-xfs to be selected separately
+       default n
+
+config SAMBA4_SERVER_NETBIOS
+       bool "NetBIOS support"
+       depends on PACKAGE_samba4-server
+       help
+               installs: nmbd (daemon)
+
+               Announce Samba resources via NetBIOS using the nmbd daemon
+               WSD (Web Services for Devices) replaces the functionality of NetBIOS and is provided by the wsdd2 package (selected by default).
+               Note: As of Windows 10 Fall Creators Update (1709) NetBIOS isn't supported unless the old SMB1 feature is reinstalled (not recommended).
+               Network shares can be directly accessed via network paths '\\hostname\sharename' and mounted via 'map network drive' without NetBIOS or WSD.
+       default n
+
+config SAMBA4_SERVER_WINBIND
+       bool "Winbind support"
+       depends on PACKAGE_samba4-server
+       depends on SAMBA4_SERVER_AD_DC
+       help
+               installs: winbindd (daemon) wbinfo
+
+               Support using domain users and groups in local commands, such as chown and chgrp.
+               Display domain users and groups in local command's output, such as ls.
+               see: https://wiki.samba.org/index.php/Configuring_Winbindd_on_a_Samba_AD_DC
+       default n
diff --git a/net/samba4/Makefile b/net/samba4/Makefile
new file mode 100644 (file)
index 0000000..b364585
--- /dev/null
@@ -0,0 +1,399 @@
+# Based partially on (wongsyrone/hbl0307106015) versions
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=samba
+PKG_VERSION:=4.8.3
+PKG_RELEASE:=3
+
+PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
+PKG_LICENSE:=GPL-3.0-only
+PKG_LICENSE_FILES:=COPYING
+
+PKG_SOURCE_URL:=https://download.samba.org/pub/samba/stable/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=e0569a8a605d5dfb49f1fdd11db796f4d36fe0351c4a7f21387ef253010b82ed
+
+# Buildroot bug? Can't add target deps via '+SAMBA4_SERVER_AD_DC:python-crypto' (as work-around we select via config.in)
+PKG_BUILD_DEPENDS:=perl/host python/host SAMBA4_SERVER_AD_DC:python-crypto nfs-kernel-server/host
+
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_SAMBA4_SERVER_NETBIOS \
+       CONFIG_SAMBA4_SERVER_AVAHI \
+       CONFIG_SAMBA4_SERVER_VFS \
+       CONFIG_SAMBA4_SERVER_VFSX \
+       CONFIG_SAMBA4_SERVER_QUOTAS \
+       CONFIG_SAMBA4_SERVER_ACL \
+       CONFIG_SAMBA4_SERVER_AD_DC \
+       CONFIG_SAMBA4_SERVER_WINBIND \
+       CONFIG_PACKAGE_kmod-fs-btrfs \
+       CONFIG_PACKAGE_kmod-fs-xfs
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/kernel.mk
+include $(INCLUDE_DIR)/version.mk
+
+define Package/samba4/Default
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=Samba $(PKG_VERSION)
+  URL:=http://www.samba.org/
+endef
+
+define Package/samba4/Default/description
+  The Samba software suite is a collection of programs that implements the
+  SMB/CIFS protocol for UNIX systems, allowing you to serve files and printers.
+
+  Samba 4 implements up-to protocol version SMB v3.1.1 (Win10), supports mDNS via AVAHI and a AD-DC setup via krb5.
+  NOTE: No cluster and printer support.
+endef
+
+define Package/samba4-libs
+  $(call Package/samba4/Default)
+  TITLE+= libs
+  DEPENDS:= +zlib +libtirpc +krb5-libs +libpopt \
+       +PACKAGE_libcap:libcap +PACKAGE_jansson:jansson +PACKAGE_libpthread:libpthread +PACKAGE_libnettle:libnettle \
+       +PACKAGE_libarchive:libarchive +PACKAGE_libgcrypt:libgcrypt +PACKAGE_libpam:libpam \
+       +SAMBA4_SERVER_VFS:attr \
+       +SAMBA4_SERVER_ACL:acl +SAMBA4_SERVER_ACL:attr \
+       +SAMBA4_SERVER_AVAHI:libavahi-client \
+       +SAMBA4_SERVER_AD_DC:python-base +SAMBA4_SERVER_AD_DC:libopenssl +SAMBA4_SERVER_AD_DC:libgnutls +SAMBA4_SERVER_AD_DC:libopenldap
+endef
+
+define Package/samba4-server
+  $(call Package/samba4/Default)
+  TITLE+= server
+  DEPENDS:= +samba4-libs
+endef
+
+define Package/samba4-server/description
+  installs: smbd (daemon) smbpasswd pdbedit testparm
+
+    This provides the basic fileserver service and is the minimum needed to serve file shares.
+    HINT: https://fitzcarraldoblog.wordpress.com/2016/10/17/a-correct-method-of-configuring-samba-for-browsing-smb-shares-in-a-home-network/
+endef
+
+define Package/samba4-server/config
+  select PACKAGE_wsdd2
+  source "$(SOURCE)/Config.in"
+endef
+
+define Package/samba4-client
+  $(call Package/samba4/Default)
+  TITLE+= client
+  DEPENDS:= +samba4-libs
+endef
+
+define Package/samba4-client/description
+  installs: smbclient cifsdd
+
+  The smbclient program implements a simple ftp-like client for accessing SMB shares
+endef
+
+define Package/samba4-admin
+  $(call Package/samba4/Default)
+  TITLE+= admin tools
+  DEPENDS:= +samba4-libs
+endef
+
+define Package/samba4-admin/description
+  installs: net smbcontrol profiles rpcclient smbcacls smbcquotas
+
+  Administration tools collection
+endef
+
+define Package/samba4-utils
+  $(call Package/samba4/Default)
+  TITLE+= utils
+  DEPENDS:= +samba4-libs
+endef
+
+define Package/samba4-utils/description
+  installs: smbstatus smbtree smbget nmblookup mvxattr
+
+  Utilities collection
+endef
+
+TARGET_CFLAGS += -ffunction-sections -fdata-sections
+TARGET_LDFLAGS += -Wl,--gc-sections
+
+CONFIGURE_VARS += \
+       CPP="$(TARGET_CROSS)cpp"
+
+CONFIGURE_CMD = ./buildtools/bin/waf
+
+# Strip options that WAF configure script does not recognize
+CONFIGURE_ARGS:=$(filter-out   \
+       --host=%                \
+       --build=%               \
+       --program-suffix=%      \
+       --disable-nls           \
+       --disable-ipv6          \
+       , $(CONFIGURE_ARGS))
+
+CONFIGURE_ARGS += \
+               --hostcc="$(HOSTCC)" \
+               --cross-compile \
+               --cross-answers=cross-answers.txt \
+               --disable-cups \
+               --disable-iprint \
+               --disable-cephfs \
+               --disable-fault-handling \
+               --disable-glusterfs \
+               --disable-rpath \
+               --disable-rpath-install \
+               --disable-rpath-private-install \
+               --enable-fhs \
+               --without-automount \
+               --without-iconv \
+               --without-lttng \
+               --without-ntvfs-fileserver \
+               --without-pam \
+               --without-systemd \
+               --without-utmp \
+               --without-dmapi \
+               --without-fam \
+               --without-gettext \
+               --without-regedit \
+               --without-gpgme
+
+# Optional AES-NI support - https://lists.samba.org/archive/samba-technical/2017-September/122738.html
+# Support for Nettle wasn't comitted
+CONFIGURE_ARGS += --accel-aes=none
+
+CONFIGURE_ARGS += \
+               --with-lockdir=/var/lock \
+               --with-logfilebase=/var/log \
+               --with-piddir=/var/run \
+               --with-privatedir=/etc/samba
+
+CONFIGURE_ARGS += \
+               --with-system-mitkrb5 "$(STAGING_DIR)/usr" \
+               --with-system-mitkdc=/usr/sbin/krb5kdc
+
+               ## embedded-heimdal
+               # --bundled-libraries=talloc,tevent,tdb,ldb,com_err,cmocka,roken,wind,hx509,asn1,heimbase,hcrypto,krb5,gssapi,heimntlm,hdb,kdc,NONE
+
+ifeq ($(CONFIG_SAMBA4_SERVER_AVAHI),y)
+       CONFIGURE_ARGS += --enable-avahi
+else
+       CONFIGURE_ARGS += --disable-avahi
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y)
+       CONFIGURE_ARGS += --with-quotas
+else
+       CONFIGURE_ARGS += --without-quotas
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y)
+       CONFIGURE_ARGS += --with-acl-support
+else
+       CONFIGURE_ARGS += --without-acl-support
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+       CONFIGURE_ARGS += --enable-gnutls --with-dnsupdate --with-ads --with-ldap
+       TARGET_CFLAGS := -I$(STAGING_DIR)/usr/include/python2.7 $(TARGET_CFLAGS)
+else
+       CONFIGURE_ARGS += --without-ad-dc --disable-python --nopyc --nopyo --disable-gnutls --without-dnsupdate --without-ads --without-ldap
+       CONFIGURE_VARS += \
+               python_LDFLAGS="" \
+               python_LIBDIR=""
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y)
+       CONFIGURE_ARGS += --with-winbind
+else
+       CONFIGURE_ARGS += --without-winbind
+endif
+
+SAMBA4_IDMAP_MODULES :=
+SAMBA4_IDMAP_MODULES_SHARED :=
+SAMBA4_PDB_MODULES :=pdb_smbpasswd,pdb_tdbsam,
+SAMBA4_AUTH_MODULES :=auth_builtin,auth_sam,auth_unix,auth_script,
+SAMBA4_VFS_MODULES :=vfs_default,
+ifeq ($(CONFIG_SAMBA4_SERVER_VFS),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_fruit,vfs_shadow_copy2,vfs_recycle,vfs_fake_perms,vfs_readonly,vfs_cap,vfs_offline,vfs_crossrename,vfs_catia,vfs_streams_xattr,
+ifeq ($(CONFIG_PACKAGE_kmod-fs-btrfs),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_btrfs,
+endif
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_VFSX),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_virusfilter,vfs_shell_snap,vfs_commit,vfs_worm,vfs_xattr_tdb,vfs_aio_fork,vfs_aio_pthread,vfs_netatalk,vfs_dirsort,vfs_fileid,
+ifeq ($(CONFIG_PACKAGE_kmod-fs-xfs),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_linux_xfs_sgid,
+endif
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_QUOTAS),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_default_quota,
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y)
+       SAMBA4_VFS_MODULES :=$(SAMBA4_VFS_MODULES)vfs_posixacl,vfs_acl_xattr,vfs_acl_tdb,
+       # vfs_zfsacl needs https://github.com/zfsonlinux/zfs/tree/master/include/sys/zfs_acl.h
+       # vfs_nfs4acl_xattr needs https://github.com/notriddle/libdrpc/blob/master/rpc/xdr.h
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+       SAMBA4_PDB_MODULES :=$(SAMBA4_PDB_MODULES)pdb_samba_dsdb,
+       SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_samba4,
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y)
+       SAMBA4_IDMAP_MODULES :=$(SAMBA4_IDMAP_MODULES)idmap_passdb,idmap_nss,idmap_tdb,idmap_tdb2,idmap_script,nss_info_template,
+       SAMBA4_IDMAP_MODULES_SHARED :=$(SAMBA4_IDMAP_MODULES_SHARED)idmap_autorid,idmap_rid,idmap_ad,idmap_rfc2307,
+       # idmap_ad needs --with-ads
+       # idmap_rfc2307 needs ldap headers
+       SAMBA4_AUTH_MODULES :=$(SAMBA4_AUTH_MODULES)auth_winbind,
+endif
+
+SAMBA4_MODULES :=${SAMBA4_AUTH_MODULES}${SAMBA4_PDB_MODULES}${SAMBA4_IDMAP_MODULES}${SAMBA4_VFS_MODULES}
+SAMBA4_MODULES_SHARDED :=${SAMBA4_IDMAP_MODULES_SHARED}
+
+CONFIGURE_ARGS += \
+               --with-static-modules=$(SAMBA4_MODULES)!DEFAULT,!FORCED \
+               --with-shared-modules=$(SAMBA4_MODULES_SHARDED)!DEFAULT,!FORCED
+
+# Setup build/install targets
+# CONFIG_PACKAGE_samba4-server
+BUILD_TARGETS_SERVER :=smbd/smbd,smbpasswd,pdbedit,testparm
+# Optional server targets
+ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y)
+       BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),sharesec
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y)
+       BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),nmbd
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+       BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),samba,nsstest,ntlm_auth
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y)
+       BUILD_TARGETS_SERVER :=$(BUILD_TARGETS_SERVER),winbindd,wbinfo,winbind_krb5_locator
+endif
+# CONFIG_PACKAGE_samba4-client
+BUILD_TARGETS_CLIENT :=client/smbclient,client/cifsdd
+# CONFIG_PACKAGE_samba4-admin
+BUILD_TARGETS_ADMIN :=net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas
+# CONFIG_PACKAGE_samba4-utils
+BUILD_TARGETS_UTILS :=smbstatus,smbtree,smbget,mvxattr,nmblookup
+
+# lib bundling
+# NOTE: Compile some unique libs into related bins, so we end-up with a unified samba4-libs base, mainly to allow package separation (server, client, admin, utils)
+CONFIGURE_ARGS += --builtin-libraries=smbclient,netapi,samba-passdb,ads,auth,cli-spoolss,libcli-lsa3,gpext,talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace
+#CONFIGURE_ARGS += --nonshared-binary=$(BUILD_TARGETS_SERVER)
+# NOTE: bundle + make private, we want to avoid version configuration (build, link) conflicts
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,pytalloc-util,pyldb-util,NONE
+else
+CONFIGURE_ARGS += --bundled-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace,NONE
+endif
+CONFIGURE_ARGS += --private-libraries=talloc,tevent,texpect,tdb,ldb,tdr,cmocka,replace
+
+define Build/Prepare
+       $(Build/Prepare/Default)
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),)
+       # un-bundle dnspython
+       $(SED) '/"dns.resolver":/d' $(PKG_BUILD_DIR)/third_party/wscript
+       # unbundle iso8601
+       $(SED) '/"iso8601":/d' $(PKG_BUILD_DIR)/third_party/wscript
+endif
+endef
+
+define Build/Configure
+       $(CP) ./waf-cross-answers/$(ARCH).txt $(PKG_BUILD_DIR)/cross-answers.txt
+       echo 'Checking uname machine type: "$(ARCH)"' >> $(PKG_BUILD_DIR)/cross-answers.txt
+       echo 'Checking uname release type: "$(LINUX_VERSION)"' >> $(PKG_BUILD_DIR)/cross-answers.txt
+       echo 'Checking uname version type: "$(VERSION_DIST) Linux-$(LINUX_VERSION) $(shell date +%Y-%m-%d)"' >> $(PKG_BUILD_DIR)/cross-answers.txt
+       # NOTE: For some unknown reason this answer is not needed on some hosts/distros, yet needed on others?
+       echo 'Checking whether POSIX capabilities are available: OK' >> $(PKG_BUILD_DIR)/cross-answers.txt
+       $(call Build/Configure/Default,configure)
+endef
+
+# BUG: We need to use "waf install --targets=" otherwise a "make install" or "waf install" will retrigger a full recompile of all possible targets!
+define Build/Compile
+       (cd $(PKG_BUILD_DIR); \
+               ./buildtools/bin/waf install -j$(shell nproc) \
+               --targets=$(SAMBA4_MODULES)$(SAMBA4_MODULES_SHARDED)$(BUILD_TARGETS_SERVER),$(BUILD_TARGETS_UTILS),$(BUILD_TARGETS_ADMIN),$(BUILD_TARGETS_CLIENT) \
+               --destdir="$(PKG_INSTALL_DIR)" \
+       )
+endef
+
+# No default install see above
+define Build/Install
+endef
+
+define Package/samba4-libs/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib/
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/*.so* $(1)/usr/lib/
+endef
+
+define Package/samba4-client/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbclient,cifsdd} $(1)/usr/bin/
+endef
+
+define Package/samba4-admin/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{net,smbcontrol,profiles,rpcclient,smbcacls,smbcquotas} $(1)/usr/bin/
+endef
+
+define Package/samba4-utils/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbstatus,smbtree,smbget,mvxattr,nmblookup} $(1)/usr/bin/
+endef
+
+define Package/samba4-server/install
+       $(INSTALL_DIR) $(1)/usr/lib/samba
+       if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/idmap ]; then \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/idmap $(1)/usr/lib/samba/; \
+       fi
+       if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/auth ]; then \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/auth $(1)/usr/lib/samba/; \
+       fi
+       if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/vfs ]; then \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/vfs $(1)/usr/lib/samba/; \
+       fi
+       if [ -d $(PKG_INSTALL_DIR)/usr/lib/samba/pdb ]; then \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/samba/pdb $(1)/usr/lib/samba/; \
+       fi
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{smbpasswd,pdbedit,testparm} $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/smbd $(1)/usr/sbin/
+ifeq ($(CONFIG_SAMBA4_SERVER_AD_DC),y)
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/python2.7 $(1)/usr/lib/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/{samba-tool,ntlm_auth} $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/{samba,samba_gpoupdate,samba_dnsupdate,samba_kcc,samba_spnupdate,samba_upgradedns} $(1)/usr/sbin/
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_NETBIOS),y)
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/nmbd $(1)/usr/sbin/
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_WINBIND),y)
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/wbinfo $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/winbindd $(1)/usr/sbin/
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_ACL),y)
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/sharesec $(1)/usr/bin/
+endif
+ifeq ($(CONFIG_SAMBA4_SERVER_AVAHI),y)
+       $(INSTALL_DIR) $(1)/etc/avahi/services
+       $(INSTALL_DATA) ./files/samba.service $(1)/etc/avahi/services/
+endif
+       $(INSTALL_DIR) $(1)/etc/config $(1)/etc/samba $(1)/etc/init.d
+       $(INSTALL_DATA) ./files/samba.config $(1)/etc/config/samba4
+       $(INSTALL_DATA) ./files/smb.conf.template $(1)/etc/samba
+       $(INSTALL_BIN) ./files/samba.init $(1)/etc/init.d/samba4
+endef
+
+define Package/samba4-server/conffiles
+/etc/config/samba4
+/etc/samba/smb.conf.template
+/etc/samba/smb.conf
+/etc/samba/smbpasswd
+/etc/samba/secrets.tdb
+/etc/samba/passdb.tdb
+/etc/samba/idmap.ldb
+/etc/samba/lmhosts
+/etc/nsswitch.conf
+/etc/avahi/services/samba.service
+endef
+
+$(eval $(call BuildPackage,samba4-libs))
+$(eval $(call BuildPackage,samba4-server))
+$(eval $(call BuildPackage,samba4-client))
+$(eval $(call BuildPackage,samba4-admin))
+$(eval $(call BuildPackage,samba4-utils))
diff --git a/net/samba4/files/samba.config b/net/samba4/files/samba.config
new file mode 100644 (file)
index 0000000..1d62dca
--- /dev/null
@@ -0,0 +1,7 @@
+config samba
+       option 'name'                   'OpenWrt-SMB'
+       option 'workgroup'              'WORKGROUP'
+       option 'description'    'Samba on OpenWrt'
+       option 'charset'                'UTF-8'
+       option 'homes'                  '0'
+
diff --git a/net/samba4/files/samba.init b/net/samba4/files/samba.init
new file mode 100644 (file)
index 0000000..9487875
--- /dev/null
@@ -0,0 +1,192 @@
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+smb_header() {
+       config_get samba_iface $1 interface "loopback lan"
+
+       # resolve interfaces
+       local interfaces=$(
+               . /lib/functions/network.sh
+
+               local net
+               for net in $samba_iface; do
+                       local device
+                       network_is_up $net || continue
+                       network_get_device device "$net"
+                       echo -n "${device:-$net} "
+               done
+       )
+
+       local name workgroup description charset
+       local hostname="$(uci_get system.@system[0].hostname)"
+
+       config_get name                 $1 name         "${hostname:-OpenWrt}"
+       config_get workgroup            $1 workgroup    "${hostname:-WORKGROUP}"
+       config_get description          $1 description  "Samba on ${hostname:-OpenWrt}"
+       config_get charset              $1 charset      "UTF-8"
+
+       config_get_bool DISABLE_NETBIOS $1 disable_netbios      0
+       config_get_bool DISABLE_AD_DC   $1 disable_ad_dc        0
+       config_get_bool DISABLE_WINBIND $1 disable_winbind      0
+
+       mkdir -p /var/etc
+       sed -e "s#|NAME|#$name#g" \
+           -e "s#|WORKGROUP|#$workgroup#g" \
+           -e "s#|DESCRIPTION|#$description#g" \
+           -e "s#|INTERFACES|#$interfaces#g" \
+           -e "s#|CHARSET|#$charset#g" \
+           /etc/samba/smb.conf.template > /var/etc/smb.conf
+
+       echo -e "\n######### Dynamic written config options #########\n" >> /var/etc/smb.conf
+       if [ "$DISABLE_NETBIOS" -eq 1 ] || [ ! -x /usr/sbin/nmbd ]; then
+               echo -e "\tdisable netbios = yes" >> /var/etc/smb.conf
+       fi
+
+       local homes
+       config_get_bool homes $1 homes 0
+       [ $homes -gt 0 ] && {
+               cat <<EOT >> /var/etc/smb.conf
+
+[homes]
+       comment     = Home Directories
+       browsable   = no
+       writable = yes
+       read only   = no
+       create mask = 0750
+EOT
+       }
+
+       [ -L /etc/samba/smb.conf ] || ln -nsf /var/etc/smb.conf /etc/samba/smb.conf
+}
+
+smb_add_share() {
+       local name
+       local path
+       local users
+       local public
+       local writable
+       local printable
+       local create_mask
+
+       local browseable
+       local read_only
+       local guest_ok
+       local guest_only
+       local inherit_owner
+       local vfs_objects
+
+       config_get name $1 name
+       config_get path $1 path
+       config_get users $1 users
+       config_get public $1 public
+       config_get writable $1 writable
+       config_get printable $1 printable
+       config_get create_mask $1 create_mask
+       config_get dir_mask $1 dir_mask
+
+
+       config_get browseable $1 browseable
+       config_get read_only $1 read_only
+       config_get guest_ok $1 guest_ok
+       config_get guest_only $1 guest_only
+       config_get inherit_owner $1 inherit_owner
+       config_get vfs_objects $1 vfs_objects
+
+
+       [ -z "$name" -o -z "$path" ] && return
+
+       echo -e "\n[$name]\n\tpath = $path" >> /var/etc/smb.conf
+       [ -n "$users" ] && echo -e "\tvalid users = $users" >> /var/etc/smb.conf
+       [ -n "$public" ] && echo -e "\tpublic = $public" >> /var/etc/smb.conf
+       [ -n "$writable" ] && echo -e "\twritable = $writable" >> /var/etc/smb.conf
+       [ -n "$printable" ] && echo -e "\tprintable = $printable" >> /var/etc/smb.conf
+       [ -n "$create_mask" ] && echo -e "\tcreate mask = $create_mask" >> /var/etc/smb.conf
+       [ -n "$dir_mask" ] && echo -e "\tdirectory mask = $dir_mask" >> /var/etc/smb.conf
+
+       [ -n "$browseable" ] && echo -e "\tbrowseable = $browseable" >> /var/etc/smb.conf
+       [ -n "$read_only" ] && echo -e "\tread only = $read_only" >> /var/etc/smb.conf
+       [ -n "$guest_ok" ] && echo -e "\tguest ok = $guest_ok" >> /var/etc/smb.conf
+       [ -n "$guest_only" ] && echo -e "\tguest only = $guest_only" >> /var/etc/smb.conf
+       [ -n "$inherit_owner" ] && echo -e "\tinherit owner = $inherit_owner" >> /var/etc/smb.conf
+       [ -n "$vfs_objects" ] && echo -e "\tvfs objects = $vfs_objects" >> /var/etc/smb.conf
+}
+
+init_config() {
+       # Create samba dirs
+       [ -d /var/lib/samba ] || mkdir -p /var/lib/samba
+       [ -d /var/cache/samba ] || mkdir -p /var/cache/samba
+       [ -d /var/run/samba ] || mkdir -p /var/run/samba
+       [ -d /var/log/samba ] || mkdir -p /var/log/samba
+       [ -d /var/lock ] && chmod 0755 /var/lock || {
+               mkdir -p /var/lock
+               chmod 0755 /var/lock
+       }
+
+       config_load samba4
+       config_foreach smb_header samba
+       config_foreach smb_add_share sambashare
+}
+
+reload_service() {
+       init_config
+
+       killall -HUP samba
+       killall -HUP smbd
+       killall -HUP nmbd
+       killall -HUP winbindd
+}
+
+service_triggers() {
+       procd_add_reload_trigger samba4
+
+       local i
+       for i in $samba_iface; do
+               procd_add_reload_interface_trigger $i
+       done
+}
+
+start_service() {
+       init_config
+
+       # start main AC-DC daemon, will spawn (smbd,nmbd,winbindd) as needed/configured.
+       if [ "$DISABLE_AD_DC" -ne 1 ] && [ -x /usr/sbin/samba ]; then
+               procd_open_instance
+               procd_set_param command /usr/sbin/samba -F
+               procd_set_param respawn
+               procd_set_param file /var/etc/smb.conf
+               procd_close_instance
+       else
+               # start fileserver daemon
+               procd_open_instance
+               procd_set_param command /usr/sbin/smbd -F
+               procd_set_param respawn
+               procd_set_param file /var/etc/smb.conf
+               procd_close_instance
+
+               # start netbios daemon
+               if [ "$DISABLE_NETBIOS" -ne 1 ] && [ -x /usr/sbin/nmbd ]; then
+                       procd_open_instance
+                       procd_set_param command /usr/sbin/nmbd -F
+                       procd_set_param respawn
+                       procd_set_param file /var/etc/smb.conf
+                       procd_close_instance
+               fi
+               # start winbind daemon
+               if [ "$DISABLE_WINBIND" -ne 1 ] && [ -x /usr/sbin/winbindd ]; then
+                       procd_open_instance
+                       procd_set_param command /usr/sbin/winbindd -F
+                       procd_set_param respawn
+                       procd_set_param file /var/etc/smb.conf
+                       procd_close_instance
+               fi
+       fi
+       # lower priority using renice (if found)
+       if [ -x /usr/bin/renice ]; then
+               [ -x /usr/sbin/samba ] && renice -n 2 $(pidof samba)
+               [ -x /usr/sbin/smbd ] && renice -n 2 $(pidof smbd)
+               [ -x /usr/sbin/nmbd ] && renice -n 2 $(pidof nmbd)
+               [ -x /usr/sbin/winbindd ] && renice -n 2 $(pidof winbindd)
+       fi
+}
diff --git a/net/samba4/files/samba.service b/net/samba4/files/samba.service
new file mode 100644 (file)
index 0000000..8191e52
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
+<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
+<service-group>
+ <name replace-wildcards="yes">%h</name>
+ <service>
+   <type>_adisk._tcp</type>
+   <txt-record>sys=waMa=0,adVF=0x100</txt-record>
+   <txt-record>dk0=adVN=TimeMachine,adVF=0x82</txt-record>
+ </service>
+  <service>
+    <type>_smb._tcp</type>
+    <port>445</port>
+  </service>
+</service-group>
diff --git a/net/samba4/files/smb.conf.template b/net/samba4/files/smb.conf.template
new file mode 100644 (file)
index 0000000..77f4e96
--- /dev/null
@@ -0,0 +1,100 @@
+[global]
+       netbios name = |NAME| 
+       interfaces = |INTERFACES|
+       server string = |DESCRIPTION|
+       unix charset = |CHARSET|
+       workgroup = |WORKGROUP|
+
+       ## This global parameter allows the Samba admin to limit what interfaces on a machine will serve SMB requests.
+       bind interfaces only = yes
+       
+       ## time for inactive connections to-be closed in minutes
+       deadtime = 15
+       
+       ## disable core dumps
+       enable core files = no
+       
+       ## set security (auto, user, domain, ads)
+       security = user
+       
+       ## This parameter controls whether a remote client is allowed or required to use SMB encryption.
+       ## It has different effects depending on whether the connection uses SMB1 or SMB2 and newer:
+    ## If the connection uses SMB1, then this option controls the use of a Samba-specific extension to the SMB protocol introduced in Samba 3.2 that makes use of the Unix extensions.
+       ## If the connection uses SMB2 or newer, then this option controls the use of the SMB-level encryption that is supported in SMB version 3.0 and above and available in Windows 8 and newer. 
+       ##(default/auto,desired,required,off)
+       #smb encrypt = default
+       
+       ## set invalid users
+       invalid users = root
+       
+       ## map unknow users to guest
+       map to guest = Bad User
+
+       ## allow client access to accounts that have null passwords. 
+       null passwords = yes
+       
+       ## The old plaintext passdb backend. Some Samba features will not work if this passdb backend is used. (NOTE: enabled for size reasons)
+       ## (tdbsam,smbpasswd,ldapsam)
+       passdb backend = smbpasswd
+       
+       ## Set location of smbpasswd ('smbd -b' will show default compiled location)
+       #smb passwd file = /etc/samba/smbpasswd 
+       
+       ## LAN/WAN options (IPTOS_LOWDELAY TCP_NODELAY) WAN (IPTOS_THROUGHPUT)
+       socket options = IPTOS_LOWDELAY TCP_NODELAY
+       
+       ## lower CPU useage if supported
+       use sendfile = yes
+       
+       ## samba will behave as previous versions of Samba would and will fail the lock request immediately if the lock range cannot be obtained.
+       #blocking locks = No
+       
+       ## disable loading of all printcap printers by default (iprint, cups, lpstat)
+       load printers = No
+       printcap name = /dev/null
+       
+       ## Disable that nmbd is acting as a WINS server for unknow netbios names
+       #dns proxy = No
+       
+       ## win/unix user mapping backend
+       #idmap config * : backend = tdb
+       
+       ## Allows the server name that is advertised through MDNS to be set to the hostname rather than the Samba NETBIOS name.
+       ## This allows an administrator to make Samba registered MDNS records match the case of the hostname rather than being in all capitals.
+       ## (netbios, mdns)
+       #mdns name = mdns
+       
+       ## Clients that only support netbios won't be able to see your samba server when netbios support is disabled.
+       #disable netbios = Yes
+       
+       ## Setting this value to no will cause nmbd never to become a local master browser.
+       #local master = no
+
+       ## (auto, yes) If this is set to yes, on startup, nmbd will force an election, and it will have a slight advantage in winning the election. It is recommended that this parameter is used in conjunction with domain master = yes, so that nmbd can guarantee becoming a domain master. 
+       #preferred master = yes
+
+       ## (445 139) Specifies which ports the server should listen on for SMB traffic.
+       ## 139 is netbios/nmbd
+       #smb ports = 445 139
+       
+       ## This is a list of files and directories that are neither visible nor accessible.
+       ## Each entry in the list must be separated by a '/', which allows spaces to be included in the entry. '*' and '?' can be used to specify multiple files or directories as in DOS wildcards.
+       veto files = /Thumbs.db/.DS_Store/._.DS_Store/.apdisk/
+       
+       ## If a directory that is to be deleted contains nothing but veto files this deletion will fail unless you also set the delete veto files parameter to yes.
+       delete veto files = yes
+       
+################ Filesystem and creation rules ################
+       ## reported filesystem type (NTFS,Samba,FAT)
+       #fstype = FAT
+       
+       ## Allows a user who has write access to the file (by whatever means, including an ACL permission) to modify the permissions (including ACL) on it.
+       #dos filemode = Yes
+       
+       ## file/dir creating rules
+       #create mask = 0666
+       #directory mask = 0777
+       #force group = root
+       #force user = root
+       #inherit owner = windows and unix
+################################################################
diff --git a/net/samba4/patches/001-samba-4.4.0-pam.patch b/net/samba4/patches/001-samba-4.4.0-pam.patch
new file mode 100644 (file)
index 0000000..4516013
--- /dev/null
@@ -0,0 +1,29 @@
+--- samba-4.4.0rc2/source3/wscript
++++ samba-4.4.0rc2/source3/wscript
+@@ -870,7 +870,7 @@
+         if conf.env.with_iconv:
+             conf.DEFINE('HAVE_ICONV', 1)
+-    if Options.options.with_pam:
++    if Options.options.with_pam != False:
+         use_pam=True
+         conf.CHECK_HEADERS('security/pam_appl.h pam/pam_appl.h')
+         if not conf.CONFIG_SET('HAVE_SECURITY_PAM_APPL_H') and not conf.CONFIG_SET('HAVE_PAM_PAM_APPL_H'):
+@@ -943,6 +943,17 @@
+             conf.DEFINE('WITH_PAM', 1)
+             conf.DEFINE('WITH_PAM_MODULES', 1)
++    else:
++        Logs.warn("PAM disabled")
++        use_pam=False
++        conf.undefine('WITH_PAM')
++        conf.undefine('WITH_PAM_MODULES')
++        conf.undefine('HAVE_SECURITY_PAM_APPL_H')
++        conf.undefine('PAM_RHOST')
++        conf.undefine('PAM_TTY')
++        conf.undefine('HAVE_PAM_PAM_APPL_H')
++
++
+     seteuid = False
+ #
diff --git a/net/samba4/patches/002-dnsserver-4.7.0.patch b/net/samba4/patches/002-dnsserver-4.7.0.patch
new file mode 100644 (file)
index 0000000..0c7592f
--- /dev/null
@@ -0,0 +1,19 @@
+samba: build dnsserver_common code
+
+Just 'install' does not seem to do it.
+
+Upstream-Status: Pending
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+
+--- a/source4/dns_server/wscript_build
++++ b/source4/dns_server/wscript_build
+@@ -4,7 +4,7 @@ bld.SAMBA_LIBRARY('dnsserver_common',
+         source='dnsserver_common.c',
+         deps='samba-util samba-errors ldbsamba clidns',
+         private_library=True,
+-        install=bld.AD_DC_BUILD_IS_ENABLED()
++        enabled=bld.AD_DC_BUILD_IS_ENABLED()
+         )
+ bld.SAMBA_MODULE('service_dns',
diff --git a/net/samba4/patches/010-source3-msgsock-nvram-fix.patch b/net/samba4/patches/010-source3-msgsock-nvram-fix.patch
new file mode 100644 (file)
index 0000000..c2e69d3
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/source3/lib/messages.c
++++ b/source3/lib/messages.c
+@@ -221,7 +221,7 @@ struct messaging_context *messaging_init
+               return NULL;
+       }
+-      priv_path = private_path("msg.sock");
++      priv_path = lock_path("msg.sock");
+       if (priv_path == NULL) {
+               TALLOC_FREE(ctx);
+               return NULL;
+@@ -311,7 +311,7 @@ NTSTATUS messaging_reinit(struct messagi
+       msg_ctx->msg_dgm_ref = messaging_dgm_ref(
+               msg_ctx, msg_ctx->event_ctx, &msg_ctx->id.unique_id,
+-              private_path("msg.sock"), lck_path,
++              lock_path("msg.sock"), lck_path,
+               messaging_recv_cb, msg_ctx, &ret);
+       if (msg_ctx->msg_dgm_ref == NULL) {
diff --git a/net/samba4/patches/011-source4-msgsock-nvram-fix.patch b/net/samba4/patches/011-source4-msgsock-nvram-fix.patch
new file mode 100644 (file)
index 0000000..c9cf955
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/source4/lib/messaging/messaging.c
++++ b/source4/lib/messaging/messaging.c
+@@ -323,7 +323,7 @@ struct imessaging_context *imessaging_in
+               goto fail;
+       }
+-      msg->sock_dir = lpcfg_private_path(msg, lp_ctx, "msg.sock");
++      msg->sock_dir = lpcfg_lock_path(msg, lp_ctx, "msg.sock");
+       if (msg->sock_dir == NULL) {
+               goto fail;
+       }
diff --git a/net/samba4/patches/100-do-not-import-target-module-while-cross-compile.patch b/net/samba4/patches/100-do-not-import-target-module-while-cross-compile.patch
new file mode 100644 (file)
index 0000000..e112b3b
--- /dev/null
@@ -0,0 +1,58 @@
+Some modules such as dynamic library maybe cann't be imported while cross compile, 
+we just check whether does the module exist.
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+Index: samba-4.4.2/buildtools/wafsamba/samba_bundled.py
+===================================================================
+--- samba-4.4.2.orig/buildtools/wafsamba/samba_bundled.py
++++ samba-4.4.2/buildtools/wafsamba/samba_bundled.py
+@@ -2,6 +2,7 @@
+ import sys
+ import Build, Options, Logs
++import imp, os
+ from Configure import conf
+ from samba_utils import TO_LIST
+@@ -230,17 +231,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li
+     # versions
+     minversion = minimum_library_version(conf, libname, minversion)
+-    try:
+-        m = __import__(modulename)
+-    except ImportError:
+-        found = False
+-    else:
++    # Find module in PYTHONPATH
++    stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]])
++    if stuff:
+         try:
+-            version = m.__version__
+-        except AttributeError:
++            m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2])
++        except ImportError:
+             found = False
++
++            if conf.env.CROSS_COMPILE:
++                # Some modules such as dynamic library maybe cann't be imported
++                # while cross compile, we just check whether the module exist
++                Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1]))
++                found = True
+         else:
+-            found = tuplize_version(version) >= tuplize_version(minversion)
++            try:
++                version = m.__version__
++            except AttributeError:
++                found = False
++            else:
++                found = tuplize_version(version) >= tuplize_version(minversion)
++        finally:
++            if stuff[0]:
++                stuff[0].close()
++    else:
++        found = False
++
+     if not found and not conf.LIB_MAY_BE_BUNDLED(libname):
+         Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
+         sys.exit(1)
diff --git a/net/samba4/patches/101-do-not-check-xsltproc-manpages.patch b/net/samba4/patches/101-do-not-check-xsltproc-manpages.patch
new file mode 100644 (file)
index 0000000..c37cfcd
--- /dev/null
@@ -0,0 +1,43 @@
+Don't check xsltproc manpages
+
+Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
+
+Index: samba-4.4.2/lib/ldb/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/ldb/wscript
++++ samba-4.4.2/lib/ldb/wscript
+@@ -65,7 +65,7 @@ def configure(conf):
+                 conf.define('USING_SYSTEM_LDB', 1)
+     if conf.env.standalone_ldb:
+-        conf.CHECK_XSLTPROC_MANPAGES()
++        #conf.CHECK_XSLTPROC_MANPAGES()
+         # we need this for the ldap backend
+         if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
+Index: samba-4.4.2/lib/talloc/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/talloc/wscript
++++ samba-4.4.2/lib/talloc/wscript
+@@ -56,7 +56,7 @@ def configure(conf):
+     if conf.env.standalone_talloc:
+         conf.env.TALLOC_COMPAT1 = Options.options.TALLOC_COMPAT1
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    #conf.CHECK_XSLTPROC_MANPAGES()
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
+Index: samba-4.4.2/lib/tdb/wscript
+===================================================================
+--- samba-4.4.2.orig/lib/tdb/wscript
++++ samba-4.4.2/lib/tdb/wscript
+@@ -92,7 +92,7 @@ def configure(conf):
+         not conf.env.disable_tdb_mutex_locking):
+         conf.define('USE_TDB_MUTEX_LOCKING', 1)
+-    conf.CHECK_XSLTPROC_MANPAGES()
++    #conf.CHECK_XSLTPROC_MANPAGES()
+     if not conf.env.disable_python:
+         # also disable if we don't have the python libs installed
diff --git a/net/samba4/patches/102-samba-4.8.2-unbundle-libreadline.patch b/net/samba4/patches/102-samba-4.8.2-unbundle-libreadline.patch
new file mode 100644 (file)
index 0000000..e164d56
--- /dev/null
@@ -0,0 +1,21 @@
+--- a/libcli/smbreadline/wscript_configure
++++ b/libcli/smbreadline/wscript_configure
+@@ -1,11 +1,13 @@
+ #!/usr/bin/env python
+-conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h')
+-for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']:
+-    if conf.CHECK_FUNCS_IN('tgetent', termlib):
+-        conf.env['READLINE_TERMLIB'] = termlib
+-        break
++#conf.CHECK_HEADERS('readline.h history.h readline/readline.h readline/history.h')
++#for termlib in ['ncurses', 'curses', 'termcap', 'terminfo', 'termlib', 'tinfo']:
++#    if conf.CHECK_FUNCS_IN('tgetent', termlib):
++#        conf.env['READLINE_TERMLIB'] = termlib
++#        break
++
++conf.undefine('HAVE_READLINE_READLINE_H')
+ #
+ # Check if we need to work around readline/readline.h
diff --git a/net/samba4/waf-cross-answers/aarch64.txt b/net/samba4/waf-cross-answers/aarch64.txt
new file mode 100644 (file)
index 0000000..f20b9eb
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/arc.txt b/net/samba4/waf-cross-answers/arc.txt
new file mode 100644 (file)
index 0000000..babfa41
--- /dev/null
@@ -0,0 +1,36 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
+Checking whether setreuid is available: NO
+Checking whether setresuid is available: NO
+Checking whether seteuid is available: NO
diff --git a/net/samba4/waf-cross-answers/arm.txt b/net/samba4/waf-cross-answers/arm.txt
new file mode 100644 (file)
index 0000000..10e7fe3
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/armeb.txt b/net/samba4/waf-cross-answers/armeb.txt
new file mode 100644 (file)
index 0000000..10e7fe3
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/i386.txt b/net/samba4/waf-cross-answers/i386.txt
new file mode 100644 (file)
index 0000000..10e7fe3
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials with 32-bit system calls: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/mips.txt b/net/samba4/waf-cross-answers/mips.txt
new file mode 100644 (file)
index 0000000..6f6f410
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/mips64.txt b/net/samba4/waf-cross-answers/mips64.txt
new file mode 100644 (file)
index 0000000..313c5d9
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/mips64el.txt b/net/samba4/waf-cross-answers/mips64el.txt
new file mode 100644 (file)
index 0000000..313c5d9
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/mipsel.txt b/net/samba4/waf-cross-answers/mipsel.txt
new file mode 100644 (file)
index 0000000..6f6f410
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "128"
+Checking value of _NSIG: "128"
+Checking value of SIGRTMAX: "127"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/powerpc.txt b/net/samba4/waf-cross-answers/powerpc.txt
new file mode 100644 (file)
index 0000000..819f185
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: NO
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
diff --git a/net/samba4/waf-cross-answers/x86_64.txt b/net/samba4/waf-cross-answers/x86_64.txt
new file mode 100644 (file)
index 0000000..f20b9eb
--- /dev/null
@@ -0,0 +1,33 @@
+Checking uname sysname type: "Linux"
+Checking simple C program: "hello world"
+rpath library support: OK
+-Wl,--version-script support: OK
+Checking getconf LFS_CFLAGS: NO
+Checking for large file support without additional flags: OK
+Checking correct behavior of strtoll: OK
+Checking for working strptime: NO
+Checking for C99 vsnprintf: "1"
+Checking for HAVE_SHARED_MMAP: OK
+Checking for HAVE_MREMAP: OK
+Checking for HAVE_INCOHERENT_MMAP: NO
+Checking for HAVE_SECURE_MKSTEMP: OK
+Checking for HAVE_IFACE_GETIFADDRS: OK
+Checking value of NSIG: "65"
+Checking value of _NSIG: "65"
+Checking value of SIGRTMAX: "64"
+Checking value of SIGRTMIN: "35"
+Checking whether the WRFILE -keytab is supported: OK
+Checking errno of iconv for illegal multibyte sequence: OK
+Checking for kernel change notify support: OK
+Checking for Linux kernel oplocks: OK
+Checking for kernel share modes: OK
+Checking if can we convert from CP850 to UCS-2LE: OK
+Checking if can we convert from UTF-8 to UCS-2LE: OK
+vfs_fileid checking for statfs() and struct statfs.f_fsid: OK
+Checking whether we can use Linux thread-specific credentials: "OK"
+Checking whether fcntl locking is available: OK
+Checking whether fcntl lock supports open file description locks: NO
+Checking for the maximum value of the 'time_t' type: OK
+Checking whether the realpath function allows a NULL argument: OK
+Checking for ftruncate extend: OK
+getcwd takes a NULL argument: OK
index 7e319b0ee98141758733830a68b703b90d5225f9..3bcf9e080cd4b162c45196a399e60b08cb25a1c7 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=shorewall-core
 PKG_MAJOR_MINOR_VERSION:=5.2
 PKG_BUGFIX_MAJOR_VERSION:=0
-PKG_BUGFIX_MINOR_VERSION:=.4
+PKG_BUGFIX_MINOR_VERSION:=.5
 PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
 PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
 PKG_RELEASE:=1
@@ -22,7 +22,7 @@ PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION
        http://shorewall.de/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
        http://www.shorewall.com.au/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=6716c95df96083b0c04e8244fe6669b8e5a4fca808220e9c0c0418813e8289a3
+PKG_HASH:=6d6187181560371f9bd84f2c14e83298f593f0b1cd8ce14e23e4a1df04b1a684
 
 PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
 PKG_LICENSE:=GPL-2.0+
index 321c33c5a1c1dd9549dc82b5ed32e5e6d89f1b1c..fe9476887ef5a4572b7ccaa328098d74ba33a4a1 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=shorewall-lite
 PKG_MAJOR_MINOR_VERSION:=5.2
 PKG_BUGFIX_MAJOR_VERSION:=0
-PKG_BUGFIX_MINOR_VERSION:=.4
+PKG_BUGFIX_MINOR_VERSION:=.5
 PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
 PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
 PKG_RELEASE:=1
@@ -22,7 +22,7 @@ PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION
        http://shorewall.de/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
        http://www.shorewall.com.au/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=5e0993a54c71eb7d5a012c804e969eec63b23f7781ea1308eff24d890fdeebc7
+PKG_HASH:=ca52182d995ecc0adcf882419e94d60968a3701979b99d6b30ba61e7a26ea0cb
 
 PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
 PKG_LICENSE:=GPL-2.0+
index 440d3a9dac270258dcb2d44adb5574e9fbba8291..41bc6627b503919239bb3ec2118b0620f0081dd7 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=shorewall
 PKG_MAJOR_MINOR_VERSION:=5.2
 PKG_BUGFIX_MAJOR_VERSION:=0
-PKG_BUGFIX_MINOR_VERSION:=.4
+PKG_BUGFIX_MINOR_VERSION:=.5
 PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
 PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
 PKG_RELEASE:=1
@@ -22,7 +22,7 @@ PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION
        http://shorewall.de/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
        http://www.shorewall.com.au/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=90c6a7e3d8e3abaf0d71636b85622d3bb5059d785eb11b9bd7301060908cf82d
+PKG_HASH:=1c05202d03ec568007b8b3b36188e5bc2f3e0d7290e56162b032cce5a7d9b800
 
 PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
 PKG_LICENSE:=GPL-2.0+
index b27c6bb7b02c67bfdb06e25cd52c5e09b4a2f32f..d60c0c3fb6263843839607385deed02eef2db985 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=shorewall6-lite
 PKG_MAJOR_MINOR_VERSION:=5.2
 PKG_BUGFIX_MAJOR_VERSION:=0
-PKG_BUGFIX_MINOR_VERSION:=.4
+PKG_BUGFIX_MINOR_VERSION:=.5
 PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
 PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
 PKG_RELEASE:=1
@@ -22,7 +22,7 @@ PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION
        http://shorewall.de/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
        http://www.shorewall.com.au/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=3bdeafd3dbb5e6c75ab521ea5a3e371ff534b2d9cc0912ba218526f9618e3382
+PKG_HASH:=c215259bfdc4e6199a77b893d81471bb6ad53c2e53d3b934e4b1c833c4446bb6
 
 PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
 PKG_LICENSE:=GPL-2.0+
index 0dab2d92c8a762ce240447c9652bbb5c022fc33b..adcc813c1e63ddaaa235b97b8301f69a08d31b72 100644 (file)
@@ -11,7 +11,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=shorewall6
 PKG_MAJOR_MINOR_VERSION:=5.2
 PKG_BUGFIX_MAJOR_VERSION:=0
-PKG_BUGFIX_MINOR_VERSION:=.4
+PKG_BUGFIX_MINOR_VERSION:=.5
 PKG_VERSION:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)$(PKG_BUGFIX_MINOR_VERSION)
 PKG_DIRECTORY:=$(PKG_MAJOR_MINOR_VERSION).$(PKG_BUGFIX_MAJOR_VERSION)
 PKG_RELEASE:=1
@@ -22,7 +22,7 @@ PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION
        http://shorewall.de/pub/shorewall/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/ \
        http://www.shorewall.com.au/$(PKG_MAJOR_MINOR_VERSION)/shorewall-$(PKG_DIRECTORY)/
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=ebf91809ba4342806fb8a148a402663c69ba168546e8a440be3542f04e89f2aa
+PKG_HASH:=f42ae5b9f30c728d0b0a59008b53ca15485ed054bb5d09a7abd44e6eb29586a8
 
 PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
 PKG_LICENSE:=GPL-2.0+
index a2835b250f5b7832f0f69ac355f2b5bd4f9d95ec..7d26cf616259fce1c4775a809d6cf7fefc8baac0 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=snort
 PKG_VERSION:=2.9.11.1
-PKG_RELEASE:=5
+PKG_RELEASE:=6
 
 PKG_LICENSE:=GPL-2.0
 PKG_MAINTAINER:=W. Michael Petullo <mike@flyn.org>
@@ -19,7 +19,7 @@ PKG_SOURCE_URL:=https://www.snort.org/downloads/snort/ \
        @SF/$(PKG_NAME)
 PKG_HASH:=9f6b3aeac5a109f55504bd370564ac431cb1773507929dc461626898f33f46cd
 
-PKG_BUILD_DEPENDS:=librpc
+PKG_BUILD_DEPENDS:=libtirpc
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
@@ -71,6 +71,8 @@ CONFIGURE_VARS += \
 
 MAKE_FLAGS += \
        extra_incl=""
+       
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/tirpc
 
 define Build/InstallDev
        $(INSTALL_DIR) $(STAGING_DIR)/usr/include/snort/dynamic_preproc
index 18ae4eb823e2ce0b3f396b935ce67b0ca30bd38e..1726179a7aa81de8126deeb92317a8810b67c4b9 100644 (file)
@@ -26,7 +26,7 @@ define Package/softflowd
   CATEGORY:=Network
   DEPENDS:=+libpcap
   TITLE:=softflowd
-  URL:=http://code.google.com/p/softflowd/
+  URL:=https://code.google.com/archive/p/softflowd/
 endef
 
 define Package/softflowd/description
index 9ce093bf28b3d39d207d1c6e6d1ae97ebfe8b6fd..7bccc9fc1d4281723c10558649b2fdea2102af54 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2012-2015 OpenWrt.org
+# Copyright (C) 2012-2018 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=strongswan
 PKG_VERSION:=5.6.3
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_HASH:=c3c7dc8201f40625bba92ffd32eb602a8909210d8b3fac4d214c737ce079bf24
@@ -103,6 +103,8 @@ PKG_INSTALL:=1
 PKG_BUILD_PARALLEL:=1
 
 include $(INCLUDE_DIR)/package.mk
+# strongswan-mod-mysql needs iconv
+include $(INCLUDE_DIR)/nls.mk
 
 define Package/strongswan/Default
   SUBMENU:=VPN
@@ -561,7 +563,9 @@ define Plugin/updown/install
        $(INSTALL_DIR) $(1)/usr/lib/ipsec/plugins
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ipsec/_updown $(1)/usr/lib/ipsec/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/ipsec/plugins/libstrongswan-updown.so $(1)/usr/lib/ipsec/plugins/
-       $(INSTALL_DIR) $(1)/etc
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/ipsec
+       $(CP) ./files/etc/hotplug.d/ipsec/01-user \
+               $(1)/etc/hotplug.d/ipsec/01-user
 endef
 
 define Plugin/vici/install
diff --git a/net/strongswan/files/etc/hotplug.d/ipsec/01-user b/net/strongswan/files/etc/hotplug.d/ipsec/01-user
new file mode 100644 (file)
index 0000000..3d485c8
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+[ -e "/etc/ipsec.user" ] && {
+       . /etc/ipsec.user "$2"
+}
+
+exit 0
diff --git a/net/strongswan/patches/300-include-ipsec-hotplug.patch b/net/strongswan/patches/300-include-ipsec-hotplug.patch
new file mode 100644 (file)
index 0000000..8e54050
--- /dev/null
@@ -0,0 +1,16 @@
+--- a/src/_updown/_updown.in
++++ b/src/_updown/_updown.in
+@@ -22,6 +22,13 @@
+ # that, and use the (left/right)updown parameters in ipsec.conf to make
+ # strongSwan use yours instead of this default one.
++# Add your custom commands to the file "/etc/ipsec.user". Other packages could
++# also install their scripts in the directory "/etc/hotplug.d/ipsec".
++# This files/scripts are executed by the openwrt hotplug functionality on
++# ipsec events.
++
++exec /sbin/hotplug-call ipsec "$1"
++
+ #      PLUTO_VERSION
+ #              indicates  what  version of this interface is being
+ #              used.  This document describes version  1.1.   This
diff --git a/net/strongswan/patches/300-include-ipsec-user-script.patch b/net/strongswan/patches/300-include-ipsec-user-script.patch
deleted file mode 100644 (file)
index 6835e02..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
---- a/src/_updown/_updown.in
-+++ b/src/_updown/_updown.in
-@@ -16,11 +16,9 @@
- # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- # for more details.
--# CAUTION:  Installing a new version of strongSwan will install a new
--# copy of this script, wiping out any custom changes you make.  If
--# you need changes, make a copy of this under another name, and customize
--# that, and use the (left/right)updown parameters in ipsec.conf to make
--# strongSwan use yours instead of this default one.
-+# Add your custom ip rules to the /etc/ipsec.user file if you need that functionality.
-+
-+[ -e /etc/ipsec.user ] && . /etc/ipsec.user "$1"
- #      PLUTO_VERSION
- #              indicates  what  version of this interface is being
index 68cae5d01afca291428888cbfa5da8fe6c8a10b8..6cbf19bf3967ee5d7ce1ac8ec11ad8ae4996ecad 100644 (file)
@@ -9,16 +9,17 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=subversion
 PKG_RELEASE:=1
-PKG_VERSION:=1.10.0
+PKG_VERSION:=1.10.2
 PKG_SOURCE_URL:=@APACHE/subversion
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=2cf23f3abb837dea0585a6b0ebd70e80e01f95bddef7c1aa097c18e3eaa6b584
+PKG_HASH:=5b35e3a858d948de9e8892bf494893c9f7886782f6abbe166c0487c19cf6ed88
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=LICENSE
 PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>
 
 PKG_FIXUP:=autoreconf
 PKG_MACRO_PATHS:=build/ac-macros
+PKG_BUILD_DEPENDS:=apr-util
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
index a3b701166e6b8f711b06262f893625cc535eb871..3a79d5a13d04956d0636b3ffe31a79166ac7fe23 100644 (file)
@@ -12,17 +12,11 @@ PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
 
 PKG_NAME:=sysrepo
 PKG_VERSION:=0.7.4
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=724a62fa830df7fcb2736b1ec41b320abe5064d2
-PKG_MIRROR_HASH:=19b864c52a35fd71398b2c965f87c37901a7056a2afd6b740105a5235bd459b1
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/sysrepo/sysrepo.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
-
-PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
-PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/sysrepo/sysrepo/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=238456bbb18149fd0fa5ebc9acb3c6e3129474c796db7447c2a95dcd40ab3084
 
 CMAKE_INSTALL:=1
 
index e6d3aaa76ab6196a9104c43b41e1f46d659d916d..75339ac1a2edfa35a7b448babd6e1dcb5d7adefc 100644 (file)
@@ -8,21 +8,16 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=tgt
 PKG_VERSION:=1.0.73
-PKG_REV:=013223dc886a03719ca02db52162056249d99448
-PKG_MIRROR_HASH:=649bd012ab0944644ff83cc2974e7a5c374d568e0f4328d9f8d352d4b59f73bb
-PKG_RELEASE:=1
-PKG_USE_MIPS16:=0
+PKG_RELEASE:=2
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/fujita/tgt.git
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/fujita/tgt/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=2e3899a2235386a68df8cbf0eccb6a44e221a3e9e6bd9215c903c3fc9ed34bbf
 
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REV).tar.gz
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
 PKG_LICENSE:=GPL-2.0
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_USE_MIPS16:=0
 
 include $(INCLUDE_DIR)/package.mk
 
index 7e05f75e912680f8f50de4b10672a1d730bb6df0..6dfd4b32e0b16f85f58614af2727ac27646f7ab0 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=transmission
 PKG_VERSION:=2.94
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GITHUB/transmission/transmission-releases/master
index 0dad95042829462b7874ac94146f9b48f661eda7..770908c7f2d2119bbf93481dd0ea11d4afe5f78b 100644 (file)
@@ -6,6 +6,7 @@ config transmission
        option group 'transmission'
        option mem_percentage 50
        option nice 10
+       option web_home ''
        option alt_speed_down 50
        option alt_speed_enabled false
        option alt_speed_time_begin  540
index c7593ac1d691168b8ffec659abb7633d08538f0e..521fe20b83ed0bc95933ab9a5f9d781872003aea 100644 (file)
@@ -52,6 +52,7 @@ transmission() {
        local mem_percentage
        local nice
        local cmdline
+       local web_home
 
        section_enabled "$section" || return 1
 
@@ -62,6 +63,7 @@ transmission() {
        config_get mem_percentage "$cfg" 'mem_percentage' '50'
        config_get config_overwrite "$cfg" config_overwrite 1
        config_get nice "$cfg" nice 0
+       config_get web_home "$cfg" 'web_home'
 
        local MEM=$(sed -ne 's!^MemTotal:[[:space:]]*\([0-9]*\) kB$!\1!p' /proc/meminfo)
        if test "$MEM" -gt 1;then
@@ -123,6 +125,10 @@ transmission() {
                logger -t transmission "Starting with $USE virt mem"
        fi
 
+       if test -d "$web_home"; then
+               procd_set_param env TRANSMISSION_WEB_HOME="$web_home"
+       fi
+
        procd_add_jail transmission log
        procd_add_jail_mount $config_file
        procd_add_jail_mount_rw $download_dir
index 2e2ddec170bff15ed0ccde0bb4dfe68ae3d392f3..718efe95c440a494da8bf8891cba1deb65b8de80 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=travelmate
-PKG_VERSION:=1.2.0
+PKG_VERSION:=1.2.2
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 6745c515fed1e3e6534f27b558567ce5bf216458..4fd64ede1981bb19dddca1a3f0074b4f8f6001b1 100644 (file)
@@ -56,13 +56,13 @@ To avoid these kind of deadlocks, travelmate set all station interfaces in an "a
 <pre><code>
 ~# /etc/init.d/travelmate status
 ::: travelmate runtime information
-  + travelmate_status  : connected (net ok/37)
-  + travelmate_version : 1.2.0
-  + station_id         : blackhole/01:02:03:04:05:06
+  + travelmate_status  : connected (net ok/78)
+  + travelmate_version : 1.2.1
+  + station_id         : radio1/blackhole/01:02:03:04:05:06
   + station_interface  : trm_wwan
-  + station_radio      : radio0
-  + last_rundate       : 04.04.2018 13:00:24
-  + system             : GL.iNet GL-AR750, OpenWrt SNAPSHOT r6588-16efb0c1c6
+  + faulty_stations    : 
+  + last_rundate       : 28.07.2018 21:17:45
+  + system             : TP-LINK RE450, OpenWrt SNAPSHOT r7540+5-20c4819c7b
 </code></pre>
 
 ## Manual Setup
@@ -123,8 +123,8 @@ edit /etc/config/travelmate and set 'trm_enabled' to '1'
 </code></pre>
 
 ## FAQ
-**Q:** What happen with misconfigured uplinks, e.g. due to outdated wlan passwords?  
-**A:** Travelmate tries n times (default 3) to connect, then the respective uplink SSID will be marked / renamed to '_SSID_\_err' and travelmate no longer attends this uplink. In this case use the builtin wireless station manager to update your wireless credentials.  
+**Q:** What happen with misconfigured, faulty uplinks, e.g. due to outdated wlan passwords?  
+**A:** Travelmate tries n times (default 3) to connect, then the respective uplink will be marked as "faulty" in the JSON runtime file and hereafter ignored. To reset the JSON runtime file, simply restart travelmate.  
 **Q:** How to connect to hidden uplinks?  
 **A:** See 'example\_hidden' STA configuration above, option 'SSID' and 'BSSID' must be specified for successful connections.  
 
index 625fb54a0b4b34f6c9525fe76301e2486d00c202..d757e6b1c32b196cd950d8bc781ff9293fd26665 100755 (executable)
@@ -22,6 +22,7 @@ start_service()
     then
         procd_open_instance "travelmate"
         procd_set_param command "${trm_script}" "${@}"
+        procd_set_param pidfile "${trm_pidfile}"
         procd_set_param stdout 1
         procd_set_param stderr 1
         procd_close_instance
@@ -31,15 +32,12 @@ start_service()
 reload_service()
 {
     [ -s "${trm_pidfile}" ] && return 1
-    "${trm_init}" restart
+    rc_procd start_service
 }
 
 stop_service()
 {
-    local rtfile="$(uci_get travelmate global trm_rtfile)"
-
-    rtfile="${rtfile:-"/tmp/trm_runtime.json"}"
-    > "${rtfile}"
+    rc_procd "${trm_script}" stop
     rc_procd start_service
 }
 
index 3bba1eb7edd7898387a35120b6336897c9db9d8c..f4a047bf9e907faaee8e15a9f1e1af1b1df0a222 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="1.2.0"
+trm_ver="1.2.2"
 trm_sysver="unknown"
 trm_enabled=0
 trm_debug=0
@@ -52,9 +52,7 @@ f_envload()
 
     # (re-)initialize global list variables
     #
-    trm_devlist=""
-    trm_stalist=""
-    trm_radiolist=""
+    unset trm_devlist trm_stalist trm_radiolist
 
     # load config and check 'enabled' option
     #
@@ -69,10 +67,6 @@ f_envload()
     if [ ${trm_enabled} -ne 1 ]
     then
         f_log "info" "travelmate is currently disabled, please set 'trm_enabled' to '1' to use this service"
-        config_load wireless
-        config_foreach f_prep wifi-iface
-        uci_commit wireless
-        ubus call network reload
         exit 0
     fi
 
@@ -134,7 +128,7 @@ f_prep()
 #
 f_check()
 {
-    local ifname radio dev_status config sta_essid sta_bssid result wait=1 mode="${1}" status="${2:-"false"}" IFS=" "
+    local IFS ifname radio dev_status config sta_essid sta_bssid result wait=1 mode="${1}" status="${2:-"false"}"
 
     trm_ifquality=0
     trm_ifstatus="false"
@@ -167,7 +161,7 @@ f_check()
                     ifname="${trm_devlist}"
                     break
                 else
-                    trm_devlist=""
+                    unset trm_devlist
                 fi
             elif [ "${mode}" = "rev" ]
             then
@@ -219,13 +213,13 @@ f_check()
 #
 f_jsnup()
 {
-    local config sta_iface sta_radio sta_essid sta_bssid dev_status status="${trm_ifstatus}"
+    local config sta_iface sta_radio sta_essid sta_bssid dev_status status="${trm_ifstatus}" faulty_list faulty_station="${1}"
 
     if [ "${status}" = "true" ]
     then
         status="connected (${trm_connection:-"-"})"
     else
-        trm_connection=""
+        unset trm_connection
         if [ "${status}" = "false" ]
         then
             status="not connected"
@@ -245,18 +239,23 @@ f_jsnup()
         fi
     fi
 
-    json_init
-    json_add_object "data"
+    json_get_var faulty_list "faulty_stations"
+    if [ -n "${faulty_station}" ]
+    then
+        if [ -z "$(printf "%s" "${faulty_list}" | grep -Fo "${faulty_station}")" ]
+        then
+            faulty_list="${faulty_list} ${faulty_station}"
+        fi
+    fi
     json_add_string "travelmate_status" "${status}"
     json_add_string "travelmate_version" "${trm_ver}"
-    json_add_string "station_id" "${sta_essid:-"-"}/${sta_bssid:-"-"}"
+    json_add_string "station_id" "${sta_radio:-"-"}/${sta_essid:-"-"}/${sta_bssid:-"-"}"
     json_add_string "station_interface" "${sta_iface:-"-"}"
-    json_add_string "station_radio" "${sta_radio:-"-"}"
+    json_add_string "faulty_stations" "${faulty_list}"
     json_add_string "last_rundate" "$(/bin/date "+%d.%m.%Y %H:%M:%S")"
     json_add_string "system" "${trm_sysver}"
-    json_close_object
     json_dump > "${trm_rtfile}"
-    f_log "debug" "f_jsnup::: config: ${config:-"-"}, status: ${status:-"-"}, sta_iface: ${sta_iface:-"-"}, sta_radio: ${sta_radio:-"-"}, sta_essid: ${sta_essid:-"-"}, sta_bssid: ${sta_bssid:-"-"}"
+    f_log "debug" "f_jsnup::: config: ${config:-"-"}, status: ${status:-"-"}, sta_iface: ${sta_iface:-"-"}, sta_radio: ${sta_radio:-"-"}, sta_essid: ${sta_essid:-"-"}, sta_bssid: ${sta_bssid:-"-"}, faulty_list: ${faulty_list:-"-"}"
 }
 
 # write to syslog
@@ -268,12 +267,12 @@ f_log()
 
     if [ -n "${log_msg}" ] && ([ "${class}" != "debug" ] || [ ${trm_debug} -eq 1 ])
     then
-        logger -p "${class}" -t "travelmate-[${trm_ver}]" "${log_msg}"
+        logger -p "${class}" -t "travelmate-${trm_ver}[${$}]" "${log_msg}"
         if [ "${class}" = "err" ]
         then
             trm_ifstatus="error"
             f_jsnup
-            logger -p "${class}" -t "travelmate-[${trm_ver}]" "Please check 'https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md' (${trm_sysver})"
+            logger -p "${class}" -t "travelmate-${trm_ver}[${$}]" "Please check 'https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md' (${trm_sysver})"
             exit 1
         fi
     fi
@@ -283,7 +282,7 @@ f_log()
 #
 f_main()
 {
-    local cnt dev config scan scan_list scan_essid scan_bssid scan_quality sta sta_essid sta_bssid sta_radio sta_iface IFS=" "
+    local IFS cnt dev config scan scan_list scan_essid scan_bssid scan_quality sta sta_essid sta_bssid sta_radio sta_iface faulty_list
 
     f_check "initial"
     if [ "${trm_ifstatus}" != "true" ]
@@ -292,7 +291,8 @@ f_main()
         config_foreach f_prep wifi-iface
         uci_commit wireless
         f_check "dev" "running"
-        f_log "debug" "f_main ::: iwinfo: ${trm_iwinfo}, dev_list: ${trm_devlist}, sta_list: ${trm_stalist:0:800}"
+        json_get_var faulty_list "faulty_stations"
+        f_log "debug" "f_main ::: iwinfo: ${trm_iwinfo}, dev_list: ${trm_devlist}, sta_list: ${trm_stalist:0:800}, faulty_list: ${faulty_list:-"-"}"
         for dev in ${trm_devlist}
         do
             if [ -z "$(printf "%s" "${trm_stalist}" | grep -Fo "_${dev}")" ]
@@ -300,7 +300,7 @@ f_main()
                 continue
             fi
             cnt=1
-            while [ ${trm_maxretry} -eq 0 ] || [ ${cnt} -le ${trm_maxretry} ]
+            while [ ${cnt} -le ${trm_maxretry} ]
             do
                 scan_list="$(${trm_iwinfo} "${dev}" scan 2>/dev/null | awk 'BEGIN{FS="[/ ]"}/Address:/{var1=$NF}/ESSID:/{var2="";for(i=12;i<=NF;i++)if(var2==""){var2=$i}else{var2=var2" "$i}}/Quality:/{printf "%i,%s,%s\n",(100/$NF*$(NF-1)),var1,var2}' | sort -rn | awk '{ORS=",";print $0}')"
                 f_log "debug" "f_main ::: dev: ${dev}, scan_list: ${scan_list:0:800}, cnt: ${cnt}, max_cnt: ${trm_maxretry}"
@@ -313,6 +313,11 @@ f_main()
                         sta_essid="$(uci_get wireless "${config}" ssid)"
                         sta_bssid="$(uci_get wireless "${config}" bssid)"
                         sta_iface="$(uci_get wireless "${config}" network)"
+                        json_get_var faulty_list "faulty_stations"
+                        if [ -n "$(printf "%s" "${faulty_list}" | grep -Fo "${sta_radio}/${sta_essid}/${sta_bssid}")" ]
+                        then
+                            continue
+                        fi
                         IFS=","
                         for scan in ${scan_list}
                         do
@@ -339,35 +344,31 @@ f_main()
                                         if [ "${trm_ifstatus}" = "true" ]
                                         then
                                             uci_commit wireless
-                                            f_log "info" "interface '${sta_iface}' on '${sta_radio}' connected to uplink '${sta_essid:-"-"}/${sta_bssid:-"-"}' (${trm_sysver})"
+                                            f_check "initial"
+                                            f_log "info" "connected to uplink '${sta_radio}/${sta_essid}/${sta_bssid:-"-"}' (${trm_sysver})"
                                             return 0
                                         elif [ ${cnt} -eq ${trm_maxretry} ]
                                         then
                                             uci_set wireless "${config}" disabled 1
-                                            if [ -n "${sta_essid}" ]
-                                            then
-                                                uci_set wireless "${config}" ssid "${sta_essid}_err"
-                                            fi
-                                            if [ -n "${sta_bssid}" ]
-                                            then
-                                                uci_set wireless "${config}" bssid "${sta_bssid}_err"
-                                            fi
                                             uci_commit wireless
-                                            f_log "info" "can't connect to uplink '${sta_essid:-"-"}/${sta_bssid:-"-"}', uplink disabled (${trm_sysver})"
+                                            faulty_station="${sta_radio}/${sta_essid}/${sta_bssid:-"-"}"
+                                            f_jsnup "${faulty_station}"
+                                            f_log "info" "can't connect to uplink '${sta_radio}/${sta_essid}/${sta_bssid:-"-"}', uplink disabled (${trm_sysver})"
                                             f_check "rev"
+                                            break
                                         else
                                             uci -q revert wireless
-                                            f_log "info" "can't connect to uplink '${sta_essid:-"-"}/${sta_bssid:-"-"}' (${trm_sysver})"
+                                            f_jsnup
+                                            f_log "info" "can't connect to uplink '${sta_radio}/${sta_essid}/${sta_bssid:-"-"}' (${trm_sysver})"
                                             f_check "rev"
+                                            break
                                         fi
                                     fi
                                 fi
-                                scan_quality=""
-                                scan_bssid=""
-                                scan_essid=""
+                                unset scan_quality scan_bssid scan_essid
                             fi
                         done
-                        IFS=" "
+                        unset IFS scan_quality scan_bssid scan_essid
                     done
                 fi
                 cnt=$(( cnt + 1 ))
@@ -395,19 +396,33 @@ else
     f_log "err" "system libraries not found"
 fi
 
+# initialize json runtime file
+#
+if [ ! -s "${trm_rtfile}" ]
+then
+    json_init
+    json_add_object "data"
+else
+    json_load_file "${trm_rtfile}"
+    json_select data
+fi
+
 # control travelmate actions
 #
 while true
 do
     if [ -z "${trm_action}" ]
     then
-        > "${trm_pidfile}"
         sleep ${trm_timeout}
+    elif [ "${trm_action}" = "stop" ]
+    then
+        > "${trm_rtfile}"
+        f_log "info" "travelmate instance stopped ::: action: ${trm_action}, pid: $(cat ${trm_pidfile} 2>/dev/null)"
+        exit 0
     else
-        printf '%s' "${$}" > "${trm_pidfile}"
-        trm_action=""
+        f_log "info" "travelmate instance started ::: action: ${trm_action}, pid: ${$}"
+        unset trm_action
     fi
     f_envload
     f_main
 done
-
index 93856b2bdad729f0dd7b3ca51b2a9434dc58b759..72c4bfc48bac6405198b3deb62cac86cf98e5218 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=unbound
 PKG_VERSION:=1.7.3
-PKG_RELEASE:=2
+PKG_RELEASE:=5
 
 PKG_LICENSE:=BSD-3-Clause
 PKG_LICENSE_FILES:=LICENSE
@@ -36,7 +36,7 @@ define Package/unbound
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=IP Addresses and Names
-  USERID:=unbound=553:unbound=553
+  USERID:=unbound:unbound
   TITLE+= (daemon)
   DEPENDS+= +libunbound
 endef
@@ -117,8 +117,10 @@ CONFIGURE_ARGS += \
        --enable-tfo-server \
        --with-libexpat="$(STAGING_DIR)/usr" \
        --with-ssl="$(STAGING_DIR)/usr" \
-       --with-pidfile=/var/run/unbound.pid \
-       --with-user=unbound
+       --with-user=unbound \
+       --with-run-dir=/var/lib/unbound \
+       --with-conf-file=/var/lib/unbound/unbound.conf \
+       --with-pidfile=/var/run/unbound.pid
 
 define Package/unbound/conffiles
 /etc/config/unbound
@@ -142,7 +144,7 @@ define Package/unbound/install
                $(1)/usr/sbin/
        $(INSTALL_DIR) $(1)/etc/unbound
        $(INSTALL_DATA) \
-               $(PKG_INSTALL_DIR)/etc/unbound/unbound.conf \
+               $(PKG_INSTALL_DIR)/var/lib/unbound/unbound.conf \
                $(1)/etc/unbound/unbound.conf
        $(INSTALL_DATA) ./files/root.key $(1)/etc/unbound/root.key
        $(INSTALL_DATA) ./files/unbound_ext.conf $(1)/etc/unbound/unbound_ext.conf
@@ -159,7 +161,7 @@ define Package/unbound/install
        $(INSTALL_DATA) ./files/iptools.sh $(1)/usr/lib/unbound/iptools.sh
        $(INSTALL_BIN)  ./files/odhcpd.sh $(1)/usr/lib/unbound/odhcpd.sh
        $(INSTALL_DATA) ./files/odhcpd.awk $(1)/usr/lib/unbound/odhcpd.awk
-       $(INSTALL_DATA) ./files/rootzone.sh $(1)/usr/lib/unbound/rootzone.sh
+       $(INSTALL_DATA) ./files/stopping.sh $(1)/usr/lib/unbound/stopping.sh
        $(INSTALL_DATA) ./files/unbound.sh $(1)/usr/lib/unbound/unbound.sh
 endef
 
index 0a8020be0a5df484d4e03e5f49351c2e35cdb24a..812d9a60764ccbd83261d60100a78d2cac3d9826 100644 (file)
@@ -6,7 +6,7 @@
 ## Package Overview
 OpenWrt default build uses [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html) for DNS forwarding and DHCP. With a forward only resolver, dependence on the upstream recursors may be cause for concern. They are often provided by the ISP, and some users have switched to public DNS providers. Either way may result in problems due to performance, "snoop-vertising", hijacking (MiM), and other causes. Running a recursive resolver or resolver capable of TLS may be a solution.
 
-Unbound may be useful on consumer grade embedded hardware. It is fully DNSSEC and TLS capable. It is _intended_ to be a recursive resolver only. [NLnet Labs NSD](https://www.nlnetlabs.nl/projects/nsd/) is _intended_ for the authoritative task. This is different than [ISC Bind](https://www.isc.org/downloads/bind/) and its inclusive functions. Unbound configuration effort and memory consumption may be easier to control. A consumer could have their own recursive resolver with 8/64 MB router, and remove potential issues from forwarding resolvers outside of their control.
+Unbound may be useful on consumer grade embedded hardware. It is fully DNSSEC and TLS capable. It is _intended_ to be a recursive resolver only. NLnet Labs [NSD](https://www.nlnetlabs.nl/projects/nsd/) is _intended_ for the authoritative task. This is different than [ISC Bind](https://www.isc.org/downloads/bind/) and its inclusive functions. Unbound configuration effort and memory consumption may be easier to control. A consumer could have their own recursive resolver with 8/64 MB router, and remove potential issues from forwarding resolvers outside of their control.
 
 This package builds on Unbounds capabilities with OpenWrt UCI. Not every Unbound option is in UCI, but rather, UCI simplifies the combination of related options. Unbounds native options are bundled and balanced within a smaller set of choices. Options include resources, DNSSEC, access control, and some TTL tweaking. The UCI also provides an escape option and works at the raw "unbound.conf" level.
 
@@ -18,21 +18,21 @@ A few tweaks may be needed to enhance the realiability and effectiveness. Ad Blo
 **/etc/config/firewall**:
 ```
 config rule
-       option name 'Block-Public-DNS'
-       option enabled '1'
-       option src 'lan'
-       option dest 'wan'
-       option dest_port '53 853 5353'
-       option proto 'tcpudp'
-       option family 'any'
-       option target 'REJECT'
+  option name 'Block-Public-DNS'
+  option enabled '1'
+  option src 'lan'
+  option dest 'wan'
+  option dest_port '53 853 5353'
+  option proto 'tcpudp'
+  option family 'any'
+  option target 'REJECT'
 ```
 
 ## HOW TO: Integrate with DHCP
 Some UCI options and scripts help Unbound to work with DHCP servers to load the local DNS. The examples provided here are serial dnsmasq-unbound, parallel dnsmasq-unbound, and unbound scripted with odhcpd.
 
 ### Serial dnsmasq
-In this case, dnsmasq is not changed *much* with respect to the default [OpenWrt configuration](https://openwrt.org/docs/guide-user/base-system/dns_configuration). Here dnsmasq is forced to use the local Unbound instance as the lone upstream DNS server, instead of your ISP. This may be the easiest implementation, but performance degradation can occur in high volume networks. dnsmasq and Unbound effectively have the same information in memory, and all transfers are double handled.
+In this case, dnsmasq is not changed *much* with respect to the default [OpenWrt](https://openwrt.org/docs/guide-user/base-system/dns_configuration) configuration. Here dnsmasq is forced to use the local Unbound instance as the lone upstream DNS server, instead of your ISP. This may be the easiest implementation, but performance degradation can occur in high volume networks. Unbound and dnsmasq effectively have the same information in memory, and all transfers are double handled.
 
 **/etc/config/unbound**:
 ```
@@ -120,7 +120,6 @@ config dhcp 'lan'
   option leasetime '12h'
   option ra 'server'
   option ra_management '1'
-  # odhcpd should issue ULA [fd00::/8] by default
   ...
 
 config odhcpd 'odhcpd'
@@ -151,23 +150,42 @@ You like the UCI. Yet, you need to add some difficult to standardize options, or
 
 The file `unbound_srv.conf` will be added into the `server:` clause. The file `unbound_ext.conf` will be added to the end of all configuration. It is for extended `forward-zone:`, `stub-zone:`, `auth-zone:`, and `view:` clauses. You can also disable unbound-control in the UCI which only allows "localhost" connections unencrypted, and then add an encrypted remote `control:` clause.
 
-#### DNS over TLS
-Some public servers are now offering DNS over TLS. Unbound supports acting as DNS over TLS forwarding client. You can use the override files to enable this funciton. Unbound will connect TLS without verifying keys unless you include the PEM path and install `ca-bundle` package. No connection or connection without verification will occur unless you use complete syntax with "@" and "#". See `forward-addr: 1.1.1.1@853#cloudflare-dns.com` for example. Unbound makes a new TLS connection for each query. You limit this effect using large resource and aggressive recursion setting (big cache and prefetching). You can also set memory and recursion to default and edit `unbound_srv.conf` to suit your needs. UCI improvements are in progress but not ready in OpenWrt 18.06.
+## HOW TO: Cache Zone Files
+Unbound has the ability to AXFR a whole zone from an authoritative server to prefetch the zone. This can speed up access to common zones. Some may have special bandwidth concerns for DNSSEC overhead. The following is a generic example. UCI defaults include the [root](https://www.internic.net/domain/) zone, but it is disabled as a ready to go example.
 
-**/etc/unbound/unbound_srv.conf**:
+**/etc/config/unbound**:
 ```
-  tls-service-pem: /etc/ssl/certs/ca-certificates.crt
+config zone
+  option enabled '1'
+  option fallback '1'
+  option url_dir 'https://asset-management.it.example.com/zones/'
+  option zone_type 'auth_zone'
+  list server 'ns1.it.example.com'
+  list server 'ns2.it.example.com'
+  list zone_name 'example.com'
 ```
 
-**/etc/unbound/unbound_ext.conf**:
+## HOW TO: TLS Over DNS
+Unbound can use TLS as a client or server. UCI supports Unbound as a forwarding client with TLS. Servers are more complex and need manual configuration. This may be desired for privacy against stealth tracking. Some public DNS servers seem to advertise help in this quest. If your looking for a better understanding, then some information can be found at [Cloudflare](https://www.cloudflare.com/) DNS [1.1.1.1](https://1.1.1.1/). The following is a generic example. You can mix providers by using complete server specificaiton to override the zones common port and certificate domain index.
+
+**NOTICE:** Unbound requires openssl-1.1.0 to verify host certificates. OpenWrt at present is configured with openssl-1.0.2. Connections will be over TLS, but theoretically, certificates may not be from a trusted source. See report [Unbound #658](https://www.nlnetlabs.nl/bugs-script/show_bug.cgi?id=658). When this is resolved, it will be recommended again to install `ca-bundle`, maintain it, and be sure to include the TLS certificate domain index with the host addresses.
+
+**/etc/config/unbound**:
 ```
-forward-zone:
-  name: .
-  forward-addr: 1.1.1.1@853#cloudflare-dns.com
-  forward-addr: 1.0.0.1@853#cloudflare-dns.com
-  forward-addr: 2606:4700:4700::1111@853#cloudflare-dns.com
-  forward-addr: 2606:4700:4700::1001@853#cloudflare-dns.com
-  forward-tls-upstream: yes
+config zone
+  option enabled '1'
+  # question: do you want to recurse when TLS fails or not?
+  option fallback '0'
+  option tls_index 'dns.example.net'
+  option tls_port '853'
+  option tls_upstream '1'
+  option zone_type 'forward_zone'
+  # these servers assume a common TLS port/index
+  list server '192.0.2.53'
+  list server '2001:db8::53'
+  # this alternate server is fully specified inline
+  list server '192.0.2.153@443#dns.alternate.example.org'
+  list zone_name '.'
 ```
 
 ## Complete List of UCI Options
@@ -234,9 +252,6 @@ config unbound
     Bytes. Extended DNS is necessary for DNSSEC. However, it can run
     into MTU issues. Use this size in bytes to manage drop outs.
 
-  option extended_luci '0'
-    Boolean. Extends a tab hierarchy in LuCI for advanced configuration.
-
   option extended_stats '0'
     Boolean. extended statistics are printed from unbound-control.
     Keeping track of more statistics takes time.
@@ -256,11 +271,6 @@ config unbound
     Boolean. Skip all this UCI nonsense. Manually edit the
     configuration. Make changes to /etc/unbound/unbound.conf.
 
-  option prefetch_root '0'
-    Boolean. Cache the entire root. Enable Unbound `auth-zone:` clauses for
-    "." (root), "arpa," "in-addr.arpa," and "ip6.arpa." Obtain complete zone
-    files from public servers using http or AXFR. (see RFC7706)
-
   option protocol 'mixed'
     Unbound can limit its protocol used for recursive queries.
     ip4_only - limit issues if you do not have native IPv6
@@ -336,23 +346,83 @@ config unbound
     embedded devices don't have a real time power off clock. NTP needs
     DNS to resolve servers. This works around the chicken-and-egg.
 
-  list domain_forward 'mail.my-isp.com'
-    Domain. Do not recurse, but rather forward the domains to given DNS
-    servers found in resolve.conf.auto from WAN DHCP client. This may
-    provide better access to mirror servers in 'your neigborhood.' This
-    may be useful in keeping local organization lookups on local subnets.
+  option verbosity '1'
+    Level. Sets Unbounds logging intensity.
 
   list domain_insecure 'ntp.somewhere.org'
     Domain. Domains that you wish to skip DNSSEC. It is one way around NTP
     chicken and egg. Your DHCP servered domains are automatically included.
 
-  list rebind_interface 'lan'
-    Interface (logical). Works with 'rebind_protection' options 2 and 3.
-
   list trigger_interface 'lan' 'wan'
     Interface (logical). This option is a work around for netifd/procd
     interaction with WAN DHCPv6. Minor RA or DHCP changes in IP6 can
     cause netifd to execute procd interface reload. Limit Unbound procd
     triggers to LAN and WAN (IP4 only) to prevent restart @2-3 minutes.
+
+
+config zone
+  Create Unbounds forward-zone:, stub-zone:, or auth-zone: clauses
+
+  option enabled 1
+    Boolean. Enable the zone clause.
+
+  option fallback 1
+    Boolean. Permit normal recursion when the narrowly selected servers
+    in this zone are unresponsive or return empty responses. Disable, if
+    there are security concerns (forward only internal to organization).
+
+  option port 53
+    Port. Servers are contact on this port for plain DNS operations.
+
+  option resolv_conf 0
+    Boolean. Use "resolv.conf" as it was filled by the DHCP client. This
+    can be used to forward zones within your ISP (mail.example.net) or that
+    have co-located services (streamed-movies.example.com). Recursion may
+    not yield the most local result, but forwarding may instead.
+
+  option tls_index (n/a)
+    Domain. Name TLS certificates are signed for (dns.example.net). If this
+    option is ommitted, then Unbound will make the connection but not
+    validate it.
+
+  option tls_port 853
+    Port. Servers are contact on this port for DNS over TLS operations.
+
+  option tls_upstream 0
+    Boolean. Use TLS to contact the zone server.
+
+  option url_dir
+    String. http or https path, directory part only, to the zone file for
+    auth_zone type only. Files "${zone_name}.zone" are expect in this path.
+
+  option zone_type (n/a)
+    State. Required field or the clause is effectively disabled. Check
+    Unbound documentation for clarity (unbound-conf).
+    auth_zone     - prefetch whole zones from authoritative server (ICANN)
+    forward_zone  - forward queries in these domains to the listed servers
+    stub_zone     - force recursion of these domains to the listed servers
+
+  list server (n/a)
+    IP. Every zone must have one server. Stub and forward require IP to
+    prevent chicken and egg (due to UCI simplicity). Authoritative prefetch
+    may use a server name.
+
+  list zone_name
+    Domain. Every zone must represent some part of the DNS tree. It can be
+    all of it "." or you internal organization domain "example.com." Within
+    each zone clause all zone names will be matched to all servers.
 ```
 
+## Replaced Options
+  config unbound / option prefetch_root
+    List the domains in a zone with type auth_zone and fill in the server
+    or url fields. Root zones are ready but disabled in default install UCI.
+
+  config unbound / list domain_forward
+    List the domains in a zone with type forward_zone and enable the
+    resolv_conf option.
+
+  config unbound / list rebind_interface
+    Enable rebind_protection at 2 and all DHCP interfaces are also
+    protected for IPV6 GLA (parallel to subnets in add_local_fqdn).
+
index e362b9598548ebda6a7594de416dd784fc79ba97..c26511941d33e9b63da0ebefe331b00ed9f257f0 100644 (file)
 #
 ##############################################################################
 
-UNBOUND_LIBDIR=/usr/lib/unbound
-UNBOUND_VARDIR=/var/lib/unbound
+# where are we?
+UB_LIBDIR=/usr/lib/unbound
+UB_VARDIR=/var/lib/unbound
+UB_PIDFILE=/var/run/unbound.pid
 
-UNBOUND_PIDFILE=/var/run/unbound.pid
+# conf deconstructed
+UB_TOTAL_CONF=$UB_VARDIR/unbound.conf
+UB_CORE_CONF=$UB_VARDIR/server.conf.tmp
+UB_HOST_CONF=$UB_VARDIR/host.conf.tmp
+UB_DHCP_CONF=$UB_VARDIR/dhcp.conf
+UB_ZONE_CONF=$UB_VARDIR/zone.conf.tmp
+UB_CTRL_CONF=$UB_VARDIR/ctrl.conf.tmp
+UB_SRVMASQ_CONF=$UB_VARDIR/dnsmasq_srv.conf.tmp
+UB_EXTMASQ_CONF=$UB_VARDIR/dnsmasq_ext.conf.tmp
+UB_SRV_CONF=$UB_VARDIR/unbound_srv.conf
+UB_EXT_CONF=$UB_VARDIR/unbound_ext.conf
 
-UNBOUND_SRV_CONF=$UNBOUND_VARDIR/unbound_srv.conf
-UNBOUND_EXT_CONF=$UNBOUND_VARDIR/unbound_ext.conf
-UNBOUND_DHCP_CONF=$UNBOUND_VARDIR/unbound_dhcp.conf
-UNBOUND_CONFFILE=$UNBOUND_VARDIR/unbound.conf
+# TLS keys
+UB_TLS_KEY_FILE="TLS server UCI not implemented"
+UB_TLS_PEM_FILE="TLS server UCI not implemented"
+UB_TLS_FWD_FILE=$UB_VARDIR/ca-certificates.crt
+UB_TLS_ETC_FILE=/etc/ssl/certs/ca-certificates.crt
 
-UNBOUND_KEYFILE=$UNBOUND_VARDIR/root.key
-UNBOUND_HINTFILE=$UNBOUND_VARDIR/root.hints
-UNBOUND_TIMEFILE=$UNBOUND_VARDIR/hotplug.time
+# start files
+UB_RKEY_FILE=$UB_VARDIR/root.key
+UB_RHINT_FILE=$UB_VARDIR/root.hints
+UB_TIME_FILE=$UB_VARDIR/hotplug.time
+UB_SKIP_FILE=$UB_VARDIR/skip.time
 
-UNBOUND_CTLKEY_FILE=$UNBOUND_VARDIR/unbound_control.key
-UNBOUND_CTLPEM_FILE=$UNBOUND_VARDIR/unbound_control.pem
-UNBOUND_SRVKEY_FILE=$UNBOUND_VARDIR/unbound_server.key
-UNBOUND_SRVPEM_FILE=$UNBOUND_VARDIR/unbound_server.pem
+# control app keys
+UB_CTLKEY_FILE=$UB_VARDIR/unbound_control.key
+UB_CTLPEM_FILE=$UB_VARDIR/unbound_control.pem
+UB_SRVKEY_FILE=$UB_VARDIR/unbound_server.key
+UB_SRVPEM_FILE=$UB_VARDIR/unbound_server.pem
 
-##############################################################################
+# similar default SOA / NS RR as Unbound uses for private ARPA zones
+UB_XSER=$(( $( date +%s ) / 60 ))
+UB_XSOA="7200 IN SOA localhost. nobody.invalid. $UB_XSER 3600 1200 9600 300"
+UB_XNS="7200 IN NS localhost."
+UB_XTXT="7200 IN TXT \"comment=local intranet dns zone\""
+UB_MTXT="7200 IN TXT \"comment=masked internet dns zone\""
+UB_LTXT="7200 IN TXT \"comment=rfc6762 multicast dns zone\""
 
-UNBOUND_ANCHOR=/usr/sbin/unbound-anchor
-UNBOUND_CONTROL=/usr/sbin/unbound-control
-UNBOUND_CONTROL_CFG="$UNBOUND_CONTROL -c $UNBOUND_CONFFILE"
+# helper apps
+UB_ANCHOR=/usr/sbin/unbound-anchor
+UB_CONTROL=/usr/sbin/unbound-control
+UB_CONTROL_CFG="$UB_CONTROL -c $UB_TOTAL_CONF"
 
 ##############################################################################
 
index 32e5f235592383b1fa616e8a7f1b3d864bb18d8c..8eb1d03c6bca98f416eb0db12060f22cf4b0dcde 100644 (file)
 #
 ##############################################################################
 
+DM_D_WAN_FQDN=0
+
+DM_LIST_KNOWN_ZONES="invalid"
+DM_LIST_TRN_ZONES=""
+DM_LIST_LOCAL_DATA=""
+DM_LIST_LOCAL_PTR=""
+DM_LIST_FWD_PORTS=""
+DM_LIST_FWD_ZONES=""
+
+##############################################################################
+
+create_local_zone() {
+  local target="$1"
+  local partial domain found
+
+  case $DM_LIST_TRN_ZONES in
+    *"${target}"*)
+      found=1
+      ;;
+
+    *)
+      case $target in
+        [A-Za-z0-9]*.[A-Za-z0-9]*)
+          found=0
+          ;;
+
+        *) # no dots
+          found=1
+          ;;
+      esac
+  esac
+
+
+  if [ $found -eq 0 ] ; then
+    # New Zone! Bundle local-zones: by first two name tiers "abcd.tld."
+    partial=$( echo "$target" | awk -F. '{ j=NF ; i=j-1; print $i"."$j }' )
+    DM_LIST_TRN_ZONES="$DM_LIST_TRN_ZONES $partial"
+    DM_LIST_KNOWN_ZONES="$DM_LIST_KNOWN_ZONES $partial"
+  fi
+}
+
+##############################################################################
+
+create_host_record() {
+  local cfg="$1"
+  local ip name debug_ip
+
+  # basefiles dhcp "domain" clause which means host A, AAAA, and PRT record
+  config_get ip   "$cfg" ip
+  config_get name "$cfg" name
+
+
+  if [ -n "$name" -a -n "$ip" ] ; then
+    create_local_zone "$name"
+
+
+    case $ip in
+      fe[89ab][0-9a-f]:*|169.254.*)
+        debug_ip="$ip@$host"
+        ;;
+
+      [1-9a-f]*:*[0-9a-f])
+        DM_LIST_LOCAL_DATA="$DM_LIST_LOCAL_DATA $name.@@300@@IN@@AAAA@@$ip"
+        DM_LIST_LOCAL_PTR="$DM_LIST_LOCAL_PTR $ip@@300@@$name"
+        ;;
+
+      [1-9]*.*[0-9])
+        DM_LIST_LOCAL_DATA="$DM_LIST_LOCAL_DATA $name.@@300@@IN@@A@@$ip"
+        DM_LIST_LOCAL_PTR="$DM_LIST_LOCAL_PTR $ip@@300@@$name"
+        ;;
+    esac
+  fi
+}
+
+##############################################################################
+
+create_mx_record() {
+  local cfg="$1"
+  local domain relay pref record
+
+  # Insert a static MX record
+  config_get domain "$cfg" domain
+  config_get relay  "$cfg" relay
+  config_get pref   "$cfg" pref 10
+
+
+  if [ -n "$domain" -a -n "$relay" ] ; then
+    create_local_zone "$domain"
+    record="$domain.@@300@@IN@@MX@@$pref@@$relay."
+    DM_LIST_LOCAL_DATA="$DM_LIST_LOCAL_DATA $record"
+  fi
+}
+
+##############################################################################
+
+create_srv_record() {
+  local cfg="$1"
+  local srv target port class weight record
+
+  # Insert a static SRV record such as SIP server
+  config_get srv    "$cfg" srv
+  config_get target "$cfg" target
+  config_get port   "$cfg" port
+  config_get class  "$cfg" class 10
+  config_get weight "$cfg" weight 10
+
+
+  if [ -n "$srv" -a -n "$target" -a -n "$port" ] ; then
+    create_local_zone "$srv"
+    record="$srv.@@300@@IN@@SRV@@$class@@$weight@@$port@@$target."
+    DM_LIST_LOCAL_DATA="$DM_LIST_LOCAL_DATA $record"
+  fi
+}
+
+##############################################################################
+
+create_cname_record() {
+  local cfg="$1"
+  local cname target record
+
+  # Insert static CNAME record
+  config_get cname  "$cfg" cname
+  config_get target "$cfg" target
+
+
+  if [ -n "$cname" -a -n "$target" ] ; then
+    create_local_zone "$cname"
+    record="$cname.@@300@@IN@@CNAME@@$target."
+    DM_LIST_LOCAL_DATA="$DM_LIST_LOCAL_DATA $record"
+  fi
+}
+
+##############################################################################
+
 dnsmasq_local_zone() {
   local cfg="$1"
   local fwd_port fwd_domain wan_fqdn
@@ -34,130 +168,128 @@ dnsmasq_local_zone() {
 
 
   if [ -n "$wan_fqdn" ] ; then
-    UNBOUND_D_WAN_FQDN=$wan_fqdn
+    DM_D_WAN_FQDN=$wan_fqdn
   fi
 
+
   if [ -n "$fwd_domain" -a -n "$fwd_port" -a ! "${fwd_port:-53}" -eq 53 ] ; then
     # dnsmasq localhost listening ports (possible multiple instances)
-    UNBOUND_N_FWD_PORTS="$UNBOUND_N_FWD_PORTS $fwd_port"
-    UNBOUND_TXT_FWD_ZONE="$UNBOUND_TXT_FWD_ZONE $fwd_domain"
-
-    {
-      # This creates DOMAIN local privledges
-      echo "  private-domain: \"$fwd_domain\""
-      echo "  local-zone: \"$fwd_domain.\" transparent"
-      echo "  domain-insecure: \"$fwd_domain\""
-      echo
-    } >> $UNBOUND_CONFFILE
+    DM_LIST_FWD_PORTS="$DM_LIST_FWD_PORTS $fwd_port"
+    DM_LIST_FWD_ZONES="$DM_LIST_FWD_ZONES $fwd_domain"
   fi
 }
 
 ##############################################################################
 
 dnsmasq_local_arpa() {
-  local cfg="$1"
-  local logint dhcpv4 dhcpv6 ignore
-  local subnets subnets4 subnets6
-  local forward arpa
-  local validip4 validip6 privateip
-
-  config_get logint "$cfg" interface
-  config_get dhcpv4 "$cfg" dhcpv4
-  config_get dhcpv6 "$cfg" dhcpv6
-  config_get_bool ignore "$cfg" ignore 0
-
-  # Find the list of addresses assigned to a logical interface
-  # Its typical to have a logical gateway split NAME and NAME6
-  network_get_subnets  subnets4 "$logint"
-  network_get_subnets6 subnets6 "$logint"
-  subnets="$subnets4 $subnets6"
-
-  network_get_subnets  subnets4 "${logint}6"
-  network_get_subnets6 subnets6 "${logint}6"
-  subnets="$subnets $subnets4 $subnets6"
-
-
-  if [ -z "$subnets" ] ; then
-    forward=""
+  local ifarpa ifsubnet
 
-  elif [ -z "$UNBOUND_N_FWD_PORTS" ] ; then
-    forward=""
 
-  elif [ "$ignore" -gt 0 ] ; then
-    if [ "$UNBOUND_D_WAN_FQDN" -gt 0 ] ; then
-      # Only forward the one gateway host.
-      forward="host"
+  if [ -n "$UB_LIST_NETW_LAN" ] ; then
+    for ifsubnet in $UB_LIST_NETW_LAN ; do
+      ifarpa=$( domain_ptr_any "${ifsubnet#*@}" )
+      DM_LIST_FWD_ZONES="$DM_LIST_FWD_ZONES $ifarpa"
+    done
+  fi
 
-    else
-      forward=""
-    fi
 
-  else
-    # Forward the entire private subnet.
-    forward="domain"
+  if [ -n "$UB_LIST_NETW_WAN" -a "$DM_D_WAN_FQDN" -gt 0 ] ; then
+    for ifsubnet in $UB_LIST_NETW_WAN ; do
+      ifarpa=$( domain_ptr_any "${ifsubnet#*@}" )
+      DM_LIST_FWD_ZONES="$DM_LIST_FWD_ZONES $ifarpa"
+    done
   fi
+}
 
+##############################################################################
 
-  if [ -n "$forward" ] ; then
-    for subnet in $subnets ; do
-      validip4=$( valid_subnet4 $subnet )
-      validip6=$( valid_subnet6 $subnet )
-      privateip=$( private_subnet $subnet )
+dnsmasq_inactive() {
+  local record
 
 
-      if [ "$validip4" = "ok" -a "$dhcpv4" != "disable" ] ; then
-        if [ "$forward" = "domain" ] ; then
-          arpa=$( domain_ptr_ip4 "$subnet" )
-        else
-          arpa=$( host_ptr_ip4 "$subnet" )
-        fi
+  if [ "$UB_D_EXTRA_DNS" -gt 0 ] ; then
+    # Parasite from the uci.dhcp.domain clauses
+    DM_LIST_KNOWN_ZONES="$DM_LIST_KNOWN_ZONES $UB_TXT_DOMAIN"
+    config_load dhcp
+    config_foreach create_host_record domain
 
-      elif [ "$validip6" = "ok" -a "$dhcpv6" != "disable" ] ; then
-        if [ "$forward" = "domain" ] ; then
-          arpa=$( domain_ptr_ip6 "$subnet" )
-        else
-          arpa=$( host_ptr_ip6 "$subnet" )
-        fi
 
-      else
-        arpa=""
-      fi
+    if [ "$UB_D_EXTRA_DNS" -gt 1 ] ; then
+      config_foreach create_srv_record srvhost
+      config_foreach create_mx_record mxhost
+    fi
 
 
-      if [ -n "$arpa" ] ; then
-        if [ "$privateip" = "ok" ] ; then
-          {
-            # This creates ARPA local zone privledges
-            echo "  local-zone: \"$arpa.\" transparent"
-            echo "  domain-insecure: \"$arpa\""
-            echo
-          } >> $UNBOUND_CONFFILE
-        fi
+    if [ "$UB_D_EXTRA_DNS" -gt 2 ] ; then
+      config_foreach create_cname_record cname
+    fi
 
 
-        UNBOUND_TXT_FWD_ZONE="$UNBOUND_TXT_FWD_ZONE $arpa"
+    {
+      echo "# $UB_SRVMASQ_CONF generated by UCI $( date -Is )"
+      if [ -n "$DM_LIST_TRN_ZONES" ] ; then
+        for record in $DM_LIST_TRN_ZONES ; do
+          echo "  local-zone: $record transparent"
+        done
+        echo
       fi
-    done
+      if [ -n "$DM_LIST_LOCAL_DATA" ] ; then
+        for record in $DM_LIST_LOCAL_DATA ; do
+          echo "  local-data: \"${record//@@/ }\""
+        done
+        echo
+      fi
+      if [ -n "$DM_LIST_LOCAL_PTR" ] ; then
+        for record in $DM_LIST_LOCAL_PTR ; do
+          echo "  local-data-ptr: \"${record//@@/ }\""
+        done
+        echo
+      fi
+    } > $UB_SRVMASQ_CONF
   fi
 }
 
 ##############################################################################
 
-dnsmasq_forward_zone() {
-  if [ -n "$UNBOUND_N_FWD_PORTS" -a -n "$UNBOUND_TXT_FWD_ZONE" ] ; then
-    for fwd_domain in $UNBOUND_TXT_FWD_ZONE ; do
+dnsmasq_active() {
+  # Look at dnsmasq settings
+  config_load dhcp
+  # Zone for DHCP / SLAAC-PING DOMAIN
+  config_foreach dnsmasq_local_zone dnsmasq
+  # Zone for DHCP / SLAAC-PING ARPA
+  dnsmasq_local_arpa
+
+
+  if [ -n "$DM_LIST_FWD_PORTS" -a -n "$DM_LIST_FWD_ZONES" ] ; then
+    {
+      # Forward to dnsmasq on same host for DHCP lease hosts
+      echo "# $UB_SRVMASQ_CONF generated by UCI $( date -Is )"
+      echo "  do-not-query-localhost: no"
+      echo
+    } > $UB_SRVMASQ_CONF
+
+    echo "# $UB_EXTMASQ_CONF generated by UCI $( date -Is )" > $UB_EXTMASQ_CONF
+
+
+    for fwd_domain in $DM_LIST_FWD_ZONES ; do
       {
-        # This is derived of dnsmasq_local_zone/arpa
-        # but forward: clauses need to be seperate
-        echo "forward-zone:"
-        echo "  name: \"$fwd_domain.\""
+        # This creates a domain with local privledges
+        echo "  domain-insecure: $fwd_domain"
+        echo "  private-domain: $fwd_domain"
+        echo "  local-zone: $fwd_domain transparent"
+        echo
+      } >> $UB_SRVMASQ_CONF
 
-        for port in $UNBOUND_N_FWD_PORTS ; do
+      {
+        # This is derived from dnsmasq local domain and dhcp service subnets
+        echo "forward-zone:"
+        echo "  name: $fwd_domain"
+        echo "  forward-first: no"
+        for port in $DM_LIST_FWD_PORTS ; do
           echo "  forward-addr: 127.0.0.1@$port"
         done
-
         echo
-      } >> $UNBOUND_CONFFILE
+      } >> $UB_EXTMASQ_CONF
     done
   fi
 }
@@ -165,16 +297,12 @@ dnsmasq_forward_zone() {
 ##############################################################################
 
 dnsmasq_link() {
-  # Forward to dnsmasq on same host for DHCP lease hosts
-  echo "  do-not-query-localhost: no" >> $UNBOUND_CONFFILE
-  # Look at dnsmasq settings
-  config_load dhcp
-  # Zone for DHCP / SLAAC-PING DOMAIN
-  config_foreach dnsmasq_local_zone dnsmasq
-  # Zone for DHCP / SLAAC-PING ARPA
-  config_foreach dnsmasq_local_arpa dhcp
-  # Now create ALL seperate forward: clauses
-  dnsmasq_forward_zone
+  if [ "$UB_D_DHCP_LINK" = "dnsmasq" ] ; then
+    dnsmasq_active
+
+  else
+    dnsmasq_inactive
+  fi
 }
 
 ##############################################################################
index 9985f76d05aa93a707d5263a7b9692bf979e9c30..4919a9973ccf7da60ed361ac3c4723a0f93eece9 100644 (file)
@@ -124,6 +124,20 @@ valid_subnet4() {
 
 ##############################################################################
 
+valid_subnet_any() {
+  local subnet=$1
+  local validip4=$( valid_subnet4 $subnet )
+  local validip6=$( valid_subnet6 $subnet )
+
+
+  if [ "$validip4" = "ok" -o "$validip6" = "ok" ] ; then
+    echo "ok"
+  else
+    echo "not"
+  fi
+}
+##############################################################################
+
 private_subnet() {
   case "$1" in
     10"."*) echo "ok" ;;
@@ -160,3 +174,25 @@ domain_ptr_any() {
 
 ##############################################################################
 
+host_ptr_any() {
+  local subnet=$1
+  local arpa validip4 validip6
+
+  validip4=$( valid_subnet4 $subnet )
+  validip6=$( valid_subnet6 $subnet )
+
+
+  if [ "$validip4" = "ok" ] ; then
+    arpa=$( host_ptr_ip4 "$subnet" )
+  elif [ "$validip6" = "ok" ] ; then
+    arpa=$( host_ptr_ip6 "$subnet" )
+  fi
+
+
+  if [ -n "$arpa" ] ; then
+    echo $arpa
+  fi
+}
+
+##############################################################################
+
index 363f413de327f8f3ed850adec89465c68a560592..ca0595773e71898cada0e048ed9c96cd9a057ace 100644 (file)
 
 
       if ( bconf == 1 ) {
-        x = ( "local-data: \"" fqdn ". 120 IN A " adr "\"" ) ;
-        y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+        x = ( "local-data: \"" fqdn ". 300 IN A " adr "\"" ) ;
+        y = ( "local-data-ptr: \"" adr " 300 " fqdn "\"" ) ;
         print ( x "\n" y "\n" ) > hostfile ;
       }
 
       else {
         for( i=1; i<=4; i++ ) { qpr = ( ptr[i] "." qpr) ; }
-        x = ( fqdn ". 120 IN A " adr ) ;
-        y = ( qpr "in-addr.arpa. 120 IN PTR " fqdn ) ;
+        x = ( fqdn ". 300 IN A " adr ) ;
+        y = ( qpr "in-addr.arpa. 300 IN PTR " fqdn ) ;
         print ( x "\n" y ) > hostfile ;
       }
 
 
 
             if ( bconf == 1 ) {
-              x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
-              y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+              x = ( "local-data: \"" fqdn ". 300 IN AAAA " adr "\"" ) ;
+              y = ( "local-data-ptr: \"" adr " 300 " fqdn "\"" ) ;
               print ( x "\n" y "\n" ) > hostfile ;
             }
 
             else {
               qpr = ipv6_ptr( adr ) ;
-              x = ( fqdn ". 120 IN AAAA " adr ) ;
-              y = ( qpr ". 120 IN PTR " fqdn ) ;
+              x = ( fqdn ". 300 IN AAAA " adr ) ;
+              y = ( qpr ". 300 IN PTR " fqdn ) ;
               print ( x "\n" y ) > hostfile ;
             }
           }
   else {
     if (( cdr == 128 ) && ( hst != "-" )) {
       if ( bconf == 1 ) {
-        x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
-        y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
+        x = ( "local-data: \"" fqdn ". 300 IN AAAA " adr "\"" ) ;
+        y = ( "local-data-ptr: \"" adr " 300 " fqdn "\"" ) ;
         print ( x "\n" y "\n" ) > hostfile ;
       }
 
       else {
         # only for provided hostnames and full /128 assignments
         qpr = ipv6_ptr( adr ) ;
-        x = ( fqdn ". 120 IN AAAA " adr ) ;
-        y = ( qpr ". 120 IN PTR " fqdn ) ;
+        x = ( fqdn ". 300 IN AAAA " adr ) ;
+        y = ( qpr ". 300 IN PTR " fqdn ) ;
         print ( x "\n" y ) > hostfile ;
       }
     }
 
     if (( cdr2 == 128 ) && ( hst != "-" )) {
       if ( bconf == 1 ) {
-        x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr2 "\"" ) ;
-        y = ( "local-data-ptr: \"" adr2 " 120 " fqdn "\"" ) ;
+        x = ( "local-data: \"" fqdn ". 300 IN AAAA " adr2 "\"" ) ;
+        y = ( "local-data-ptr: \"" adr2 " 300 " fqdn "\"" ) ;
         print ( x "\n" y "\n" ) > hostfile ;
       }
 
       else {
         # odhcp puts GA and ULA on the same line (position 9 and 10)
         qpr2 = ipv6_ptr( adr2 ) ;
-        x = ( fqdn ". 120 IN AAAA " adr2 ) ;
-        y = ( qpr2 ". 120 IN PTR " fqdn ) ;
+        x = ( fqdn ". 300 IN AAAA " adr2 ) ;
+        y = ( qpr2 ". 300 IN PTR " fqdn ) ;
         print ( x "\n" y ) > hostfile ;
       }
     }
index 93efa73ad15a6870b3eed485013fb217e3944d12..721198d70405e8fdcb9be550189e2cffa2cc80b8 100644 (file)
 
 odhcpd_zonedata() {
   local longconf dateconf
-  local dns_ls_add=$UNBOUND_VARDIR/dhcp_dns.add
-  local dns_ls_del=$UNBOUND_VARDIR/dhcp_dns.del
-  local dhcp_ls_new=$UNBOUND_VARDIR/dhcp_lease.new
-  local dhcp_ls_old=$UNBOUND_VARDIR/dhcp_lease.old
-  local dhcp_ls_add=$UNBOUND_VARDIR/dhcp_lease.add
-  local dhcp_ls_del=$UNBOUND_VARDIR/dhcp_lease.del
+  local dns_ls_add=$UB_VARDIR/dhcp_dns.add
+  local dns_ls_del=$UB_VARDIR/dhcp_dns.del
+  local dhcp_ls_new=$UB_VARDIR/dhcp_lease.new
+  local dhcp_ls_old=$UB_VARDIR/dhcp_lease.old
+  local dhcp_ls_add=$UB_VARDIR/dhcp_lease.add
+  local dhcp_ls_del=$UB_VARDIR/dhcp_lease.del
 
   local dhcp_link=$( uci_get unbound.@unbound[0].dhcp_link )
   local dhcp4_slaac6=$( uci_get unbound.@unbound[0].dhcp4_slaac6 )
@@ -43,18 +43,17 @@ odhcpd_zonedata() {
   local dhcp_origin=$( uci_get dhcp.@odhcpd[0].leasefile )
 
 
-  if [ "$dhcp_link" = "odhcpd" \
-      -a -f "$dhcp_origin" \
-      -a -n "$dhcp_domain" ] ; then
+  if [ -f "$UB_TOTAL_CONF" -a -f "$dhcp_origin" \
+       -a "$dhcp_link" = "odhcpd" -a -n "$dhcp_domain" ] ; then
     # Capture the lease file which could be changing often
     sort $dhcp_origin > $dhcp_ls_new
 
 
-    if [ ! -f $UNBOUND_DHCP_CONF -o ! -f $dhcp_ls_old ] ; then
+    if [ ! -f $UB_DHCP_CONF -o ! -f $dhcp_ls_old ] ; then
       longconf=2
 
     else
-      dateconf=$(( $( date +%s ) - $( date -r $UNBOUND_DHCP_CONF +%s ) ))
+      dateconf=$(( $( date +%s ) - $( date -r $UB_DHCP_CONF +%s ) ))
 
 
       if [ $dateconf > 150 ] ; then
@@ -68,7 +67,7 @@ odhcpd_zonedata() {
     if [ $longconf -gt 0 ] ; then
       # Go through the messy business of coding up A, AAAA, and PTR records
       # This static conf will be available if Unbound restarts asynchronously
-      awk -v hostfile=$UNBOUND_DHCP_CONF -v domain=$dhcp_domain \
+      awk -v hostfile=$UB_DHCP_CONF -v domain=$dhcp_domain \
           -v bslaac=$dhcp4_slaac6 -v bisolt=0 -v bconf=1 \
           -f /usr/lib/unbound/odhcpd.awk $dhcp_ls_new
     fi
@@ -95,12 +94,12 @@ odhcpd_zonedata() {
 
 
     if [ -f "$dns_ls_del" ] ; then
-      cat $dns_ls_del | $UNBOUND_CONTROL_CFG local_datas_remove
+      cat $dns_ls_del | $UB_CONTROL_CFG local_datas_remove
     fi
 
 
     if [ -f "$dns_ls_add" ] ; then
-      cat $dns_ls_add | $UNBOUND_CONTROL_CFG local_datas
+      cat $dns_ls_add | $UB_CONTROL_CFG local_datas
     fi
 
 
diff --git a/net/unbound/files/rootzone.sh b/net/unbound/files/rootzone.sh
deleted file mode 100644 (file)
index cc2edf6..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#!/bin/sh
-##############################################################################
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2 as
-# published by the Free Software Foundation.
-#
-# 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.
-#
-# Copyright (C) 2016 Eric Luehrsen
-#
-##############################################################################
-#
-# This component will copy root.key back to /etc/unbound/ periodically, but
-# avoid ROM flash abuse (UCI option).
-#
-##############################################################################
-
-roothints_update() {
-  # TODO: Might not be implemented. Unbound doesn't natively update hints.
-  # Unbound philosophy is built in root hints are good for machine life.
-  return 0
-}
-
-##############################################################################
-
-rootkey_update() {
-  local basekey_date rootkey_date rootkey_age filestuff
-
-  local dnssec=$( uci_get unbound.@unbound[0].validator )
-  local dnssec_ntp=$( uci_get unbound.@unbound[0].validator_ntp )
-  local dnssec_age=$( uci_get unbound.@unbound[0].root_age )
-
-
-  if [ "$dnssec_age" -gt 90 -o "$dnssec" -lt 1 ] ; then
-    # Feature disabled
-    return 0
-
-  elif [ "$dnssec_ntp" -gt 0 -a ! -f "$UNBOUND_TIMEFILE" ] ; then
-    # We don't have time yet
-    return 0
-  fi
-
-
-  if [ -f /etc/unbound/root.key ] ; then
-    basekey_date=$( date -r /etc/unbound/root.key +%s )
-
-  else
-    # No persistent storage key
-    basekey_date=$( date -d 2000-01-01 +%s )
-  fi
-
-
-  if [ -f "$UNBOUND_KEYFILE" ] ; then
-    # Unbound maintains it itself
-    rootkey_date=$( date -r $UNBOUND_KEYFILE +%s )
-    rootkey_age=$(( (rootkey_date - basekey_date) / 86440 ))
-
-  elif [ -x "$UNBOUND_ANCHOR" ] ; then
-    # No tmpfs key - use unbound-anchor
-    rootkey_date=$( date -I +%s )
-    rootkey_age=$(( (rootkey_date - basekey_date) / 86440 ))
-    $UNBOUND_ANCHOR -a $UNBOUND_KEYFILE
-
-  else
-    # give up
-    rootkey_age=0
-  fi
-
-
-  if [ "$rootkey_age" -gt "$dnssec_age" ] ; then
-    filestuff=$( cat $UNBOUND_KEYFILE )
-
-
-    case "$filestuff" in
-      *NOERROR*)
-        # Header comment for drill and dig
-        logger -t unbound -s "root.key updated after $rootkey_age days"
-        cp -p $UNBOUND_KEYFILE /etc/unbound/root.key
-        ;;
-
-      *"state=2 [  VALID  ]"*)
-        # Comment inline to key for unbound-anchor
-        logger -t unbound -s "root.key updated after $rootkey_age days"
-        cp -p $UNBOUND_KEYFILE /etc/unbound/root.key
-        ;;
-
-      *)
-        logger -t unbound -s "root.key still $rootkey_age days old"
-        ;;
-    esac
-  fi
-}
-
-##############################################################################
-
-rootzone_update() {
-  roothints_update
-  rootkey_update
-}
-
-##############################################################################
-
diff --git a/net/unbound/files/stopping.sh b/net/unbound/files/stopping.sh
new file mode 100644 (file)
index 0000000..5bec1b9
--- /dev/null
@@ -0,0 +1,127 @@
+#!/bin/sh
+##############################################################################
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# 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.
+#
+# Copyright (C) 2016 Eric Luehrsen
+#
+##############################################################################
+#
+# This component will copy root.key back to /etc/unbound/ periodically, but
+# avoid ROM flash abuse (UCI option).
+#
+##############################################################################
+
+. /usr/lib/unbound/defaults.sh
+
+##############################################################################
+
+roothints_update() {
+  # TODO: Might not be implemented. Unbound doesn't natively update hints.
+  # Unbound philosophy is built in root hints are good for machine life.
+  return 0
+}
+
+##############################################################################
+
+rootkey_update() {
+  local basekey_date rootkey_date rootkey_age filestuff
+  local dnssec=$( uci_get unbound.@unbound[0].validator )
+  local dnssec_ntp=$( uci_get unbound.@unbound[0].validator_ntp )
+  local dnssec_age=$( uci_get unbound.@unbound[0].root_age )
+
+  # fix empty
+  [ -z "$dnssec"     ] && dnssec=0
+  [ -z "$dnssec_ntp" ] && dnssec_ntp=1
+  [ -z "$dnssec_age" ] && dnssec_age=9
+
+
+  if [ "$dnssec_age" -gt 90 -o "$dnssec" -lt 1 ] ; then
+    # Feature disabled
+    return 0
+
+  elif [ "$dnssec_ntp" -gt 0 -a ! -f "$UB_TIME_FILE" ] ; then
+    # We don't have time yet
+    return 0
+  fi
+
+
+  if [ -f /etc/unbound/root.key ] ; then
+    basekey_date=$( date -r /etc/unbound/root.key +%s )
+
+  else
+    # No persistent storage key
+    basekey_date=$( date -d 2000-01-01 +%s )
+  fi
+
+
+  if [ -f "$UB_RKEY_FILE" ] ; then
+    # Unbound maintains it itself
+    rootkey_date=$( date -r $UB_RKEY_FILE +%s )
+    rootkey_age=$(( (rootkey_date - basekey_date) / 86440 ))
+
+  elif [ -x "$UB_ANCHOR" ] ; then
+    # No tmpfs key - use unbound-anchor
+    rootkey_date=$( date -I +%s )
+    rootkey_age=$(( (rootkey_date - basekey_date) / 86440 ))
+    $UB_ANCHOR -a $UB_RKEY_FILE
+
+  else
+    # give up
+    rootkey_age=0
+  fi
+
+
+  if [ "$rootkey_age" -gt "$dnssec_age" ] ; then
+    filestuff=$( cat $UB_RKEY_FILE )
+
+
+    case "$filestuff" in
+      *NOERROR*)
+        # Header comment for drill and dig
+        logger -t unbound -s "root.key updated after $rootkey_age days"
+        cp -p $UB_RKEY_FILE /etc/unbound/root.key
+        ;;
+
+      *"state=2 [  VALID  ]"*)
+        # Comment inline to key for unbound-anchor
+        logger -t unbound -s "root.key updated after $rootkey_age days"
+        cp -p $UB_RKEY_FILE /etc/unbound/root.key
+        ;;
+
+      *)
+        logger -t unbound -s "root.key still $rootkey_age days old"
+        ;;
+    esac
+  fi
+}
+
+##############################################################################
+
+resolv_teardown() {
+  case $( cat /tmp/resolv.conf ) in
+    *"generated by Unbound UCI"*)
+      # our resolver file, reset to auto resolver file.
+      rm -f /tmp/resolv.conf
+      ln -s /tmp/resolv.conf.auto /tmp/resolv.conf
+      ;;
+  esac
+}
+
+##############################################################################
+
+unbound_stop() {
+  resolv_teardown
+  roothints_update
+  rootkey_update
+}
+
+##############################################################################
+
index 2f93b4d65096d994a9b5b097e55a7505df363dea..c9083996485cee0c19b1eea8b392a890fe9dd56f 100755 (executable)
@@ -17,14 +17,14 @@ PROG=/usr/sbin/unbound
 ##############################################################################
 
 boot() {
-  UNBOUND_BOOT=1
+  UB_BOOT=1
   start "$@"
 }
 
 ##############################################################################
 
 start_service() {
-  if [ -n "$UNBOUND_BOOT" ] ; then
+  if [ -n "$UB_BOOT" ] ; then
     # Load procd triggers (rc) and use event IFUP to really start
     return 0
   fi
@@ -35,7 +35,7 @@ start_service() {
 
   # standard procd clause
   procd_open_instance "unbound"
-  procd_set_param command $PROG -d -c $UNBOUND_CONFFILE
+  procd_set_param command $PROG -d -c $UB_TOTAL_CONF
   procd_set_param respawn
   procd_close_instance
 }
@@ -44,7 +44,7 @@ start_service() {
 
 stop_service() {
   # clean up
-  . /usr/lib/unbound/unbound.sh
+  . /usr/lib/unbound/stopping.sh
   unbound_stop
 
   # Wait! on restart Unbound may take time writing closure stats to syslog
@@ -54,22 +54,29 @@ stop_service() {
 ##############################################################################
 
 service_triggers() {
-  local trigger
   local legacy=$( uci_get unbound.@unbound[0].trigger )
   local triggers=$( uci_get unbound.@unbound[0].trigger_interface )
+  local trigger="$triggers $legacy"
+
+  . /usr/lib/unbound/defaults.sh
+
 
-  triggers="$triggers $legacy"
-  PROCD_RELOAD_DELAY=2000
-  procd_add_reload_trigger "unbound"
+  if [ ! -f "$UB_TOTAL_CONF" -o -n "$UB_BOOT" ] ; then
+    # Unbound is can be a bit heavy, so wait some on first start but any
+    # interface coming up affects the trigger and delay so guarantee start
+    procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/unbound restart
+
+  elif [ -n "$triggers" ] ; then
+    procd_add_reload_trigger "unbound" "dhcp"
 
 
-  if [ -n "$triggers" ] ; then
     for trigger in $triggers ; do
-      # due to some netifd/procd interactions with IP6, limit interfaces
+      # User selected triggers to restart at any other time
       procd_add_reload_interface_trigger "$trigger"
     done
+
   else
-    procd_add_raw_trigger "interface.*.up" 2000 /etc/init.d/unbound reload
+    procd_add_reload_trigger "unbound" "dhcp"
   fi
 }
 
index d744cb06705b1fc37298d136538db29116f9b602..d9d0deefa53c0c6a26f3a462d4d57f1b68fd0555 100755 (executable)
 ##############################################################################
 
 # Common file location definitions
-. /usr/lib/unbound/unbound.sh
+. /usr/lib/unbound/defaults.sh
 
 ##############################################################################
 
-if [ "$ACTION" = stratum -a ! -f "$UNBOUND_TIMEFILE" ] ; then
-  echo "ntpd: $( date )" > $UNBOUND_TIMEFILE
+if [ ! -f "$UB_TIME_FILE" -a "$ACTION" = stratum ] ; then
+  date -Is > $UB_TIME_FILE
   /etc/init.d/unbound enabled && /etc/init.d/unbound restart
   # Yes, hard RESTART. We need to be absolutely sure to enable DNSSEC.
 fi
index a1f328e57befce58b0ef2fea2f5f8787cba5c551..0613312209309f54c9c1fb3c2626a3c150e826db 100644 (file)
 #
 ##############################################################################
 
-UNBOUND_B_SLAAC6_MAC=0
-UNBOUND_B_DNSSEC=0
-UNBOUND_B_DNS64=0
-UNBOUND_B_EXT_STATS=0
-UNBOUND_B_GATE_NAME=0
-UNBOUND_B_HIDE_BIND=1
-UNBOUND_B_LOCL_BLCK=0
-UNBOUND_B_LOCL_SERV=1
-UNBOUND_B_MAN_CONF=0
-UNBOUND_B_NTP_BOOT=1
-UNBOUND_B_QUERY_MIN=0
-UNBOUND_B_QRY_MINST=0
-UNBOUND_B_AUTH_ROOT=0
-
-UNBOUND_D_CONTROL=0
-UNBOUND_D_DOMAIN_TYPE=static
-UNBOUND_D_DHCP_LINK=none
-UNBOUND_D_EXTRA_DNS=0
-UNBOUND_D_LAN_FQDN=0
-UNBOUND_D_PRIV_BLCK=1
-UNBOUND_D_PROTOCOL=mixed
-UNBOUND_D_RESOURCE=small
-UNBOUND_D_RECURSION=passive
-UNBOUND_D_WAN_FQDN=0
-
-UNBOUND_IP_DNS64="64:ff9b::/96"
-
-UNBOUND_N_EDNS_SIZE=1280
-UNBOUND_N_FWD_PORTS=""
-UNBOUND_N_RX_PORT=53
-UNBOUND_N_ROOT_AGE=9
-
-UNBOUND_TTL_MIN=120
-
-UNBOUND_TXT_DOMAIN=lan
-UNBOUND_TXT_FWD_ZONE=""
-UNBOUND_TXT_HOSTNAME=thisrouter
-
-UNBOUND_LIST_FORWARD=""
-UNBOUND_LIST_INSECURE=""
+UB_B_SLAAC6_MAC=0
+UB_B_DNSSEC=0
+UB_B_DNS64=0
+UB_B_EXT_STATS=0
+UB_B_GATE_NAME=0
+UB_B_HIDE_BIND=1
+UB_B_LOCL_BLCK=0
+UB_B_LOCL_SERV=1
+UB_B_MAN_CONF=0
+UB_B_NTP_BOOT=1
+UB_B_QUERY_MIN=0
+UB_B_QRY_MINST=0
+UB_B_AUTH_ROOT=0
+
+UB_D_CONTROL=0
+UB_D_DOMAIN_TYPE=static
+UB_D_DHCP_LINK=none
+UB_D_EXTRA_DNS=0
+UB_D_LAN_FQDN=0
+UB_D_PRIV_BLCK=1
+UB_D_PROTOCOL=mixed
+UB_D_RESOURCE=small
+UB_D_RECURSION=passive
+UB_D_VERBOSE=1
+UB_D_WAN_FQDN=0
+
+UB_IP_DNS64="64:ff9b::/96"
+
+UB_N_EDNS_SIZE=1280
+UB_N_RX_PORT=53
+UB_N_ROOT_AGE=9
+
+UB_TTL_MIN=120
+UB_TXT_DOMAIN=lan
+UB_TXT_HOSTNAME=thisrouter
 
 ##############################################################################
 
-# keep track of assignments during inserted resource records
-UNBOUND_LIST_DOMAINS=""
-UNBOUND_LIST_IFACE=""
-UNBOUND_LIST_PRV_IP6GLA=""
-UNBOUND_LIST_LAN_NET=""
+# reset as a combo with UB_B_NTP_BOOT and some time stamp files
+UB_B_READY=1
 
-# Similar default SOA / NS RR as Unbound uses for private ARPA zones
-UNBOUND_XSOA="3600 IN SOA localhost. nobody.invalid. 1 3600 1200 7200 600"
-UNBOUND_XNS="3600 IN NS localhost."
+# keep track of assignments during inserted resource records
+UB_LIST_NETW_ALL=""
+UB_LIST_NETW_LAN=""
+UB_LIST_NETW_WAN=""
+UB_LIST_INSECURE=""
+UB_LIST_ZONE_SERVERS=""
+UB_LIST_ZONE_NAMES=""
 
 ##############################################################################
 
@@ -84,342 +80,101 @@ UNBOUND_XNS="3600 IN NS localhost."
 . /usr/lib/unbound/defaults.sh
 . /usr/lib/unbound/dnsmasq.sh
 . /usr/lib/unbound/iptools.sh
-. /usr/lib/unbound/rootzone.sh
 
 ##############################################################################
 
-create_interface_dns() {
+bundle_all_networks() {
   local cfg="$1"
-  local ipcommand logint ignore ifname ifdashname
-  local name names address addresses
-  local ulaprefix if_fqdn host_fqdn
-  local mode_ptr="$UNBOUND_TXT_HOSTNAME"
-  local names="$UNBOUND_TXT_HOSTNAME"
-
-  # Create local-data: references for this hosts interfaces (router).
-  config_get logint "$cfg" interface
-  config_get_bool ignore "$cfg" ignore 0
-  network_get_device ifname "$cfg"
-
-  ifdashname="${ifname//./-}"
-  ipcommand="ip -o address show $ifname"
-  addresses=$( $ipcommand | awk '/inet/{sub(/\/.*/,"",$4); print $4}' )
-  ulaprefix=$( uci_get network.@globals[0].ula_prefix )
-  host_fqdn="$UNBOUND_TXT_HOSTNAME.$UNBOUND_TXT_DOMAIN"
-  if_fqdn="$ifdashname.$host_fqdn"
-
-
-  if [ -z "$ifdashname" ] ; then
-    # race conditions at init can rarely cause a blank device return
-    # the record format is invalid and Unbound won't load the conf file
-    mode=0
-
-  elif [ -n "$UNBOUND_LIST_IFACE" ] ; then
-    case "$UNBOUND_LIST_IFACE" in
-    *$ifdashname*)
-      # repeat such as dual WAN (eth0-1) and WAN6 (eth0-1)
-      mode=0
-      ;;
-
-    *)
-      mode=1
-      ;;
-    esac
-
-  else
-    mode=1
-  fi
-
-
-  if [ $mode -gt 0 ] ; then
-    UNBOUND_LIST_IFACE="$UNBOUND_LIST_IFACE $ifdashname"
-
-
-    if [ -z "${ulaprefix%%:/*}" ] ; then
-      # Nonsense so this option isn't globbed below
-      ulaprefix="fdno:such:addr::/48"
-    fi
-
-
-    if [ "$ignore" -gt 0 ] ; then
-      mode="$UNBOUND_D_WAN_FQDN"
-    else
-      mode="$UNBOUND_D_LAN_FQDN"
-    fi
-  fi
-
-
-  if [ "$mode" -gt 1 ] ; then
-    case "$mode" in
-    3)
-      mode_ptr="$host_fqdn"
-      names="$host_fqdn  $UNBOUND_TXT_HOSTNAME"
-      ;;
+  local ifname ifdashname validip
+  local subnet subnets subnets4 subnets6
 
-    4)
-      mode_ptr="$if_fqdn"
-      names="$if_fqdn  $host_fqdn  $UNBOUND_TXT_HOSTNAME"
-      ;;
-    esac
-
-
-    {
-      for address in $addresses ; do
-        case $address in
-        fe80:*|169.254.*)
-          echo "  # note link address $address"
-          ;;
+  network_get_subnets  subnets4 "$cfg"
+  network_get_subnets6 subnets6 "$cfg"
+  network_get_device   ifname   "$cfg"
 
-        [1-9a-f]*:*[0-9a-f])
-          # GA and ULA IP6 for HOST IN AAA records (ip command is robust)
-          for name in $names ; do
-            echo "  local-data: \"$name. 120 IN AAAA $address\""
-          done
-          echo "  local-data-ptr: \"$address 120 $mode_ptr\""
-          ;;
+  ifdashname="${ifname//./-}"
+  subnets="$subnets4 $subnets6"
 
-        [1-9]*.*[0-9])
-          # Old fashioned HOST IN A records
-          for name in $names ; do
-            echo "  local-data: \"$name. 120 IN A $address\""
-          done
-          echo "  local-data-ptr: \"$address 120 $mode_ptr\""
-          ;;
-        esac
-      done
-      echo
-    } >> $UNBOUND_CONFFILE
 
-  elif [ "$mode" -gt 0 ] ; then
-    {
-      for address in $addresses ; do
-        case $address in
-        fe80:*|169.254.*)
-          echo "  # note link address $address"
-          ;;
+  if [ -n "$subnets" ] ; then
+    for subnet in $subnets ; do
+      validip=$( valid_subnet_any $subnet )
 
-        "${ulaprefix%%:/*}"*)
-          # Only this networks ULA and only hostname
-          echo "  local-data: \"$UNBOUND_TXT_HOSTNAME. 120 IN AAAA $address\""
-          echo "  local-data-ptr: \"$address 120 $UNBOUND_TXT_HOSTNAME\""
-          ;;
 
-        [1-9]*.*[0-9])
-          echo "  local-data: \"$UNBOUND_TXT_HOSTNAME. 120 IN A $address\""
-          echo "  local-data-ptr: \"$address 120 $UNBOUND_TXT_HOSTNAME\""
-          ;;
-        esac
-      done
-      echo
-    } >> $UNBOUND_CONFFILE
+      if [ "$validip" = "ok" ] ; then
+        UB_LIST_NETW_ALL="$UB_LIST_NETW_ALL $ifdashname@$subnet"
+      fi
+    done
   fi
 }
 
 ##############################################################################
 
-create_local_zone() {
-  local target="$1"
-  local partial domain found
-
+bundle_lan_networks() {
+  local cfg="$1"
+  local ifsubnet ifname ifdashname ignore
 
-  if [ -n "$UNBOUND_LIST_DOMAINS" ] ; then
-    for domain in $UNBOUND_LIST_DOMAINS ; do
-      case $target in
-      *"${domain}")
-        found=1
-        break
-        ;;
+  config_get_bool    ignore "$cfg" ignore 0
+  network_get_device ifname "$cfg"
+  ifdashname="${ifname//./-}"
 
-      [A-Za-z0-9]*.[A-Za-z0-9]*)
-        found=0
-        ;;
 
-      *) # no dots
-        found=1
-        break
-        ;;
+  if [ "$ignore" -eq 0 -a -n "$ifdashname" -a -n "$UB_LIST_NETW_ALL" ] ; then
+    for ifsubnet in $UB_LIST_NETW_ALL ; do
+      case $ifsubnet in
+        "${ifdashname}"@*)
+          # Special GLA protection for local block; ULA protected as a catagory
+          UB_LIST_NETW_LAN="$UB_LIST_NETW_LAN $ifsubnet"
+          ;;
       esac
     done
-  else
-    found=0
-  fi
-
-
-  if [ $found -eq 0 ] ; then
-    # New Zone! Bundle local-zones: by first two name tiers "abcd.tld."
-    partial=$( echo "$target" | awk -F. '{ j=NF ; i=j-1; print $i"."$j }' )
-    UNBOUND_LIST_DOMAINS="$UNBOUND_LIST_DOMAINS $partial"
-    echo "  local-zone: $partial transparent" >> $UNBOUND_CONFFILE
   fi
 }
 
 ##############################################################################
 
-create_host_record() {
-  local cfg="$1"
-  local ip name
-
-  # basefiles dhcp "domain" clause which means host A, AAAA, and PRT record
-  config_get ip   "$cfg" ip
-  config_get name "$cfg" name
+bundle_wan_networks() {
+  local ifsubnet
 
 
-  if [ -n "$name" -a -n "$ip" ] ; then
-    create_local_zone "$name"
-
-    {
-      case $ip in
-      fe80:*|169.254.*)
-        echo "  # note link address $ip for host $name"
-        ;;
-
-      [1-9a-f]*:*[0-9a-f])
-        echo "  local-data: \"$name. 120 IN AAAA $ip\""
-        echo "  local-data-ptr: \"$ip 120 $name\""
-        ;;
+  if [ -n "$UB_LIST_NETW_ALL" ] ; then
+    for ifsubnet in $UB_LIST_NETW_ALL ; do
+      case $UB_LIST_NETW_LAN in
+        *"${ifsubnet}"*)
+          # If LAN, then not WAN ...
+          ;;
 
-      [1-9]*.*[0-9])
-        echo "  local-data: \"$name. 120 IN A $ip\""
-        echo "  local-data-ptr: \"$ip 120 $name\""
-        ;;
+        *)
+          UB_LIST_NETW_WAN="$UB_LIST_NETW_WAN $ifsubnet"
+          ;;
       esac
-    } >> $UNBOUND_CONFFILE
+    done
   fi
 }
 
 ##############################################################################
 
-create_mx_record() {
-  local cfg="$1"
-  local domain relay pref
-
-  # Insert a static MX record
-  config_get domain "$cfg" domain
-  config_get relay  "$cfg" relay
-  config_get pref   "$cfg" pref 10
-
-
-  if [ -n "$domain" -a -n "$relay" ] ; then
-    create_local_zone "$domain"
-    echo "  local-data: \"$domain. 120 IN MX $pref $relay.\"" \
-          >> $UNBOUND_CONFFILE
-  fi
+bundle_resolv_conf_servers() {
+  local resolvers=$( awk '/nameserver/ { print $2 }' /tmp/resolv.conf.auto )
+  UB_LIST_ZONE_SERVERS="$UB_LIST_ZONE_SERVERS $resolvers"
 }
 
 ##############################################################################
 
-create_srv_record() {
-  local cfg="$1"
-  local srv target port class weight
-
-  # Insert a static SRV record such as SIP server
-  config_get srv    "$cfg" srv
-  config_get target "$cfg" target
-  config_get port   "$cfg" port
-  config_get class  "$cfg" class 10
-  config_get weight "$cfg" weight 10
-
-
-  if [ -n "$srv" -a -n "$target" -a -n "$port" ] ; then
-    create_local_zone "$srv"
-    echo "  local-data: \"$srv. 120 IN SRV $class $weight $port $target.\"" \
-          >> $UNBOUND_CONFFILE
-  fi
+bundle_zone_names() {
+  UB_LIST_ZONE_NAMES="$UB_LIST_ZONE_NAMES $1"
 }
 
 ##############################################################################
 
-create_cname_record() {
-  local cfg="$1"
-  local cname target
-
-  # Insert static CNAME record
-  config_get cname  "$cfg" cname
-  config_get target "$cfg" target
-
-
-  if [ -n "$cname" -a -n "$target" ] ; then
-    create_local_zone "$cname"
-    echo "  local-data: \"$cname. 120 IN CNAME $target.\"" >> $UNBOUND_CONFFILE
-  fi
-}
-
-##############################################################################
-
-create_access_control() {
-  local cfg="$1"
-  local subnets subnets4 subnets6
-  local validip4 validip6
-
-  network_get_subnets  subnets4 "$cfg"
-  network_get_subnets6 subnets6 "$cfg"
-  subnets="$subnets4 $subnets6"
-
-
-  if [ -n "$subnets" ] ; then
-    for subnet in $subnets ; do
-      validip4=$( valid_subnet4 $subnet )
-      validip6=$( valid_subnet6 $subnet )
-
-
-      if [ "$validip4" = "ok" -o "$validip6" = "ok" ] ; then
-        # For each "network" UCI add "access-control:" white list for queries
-        echo "  access-control: $subnet allow" >> $UNBOUND_CONFFILE
-      fi
-    done
-  fi
-}
-
-##############################################################################
-
-bundle_domain_forward() {
-  UNBOUND_LIST_FORWARD="$UNBOUND_LIST_FORWARD $1"
+bundle_zone_servers() {
+  UB_LIST_ZONE_SERVERS="$UB_LIST_ZONE_SERVERS $1"
 }
 
 ##############################################################################
 
 bundle_domain_insecure() {
-  UNBOUND_LIST_INSECURE="$UNBOUND_LIST_INSECURE $1"
-}
-
-##############################################################################
-
-bundle_private_interface() {
-  local ipcommand ifsubnet ifsubnets ifname validip4
-
-  network_get_device ifname $1
-
-
-  if [ -n "$ifname" ] ; then
-    ipcommand="ip -o address show $ifname"
-    ifsubnets=$( $ipcommand | awk '/inet/{ print $4 }' )
-
-
-    if [ -n "$ifsubnets" ] ; then
-      for ifsubnet in $ifsubnets ; do
-        case $ifsubnet in
-        [1-9][0-9a-f][0-9a-f][0-9a-f]:*[0-9a-f])
-          # Special GLA protection for local block; ULA protected as a catagory
-          UNBOUND_LIST_PRV_IP6GLA="$UNBOUND_LIST_PRV_IP6GLA $ifsubnet"
-          ;;
-
-        f[dc][0-9a-f][0-9a-f]:*[0-9a-f])
-          # Used to configure specific local-zone: data
-          UNBOUND_LIST_LAN_NET="$UNBOUND_LIST_LAN_NET $ifsubnet"
-          ;;
-
-        *)
-          validip4=$( valid_subnet4 $ifsubnet )
-
-
-          if [ "$validip4" = "ok" ] ; then
-            UNBOUND_LIST_LAN_NET="$UNBOUND_LIST_LAN_NET $ifsubnet"
-          fi
-          ;;
-        esac
-      done
-    fi
-  fi
+  UB_LIST_INSECURE="$UB_LIST_INSECURE $1"
 }
 
 ##############################################################################
@@ -428,7 +183,7 @@ unbound_mkdir() {
   local filestuff
 
 
-  if [ "$UNBOUND_D_DHCP_LINK" = "odhcpd" ] ; then
+  if [ "$UB_D_DHCP_LINK" = "odhcpd" ] ; then
     local dhcp_origin=$( uci_get dhcp.@odhcpd[0].leasefile )
     local dhcp_dir=$( dirname $dhcp_origin )
 
@@ -440,250 +195,388 @@ unbound_mkdir() {
   fi
 
 
-  if [ -f $UNBOUND_KEYFILE ] ; then
-    filestuff=$( cat $UNBOUND_KEYFILE )
+  if [ -f $UB_RKEY_FILE ] ; then
+    filestuff=$( cat $UB_RKEY_FILE )
 
 
     case "$filestuff" in
       *"state=2 [  VALID  ]"*)
         # Lets not lose RFC 5011 tracking if we don't have to
-        cp -p $UNBOUND_KEYFILE $UNBOUND_KEYFILE.keep
+        cp -p $UB_RKEY_FILE $UB_RKEY_FILE.keep
         ;;
     esac
   fi
 
 
-  # Blind copy /etc/ to /var/lib/
-  mkdir -p $UNBOUND_VARDIR
-  rm -f $UNBOUND_VARDIR/dhcp_*
-  touch $UNBOUND_CONFFILE
-  touch $UNBOUND_SRV_CONF
-  touch $UNBOUND_EXT_CONF
-  cp -p /etc/unbound/* $UNBOUND_VARDIR/
+  # Blind copy /etc/unbound to /var/lib/unbound
+  mkdir -p $UB_VARDIR
+  rm -f $UB_VARDIR/dhcp_*
+  touch $UB_TOTAL_CONF
+  cp -p /etc/unbound/* $UB_VARDIR/
 
 
-  if [ ! -f $UNBOUND_HINTFILE ] ; then
+  if [ ! -f $UB_RHINT_FILE ] ; then
     if [ -f /usr/share/dns/root.hints ] ; then
       # Debian-like package dns-root-data
-      cp -p /usr/share/dns/root.hints $UNBOUND_HINTFILE
+      cp -p /usr/share/dns/root.hints $UB_RHINT_FILE
 
-    elif [ ! -f "$UNBOUND_TIMEFILE" ] ; then
-      logger -t unbound -s "default root hints (built in rootservers.net)"
+    elif [ "$UB_B_READY" -eq 0 ] ; then
+      logger -t unbound -s "default root hints (built in root-servers.net)"
     fi
   fi
 
 
-  if [ ! -f $UNBOUND_KEYFILE ] ; then
+  if [ ! -f $UB_RKEY_FILE ] ; then
     if [ -f /usr/share/dns/root.key ] ; then
       # Debian-like package dns-root-data
-      cp -p /usr/share/dns/root.key $UNBOUND_KEYFILE
+      cp -p /usr/share/dns/root.key $UB_RKEY_FILE
 
-    elif [ -x $UNBOUND_ANCHOR ] ; then
-      $UNBOUND_ANCHOR -a $UNBOUND_KEYFILE
+    elif [ -x $UB_ANCHOR ] ; then
+      $UB_ANCHOR -a $UB_RKEY_FILE
 
-    elif [ ! -f "$UNBOUND_TIMEFILE" ] ; then
+    elif [ "$UB_B_READY" -eq 0 ] ; then
       logger -t unbound -s "default trust anchor (built in root DS record)"
     fi
   fi
 
 
-  if [ -f $UNBOUND_KEYFILE.keep ] ; then
+  if [ -f $UB_RKEY_FILE.keep ] ; then
     # root.key.keep is reused if newest
-    cp -u $UNBOUND_KEYFILE.keep $UNBOUND_KEYFILE
-    rm -f $UNBOUND_KEYFILE.keep
+    cp -u $UB_RKEY_FILE.keep $UB_RKEY_FILE
+    rm -f $UB_RKEY_FILE.keep
+  fi
+
+
+  if [ -f $UB_TLS_ETC_FILE ] ; then
+    # copy the cert bundle into jail
+    cp -p $UB_TLS_ETC_FILE $UB_TLS_FWD_FILE
   fi
 
 
   # Ensure access and prepare to jail
-  chown -R unbound:unbound $UNBOUND_VARDIR
-  chmod 755 $UNBOUND_VARDIR
-  chmod 644 $UNBOUND_VARDIR/*
+  chown -R unbound:unbound $UB_VARDIR
+  chmod 755 $UB_VARDIR
+  chmod 644 $UB_VARDIR/*
 
 
-  if [ -f $UNBOUND_CTLKEY_FILE -o -f $UNBOUND_CTLPEM_FILE \
-    -o -f $UNBOUND_SRVKEY_FILE -o -f $UNBOUND_SRVPEM_FILE ] ; then
+  if [ -f $UB_CTLKEY_FILE -o -f $UB_CTLPEM_FILE \
+    -o -f $UB_SRVKEY_FILE -o -f $UB_SRVPEM_FILE ] ; then
     # Keys (some) exist already; do not create new ones
-    chmod 640 $UNBOUND_CTLKEY_FILE $UNBOUND_CTLPEM_FILE \
-              $UNBOUND_SRVKEY_FILE $UNBOUND_SRVPEM_FILE
+    chmod 640 $UB_CTLKEY_FILE $UB_CTLPEM_FILE \
+              $UB_SRVKEY_FILE $UB_SRVPEM_FILE
 
   elif [ -x /usr/sbin/unbound-control-setup ] ; then
-    case "$UNBOUND_D_CONTROL" in
-    [2-3])
-      # unbound-control-setup for encrypt opt. 2 and 3, but not 4 "static"
-      /usr/sbin/unbound-control-setup -d $UNBOUND_VARDIR
+    case "$UB_D_CONTROL" in
+      [2-3])
+        # unbound-control-setup for encrypt opt. 2 and 3, but not 4 "static"
+        /usr/sbin/unbound-control-setup -d $UB_VARDIR
 
-      chown -R unbound:unbound  $UNBOUND_CTLKEY_FILE $UNBOUND_CTLPEM_FILE \
-                                $UNBOUND_SRVKEY_FILE $UNBOUND_SRVPEM_FILE
+        chown -R unbound:unbound  $UB_CTLKEY_FILE $UB_CTLPEM_FILE \
+                                  $UB_SRVKEY_FILE $UB_SRVPEM_FILE
 
-      chmod 640 $UNBOUND_CTLKEY_FILE $UNBOUND_CTLPEM_FILE \
-                $UNBOUND_SRVKEY_FILE $UNBOUND_SRVPEM_FILE
+        chmod 640 $UB_CTLKEY_FILE $UB_CTLPEM_FILE \
+                  $UB_SRVKEY_FILE $UB_SRVPEM_FILE
 
-      cp -p $UNBOUND_CTLKEY_FILE /etc/unbound/unbound_control.key
-      cp -p $UNBOUND_CTLPEM_FILE /etc/unbound/unbound_control.pem
-      cp -p $UNBOUND_SRVKEY_FILE /etc/unbound/unbound_server.key
-      cp -p $UNBOUND_SRVPEM_FILE /etc/unbound/unbound_server.pem
-      ;;
+        cp -p $UB_CTLKEY_FILE /etc/unbound/unbound_control.key
+        cp -p $UB_CTLPEM_FILE /etc/unbound/unbound_control.pem
+        cp -p $UB_SRVKEY_FILE /etc/unbound/unbound_server.key
+        cp -p $UB_SRVPEM_FILE /etc/unbound/unbound_server.pem
+        ;;
     esac
   fi
+
+
+  if [ -f "$UB_TIME_FILE" ] ; then
+    # NTP is done so its like you actually had an RTC
+    UB_B_READY=1
+    UB_B_NTP_BOOT=0
+
+  elif [ "$UB_B_NTP_BOOT" -eq 0 ] ; then
+    # time is considered okay on this device (ignore /etc/hotplug/ntpd/unbound)
+    date -Is > $UB_TIME_FILE
+    UB_B_READY=0
+    UB_B_NTP_BOOT=0
+
+  else
+    # DNSSEC-TIME will not reconcile
+    UB_B_READY=0
+    UB_B_NTP_BOOT=1
+  fi
 }
 
 ##############################################################################
 
 unbound_control() {
-  if [ "$UNBOUND_D_CONTROL" -gt 1 ] ; then
-    if [ ! -f $UNBOUND_CTLKEY_FILE -o ! -f $UNBOUND_CTLPEM_FILE \
-      -o ! -f $UNBOUND_SRVKEY_FILE -o ! -f $UNBOUND_SRVPEM_FILE ] ; then
+  echo "# $UB_CTRL_CONF generated by UCI $( date -Is )" > $UB_CTRL_CONF
+
+
+  if [ "$UB_D_CONTROL" -gt 1 ] ; then
+    if [ ! -f $UB_CTLKEY_FILE -o ! -f $UB_CTLPEM_FILE \
+      -o ! -f $UB_SRVKEY_FILE -o ! -f $UB_SRVPEM_FILE ] ; then
       # Key files need to be present; if unbound-control-setup was found, then
       # they might have been made during unbound_makedir() above.
-      UNBOUND_D_CONTROL=0
+      UB_D_CONTROL=0
     fi
   fi
 
 
-  case "$UNBOUND_D_CONTROL" in
-  1)
-    {
-      # Local Host Only Unencrypted Remote Control
-      echo "remote-control:"
-      echo "  control-enable: yes"
-      echo "  control-use-cert: no"
-      echo "  control-interface: 127.0.0.1"
-      echo "  control-interface: ::1"
-      echo
-    } >> $UNBOUND_CONFFILE
-    ;;
+  case "$UB_D_CONTROL" in
+    1)
+      {
+        # Local Host Only Unencrypted Remote Control
+        echo "remote-control:"
+        echo "  control-enable: yes"
+        echo "  control-use-cert: no"
+        echo "  control-interface: 127.0.0.1"
+        echo "  control-interface: ::1"
+        echo
+      } >> $UB_CTRL_CONF
+      ;;
 
-  2)
-    {
-      # Local Host Only Encrypted Remote Control
-      echo "remote-control:"
-      echo "  control-enable: yes"
-      echo "  control-use-cert: yes"
-      echo "  control-interface: 127.0.0.1"
-      echo "  control-interface: ::1"
-      echo "  server-key-file: $UNBOUND_SRVKEY_FILE"
-      echo "  server-cert-file: $UNBOUND_SRVPEM_FILE"
-      echo "  control-key-file: $UNBOUND_CTLKEY_FILE"
-      echo "  control-cert-file: $UNBOUND_CTLPEM_FILE"
-      echo
-    } >> $UNBOUND_CONFFILE
-    ;;
+    2)
+      {
+        # Local Host Only Encrypted Remote Control
+        echo "remote-control:"
+        echo "  control-enable: yes"
+        echo "  control-use-cert: yes"
+        echo "  control-interface: 127.0.0.1"
+        echo "  control-interface: ::1"
+        echo "  server-key-file: $UB_SRVKEY_FILE"
+        echo "  server-cert-file: $UB_SRVPEM_FILE"
+        echo "  control-key-file: $UB_CTLKEY_FILE"
+        echo "  control-cert-file: $UB_CTLPEM_FILE"
+        echo
+      } >> $UB_CTRL_CONF
+      ;;
 
-  [3-4])
-    {
-      # Network Encrypted Remote Control
-      # (3) may auto setup and (4) must have static key/pem files
-      # TODO: add UCI list for interfaces to bind
-      echo "remote-control:"
-      echo "  control-enable: yes"
-      echo "  control-use-cert: yes"
-      echo "  control-interface: 0.0.0.0"
-      echo "  control-interface: ::0"
-      echo "  server-key-file: $UNBOUND_SRVKEY_FILE"
-      echo "  server-cert-file: $UNBOUND_SRVPEM_FILE"
-      echo "  control-key-file: $UNBOUND_CTLKEY_FILE"
-      echo "  control-cert-file: $UNBOUND_CTLPEM_FILE"
-      echo
-    } >> $UNBOUND_CONFFILE
-    ;;
+    [3-4])
+      {
+        # Network Encrypted Remote Control
+        # (3) may auto setup and (4) must have static key/pem files
+        # TODO: add UCI list for interfaces to bind
+        echo "remote-control:"
+        echo "  control-enable: yes"
+        echo "  control-use-cert: yes"
+        echo "  control-interface: 0.0.0.0"
+        echo "  control-interface: ::0"
+        echo "  server-key-file: $UB_SRVKEY_FILE"
+        echo "  server-cert-file: $UB_SRVPEM_FILE"
+        echo "  control-key-file: $UB_CTLKEY_FILE"
+        echo "  control-cert-file: $UB_CTLPEM_FILE"
+        echo
+      } >> $UB_CTRL_CONF
+      ;;
   esac
-
-
-  {
-    # Amend your own extended clauses here like forward zones or disable
-    # above (local, no encryption) and amend your own remote encrypted control
-    echo
-    echo "include: $UNBOUND_EXT_CONF" >> $UNBOUND_CONFFILE
-    echo
-  } >> $UNBOUND_CONFFILE
 }
 
 ##############################################################################
 
-unbound_forward() {
-  local fdomain fresolver resolvers
-  # Forward selected domains to the upstream (WAN) stub resolver. This may be
-  # faster or local pool addresses to ISP service login page. This may keep
-  # internal organization lookups, well, internal to the organization.
+unbound_zone() {
+  local cfg=$1
+  local servers_ip=""
+  local servers_host=""
+  local zone_sym zone_name zone_type zone_enabled zone_file
+  local tls_upstream fallback
+  local server port tls_port tls_index tls_suffix url_dir
 
+  if [ ! -f "$UB_ZONE_CONF" ] ; then
+    echo "# $UB_ZONE_CONF generated by UCI $( date -Is )" > $UB_ZONE_CONF
+  fi
 
-  if [ -n "$UNBOUND_LIST_FORWARD" ] ; then
-    resolvers=$( grep nameserver /tmp/resolv.conf.auto | sed "s/nameserver//g" )
 
+  config_get_bool zone_enabled  "$cfg" enabled 0
 
-    if [ -n "$resolvers" ] ; then
-      for fdomain in $UNBOUND_LIST_FORWARD ; do
-        {
-          echo "forward-zone:"
-          echo "  name: $fdomain"
-          for fresolver in $resolvers ; do
-          echo "  forward-addr: $fresolver"
-          done
-          echo
-        } >> $UNBOUND_CONFFILE
-      done
+
+  if [ "$zone_enabled" -eq 1 ] ; then
+    # these lists are built for each zone; empty to start
+    UB_LIST_ZONE_NAMES=""
+    UB_LIST_ZONE_SERVERS=""
+
+    config_get  zone_type "$cfg" zone_type ""
+    config_get  port      "$cfg" port ""
+    config_get  tls_index "$cfg" tls_index ""
+    config_get  tls_port  "$cfg" tls_port 853
+    config_get  url_dir   "$cfg" url_dir ""
+
+    config_get_bool resolv_conf   "$cfg" resolv_conf 0
+    config_get_bool fallback      "$cfg" fallback 1
+    config_get_bool tls_upstream  "$cfg" tls_upstream 0
+
+    config_list_foreach "$cfg" zone_name  bundle_zone_names
+    config_list_foreach "$cfg" server     bundle_zone_servers
+
+    # string formating for Unbound syntax
+    tls_suffix="${tls_port:+@${tls_port}${tls_index:+#${tls_index}}}"
+    [ "$fallback" -eq 0 ]     && fallback=no     || fallback=yes
+    [ "$tls_upstream" -eq 0 ] && tls_upstream=no || tls_upstream=yes
+
+
+    if [ $resolv_conf -eq 1 ] ; then
+      bundle_resolv_conf_servers
     fi
+
+  else
+    zone_type=skip
   fi
-}
 
-##############################################################################
 
-unbound_auth_root() {
-  local axfrservers="lax.xfr.dns.icann.org iad.xfr.dns.icann.org"
-  local httpserver="http://www.internic.net/domain/"
-  local authzones="root arpa in-addr.arpa ip6.arpa"
-  local server zone realzone
-  # Download or AXFR the root and arpa zones to reduce the work needed at
-  # top level of recursion. If your users will hit many ccTLD or you have
-  # tracking logs resolving many PTR, then this can speed things up.
-  # Total size of text in TMPFS could be about 5MB.
-
-
-  if [ "$UNBOUND_B_AUTH_ROOT" -gt 0 ] ; then
-    for zone in $authzones ; do
-      if [ "$zone" = "root" ] ; then
-        realzone="."
-      else
-        realzone=$zone
+  case $zone_type in
+    auth_zone)
+      if [ -n "$UB_LIST_ZONE_NAMES" \
+           -a \( -n "$url_dir" -o -n "$UB_LIST_ZONE_SERVERS" \) ] ; then
+        for zone_name in $UB_LIST_ZONE_NAMES ; do
+          if [ "$zone_name" = "." ] ; then
+            zone_sym=.
+            zone_name=root
+            zone_file=root.zone
+          else
+            zone_sym=$zone_name
+            zone_file=$zone_name.zone
+            zone_file=${zone_file//../.}
+          fi
+
+
+          {
+            # generate an auth-zone: with switches for prefetch cache
+            echo "auth-zone:"
+            echo "  name: $zone_sym"
+            for server in $UB_LIST_ZONE_SERVERS ; do
+              echo "  master: $server${port:+@${port}}"
+            done
+            if [ -n "$url_dir" ] ; then
+              echo "  url: $url_dir$zone_file"
+            fi
+            echo "  fallback-enabled: $fallback"
+            echo "  for-downstream: no"
+            echo "  for-upstream: yes"
+            echo "  zonefile: $zone_file"
+            echo
+          } >> $UB_ZONE_CONF
+        done
+      fi
+      ;;
+
+    forward_zone)
+      if [ ! -f $UB_TLS_FWD_FILE -a "$tls_upstream" = "yes" ] ; then
+        logger -p 4 -t unbound -s \
+          "Forward-zone TLS benefits from authentication in package 'ca-bundle'"
       fi
 
 
-      {
-        echo "auth-zone:"
-        echo "  name: $realzone"
-        for server in $axfrservers ; do
-          echo "  master: $server"
+      if [ -n "$UB_LIST_ZONE_NAMES" -a -n "$UB_LIST_ZONE_SERVERS" ] ; then
+        for server in $UB_LIST_ZONE_SERVERS ; do
+          if [ "$( valid_subnet_any $server )" = "not" ] ; then
+            case $server in
+              *@[0-9]*)
+                # unique Unbound option for server host name
+                servers_host="$servers_host $server"
+                ;;
+
+              *)
+                if [ "$tls_upstream" = "yes" ] ; then
+                  servers_host="$servers_host $server${tls_port:+@${tls_port}}"
+                else
+                  servers_host="$servers_host $server${port:+@${port}}"
+                fi
+            esac
+
+          else
+            case $server in
+              *[0-9]@[0-9]*)
+                # unique Unbound option for server address
+                servers_ip="$servers_ip $server"
+                ;;
+
+              *)
+                if [ "$tls_upstream" = "yes" ] ; then
+                  servers_ip="$servers_ip $server$tls_suffix"
+                else
+                  servers_ip="$servers_ip $server${port:+@${port}}"
+                fi
+            esac
+          fi
         done
-        echo "  url: $httpserver$zone.zone"
-        echo "  fallback-enabled: yes"
-        echo "  for-downstream: no"
-        echo "  for-upstream: yes"
-        echo "  zonefile: $zone.zone"
-        echo
-      } >> $UNBOUND_CONFFILE
-    done
-  fi
+
+
+        for zonename in $UB_LIST_ZONE_NAMES ; do
+          {
+            # generate a forward-zone with or without tls
+            echo "forward-zone:"
+            echo "  name: $zonename"
+            for server in $servers_host ; do
+              echo "  forward-host: $server"
+            done
+            for server in $servers_ip ; do
+              echo "  forward-addr: $server"
+            done
+            echo "  forward-first: $fallback"
+            echo "  forward-tls-upstream: $tls_upstream"
+            echo
+          } >> $UB_ZONE_CONF
+        done
+      fi
+      ;;
+
+    stub_zone)
+      if [ -n "$UB_LIST_ZONE_NAMES" -a -n "$UB_LIST_ZONE_SERVERS" ] ; then
+        for zonename in $UB_LIST_ZONE_NAMES ; do
+          {
+            # generate a stub-zone: or ensure short cut to authority NS
+            echo "stub-zone:"
+            echo "  name: $zonename"
+            for server in $UB_LIST_ZONE_SERVERS ; do
+              echo "  stub-addr: $server${port:+@${port}}"
+            done
+            echo "  stub-first: $fallback"
+            echo
+          } >> $UB_ZONE_CONF
+        done
+      fi
+      ;;
+  esac
 }
 
 ##############################################################################
 
 unbound_conf() {
-  local rt_mem rt_conn modulestring domain ifsubnet
-
-  # Make fresh conf file
-  echo > $UNBOUND_CONFFILE
-
+  local rt_mem rt_conn rt_buff modulestring domain ifsubnet nsubnet
 
   {
-    # Make fresh conf file
-    echo "# $UNBOUND_CONFFILE generated by UCI $( date )"
-    echo
+    # server: for this whole function
+    echo "# $UB_CORE_CONF generated by UCI $( date -Is )"
     echo "server:"
     echo "  username: unbound"
-    echo "  chroot: $UNBOUND_VARDIR"
-    echo "  directory: $UNBOUND_VARDIR"
-    echo "  pidfile: $UNBOUND_PIDFILE"
-    echo
+    echo "  chroot: $UB_VARDIR"
+    echo "  directory: $UB_VARDIR"
+    echo "  pidfile: $UB_PIDFILE"
+  } > $UB_CORE_CONF
+
+
+  if [ -f "$UB_TLS_FWD_FILE" ] ; then
+    # TLS cert bundle for upstream forwarder and https zone files
+    # This is loaded before drop to root, so pull from /etc/ssl
+    echo "  tls-cert-bundle: $UB_TLS_FWD_FILE" >> $UB_CORE_CONF
+  fi
+
+
+  if [ -f "$UB_RHINT_FILE" ] ; then
+    # Optional hints if found
+    echo "  root-hints: $UB_RHINT_FILE" >> $UB_CORE_CONF
+  fi
+
+
+  if [ "$UB_B_DNSSEC" -gt 0 -a -f "$UB_RKEY_FILE" ] ; then
+    {
+      echo "  auto-trust-anchor-file: $UB_RKEY_FILE"
+      echo
+    } >> $UB_CORE_CONF
+
+  else
+    echo >> $UB_CORE_CONF
+  fi
+
+
+  {
     # No threading
     echo "  num-threads: 1"
     echo "  msg-cache-slabs: 1"
@@ -691,82 +584,112 @@ unbound_conf() {
     echo "  infra-cache-slabs: 1"
     echo "  key-cache-slabs: 1"
     echo
-    # Interface Wildcard (access contol handled by "option local_service")
-    echo "  interface: 0.0.0.0"
-    echo "  interface: ::0"
-    echo "  outgoing-interface: 0.0.0.0"
-    echo "  outgoing-interface: ::0"
-    echo
     # Logging
     echo "  use-syslog: yes"
-    echo "  verbosity: 1"
     echo "  statistics-interval: 0"
     echo "  statistics-cumulative: no"
-  } >> $UNBOUND_CONFFILE
+  } >> $UB_CORE_CONF
+
+
+  if [ "$UB_D_VERBOSE" -ge 0 -a "$UB_D_VERBOSE" -le 5 ] ; then
+    echo "  verbosity: $UB_D_VERBOSE" >> $UB_CORE_CONF
+  fi
 
 
-  if [ "$UNBOUND_B_EXT_STATS" -gt 0 ] ; then
+  if [ "$UB_B_EXT_STATS" -gt 0 ] ; then
     {
       # Log More
       echo "  extended-statistics: yes"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
 
   else
     {
       # Log Less
       echo "  extended-statistics: no"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
   fi
 
 
-  case "$UNBOUND_D_PROTOCOL" in
+  case "$UB_D_PROTOCOL" in
     ip4_only)
       {
+        echo "  edns-buffer-size: $UB_N_EDNS_SIZE"
+        echo "  port: $UB_N_RX_PORT"
+        echo "  outgoing-port-permit: 10240-65535"
+        echo "  interface: 0.0.0.0"
+        echo "  interface: ::0"
+        echo "  outgoing-interface: 0.0.0.0"
         echo "  do-ip4: yes"
         echo "  do-ip6: no"
-      } >> $UNBOUND_CONFFILE
+        echo
+      } >> $UB_CORE_CONF
       ;;
 
     ip6_only)
       {
+        echo "  edns-buffer-size: $UB_N_EDNS_SIZE"
+        echo "  port: $UB_N_RX_PORT"
+        echo "  outgoing-port-permit: 10240-65535"
+        echo "  interface: 0.0.0.0"
+        echo "  interface: ::0"
+        echo "  outgoing-interface: ::0"
         echo "  do-ip4: no"
         echo "  do-ip6: yes"
-      } >> $UNBOUND_CONFFILE
+        echo
+      } >> $UB_CORE_CONF
       ;;
 
     ip6_prefer)
       {
+        echo "  edns-buffer-size: $UB_N_EDNS_SIZE"
+        echo "  port: $UB_N_RX_PORT"
+        echo "  outgoing-port-permit: 10240-65535"
+        echo "  interface: 0.0.0.0"
+        echo "  interface: ::0"
+        echo "  outgoing-interface: 0.0.0.0"
+        echo "  outgoing-interface: ::0"
         echo "  do-ip4: yes"
         echo "  do-ip6: yes"
         echo "  prefer-ip6: yes"
-      } >> $UNBOUND_CONFFILE
+        echo
+      } >> $UB_CORE_CONF
       ;;
 
     mixed)
       {
+        # Interface Wildcard (access contol handled by "option local_service")
+        echo "  edns-buffer-size: $UB_N_EDNS_SIZE"
+        echo "  port: $UB_N_RX_PORT"
+        echo "  outgoing-port-permit: 10240-65535"
+        echo "  interface: 0.0.0.0"
+        echo "  interface: ::0"
+        echo "  outgoing-interface: 0.0.0.0"
+        echo "  outgoing-interface: ::0"
         echo "  do-ip4: yes"
         echo "  do-ip6: yes"
-      } >> $UNBOUND_CONFFILE
+        echo
+      } >> $UB_CORE_CONF
       ;;
 
     *)
-      if [ ! -f "$UNBOUND_TIMEFILE" ] ; then
+      if [ "$UB_B_READY" -eq 0 ] ; then
         logger -t unbound -s "default protocol configuration"
       fi
-      ;;
-  esac
 
 
-  {
-    # protocol level tuning
-    echo "  edns-buffer-size: $UNBOUND_N_EDNS_SIZE"
-    echo "  msg-buffer-size: 8192"
-    echo "  port: $UNBOUND_N_RX_PORT"
-    echo "  outgoing-port-permit: 10240-65535"
-    echo
-  } >> $UNBOUND_CONFFILE
+      {
+        # outgoing-interface has useful defaults; incoming is localhost though
+        echo "  edns-buffer-size: $UB_N_EDNS_SIZE"
+        echo "  port: $UB_N_RX_PORT"
+        echo "  outgoing-port-permit: 10240-65535"
+        echo "  interface: 0.0.0.0"
+        echo "  interface: ::0"
+        echo
+      } >> $UB_CORE_CONF
+      ;;
+  esac
 
 
   {
@@ -778,35 +701,18 @@ unbound_conf() {
     echo "  harden-referral-path: no"
     echo "  use-caps-for-id: no"
     echo
-  } >> $UNBOUND_CONFFILE
-
-
-  if [ -f "$UNBOUND_HINTFILE" ] ; then
-    # Optional hints if found
-    echo "  root-hints: $UNBOUND_HINTFILE" >> $UNBOUND_CONFFILE
-  fi
-
+  } >> $UB_CORE_CONF
 
-  if [ "$UNBOUND_B_DNSSEC" -gt 0 -a -f "$UNBOUND_KEYFILE" ] ; then
-    {
-      echo "  auto-trust-anchor-file: $UNBOUND_KEYFILE"
-      echo
-    } >> $UNBOUND_CONFFILE
-
-  else
-    echo >> $UNBOUND_CONFFILE
-  fi
 
-
-  case "$UNBOUND_D_RESOURCE" in
+  case "$UB_D_RESOURCE" in
     # Tiny - Unbound's recommended cheap hardware config
-    tiny)   rt_mem=1  ; rt_conn=1 ;;
+    tiny)   rt_mem=1  ; rt_conn=2  ; rt_buff=1 ;;
     # Small - Half RRCACHE and open ports
-    small)  rt_mem=8  ; rt_conn=5 ;;
+    small)  rt_mem=8  ; rt_conn=10 ; rt_buff=2 ;;
     # Medium - Nearly default but with some added balancintg
-    medium) rt_mem=16 ; rt_conn=10 ;;
+    medium) rt_mem=16 ; rt_conn=20 ; rt_buff=4 ;;
     # Large - Double medium
-    large)  rt_mem=32 ; rt_conn=10 ;;
+    large)  rt_mem=32 ; rt_conn=40 ; rt_buff=4 ;;
     # Whatever unbound does
     *) rt_mem=0 ; rt_conn=0 ;;
   esac
@@ -815,6 +721,7 @@ unbound_conf() {
   if [ "$rt_mem" -gt 0 ] ; then
     {
       # Set memory sizing parameters
+      echo "  msg-buffer-size: $(($rt_buff*8192))"
       echo "  outgoing-range: $(($rt_conn*64))"
       echo "  num-queries-per-thread: $(($rt_conn*32))"
       echo "  outgoing-num-tcp: $(($rt_conn))"
@@ -825,9 +732,9 @@ unbound_conf() {
       echo "  neg-cache-size: $(($rt_mem*64))k"
       echo "  infra-cache-numhosts: $(($rt_mem*256))"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
 
-  elif [ ! -f "$UNBOUND_TIMEFILE" ] ; then
+  elif [ "$UB_B_READY" -eq 0 ] ; then
     logger -t unbound -s "default memory configuration"
   fi
 
@@ -836,10 +743,10 @@ unbound_conf() {
   modulestring="iterator"
 
 
-  if [ "$UNBOUND_B_DNSSEC" -gt 0 ] ; then
-    if [ ! -f "$UNBOUND_TIMEFILE" -a "$UNBOUND_B_NTP_BOOT" -gt 0 ] ; then
+  if [ "$UB_B_DNSSEC" -gt 0 ] ; then
+    if [ "$UB_B_NTP_BOOT" -gt 0 ] ; then
       # DNSSEC chicken and egg with getting NTP time
-      echo "  val-override-date: -1" >> $UNBOUND_CONFFILE
+      echo "  val-override-date: -1" >> $UB_CORE_CONF
     fi
 
 
@@ -847,15 +754,15 @@ unbound_conf() {
       echo "  harden-dnssec-stripped: yes"
       echo "  val-clean-additional: yes"
       echo "  ignore-cd-flag: yes"
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
 
 
     modulestring="validator $modulestring"
   fi
 
 
-  if [ "$UNBOUND_B_DNS64" -gt 0 ] ; then
-    echo "  dns64-prefix: $UNBOUND_IP_DNS64" >> $UNBOUND_CONFFILE
+  if [ "$UB_B_DNS64" -gt 0 ] ; then
+    echo "  dns64-prefix: $UB_IP_DNS64" >> $UB_CORE_CONF
 
     modulestring="dns64 $modulestring"
   fi
@@ -865,24 +772,24 @@ unbound_conf() {
     # Print final module string
     echo "  module-config: \"$modulestring\""
     echo
-  }  >> $UNBOUND_CONFFILE
+  }  >> $UB_CORE_CONF
 
 
-  case "$UNBOUND_D_RECURSION" in
+  case "$UB_D_RECURSION" in
     passive)
       {
         # Some query privacy but "strict" will break some servers
-        if [ "$UNBOUND_B_QRY_MINST" -gt 0 \
-          -a "$UNBOUND_B_QUERY_MIN" -gt 0 ] ; then
+        if [ "$UB_B_QRY_MINST" -gt 0 \
+          -a "$UB_B_QUERY_MIN" -gt 0 ] ; then
           echo "  qname-minimisation: yes"
           echo "  qname-minimisation-strict: yes"
-        elif [ "$UNBOUND_B_QUERY_MIN" -gt 0 ] ; then
+        elif [ "$UB_B_QUERY_MIN" -gt 0 ] ; then
           echo "  qname-minimisation: yes"
         else
           echo "  qname-minimisation: no"
         fi
         # Use DNSSEC to quickly understand NXDOMAIN ranges
-        if [ "$UNBOUND_B_DNSSEC" -gt 0 ] ; then
+        if [ "$UB_B_DNSSEC" -gt 0 ] ; then
           echo "  aggressive-nsec: yes"
           echo "  prefetch-key: no"
         fi
@@ -890,23 +797,23 @@ unbound_conf() {
         echo "  prefetch: no"
         echo "  target-fetch-policy: \"0 0 0 0 0\""
         echo
-      } >> $UNBOUND_CONFFILE
+      } >> $UB_CORE_CONF
       ;;
 
     aggressive)
       {
         # Some query privacy but "strict" will break some servers
-        if [ "$UNBOUND_B_QRY_MINST" -gt 0 \
-          -a "$UNBOUND_B_QUERY_MIN" -gt 0 ] ; then
+        if [ "$UB_B_QRY_MINST" -gt 0 \
+          -a "$UB_B_QUERY_MIN" -gt 0 ] ; then
           echo "  qname-minimisation: yes"
           echo "  qname-minimisation-strict: yes"
-        elif [ "$UNBOUND_B_QUERY_MIN" -gt 0 ] ; then
+        elif [ "$UB_B_QUERY_MIN" -gt 0 ] ; then
           echo "  qname-minimisation: yes"
         else
           echo "  qname-minimisation: no"
         fi
         # Use DNSSEC to quickly understand NXDOMAIN ranges
-        if [ "$UNBOUND_B_DNSSEC" -gt 0 ] ; then
+        if [ "$UB_B_DNSSEC" -gt 0 ] ; then
           echo "  aggressive-nsec: yes"
           echo "  prefetch-key: yes"
         fi
@@ -914,11 +821,11 @@ unbound_conf() {
         echo "  prefetch: yes"
         echo "  target-fetch-policy: \"3 2 1 0 0\""
         echo
-      } >> $UNBOUND_CONFFILE
+      } >> $UB_CORE_CONF
       ;;
 
     *)
-      if [ ! -f "$UNBOUND_TIMEFILE" ] ; then
+      if [ "$UB_B_READY" -eq 0 ] ; then
         logger -t unbound -s "default recursion configuration"
       fi
       ;;
@@ -926,28 +833,28 @@ unbound_conf() {
 
 
   {
-    # Reload records more than 10 hours old
+    # Reload records more than 20 hours old
     # DNSSEC 5 minute bogus cool down before retry
     # Adaptive infrastructure info kept for 15 minutes
-    echo "  cache-min-ttl: $UNBOUND_TTL_MIN"
-    echo "  cache-max-ttl: 36000"
+    echo "  cache-min-ttl: $UB_TTL_MIN"
+    echo "  cache-max-ttl: 72000"
     echo "  val-bogus-ttl: 300"
     echo "  infra-host-ttl: 900"
     echo
-  } >> $UNBOUND_CONFFILE
+  } >> $UB_CORE_CONF
 
 
-  if [ "$UNBOUND_B_HIDE_BIND" -gt 0 ] ; then
+  if [ "$UB_B_HIDE_BIND" -gt 0 ] ; then
     {
       # Block server id and version DNS TXT records
       echo "  hide-identity: yes"
       echo "  hide-version: yes"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
   fi
 
 
-  if [ "$UNBOUND_D_PRIV_BLCK" -gt 0 ] ; then
+  if [ "$UB_D_PRIV_BLCK" -gt 0 ] ; then
     {
       # Remove _upstream_ or global reponses with private addresses.
       # Unbounds own "local zone" and "forward zone" may still use these.
@@ -960,236 +867,307 @@ unbound_conf() {
       echo "  private-address: fc00::/7"
       echo "  private-address: fe80::/10"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
   fi
 
 
-  if  [ -n "$UNBOUND_LIST_PRV_IP6GLA" -a "$UNBOUND_D_PRIV_BLCK" -gt 1 ] ; then
-    for ifsubnet in $UNBOUND_LIST_PRV_IP6GLA ; do
-      # Remove global DNS responses with your local network IP6 GLA
-      echo "  private-address: $ifsubnet" >> $UNBOUND_CONFFILE
-    done
-
-
-    echo >> $UNBOUND_CONFFILE
+  if [ -n "$UB_LIST_NETW_LAN" -a "$UB_D_PRIV_BLCK" -gt 1 ] ; then
+    {
+      for ifsubnet in $UB_LIST_NETW_LAN ; do
+        case $ifsubnet in
+          *@[1-9][0-9a-f][0-9a-f][0-9a-f]:*:[0-9a-f]*)
+            # Remove global DNS responses with your local network IP6 GLA
+            echo "  private-address: ${ifsubnet#*@}"
+            ;;
+        esac
+      done
+      echo
+    } >> $UB_CORE_CONF
   fi
 
 
-  if [ "$UNBOUND_B_LOCL_BLCK" -gt 0 ] ; then
+  if [ "$UB_B_LOCL_BLCK" -gt 0 ] ; then
     {
       # Remove DNS reponses from upstream with loopback IP
       # Black hole DNS method for ad blocking, so consider...
       echo "  private-address: 127.0.0.0/8"
       echo "  private-address: ::1/128"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
   fi
 
 
-  if  [ -n "$UNBOUND_LIST_INSECURE" ] ; then
-    for domain in $UNBOUND_LIST_INSECURE ; do
-      # Except and accept domains without (DNSSEC); work around broken domains
-      echo "  domain-insecure: $domain" >> $UNBOUND_CONFFILE
-    done
-
-
-    echo >> $UNBOUND_CONFFILE
+  if  [ -n "$UB_LIST_INSECURE" ] ; then
+    {
+      for domain in $UB_LIST_INSECURE ; do
+        # Except and accept domains without (DNSSEC); work around broken domains
+        echo "  domain-insecure: $domain"
+      done
+      echo
+    } >> $UB_CORE_CONF
   fi
-}
-
-##############################################################################
-
-unbound_access() {
-  # TODO: Unbound 1.6.0 added "tags" and "views", so we can add tags to
-  # each access-control IP block, and then divert access.
-  # -- "guest" WIFI will not be allowed to see local zone data
-  # -- "child" LAN can black whole a list of domains to http~deadpixel
-
-
-  if [ "$UNBOUND_B_LOCL_SERV" -gt 0 ] ; then
-    # Only respond to queries from which this device has an interface.
-    # Prevent DNS amplification attacks by not responding to the universe.
-    config_load network
-    config_foreach create_access_control interface
 
 
+  if [ "$UB_B_LOCL_SERV" -gt 0 -a -n "$UB_LIST_NETW_ALL" ] ; then
     {
+      for ifsubnet in $UB_LIST_NETW_ALL ; do
+        # Only respond to queries from subnets which have an interface.
+        # Prevent DNS amplification attacks by not responding to the universe.
+        echo "  access-control: ${ifsubnet#*@} allow"
+      done
       echo "  access-control: 127.0.0.0/8 allow"
       echo "  access-control: ::1/128 allow"
       echo "  access-control: fe80::/10 allow"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
 
   else
     {
       echo "  access-control: 0.0.0.0/0 allow"
       echo "  access-control: ::0/0 allow"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_CORE_CONF
   fi
-
-
-  {
-    # Amend your own "server:" stuff here
-    echo "  include: $UNBOUND_SRV_CONF"
-    echo
-  } >> $UNBOUND_CONFFILE
 }
 
 ##############################################################################
 
-unbound_adblock() {
-  # TODO: Unbound 1.6.0 added "tags" and "views"; lets work with adblock team
-  local adb_enabled adb_file
-
+unbound_hostname() {
+  local ifsubnet ifarpa ifaddr ifname iffqdn
+  local ulaprefix hostfqdn name names namerec ptrrec
+  local zonetype=0
 
-  if [ ! -x /usr/bin/adblock.sh -o ! -x /etc/init.d/adblock ] ; then
-    adb_enabled=0
-  else
-    /etc/init.d/adblock enabled && adb_enabled=1 || adb_enabled=0
-  fi
+  echo "# $UB_HOST_CONF generated by UCI $( date -Is )" > $UB_HOST_CONF
 
 
-  if [ "$adb_enabled" -gt 0 ] ; then
+  if [ "$UB_D_DHCP_LINK" = "dnsmasq" ] ; then
     {
-      # Pull in your selected openwrt/pacakges/net/adblock generated lists
-      for adb_file in $UNBOUND_VARDIR/adb_list.* ; do
-        echo "  include: $adb_file"
-      done
+      echo "# Local zone is handled by dnsmasq"
       echo
-    } >> $UNBOUND_CONFFILE
-  fi
-}
+    } >> $UB_HOST_CONF
 
-##############################################################################
+  elif [ -n "$UB_TXT_DOMAIN" \
+         -a \( "$UB_D_WAN_FQDN" -gt 0 -o "$UB_D_LAN_FQDN" -gt 0 \) ] ; then
+    case "$UB_D_DOMAIN_TYPE" in
+      deny|inform_deny|refuse|static)
+        {
+          # type static means only this router has your domain
+          echo "  domain-insecure: $UB_TXT_DOMAIN"
+          echo "  private-domain: $UB_TXT_DOMAIN"
+          echo "  local-zone: $UB_TXT_DOMAIN $UB_D_DOMAIN_TYPE"
+          echo "  local-data: \"$UB_TXT_DOMAIN. $UB_XSOA\""
+          echo "  local-data: \"$UB_TXT_DOMAIN. $UB_XNS\""
+          echo "  local-data: '$UB_TXT_DOMAIN. $UB_XTXT'"
+          echo
+          # avoid upstream involvement in RFC6762
+          echo "  domain-insecure: local"
+          echo "  private-domain: local"
+          echo "  local-zone: local $UB_D_DOMAIN_TYPE"
+          echo "  local-data: \"local. $UB_XSOA\""
+          echo "  local-data: \"local. $UB_XNS\""
+          echo "  local-data: 'local. $UB_LTXT'"
+          echo
+        } >> $UB_HOST_CONF
+        zonetype=2
+        ;;
 
-unbound_hostname() {
-  local ifsubnet ifarpa
+      transparent|typetransparent)
+        {
+          # transparent will permit forward-zone: or stub-zone: clauses
+          echo "  private-domain: $UB_TXT_DOMAIN"
+          echo "  local-zone: $UB_TXT_DOMAIN $UB_D_DOMAIN_TYPE"
+          echo
+        } >> $UB_HOST_CONF
+        zonetype=1
+        ;;
+    esac
 
 
-  if [ -n "$UNBOUND_TXT_DOMAIN" ] ; then
     {
-      # Hostname as TLD works, but not transparent through recursion
-      echo "  domain-insecure: $UNBOUND_TXT_HOSTNAME"
-      echo "  private-domain: $UNBOUND_TXT_HOSTNAME"
-      echo "  local-zone: $UNBOUND_TXT_HOSTNAME static"
-      echo "  local-data: \"$UNBOUND_TXT_HOSTNAME. $UNBOUND_XSOA\""
-      echo "  local-data: \"$UNBOUND_TXT_HOSTNAME. $UNBOUND_XNS\""
+      # Hostname as TLD works, but not transparent through recursion (singular)
+      echo "  domain-insecure: $UB_TXT_HOSTNAME"
+      echo "  private-domain: $UB_TXT_HOSTNAME"
+      echo "  local-zone: $UB_TXT_HOSTNAME static"
+      echo "  local-data: \"$UB_TXT_HOSTNAME. $UB_XSOA\""
+      echo "  local-data: \"$UB_TXT_HOSTNAME. $UB_XNS\""
+      echo "  local-data: '$UB_TXT_HOSTNAME. $UB_XTXT'"
       echo
-    } >> $UNBOUND_CONFFILE
+    } >> $UB_HOST_CONF
 
 
-    case "$UNBOUND_D_DOMAIN_TYPE" in
-    deny|inform_deny|refuse|static)
-      if  [ -n "$UNBOUND_LIST_PRV_IP6GLA" \
-            -a "$UNBOUND_D_PRIV_BLCK" -gt 1 ] ; then
-        for ifsubnet in $UNBOUND_LIST_PRV_IP6GLA ; do
-          ifarpa=$( domain_ptr_any "$ifsubnet" )
+    if [ -n "$UB_LIST_NETW_WAN" ] ; then
+      for ifsubnet in $UB_LIST_NETW_WAN ; do
+        ifaddr=${ifsubnet#*@}
+        ifaddr=${ifaddr%/*}
+        ifarpa=$( host_ptr_any "$ifaddr" )
 
 
-          if [ -n "$ifarpa" ] ; then
+        if [ -n "$ifarpa" ] ; then
+          if [ "$UB_D_WAN_FQDN" -gt 0 ] ; then
             {
-              # Do NOT forward queries with your GLA ip6.arpa
+              # Create a static zone for WAN host record only (singular)
               echo "  domain-insecure: $ifarpa"
-              echo "  local-zone: $ifarpa $UNBOUND_D_DOMAIN_TYPE"
-              echo "  local-data: \"$ifarpa. $UNBOUND_XSOA\""
-              echo "  local-data: \"$ifarpa. $UNBOUND_XNS\""
+              echo "  private-address: $ifaddr"
+              echo "  local-zone: $ifarpa static"
+              echo "  local-data: \"$ifarpa. $UB_XSOA\""
+              echo "  local-data: \"$ifarpa. $UB_XNS\""
+              echo "  local-data: '$ifarpa. $UB_MTXT'"
+              echo
+            } >> $UB_HOST_CONF
+
+          elif [ "$zonetype" -gt 0 ] ; then
+            {
+              echo "  local-zone: $ifarpa transparent"
               echo
-            } >> $UNBOUND_CONFFILE
+            } >> $UB_HOST_CONF
           fi
-        done
-      fi
+        fi
+      done
+    fi
 
 
-      if  [ -n "$UNBOUND_LIST_LAN_NET" \
-            -a "$UNBOUND_D_PRIV_BLCK" -gt 0 ] ; then
-        for ifsubnet in $UNBOUND_LIST_LAN_NET ; do
-          ifarpa=$( domain_ptr_any "$ifsubnet" )
+    if  [ -n "$UB_LIST_NETW_LAN" ] ; then
+      for ifsubnet in $UB_LIST_NETW_LAN ; do
+        ifarpa=$( domain_ptr_any "${ifsubnet#*@}" )
 
 
-          if [ -n "$ifarpa" ] ; then
+        if [ -n "$ifarpa" ] ; then
+          if [ "$zonetype" -eq 2 ] ; then
             {
-              # Do NOT forward queries with your ULA ip6.arpa or in-addr.arpa
+              # Do NOT forward queries with your ip6.arpa or in-addr.arpa
               echo "  domain-insecure: $ifarpa"
-              echo "  local-zone: $ifarpa $UNBOUND_D_DOMAIN_TYPE"
-              echo "  local-data: \"$ifarpa. $UNBOUND_XSOA\""
-              echo "  local-data: \"$ifarpa. $UNBOUND_XNS\""
+              echo "  local-zone: $ifarpa static"
+              echo "  local-data: \"$ifarpa. $UB_XSOA\""
+              echo "  local-data: \"$ifarpa. $UB_XNS\""
+              echo "  local-data: '$ifarpa. $UB_XTXT'"
               echo
-            } >> $UNBOUND_CONFFILE
-          fi
-        done
-      fi
+            } >> $UB_HOST_CONF
 
+          elif [ "$zonetype" -eq 1 -a "$UB_D_PRIV_BLCK" -eq 0 ] ; then
+            {
+              echo "  local-zone: $ifarpa transparent"
+              echo
+            } >> $UB_HOST_CONF
+          fi
+        fi
+      done
+    fi
 
-      {
-        # avoid upstream involvement in RFC6762
-        echo "  domain-insecure: local"
-        echo "  private-domain: local"
-        echo "  local-zone: local $UNBOUND_D_DOMAIN_TYPE"
-        echo "  local-data: \"local. $UNBOUND_XSOA\""
-        echo "  local-data: \"local. $UNBOUND_XNS\""
-        echo "  local-data: \"local. 3600 IN TXT RFC6762\""
-        echo
-        # type static means only this router has your domain
-        # type transparent will permit forward-zone: or stub-zone: clauses
-        echo "  domain-insecure: $UNBOUND_TXT_DOMAIN"
-        echo "  private-domain: $UNBOUND_TXT_DOMAIN"
-        echo "  local-zone: $UNBOUND_TXT_DOMAIN $UNBOUND_D_DOMAIN_TYPE"
-        echo "  local-data: \"$UNBOUND_TXT_DOMAIN. $UNBOUND_XSOA\""
-        echo "  local-data: \"$UNBOUND_TXT_DOMAIN. $UNBOUND_XNS\""
-        echo
-      } >> $UNBOUND_CONFFILE
-      ;;
 
-    *)
-      # likely transparent domain with fordward-zone: clause to next router
-      echo "  domain-insecure: $UNBOUND_TXT_DOMAIN"
-      echo "  private-domain: $UNBOUND_TXT_DOMAIN"
-      echo "  local-zone: $UNBOUND_TXT_DOMAIN $UNBOUND_D_DOMAIN_TYPE"
-      echo
-      ;;
-    esac
+    ulaprefix=$( uci_get network.@globals[0].ula_prefix )
+    ulaprefix=${ulaprefix%%:/*}
+    hostfqdn="$UB_TXT_HOSTNAME.$UB_TXT_DOMAIN"
 
 
-    if [ "$UNBOUND_D_LAN_FQDN" -gt 0 -o "$UNBOUND_D_WAN_FQDN" -gt 0 ] ; then
-      config_load dhcp
-      config_foreach create_interface_dns dhcp
+    if [ -z "$ulaprefix" ] ; then
+      # Nonsense so this option isn't globbed below
+      ulaprefix="fdno:such:addr::"
     fi
 
 
-    if [ -f "$UNBOUND_DHCP_CONF" ] ; then
-      {
-        # Seed DHCP records because dhcp scripts trigger externally
-        # Incremental Unbound restarts may drop unbound-control add records
-        echo "  include: $UNBOUND_DHCP_CONF"
-        echo
-      } >> $UNBOUND_CONFFILE
+    if [ "$UB_LIST_NETW_LAN" -a "$UB_D_LAN_FQDN" -gt 0 ] ; then
+      for ifsubnet in $UB_LIST_NETW_LAN ; do
+        ifaddr=${ifsubnet#*@}
+        ifaddr=${ifaddr%/*}
+        ifname=${ifsubnet%@*}
+        iffqdn="$ifname.$hostfqdn"
+
+
+        if [ "$UB_D_LAN_FQDN" -eq 4 ] ; then
+          names="$iffqdn $hostfqdn $UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $iffqdn\""
+          echo "$ptrrec" >> $UB_HOST_CONF
+
+        elif [ "$UB_D_LAN_FQDN" -eq 3 ] ; then
+          names="$hostfqdn $UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $hostfqdn\""
+          echo "$ptrrec" >> $UB_HOST_CONF
+
+        else
+          names="$UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $UB_TXT_HOSTNAME\""
+          echo "$ptrrec" >> $UB_HOST_CONF
+        fi
+
+
+        for name in $names ; do
+          case $ifaddr in
+            "${ulaprefix}"*)
+              # IP6 ULA only is assigned for OPTION 1
+              namerec="  local-data: \"$name. 300 IN AAAA $ifaddr\""
+              echo "$namerec" >> $UB_HOST_CONF
+              ;;
+
+            [1-9]*.*[0-9])
+              namerec="  local-data: \"$name. 300 IN A $ifaddr\""
+              echo "$namerec" >> $UB_HOST_CONF
+              ;;
+
+            *)
+              if [ "$UB_D_LAN_FQDN" -gt 1 ] ; then
+                # IP6 GLA is assigned for higher options
+                namerec="  local-data: \"$name. 300 IN AAAA $ifaddr\""
+                echo "$namerec" >> $UB_HOST_CONF
+              fi
+              ;;
+          esac
+        done
+        echo >> $UB_HOST_CONF
+      done
     fi
-  fi
-}
 
-##############################################################################
 
-unbound_records() {
-  if [ "$UNBOUND_D_EXTRA_DNS" -gt 0 ] ; then
-    # Parasite from the uci.dhcp.domain clauses
-    config_load dhcp
-    config_foreach create_host_record domain
-  fi
+    if [ -n "$UB_LIST_NETW_WAN" -a "$UB_D_WAN_FQDN" -gt 0 ] ; then
+      for ifsubnet in $UB_LIST_NETW_WAN ; do
+        ifaddr=${ifsubnet#*@}
+        ifaddr=${ifaddr%/*}
+        ifname=${ifsubnet%@*}
+        iffqdn="$ifname.$hostfqdn"
 
 
-  if [ "$UNBOUND_D_EXTRA_DNS" -gt 1 ] ; then
-    config_foreach create_srv_record srvhost
-    config_foreach create_mx_record mxhost
-  fi
+        if [ "$UB_D_WAN_FQDN" -eq 4 ] ; then
+          names="$iffqdn $hostfqdn $UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $iffqdn\""
+          echo "$ptrrec" >> $UB_HOST_CONF
 
+        elif [ "$UB_D_WAN_FQDN" -eq 3 ] ; then
+          names="$hostfqdn $UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $hostfqdn\""
+          echo "$ptrrec" >> $UB_HOST_CONF
 
-  if [ "$UNBOUND_D_EXTRA_DNS" -gt 2 ] ; then
-    config_foreach create_cname_record cname
-  fi
+        else
+          names="$UB_TXT_HOSTNAME"
+          ptrrec="  local-data-ptr: \"$ifaddr 300 $UB_TXT_HOSTNAME\""
+          echo "$ptrrec" >> $UB_HOST_CONF
+        fi
 
 
-  echo >> $UNBOUND_CONFFILE
+        for name in $names ; do
+          case $ifaddr in
+            "${ulaprefix}"*)
+              # IP6 ULA only is assigned for OPTION 1
+              namerec="  local-data: \"$name. 300 IN AAAA $ifaddr\""
+              echo "$namerec" >> $UB_HOST_CONF
+              ;;
+
+            [1-9]*.*[0-9])
+              namerec="  local-data: \"$name. 300 IN A $ifaddr\""
+              echo "$namerec" >> $UB_HOST_CONF
+              ;;
+
+            *)
+              if [ "$UB_D_WAN_FQDN" -gt 1 ] ; then
+                # IP6 GLA is assigned for higher options
+                namerec="  local-data: \"$name. 300 IN AAAA $ifaddr\""
+                echo "$namerec" >> $UB_HOST_CONF
+              fi
+            ;;
+          esac
+        done
+        echo >> $UB_HOST_CONF
+      done
+    fi
+  fi # end if uci valid
 }
 
 ##############################################################################
@@ -1199,120 +1177,214 @@ unbound_uci() {
   local dnsmasqpath hostnm
 
   hostnm=$( uci_get system.@system[0].hostname | awk '{print tolower($0)}' )
-  UNBOUND_TXT_HOSTNAME=${hostnm:-thisrouter}
+  UB_TXT_HOSTNAME=${hostnm:-thisrouter}
 
-  config_get_bool UNBOUND_B_SLAAC6_MAC "$cfg" dhcp4_slaac6 0
-  config_get_bool UNBOUND_B_DNS64      "$cfg" dns64 0
-  config_get_bool UNBOUND_B_EXT_STATS  "$cfg" extended_stats 0
-  config_get_bool UNBOUND_B_HIDE_BIND  "$cfg" hide_binddata 1
-  config_get_bool UNBOUND_B_LOCL_SERV  "$cfg" localservice 1
-  config_get_bool UNBOUND_B_MAN_CONF   "$cfg" manual_conf 0
-  config_get_bool UNBOUND_B_QUERY_MIN  "$cfg" query_minimize 0
-  config_get_bool UNBOUND_B_QRY_MINST  "$cfg" query_min_strict 0
-  config_get_bool UNBOUND_B_AUTH_ROOT  "$cfg" prefetch_root 0
-  config_get_bool UNBOUND_B_LOCL_BLCK  "$cfg" rebind_localhost 0
-  config_get_bool UNBOUND_B_DNSSEC     "$cfg" validator 0
-  config_get_bool UNBOUND_B_NTP_BOOT   "$cfg" validator_ntp 1
+  config_get_bool UB_B_SLAAC6_MAC "$cfg" dhcp4_slaac6 0
+  config_get_bool UB_B_DNS64      "$cfg" dns64 0
+  config_get_bool UB_B_EXT_STATS  "$cfg" extended_stats 0
+  config_get_bool UB_B_HIDE_BIND  "$cfg" hide_binddata 1
+  config_get_bool UB_B_LOCL_SERV  "$cfg" localservice 1
+  config_get_bool UB_B_MAN_CONF   "$cfg" manual_conf 0
+  config_get_bool UB_B_QUERY_MIN  "$cfg" query_minimize 0
+  config_get_bool UB_B_QRY_MINST  "$cfg" query_min_strict 0
+  config_get_bool UB_B_AUTH_ROOT  "$cfg" prefetch_root 0
+  config_get_bool UB_B_LOCL_BLCK  "$cfg" rebind_localhost 0
+  config_get_bool UB_B_DNSSEC     "$cfg" validator 0
+  config_get_bool UB_B_NTP_BOOT   "$cfg" validator_ntp 1
 
-  config_get UNBOUND_IP_DNS64    "$cfg" dns64_prefix "64:ff9b::/96"
+  config_get UB_IP_DNS64    "$cfg" dns64_prefix "64:ff9b::/96"
 
-  config_get UNBOUND_N_EDNS_SIZE "$cfg" edns_size 1280
-  config_get UNBOUND_N_RX_PORT   "$cfg" listen_port 53
-  config_get UNBOUND_N_ROOT_AGE  "$cfg" root_age 9
+  config_get UB_N_EDNS_SIZE "$cfg" edns_size 1280
+  config_get UB_N_RX_PORT   "$cfg" listen_port 53
+  config_get UB_N_ROOT_AGE  "$cfg" root_age 9
 
-  config_get UNBOUND_D_CONTROL     "$cfg" unbound_control 0
-  config_get UNBOUND_D_DOMAIN_TYPE "$cfg" domain_type static
-  config_get UNBOUND_D_DHCP_LINK   "$cfg" dhcp_link none
-  config_get UNBOUND_D_EXTRA_DNS   "$cfg" add_extra_dns 0
-  config_get UNBOUND_D_LAN_FQDN    "$cfg" add_local_fqdn 0
-  config_get UNBOUND_D_PRIV_BLCK   "$cfg" rebind_protection 1
-  config_get UNBOUND_D_PROTOCOL    "$cfg" protocol mixed
-  config_get UNBOUND_D_RECURSION   "$cfg" recursion passive
-  config_get UNBOUND_D_RESOURCE    "$cfg" resource small
-  config_get UNBOUND_D_WAN_FQDN    "$cfg" add_wan_fqdn 0
+  config_get UB_D_CONTROL     "$cfg" unbound_control 0
+  config_get UB_D_DOMAIN_TYPE "$cfg" domain_type static
+  config_get UB_D_DHCP_LINK   "$cfg" dhcp_link none
+  config_get UB_D_EXTRA_DNS   "$cfg" add_extra_dns 0
+  config_get UB_D_LAN_FQDN    "$cfg" add_local_fqdn 0
+  config_get UB_D_PRIV_BLCK   "$cfg" rebind_protection 1
+  config_get UB_D_PROTOCOL    "$cfg" protocol mixed
+  config_get UB_D_RECURSION   "$cfg" recursion passive
+  config_get UB_D_RESOURCE    "$cfg" resource small
+  config_get UB_D_VERBOSE     "$cfg" verbosity 1
+  config_get UB_D_WAN_FQDN    "$cfg" add_wan_fqdn 0
 
-  config_get UNBOUND_TTL_MIN     "$cfg" ttl_min 120
-  config_get UNBOUND_TXT_DOMAIN  "$cfg" domain lan
+  config_get UB_TTL_MIN     "$cfg" ttl_min 120
+  config_get UB_TXT_DOMAIN  "$cfg" domain lan
 
-  config_list_foreach "$cfg" "domain_forward"   bundle_domain_forward
-  config_list_foreach "$cfg" "domain_insecure"  bundle_domain_insecure
-  config_list_foreach "$cfg" "rebind_interface" bundle_private_interface
+  config_list_foreach "$cfg" domain_insecure  bundle_domain_insecure
 
-  UNBOUND_LIST_DOMAINS="nowhere $UNBOUND_TXT_DOMAIN"
 
-  if [ "$UNBOUND_D_DHCP_LINK" = "none" ] ; then
-    config_get_bool UNBOUND_B_DNSMASQ   "$cfg" dnsmasq_link_dns 0
+  if [ "$UB_D_DHCP_LINK" = "none" ] ; then
+    config_get_bool UB_B_DNSMASQ   "$cfg" dnsmasq_link_dns 0
 
 
-    if [ "$UNBOUND_B_DNSMASQ" -gt 0 ] ; then
-      UNBOUND_D_DHCP_LINK=dnsmasq
+    if [ "$UB_B_DNSMASQ" -gt 0 ] ; then
+      UB_D_DHCP_LINK=dnsmasq
 
 
-      if [ ! -f "$UNBOUND_TIMEFILE" ] ; then
+      if [ "$UB_B_READY" -eq 0 ] ; then
         logger -t unbound -s "Please use 'dhcp_link' selector instead"
       fi
     fi
   fi
 
 
-  if [ "$UNBOUND_D_DHCP_LINK" = "dnsmasq" ] ; then
+  if [ "$UB_D_DHCP_LINK" = "dnsmasq" ] ; then
     if [ ! -x /usr/sbin/dnsmasq -o ! -x /etc/init.d/dnsmasq ] ; then
-      UNBOUND_D_DHCP_LINK=none
+      UB_D_DHCP_LINK=none
     else
-      /etc/init.d/dnsmasq enabled || UNBOUND_D_DHCP_LINK=none
+      /etc/init.d/dnsmasq enabled || UB_D_DHCP_LINK=none
     fi
 
 
-    if [ "$UNBOUND_D_DHCP_LINK" = "none" -a ! -f "$UNBOUND_TIMEFILE" ] ; then
+    if [ "$UB_B_READY" -eq 0 -a "$UB_D_DHCP_LINK" = "none" ] ; then
       logger -t unbound -s "cannot forward to dnsmasq"
     fi
   fi
 
 
-  if [ "$UNBOUND_D_DHCP_LINK" = "odhcpd" ] ; then
+  if [ "$UB_D_DHCP_LINK" = "odhcpd" ] ; then
     if [ ! -x /usr/sbin/odhcpd -o ! -x /etc/init.d/odhcpd ] ; then
-      UNBOUND_D_DHCP_LINK=none
+      UB_D_DHCP_LINK=none
     else
-      /etc/init.d/odhcpd enabled || UNBOUND_D_DHCP_LINK=none
+      /etc/init.d/odhcpd enabled || UB_D_DHCP_LINK=none
     fi
 
 
-    if [ "$UNBOUND_D_DHCP_LINK" = "none" -a ! -f "$UNBOUND_TIMEFILE" ] ; then
+    if [ "$UB_B_READY" -eq 0 -a "$UB_D_DHCP_LINK" = "none" ] ; then
       logger -t unbound -s "cannot receive records from odhcpd"
     fi
   fi
 
 
-  if [ "$UNBOUND_N_EDNS_SIZE" -lt 512 \
-    -o 4096 -lt "$UNBOUND_N_EDNS_SIZE" ] ; then
+  if [ "$UB_N_EDNS_SIZE" -lt 512 \
+    -o 4096 -lt "$UB_N_EDNS_SIZE" ] ; then
     logger -t unbound -s "edns_size exceeds range, using default"
-    UNBOUND_N_EDNS_SIZE=1280
+    UB_N_EDNS_SIZE=1280
   fi
 
 
-  if [ "$UNBOUND_N_RX_PORT" -ne 53 ] \
-  && [ "$UNBOUND_N_RX_PORT" -lt 1024 -o 10240 -lt "$UNBOUND_N_RX_PORT" ] ; then
+  if [ "$UB_N_RX_PORT" -ne 53 \
+      -a \( "$UB_N_RX_PORT" -lt 1024 -o 10240 -lt "$UB_N_RX_PORT" \) ] ; then
     logger -t unbound -s "privileged port or in 5 digits, using default"
-    UNBOUND_N_RX_PORT=53
+    UB_N_RX_PORT=53
   fi
 
 
-  if [ "$UNBOUND_TTL_MIN" -gt 1800 ] ; then
+  if [ "$UB_TTL_MIN" -gt 1800 ] ; then
     logger -t unbound -s "ttl_min could have had awful side effects, using 300"
-    UNBOUND_TTL_MIN=300
+    UB_TTL_MIN=300
   fi
 }
 
 ##############################################################################
 
-unbound_resolv_setup() {
-  if [ "$UNBOUND_N_RX_PORT" != "53" ] ; then
-    return
+unbound_include() {
+  local adb_enabled
+  local adb_files=$( ls $UB_VARDIR/adb_list.* 2>/dev/null )
+
+  echo "# $UB_TOTAL_CONF generated by UCI $( date -Is )" > $UB_TOTAL_CONF
+
+
+  if [ -f "$UB_CORE_CONF" ] ; then
+    # Yes this all looks busy, but it is in TMPFS. Working on separate files
+    # and piecing together is easier. UCI order is less constrained.
+    cat $UB_CORE_CONF >> $UB_TOTAL_CONF
+    rm  $UB_CORE_CONF
+  fi
+
+
+  if [ -f "$UB_HOST_CONF" ] ; then
+    # UCI definitions of local host or local subnet
+    cat $UB_HOST_CONF >> $UB_TOTAL_CONF
+    rm  $UB_HOST_CONF
+  fi
+
+
+  if [ -f $UB_SRVMASQ_CONF ] ; then
+    # UCI found link to dnsmasq
+    cat $UB_SRVMASQ_CONF >> $UB_TOTAL_CONF
+    rm  $UB_SRVMASQ_CONF
+  fi
+
+
+  if [ -f "$UB_DHCP_CONF" ] ; then
+    {
+      # Seed DHCP records because dhcp scripts trigger externally
+      # Incremental Unbound restarts may drop unbound-control records
+      echo "include: $UB_DHCP_CONF"
+      echo
+    }>> $UB_TOTAL_CONF
+  fi
+
+
+  if [ -z "$adb_files" \
+       -o  ! -x /usr/bin/adblock.sh -o ! -x /etc/init.d/adblock ] ; then
+    adb_enabled=0
+
+  elif /etc/init.d/adblock enabled ; then
+    adb_enabled=1
+    {
+      # Pull in your selected openwrt/pacakges/net/adblock generated lists
+      echo "include: $UB_VARDIR/adb_list.*"
+      echo
+    } >> $UB_TOTAL_CONF
+
+  else
+    adb_enabled=0
+  fi
+
+
+  if [ -f $UB_SRV_CONF ] ; then
+    {
+      # Pull your own "server:" options here
+      echo "include: $UB_SRV_CONF"
+      echo
+    }>> $UB_TOTAL_CONF
+  fi
+
+
+  if [ -f "$UB_ZONE_CONF" ] ; then
+    # UCI defined forward, stub, and auth zones
+    cat $UB_ZONE_CONF >> $UB_TOTAL_CONF
+    rm  $UB_ZONE_CONF
+  fi
+
+
+  if [ -f "$UB_CTRL_CONF" ] ; then
+    # UCI defined control application connection
+    cat $UB_CTRL_CONF >> $UB_TOTAL_CONF
+    rm  $UB_CTRL_CONF
+  fi
+
+
+  if [ -f "$UB_EXTMASQ_CONF" ] ; then
+    # UCI found link to dnsmasq
+    cat $UB_EXTMASQ_CONF >> $UB_TOTAL_CONF
+    rm  $UB_EXTMASQ_CONF
   fi
 
 
-  if [ -x /etc/init.d/dnsmasq ] && /etc/init.d/dnsmasq enabled \
-  && nslookup localhost 127.0.0.1#53 >/dev/null 2>&1 ; then
+  if [ -f "$UB_EXT_CONF" ] ; then
+    {
+      # Pull your own extend feature clauses here
+      echo "include: $UB_EXT_CONF"
+      echo
+    } >> $UB_TOTAL_CONF
+  fi
+}
+
+##############################################################################
+
+resolv_setup() {
+  if [ "$UB_N_RX_PORT" != "53" ] ; then
+    return
+
+  elif [ -x /etc/init.d/dnsmasq ] \
+    && /etc/init.d/dnsmasq enabled \
+    && nslookup localhost 127.0.0.1#53 >/dev/null 2>&1 ; then
     # unbound is configured for port 53, but dnsmasq is enabled and a resolver
     #   listens on localhost:53, lets assume dnsmasq manages the resolver file.
     # TODO:
@@ -1327,61 +1399,44 @@ unbound_resolv_setup() {
   rm -f /tmp/resolv.conf
 
   {
-    echo "# /tmp/resolv.conf generated by Unbound UCI $( date )"
+    echo "# /tmp/resolv.conf generated by Unbound UCI $( date -Is )"
     echo "nameserver 127.0.0.1"
     echo "nameserver ::1"
-    echo "search $UNBOUND_TXT_DOMAIN."
+    echo "search $UB_TXT_DOMAIN."
   } > /tmp/resolv.conf
 }
 
 ##############################################################################
 
-unbound_resolv_teardown() {
-  case $( cat /tmp/resolv.conf ) in
-  *"generated by Unbound UCI"*)
-    # our resolver file, reset to auto resolver file.
-    rm -f /tmp/resolv.conf
-    ln -s /tmp/resolv.conf.auto /tmp/resolv.conf
-    ;;
-  esac
-}
-
-##############################################################################
-
 unbound_start() {
   config_load unbound
   config_foreach unbound_uci unbound
   unbound_mkdir
 
 
-  if [ "$UNBOUND_B_MAN_CONF" -eq 0 ] ; then
+  if [ "$UB_B_MAN_CONF" -eq 0 ] ; then
+    # iterate zones before we load other UCI
+    # forward-zone: auth-zone: and stub-zone:
+    config_foreach unbound_zone zone
+    # associate potential DNS RR with interfaces
+    config_load network
+    config_foreach bundle_all_networks interface
+    config_load dhcp
+    config_foreach bundle_lan_networks dhcp
+    bundle_wan_networks
+    # server:
     unbound_conf
-    unbound_access
-    unbound_adblock
-
-
-    if [ "$UNBOUND_D_DHCP_LINK" = "dnsmasq" ] ; then
-      dnsmasq_link
-    else
-      unbound_hostname
-      unbound_records
-    fi
-
-
-    unbound_forward
-    unbound_auth_root
+    unbound_hostname
+    # control:
     unbound_control
+    # dnsmasq
+    dnsmasq_link
+    # merge
+    unbound_include
   fi
 
 
-  unbound_resolv_setup
-}
-
-##############################################################################
-
-unbound_stop() {
-  unbound_resolv_teardown
-  rootzone_update
+  resolv_setup
 }
 
 ##############################################################################
index fb0f6c887a265b5a452c7c3c0d3bd83818fd6358..9614357eb6a9b034a14400557dadab01152c42e1 100644 (file)
@@ -9,13 +9,11 @@ config unbound
        option domain 'lan'
        option domain_type 'static'
        option edns_size '1280'
-       option extended_luci '0'
        option extended_stats '0'
        option hide_binddata '1'
        option listen_port '53'
        option localservice '1'
        option manual_conf '0'
-       option prefetch_root '0'
        option protocol 'default'
        option query_minimize '0'
        option query_min_strict '0'
@@ -28,9 +26,28 @@ config unbound
        option unbound_control '0'
        option validator '0'
        option validator_ntp '1'
+       option verbosity '1'
        list trigger_interface 'lan'
        list trigger_interface 'wan'
-       #list rebind_interface 'lan'
        #list domain_insecure 'ntp.example.com'
-       #list domain_forward 'mail.example.com'
+
+config zone
+       option enabled '0'
+       option fallback '1'
+       option url_dir 'https://www.internic.net/domain/'
+       option zone_type 'auth_zone'
+       list server 'lax.xfr.dns.icann.org'
+       list server 'iad.xfr.dns.icann.org'
+       list zone_name '.'
+       list zone_name 'arpa.'
+       list zone_name 'in-addr.arpa.'
+       list zone_name 'ip6.arpa.'
+
+config zone
+       option enabled '0'
+       option fallback '1'
+       option resolv_conf '1'
+       option zone_type 'forward_zone'
+       list zone_name 'isp-bill.example.com.'
+       list zone_name 'isp-mail.example.net.'
 
diff --git a/net/unbound/patches/001-conf.patch b/net/unbound/patches/001-conf.patch
deleted file mode 100644 (file)
index 94a5169..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-diff --git a/doc/example.conf.in b/doc/example.conf.in
-index be83bda..7317b23 100644
---- a/doc/example.conf.in
-+++ b/doc/example.conf.in
-@@ -15,6 +15,76 @@ server:
-       # verbosity number, 0 is least verbose. 1 is default.
-       verbosity: 1
-
-+      ############################################################################
-+      # MEMORY CONTROL EXAMPLE
-+      # In the example config settings below memory usage is reduced. Some ser-
-+      # vice levels are lower, notable very large data and a high TCP load are
-+      # no longer supported ... are exceptional for the DNS.
-+      # (http://unbound.net/documentation/unbound.conf.html)
-+      ############################################################################
-+
-+      # Self jail Unbound with user "unbound" to /var/lib/unbound
-+      # The script /etc/init.d/unbound will setup the location
-+      username: "unbound"
-+      directory: "/var/lib/unbound"
-+      chroot: "/var/lib/unbound"
-+
-+      # The pid file is created before privleges drop so no concern
-+      pidfile: "/var/run/unbound.pid"
-+
-+      # no threads and no memory slabs for threads
-+      num-threads: 1
-+      msg-cache-slabs: 1
-+      rrset-cache-slabs: 1
-+      infra-cache-slabs: 1
-+      key-cache-slabs: 1
-+
-+      # don't be picky about interfaces but consider your firewall
-+      interface: 0.0.0.0
-+      interface: ::0
-+      access-control: 0.0.0.0/0 allow
-+      access-control: ::0/0 allow
-+
-+      # this limits TCP service but uses less buffers
-+      outgoing-num-tcp: 1
-+      incoming-num-tcp: 1
-+
-+      # use somewhat higher port numbers versus possible NAT issue
-+      outgoing-port-permit: "10240-65335"
-+
-+      # uses less memory but less performance
-+      outgoing-range: 60
-+      num-queries-per-thread: 30
-+
-+      # exclude large responses
-+      msg-buffer-size: 8192
-+
-+      # tiny memory cache
-+      infra-cache-numhosts: 200
-+      msg-cache-size: 100k
-+      rrset-cache-size: 100k
-+      key-cache-size: 100k
-+      neg-cache-size: 10k
-+
-+      # gentle on recursion
-+      target-fetch-policy: "2 1 0 0 0 0"
-+      harden-large-queries: yes
-+      harden-short-bufsize: yes
-+
-+      # DNSSEC enable by removing comments on "module-config:" and "auto-trust-
-+      # -anchor-file:" The init script will copy root key to /var/lib/unbound.
-+      # See package documentation for crontab entry to copy RFC5011 results back.
-+      #module-config: "validator iterator"
-+      #auto-trust-anchor-file: "/var/lib/unbound/root.key"
-+
-+      # DNSSEC needs real time to validate signatures. If your device does not
-+      # have power off clock (reboot), then you may need this work around.
-+      #domain-insecure: "pool.ntp.org"
-+
-+      ############################################################################
-+      # Resume Stock example.conf.in
-+      ############################################################################
-+
-       # print statistics to the log (for every thread) every N seconds.
-       # Set to "" or 0 to disable. Default is disabled.
-       # statistics-interval: 0
diff --git a/net/unbound/patches/100-example-conf-in.patch b/net/unbound/patches/100-example-conf-in.patch
new file mode 100644 (file)
index 0000000..5559a48
--- /dev/null
@@ -0,0 +1,81 @@
+Index: doc/example.conf.in
+===================================================================
+--- a/doc/example.conf.in
++++ b/doc/example.conf.in
+@@ -15,6 +15,76 @@ server:
+       # verbosity number, 0 is least verbose. 1 is default.
+       verbosity: 1
+
++      ############################################################################
++      # MEMORY CONTROL EXAMPLE
++      # In the example config settings below memory usage is reduced. Some ser-
++      # vice levels are lower, notable very large data and a high TCP load are
++      # no longer supported ... are exceptional for the DNS.
++      # (http://unbound.net/documentation/unbound.conf.html)
++      ############################################################################
++
++      # Self jail Unbound with user "unbound" to /var/lib/unbound
++      # The script /etc/init.d/unbound will setup the location
++      username: "unbound"
++      directory: "/var/lib/unbound"
++      chroot: "/var/lib/unbound"
++
++      # The pid file is created before privleges drop so no concern
++      pidfile: "/var/run/unbound.pid"
++
++      # no threads and no memory slabs for threads
++      num-threads: 1
++      msg-cache-slabs: 1
++      rrset-cache-slabs: 1
++      infra-cache-slabs: 1
++      key-cache-slabs: 1
++
++      # don't be picky about interfaces but consider your firewall
++      interface: 0.0.0.0
++      interface: ::0
++      access-control: 0.0.0.0/0 allow
++      access-control: ::0/0 allow
++
++      # this limits TCP service but uses less buffers
++      outgoing-num-tcp: 1
++      incoming-num-tcp: 1
++
++      # use somewhat higher port numbers versus possible NAT issue
++      outgoing-port-permit: "10240-65335"
++
++      # uses less memory but less performance
++      outgoing-range: 60
++      num-queries-per-thread: 30
++
++      # exclude large responses
++      msg-buffer-size: 8192
++
++      # tiny memory cache
++      infra-cache-numhosts: 200
++      msg-cache-size: 100k
++      rrset-cache-size: 100k
++      key-cache-size: 100k
++      neg-cache-size: 10k
++
++      # gentle on recursion
++      target-fetch-policy: "2 1 0 0 0 0"
++      harden-large-queries: yes
++      harden-short-bufsize: yes
++
++      # DNSSEC enable by removing comments on "module-config:" and "auto-trust-
++      # -anchor-file:" The init script will copy root key to /var/lib/unbound.
++      # See package documentation for crontab entry to copy RFC5011 results back.
++      #module-config: "validator iterator"
++      #auto-trust-anchor-file: "/var/lib/unbound/root.key"
++
++      # DNSSEC needs real time to validate signatures. If your device does not
++      # have power off clock (reboot), then you may need this work around.
++      #domain-insecure: "pool.ntp.org"
++
++      ############################################################################
++      # Resume Stock example.conf.in
++      ############################################################################
++
+       # print statistics to the log (for every thread) every N seconds.
+       # Set to "" or 0 to disable. Default is disabled.
+       # statistics-interval: 0
diff --git a/net/unbound/patches/200-openssl-log-err.patch b/net/unbound/patches/200-openssl-log-err.patch
new file mode 100644 (file)
index 0000000..b1ddd5d
--- /dev/null
@@ -0,0 +1,48 @@
+Index: daemon/remote.c
+===================================================================
+--- a/daemon/remote.c
++++ b/daemon/remote.c
+@@ -1950,6 +1950,11 @@
+                               return NULL;
+                       }
+               } else {
++#ifndef HAVE_SSL_SET1_HOST
++                      if(auth_name)
++                        log_err("no name verification functionality in "
++                              "ssl library, ignored name for %s", todo);
++#endif
+                       /* add address */
+                       if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0,
+                               auth_name)) {
+Index: iterator/iter_fwd.c
+===================================================================
+--- a/iterator/iter_fwd.c
++++ b/iterator/iter_fwd.c
+@@ -239,6 +239,11 @@
+                               s->name, p->str);
+                       return 0;
+               }
++#ifndef HAVE_SSL_SET1_HOST
++              if(tls_auth_name)
++                      log_err("no name verification functionality in "
++                              "ssl library, ignored name for %s", p->str);
++#endif
+               if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0,
+                       tls_auth_name)) {
+                       log_err("out of memory");
+Index: iterator/iter_hints.c
+===================================================================
+--- a/iterator/iter_hints.c
++++ b/iterator/iter_hints.c
+@@ -252,6 +252,11 @@
+                               s->name, p->str);
+                       return 0;
+               }
++#ifndef HAVE_SSL_SET1_HOST
++              if(auth_name)
++                      log_err("no name verification functionality in "
++                              "ssl library, ignored name for %s", p->str);
++#endif
+               if(!delegpt_add_addr_mlc(dp, &addr, addrlen, 0, 0,
+                       auth_name)) {
+                       log_err("out of memory");
index 612917cf07ce5c9fb196432abcd72bc8a7e20c8e..11a242dab25b2e6325b826f51a0f293d5b9b2609 100644 (file)
@@ -32,7 +32,6 @@ Hooks/Prepare/Pre += prepare_source_directory
 
 PKG_FIXUP:=autoreconf
 PKG_INSTALL:=1
-PKG_FLAGS:=nonshared
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/nls.mk
index e31bb59c290f0fe88ab7e9942d0a558f94fc961b..c15948dc3733190b77da5a0c507d808fa58d835a 100644 (file)
@@ -9,20 +9,16 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wavemon
 PKG_VERSION:=0.8.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=412ced9e59677532cde388cf329ccbe8c3dbdd505855f1ef298af9894fd6561c
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/uoaerg/wavemon.git
-PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/uoaerg/wavemon/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=4199e2ad11a036f4289f5ad42a8b0fe518f2b5ff77447f4c366dbcf3f23e91d5
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
 PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
index 64a6a08a88584548ec0c70c9642c1e57e69709eb..fa03cc60eab0066608552dde63c64f5418391250 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wget
 PKG_VERSION:=1.19.5
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@GNU/$(PKG_NAME)
@@ -67,7 +67,8 @@ CONFIGURE_ARGS+= \
        --disable-rpath \
        --disable-iri \
        --with-included-libunistring \
-       --without-libuuid
+       --without-libuuid \
+       --without-libpsl
 
 CONFIGURE_VARS += \
        ac_cv_header_uuid_uuid_h=no
index f7b6e4ee77478c340964b95ab0e94ea42f630693..ecaf540445daaca0a51c2261fb59fb8d59c13cea 100644 (file)
@@ -1,5 +1,5 @@
-#
-# Copyright (C) 2014-2017 OpenWrt.org
+
+# Copyright (C) 2018 Jianhui Zhao
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,15 +8,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=wifidog-ng
-PKG_VERSION:=1.5.6
+PKG_VERSION:=2.0.0
 PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=v$(PKG_VERSION)
-PKG_SOURCE_URL=https://github.com/zhaojh329/wifidog-ng.git
-PKG_MIRROR_HASH:=a81e9a4d5feb3facbe1b2b55d2d813944b569865f53421680efbfc6876aa3f5d
-
-PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)
 
 PKG_LICENSE:=LGPL-2.1
 PKG_LICENSE_FILES:=LICENSE
@@ -24,15 +19,14 @@ PKG_LICENSE_FILES:=LICENSE
 PKG_MAINTAINER:=Jianhui Zhao <jianhuizhao329@gmail.com>
 
 include $(INCLUDE_DIR)/package.mk
-include $(INCLUDE_DIR)/cmake.mk
 
 define Package/wifidog-ng/default
   SUBMENU:=Captive Portals
   SECTION:=net
   CATEGORY:=Network
-  TITLE:=Next generation WifiDog
-  DEPENDS:=+kmod-wifidog-ng +libuci +libuclient +libblobmsg-json +libubus +libcares \
-         +ipset +libpcap
+  TITLE:=Next generation WifiDog implemented in Lua
+  DEPENDS:=+kmod-wifidog-ng +libubox-lua +libuci-lua +libubus-lua \
+         +ipset +dnsmasq-full +luasocket
 endef
 
 define Package/wifidog-ng-nossl
@@ -68,13 +62,14 @@ endef
 
 define Package/wifidog-ng/default/install
        $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/init.d $(1)/etc/config \
-               $(1)/etc/wifidog-ng $(1)//etc/hotplug.d/dhcp
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/wifidog-ng $(1)/usr/bin
+               $(1)/etc/wifidog-ng $(1)//etc/hotplug.d/dhcp $(1)/usr/lib/lua
+       $(INSTALL_BIN) ./files//wifidog-ng.lua $(1)/usr/bin/wifidog-ng
        $(INSTALL_BIN) ./files/wifidog-ng.init $(1)/etc/init.d/wifidog-ng
        $(INSTALL_CONF) ./files/wifidog-ng.config $(1)/etc/config/wifidog-ng
-       $(INSTALL_CONF) ./files/wifidog-ng.key $(1)/etc/wifidog-ng
-       $(INSTALL_CONF) ./files/wifidog-ng.crt $(1)/etc/wifidog-ng
+       $(INSTALL_CONF) ./files/ssl.key $(1)/etc/wifidog-ng
+       $(INSTALL_CONF) ./files/ssl.crt $(1)/etc/wifidog-ng
        $(INSTALL_DATA) ./files/wifidog-ng.hotplug $(1)/etc/hotplug.d/dhcp/00-wifidog-ng
+       $(CP) ./files/wifidog-ng $(1)/usr/lib/lua
 endef
 
 Package/wifidog-ng-nossl/install = $(Package/wifidog-ng/default/install)
@@ -88,14 +83,13 @@ define KernelPackage/wifidog-ng
   SUBMENU:=Other modules
   TITLE:=Kernel module for wifidog-ng
   DEPENDS:=+kmod-nf-nat +kmod-ipt-ipset
-  FILES:=$(PKG_BUILD_DIR)/kmod/wifidog-ng.ko
+  FILES:=$(PKG_BUILD_DIR)/wifidog-ng.ko
 endef
 
 include $(INCLUDE_DIR)/kernel-defaults.mk
 
 define Build/Compile
-       $(call Build/Compile/Default)
-       $(MAKE) $(KERNEL_MAKEOPTS) SUBDIRS="$(PKG_BUILD_DIR)"/kmod modules
+       $(MAKE) $(KERNEL_MAKEOPTS) SUBDIRS="$(PKG_BUILD_DIR)" modules
 endef
 
 $(eval $(call BuildPackage,wifidog-ng-nossl))
diff --git a/net/wifidog-ng/files/ssl.crt b/net/wifidog-ng/files/ssl.crt
new file mode 100644 (file)
index 0000000..9fb965b
--- /dev/null
@@ -0,0 +1,24 @@
+-----BEGIN CERTIFICATE-----
+MIID8TCCAtmgAwIBAgICCCUwDQYJKoZIhvcNAQELBQAwczELMAkGA1UEBhMCQ04x
+EDAOBgNVBAgMB1RpYW5qaW4xEDAOBgNVBAcMB1RpYW5qaW4xFTATBgNVBAoMDENI
+SU5BU1NMIEluYzEpMCcGA1UEAwwgQ0hJTkFTU0wgQ2VydGlmaWNhdGlvbiBBdXRo
+b3JpdHkwHhcNMTgwMzAzMTQyODQ2WhcNMTkwMzAzMTQyODQ2WjCBgzELMAkGA1UE
+BhMCQ04xEDAOBgNVBAgMB3NpY2h1YW4xEjAQBgNVBAoMCXpoYW9qaDMyOTETMBEG
+A1UECwwKd2lmaWRvZy1uZzEQMA4GA1UEAwwHd2lmaWRvZzEnMCUGCSqGSIb3DQEJ
+ARYYamlhbmh1aXpoYW8zMjlAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
+AQ8AMIIBCgKCAQEAyD8gd3XIJvkYeySP2q0toYsfvhlA+lceUPiMi16U1nR3TD5U
+uTNGsvYBDMiR7vG0NKClFT73u/d8HBcYcTBgbhHfBkz4v9S5aMdUYQsUMQEITBdE
+hPEeXVqqj796Lu6iEkNUFrtam2h3t+kYODjbszk2woBtohaRWfNyOB/AJH6Stv4l
+jkPYwt9NHcKQSm9kjcGsAqQwkgVd4UfHX2G20gaTijimeHlJL2wv61uLBUvYux0E
++98KIcEIYu3BVAfoO2Omg/o73cwH+sFTswEXPuXirwrOzmJ850WBLScLkSKSATrY
+1YdU6CRaJuP/POFfSqAhn/mPRNQFU5fAaDcfEwIDAQABo34wfDAJBgNVHRMEAjAA
+MC8GCWCGSAGG+EIBDQQiFiBDSElOQVNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
+eTAdBgNVHQ4EFgQU9XS4dW6j1r1lEOIHWkoJx3zSqqgwHwYDVR0jBBgwFoAUXB8j
++sjhITHC2Df2iPzSb8JUQzMwDQYJKoZIhvcNAQELBQADggEBAFsaq5qehwp0zMqY
+cb0IX5/f4ZnscX587SM/NhORODa0p/bT3EwG3grtljHhRW+s/4c4gPgilrzV0Fxn
+Y5FodLfFdbNVjhgeSrDCRmwIvKSe81LYOe+rbfTBF0g3YYWDwcwc8tFvcwWBxqWn
+4F+u9aIKgHU7HXQokqCxEOTFjrAHVJf1OqtRMTXlBBb6ypVdHn0glfSxOIC/Vp2T
+5UR7oVdD4E8ASqe7Q7MmTeY377CRagfd0WD9XK7o+cbKkLLW1QWc8ht1rHjGp+/2
+gmkxEmpX2Xhpv1FX/b6sj1dTmOc2bXBzpvV6yonRMu5dYsOrdDwbH/T05X+hCFW9
+G86ZLFY=
+-----END CERTIFICATE-----
diff --git a/net/wifidog-ng/files/ssl.key b/net/wifidog-ng/files/ssl.key
new file mode 100644 (file)
index 0000000..6f56d74
--- /dev/null
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIPyB3dcgm+Rh7
+JI/arS2hix++GUD6Vx5Q+IyLXpTWdHdMPlS5M0ay9gEMyJHu8bQ0oKUVPve793wc
+FxhxMGBuEd8GTPi/1Llox1RhCxQxAQhMF0SE8R5dWqqPv3ou7qISQ1QWu1qbaHe3
+6Rg4ONuzOTbCgG2iFpFZ83I4H8AkfpK2/iWOQ9jC300dwpBKb2SNwawCpDCSBV3h
+R8dfYbbSBpOKOKZ4eUkvbC/rW4sFS9i7HQT73wohwQhi7cFUB+g7Y6aD+jvdzAf6
+wVOzARc+5eKvCs7OYnznRYEtJwuRIpIBOtjVh1ToJFom4/884V9KoCGf+Y9E1AVT
+l8BoNx8TAgMBAAECggEAK/JmvrDzt1HtxIDWrWhaXly5H7BNKWPbPGv/9EpSoeo3
+kF0RnP+a4YXJ3zNZi7YyFWa4NDx4hCEhdMzAyX6TezSi3LAh23/lHRC5/P5AdSzD
+1Gc6225LerN+QUQFna0zlox+NOrzTK4VsCAQ963K0b+ZvAARj4QibDpYc+bL9XYK
+fVrZSnGJhNY3S6YjTF4oyMejKxk+HPhgCVEcZCHiC0RmXVqfETe6Cu0UtDPTTK5Q
+IXYYZ0HLsqaGWwGCWm/ji6HjNCG1dUhUp/yZR+7X45Utok3Rd3wo0kxZGJ7LHH4N
+541qcFbaT3rX39uPypuK5dSc5lb98FAOl79jL/wnUQKBgQDjEycf6VKZYf8d/MMV
+4+0YrFV7sdi0k4TC+lFmfJZVFHqcPn99q3cO2b9npgLDpQpwpcyBGMh6hWufVXXA
+ctrxg8vjKBHG8MT70Lulvi+G3Fldw7EHVVQGEHRqPaSzA035JyVanDs6lgoqjj9b
+BuMQidIeaj2t28pEhc0rYstW6wKBgQDhwRzoCirKrtJDWclDkjbzkGUfoAKMz2p2
+mSAs2xCdrx8vtFzUXcCLsvlXa+hIEe4O5cUZg+WLPfXiV4gtF74PTkmYADXRTUBl
+dHzfjVWQINEYFsWOEP5eYB0VWiA52JUaCuHuHILt6CSy3h8xPtnq+/oEFTeqh/2C
+XoN+seKeeQKBgQDUE1c/HpLeXf/+6crp7u3JVWqhFADo5b3gvBi6NzHQVEgPFO/N
+Vw7i98sj6pA6WTHe83qEN7lFdMaHETHgg2SonAcYKJwxyTywUspuiampsrJkOBhm
+WPMYltWjQ99GsZdpU343miJXHTpxdFkHku8OyylK7r6cWeIXDUAJfUOb8QKBgFbk
+ZoTljOzwdxvXTkFE4QPEmzed9f1OxHKbo6fANdgLlJxe9rAC2d6rZ49/iCtdQ1zW
+kZOtkceTdLXG7TI2BkCL6IWp5w0Fh/jE6l99XeaYywJTmXyCC/Y1VlxmkSrSsykP
+8UAeF0MM7DswhZ8FywjILcYuiHuJ1ki8qi40t745AoGAT/5imiro59cHMbbGEQb+
+42oBY7RxeHkk6+8WTJA6kqv8tuOK3gvDFm5cRJVCduVF/Jf+276IMoTMEb8kBGQA
+R3CRsYwLPrpdWu2q9Ho1KtH+azt/d+3uglT9g3fhvFieNIwkRgaNNJQC6wmddDeG
+MEYv4HO1LykipsDVsFadVCk=
+-----END PRIVATE KEY-----
index b3002403062305e88777f45a94947bfbc1b0ac4a..c4c15039c12f882bc7eed3b0e6860ddec0a1cca0 100644 (file)
@@ -1,13 +1,14 @@
 config gateway
     option enabled 1
-    option ifname 'br-lan'
+    option interface 'lan'
     option port 2060
+    option dhcp_host_white 1
     option ssl_port 8443
     option checkinterval 30
     option client_timeout 5
     option temppass_time 30
  
-config authserver
+config server
     option host 'authserver.com'
     option port 80
     option ssl 0
@@ -16,10 +17,4 @@ config authserver
     option portal_path 'portal'
     option msg_path 'gw_message.php'
     option ping_path 'ping'
-    option auth_path 'auth'
-
-config popularserver
-    list server www.baidu.com
-    list server www.qq.com
-
-config whitelist
+    option auth_path 'auth'
\ No newline at end of file
diff --git a/net/wifidog-ng/files/wifidog-ng.crt b/net/wifidog-ng/files/wifidog-ng.crt
deleted file mode 100644 (file)
index 9fb965b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID8TCCAtmgAwIBAgICCCUwDQYJKoZIhvcNAQELBQAwczELMAkGA1UEBhMCQ04x
-EDAOBgNVBAgMB1RpYW5qaW4xEDAOBgNVBAcMB1RpYW5qaW4xFTATBgNVBAoMDENI
-SU5BU1NMIEluYzEpMCcGA1UEAwwgQ0hJTkFTU0wgQ2VydGlmaWNhdGlvbiBBdXRo
-b3JpdHkwHhcNMTgwMzAzMTQyODQ2WhcNMTkwMzAzMTQyODQ2WjCBgzELMAkGA1UE
-BhMCQ04xEDAOBgNVBAgMB3NpY2h1YW4xEjAQBgNVBAoMCXpoYW9qaDMyOTETMBEG
-A1UECwwKd2lmaWRvZy1uZzEQMA4GA1UEAwwHd2lmaWRvZzEnMCUGCSqGSIb3DQEJ
-ARYYamlhbmh1aXpoYW8zMjlAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOC
-AQ8AMIIBCgKCAQEAyD8gd3XIJvkYeySP2q0toYsfvhlA+lceUPiMi16U1nR3TD5U
-uTNGsvYBDMiR7vG0NKClFT73u/d8HBcYcTBgbhHfBkz4v9S5aMdUYQsUMQEITBdE
-hPEeXVqqj796Lu6iEkNUFrtam2h3t+kYODjbszk2woBtohaRWfNyOB/AJH6Stv4l
-jkPYwt9NHcKQSm9kjcGsAqQwkgVd4UfHX2G20gaTijimeHlJL2wv61uLBUvYux0E
-+98KIcEIYu3BVAfoO2Omg/o73cwH+sFTswEXPuXirwrOzmJ850WBLScLkSKSATrY
-1YdU6CRaJuP/POFfSqAhn/mPRNQFU5fAaDcfEwIDAQABo34wfDAJBgNVHRMEAjAA
-MC8GCWCGSAGG+EIBDQQiFiBDSElOQVNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
-eTAdBgNVHQ4EFgQU9XS4dW6j1r1lEOIHWkoJx3zSqqgwHwYDVR0jBBgwFoAUXB8j
-+sjhITHC2Df2iPzSb8JUQzMwDQYJKoZIhvcNAQELBQADggEBAFsaq5qehwp0zMqY
-cb0IX5/f4ZnscX587SM/NhORODa0p/bT3EwG3grtljHhRW+s/4c4gPgilrzV0Fxn
-Y5FodLfFdbNVjhgeSrDCRmwIvKSe81LYOe+rbfTBF0g3YYWDwcwc8tFvcwWBxqWn
-4F+u9aIKgHU7HXQokqCxEOTFjrAHVJf1OqtRMTXlBBb6ypVdHn0glfSxOIC/Vp2T
-5UR7oVdD4E8ASqe7Q7MmTeY377CRagfd0WD9XK7o+cbKkLLW1QWc8ht1rHjGp+/2
-gmkxEmpX2Xhpv1FX/b6sj1dTmOc2bXBzpvV6yonRMu5dYsOrdDwbH/T05X+hCFW9
-G86ZLFY=
------END CERTIFICATE-----
index 145ee6dc5eb663d30d5af5b2ce4d7adc0a808c32..f39373278aea29071b895ada8c7ca826e6698ad9 100644 (file)
@@ -5,45 +5,117 @@ START=95
 
 BIN=/usr/bin/wifidog-ng
 
-parse_whitelist_mac() {
+dhcp_host_white=1
+
+start_wifidog() {
+    local cfg="$1"
+    local enabled interface
+
+    uci_validate_section wifidog-ng gateway "${1}" \
+        'enabled:bool:0' \
+        'interface:uci("network", "@interface"):lan' \
+        'dhcp_host_white:bool:1'
+
+    [ $? -ne 0 ] && {
+        echo "validation gateway failed" >&2
+        exit 1
+    }
+
+    [ $enabled -eq 1 ] || exit 0
+
+    # timeout = 49 days
+    ipset -! create wifidog-ng-mac hash:mac timeout 4294967
+    ipset -! create wifidog-ng-ip hash:ip
+
+    modprobe wifidog-ng
+    echo "enabled=1" > /proc/wifidog-ng/config
+    
+    procd_open_instance
+    procd_set_param command $BIN
+    procd_set_param respawn
+    procd_close_instance
+}
+
+parse_server() {
     local cfg="$1"
-    local mac
+    local host
 
-    uci_validate_section wifidog-ng whitelist "${1}" \
+    config_get host $cfg host
+    validate_data ip4addr "$host" 2> /dev/null
+    if [ $? -eq 0 ];
+    then
+        ipset add wifidog-ng-ip $host
+    else
+        echo "ipset=/$host/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
+    fi
+}
+
+parse_validated_user() {
+    local cfg="$1"
+    local mac ip
+
+    uci_validate_section wifidog-ng validated_user "${1}" \
         'mac:macaddr'
 
     [ $? -ne 0 ] && {
-        echo "validation whitelist_mac failed" >&2
+        echo "validation validated_user failed" >&2
         exit 1
     }
+
+    [ -n "$mac" ] && ipset add wifidog-ng-mac $mac
 }
 
-parse_whitelist_domain() {
+parse_validated_domain() {
     local cfg="$1"
     local domain
 
-    uci_validate_section wifidog-ng whitelist "${1}" \
+    uci_validate_section wifidog-ng validated_domain "${1}" \
         'domain:host'
 
     [ $? -ne 0 ] && {
-        echo "validation whitelist_domain failed" >&2
+        echo "validation validated_domain failed" >&2
         exit 1
     }
+
+    [ -n "$domain" ] && echo "ipset=/$domain/wifidog-ng-ip" >> /tmp/dnsmasq.d/wifidog-ng
 }
 
-start_service() {
-    modprobe wifidog-ng
+parse_dhcp_host() {
+    local cfg="$1"
+    local mac ip
+
+    uci_validate_section dhcp host "${1}" \
+        'mac:macaddr'
+
+    [ $? -ne 0 ] && {
+        echo "validation validated dhcp host failed" >&2
+        exit 1
+    }
+
+    [ -n "$mac" ] && ipset add wifidog-ng-mac $mac
+}
 
+start_service() {
     config_load wifidog-ng
-    config_foreach parse_whitelist_mac whitelist_mac
-    config_foreach parse_whitelist_domain whitelist_domain
+    config_foreach start_wifidog gateway
 
-    procd_open_instance
-    procd_set_param command $BIN
-    procd_set_param respawn
-    procd_close_instance
+    echo -n > /tmp/dnsmasq.d/wifidog-ng
+
+    config_foreach parse_server server
+    config_foreach parse_validated_user validated_user    
+    config_foreach parse_validated_domain validated_domain
+
+    [ $dhcp_host_white -eq 1 ] && {
+        config_load dhcp
+        config_foreach parse_dhcp_host host
+    }
+
+    /etc/init.d/dnsmasq restart &
 }
 
 stop_service() {
     rmmod wifidog-ng
+
+    ipset destroy wifidog-ng-mac
+    ipset destroy wifidog-ng-ip
 }
diff --git a/net/wifidog-ng/files/wifidog-ng.key b/net/wifidog-ng/files/wifidog-ng.key
deleted file mode 100644 (file)
index 6f56d74..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDIPyB3dcgm+Rh7
-JI/arS2hix++GUD6Vx5Q+IyLXpTWdHdMPlS5M0ay9gEMyJHu8bQ0oKUVPve793wc
-FxhxMGBuEd8GTPi/1Llox1RhCxQxAQhMF0SE8R5dWqqPv3ou7qISQ1QWu1qbaHe3
-6Rg4ONuzOTbCgG2iFpFZ83I4H8AkfpK2/iWOQ9jC300dwpBKb2SNwawCpDCSBV3h
-R8dfYbbSBpOKOKZ4eUkvbC/rW4sFS9i7HQT73wohwQhi7cFUB+g7Y6aD+jvdzAf6
-wVOzARc+5eKvCs7OYnznRYEtJwuRIpIBOtjVh1ToJFom4/884V9KoCGf+Y9E1AVT
-l8BoNx8TAgMBAAECggEAK/JmvrDzt1HtxIDWrWhaXly5H7BNKWPbPGv/9EpSoeo3
-kF0RnP+a4YXJ3zNZi7YyFWa4NDx4hCEhdMzAyX6TezSi3LAh23/lHRC5/P5AdSzD
-1Gc6225LerN+QUQFna0zlox+NOrzTK4VsCAQ963K0b+ZvAARj4QibDpYc+bL9XYK
-fVrZSnGJhNY3S6YjTF4oyMejKxk+HPhgCVEcZCHiC0RmXVqfETe6Cu0UtDPTTK5Q
-IXYYZ0HLsqaGWwGCWm/ji6HjNCG1dUhUp/yZR+7X45Utok3Rd3wo0kxZGJ7LHH4N
-541qcFbaT3rX39uPypuK5dSc5lb98FAOl79jL/wnUQKBgQDjEycf6VKZYf8d/MMV
-4+0YrFV7sdi0k4TC+lFmfJZVFHqcPn99q3cO2b9npgLDpQpwpcyBGMh6hWufVXXA
-ctrxg8vjKBHG8MT70Lulvi+G3Fldw7EHVVQGEHRqPaSzA035JyVanDs6lgoqjj9b
-BuMQidIeaj2t28pEhc0rYstW6wKBgQDhwRzoCirKrtJDWclDkjbzkGUfoAKMz2p2
-mSAs2xCdrx8vtFzUXcCLsvlXa+hIEe4O5cUZg+WLPfXiV4gtF74PTkmYADXRTUBl
-dHzfjVWQINEYFsWOEP5eYB0VWiA52JUaCuHuHILt6CSy3h8xPtnq+/oEFTeqh/2C
-XoN+seKeeQKBgQDUE1c/HpLeXf/+6crp7u3JVWqhFADo5b3gvBi6NzHQVEgPFO/N
-Vw7i98sj6pA6WTHe83qEN7lFdMaHETHgg2SonAcYKJwxyTywUspuiampsrJkOBhm
-WPMYltWjQ99GsZdpU343miJXHTpxdFkHku8OyylK7r6cWeIXDUAJfUOb8QKBgFbk
-ZoTljOzwdxvXTkFE4QPEmzed9f1OxHKbo6fANdgLlJxe9rAC2d6rZ49/iCtdQ1zW
-kZOtkceTdLXG7TI2BkCL6IWp5w0Fh/jE6l99XeaYywJTmXyCC/Y1VlxmkSrSsykP
-8UAeF0MM7DswhZ8FywjILcYuiHuJ1ki8qi40t745AoGAT/5imiro59cHMbbGEQb+
-42oBY7RxeHkk6+8WTJA6kqv8tuOK3gvDFm5cRJVCduVF/Jf+276IMoTMEb8kBGQA
-R3CRsYwLPrpdWu2q9Ho1KtH+azt/d+3uglT9g3fhvFieNIwkRgaNNJQC6wmddDeG
-MEYv4HO1LykipsDVsFadVCk=
------END PRIVATE KEY-----
diff --git a/net/wifidog-ng/files/wifidog-ng.lua b/net/wifidog-ng/files/wifidog-ng.lua
new file mode 100644 (file)
index 0000000..c6a63d6
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env lua
+
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local uloop = require "uloop"
+local uh = require "uhttpd"
+local auth = require "wifidog-ng.auth"
+local ubus = require "wifidog-ng.ubus"
+local version = require "wifidog-ng.version"
+local heartbeat = require "wifidog-ng.heartbeat"
+
+uh.log(uh.LOG_INFO, "Version: " .. version.string())
+
+uloop.init()
+
+ubus.init()
+auth.init()
+heartbeat.start()
+
+uloop.run()
diff --git a/net/wifidog-ng/files/wifidog-ng/auth.lua b/net/wifidog-ng/files/wifidog-ng/auth.lua
new file mode 100644 (file)
index 0000000..63666a4
--- /dev/null
@@ -0,0 +1,221 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local uh = require "uhttpd"
+local http = require "socket.http"
+local util = require "wifidog-ng.util"
+local config = require "wifidog-ng.config"
+
+local M = {}
+
+local apple_host = {
+    ["captive.apple.com"] = true,
+    ["www.apple.com"] = true,
+}
+
+local terms = {}
+
+local function is_authed_user(mac)
+    local r = os.execute("ipset test wifidog-ng-mac " .. mac ..  " 2> /dev/null")
+    return r == 0
+end
+
+local function allow_user(mac, temppass)
+    if not temppass then
+        terms[mac].authed = true
+        os.execute("ipset add wifidog-ng-mac " .. mac)
+    else
+        local cfg = config.get()
+        os.execute("ipset add wifidog-ng-mac " .. mac .. " timeout " .. cfg.temppass_time)
+    end
+end
+
+local function deny_user(mac)
+    os.execute("ipset del wifidog-ng-mac " .. mac)
+end
+
+function M.get_terms()
+    local r = {}
+    for k, v in pairs(terms) do
+        if v.authed then
+            r[k] = {ip = v.ip}
+        end
+    end
+
+    return r
+end
+
+function M.new_term(ip, mac, token)
+    terms[mac] = {ip = ip, token = token}
+    if token then
+        terms[mac].authed = true
+        allow_user(mac)
+    end
+end
+
+local function http_callback_auth(cl)
+    local cfg = config.get()
+    local token = cl:get_var("token")
+    local ip = cl:get_remote_addr()
+    local mac = util.arp_get(cfg.gw_ifname, ip)
+
+    if not mac then
+        uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
+        cl:send_error(401, "Unauthorized", "Not found your macaddr")
+        return uh.REQUEST_DONE
+    end
+
+    if token and #token > 0 then
+        if cl:get_var("logout") then
+            local url = string.format("%s&stage=logout&ip=%s&mac=%s&token=%s", cfg.auth_url, ip, mac, token)
+            http.request(url)
+            deny_user(mac)
+        else
+            local url = string.format("%s&stage=login&ip=%s&mac=%s&token=%s", cfg.auth_url, ip, mac, token)
+            local r = http.request(url)
+
+            if not r then
+                cl:send_error(401, "Unauthorized")
+                return uh.REQUEST_DONE
+            end
+
+            local auth = r:match("Auth: (%d)")
+            if auth == "1" then
+                allow_user(mac)
+                cl:redirect(302, string.format("%s&mac=%s", cfg.portal_url, mac))
+            else
+                cl:redirect(302, string.format("%s&mac=%s", cfg.msg_url, mac))
+                return uh.REQUEST_DONE
+            end
+        end
+    else
+        cl:send_error(401, "Unauthorized")
+        return uh.REQUEST_DONE
+    end
+end
+
+local function http_callback_temppass(cl)
+    local cfg = config.get()
+    local ip = cl:get_remote_addr()
+    local mac = util.arp_get(cfg.gw_ifname, ip)
+
+    if not mac then
+        uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
+        cl:send_error(401, "Unauthorized", "Not found your macaddr")
+        return uh.REQUEST_DONE
+    end
+
+    local script = cl:get_var("script") or ""
+
+    cl:send_header(200, "OK", -1)
+    cl:header_end()
+    allow_user(mac, true)
+    cl:chunk_send(cl:get_var("script") or "");
+    cl:request_done()
+
+    return uh.REQUEST_DONE
+end
+
+local function http_callback_404(cl, path)
+    local cfg = config.get()
+
+    if cl:get_http_method() ~= uh.HTTP_METHOD_GET then
+        cl:send_error(401, "Unauthorized")
+        return uh.REQUEST_DONE
+    end
+
+    local ip = cl:get_remote_addr()
+    local mac = util.arp_get(cfg.gw_ifname, ip)
+    if not mac then
+        uh.log(uh.LOG_ERR, "Not found macaddr for " .. ip)
+        cl:send_error(401, "Unauthorized", "Not found your macaddr")
+        return uh.REQUEST_DONE
+    end
+
+    term = terms[mac]
+    if not term then
+        terms[mac] = {ip = ip}
+    end
+
+    term = terms[mac]
+
+    if is_authed_user(mac) then
+        cl:redirect(302, "%s&mac=%s", cfg.portal_url, mac)
+        return uh.REQUEST_DONE
+    end
+
+    cl:send_header(200, "OK", -1)
+    cl:header_end()
+
+    local header_host = cl:get_header("host")
+    if apple_host[header_host] then
+        local http_ver = cl:get_http_version()
+        if http_ver == uh.HTTP_VER_10 then
+            if not term.apple then
+                cl:chunk_send("fuck you")
+                term.apple = true
+                cl:request_done()
+                return uh.REQUEST_DONE
+            end
+        end
+    end
+
+    local redirect_html = [[
+        <!doctype html><html><head><title>Success</title>
+        <script type="text/javascript">
+        setTimeout(function() {location.replace('%s&ip=%s&mac=%s');}, 1);</script>
+        <style type="text/css">body {color:#FFF}</style></head>
+        <body>Success</body></html>
+        ]]
+
+    cl:chunk_send(string.format(redirect_html, cfg.login_url, ip, mac))
+    cl:request_done()
+
+    return uh.REQUEST_DONE
+end
+
+local function on_request(cl, path)
+    if path == "/wifidog/auth" then
+        return http_callback_auth(cl)
+    elseif path == "/wifidog/temppass" then
+        return http_callback_temppass(cl)
+    end
+
+    return uh.REQUEST_CONTINUE
+end
+
+function M.init()
+    local cfg = config.get()
+
+    local srv = uh.new(cfg.gw_address, cfg.gw_port)
+
+    srv:on_request(on_request)
+    srv:on_error404(http_callback_404)
+
+    if uh.SSL_SUPPORTED then
+        local srv_ssl = uh.new(cfg.gw_address, cfg.gw_ssl_port)
+
+        srv_ssl:ssl_init("/etc/wifidog-ng/ssl.crt", "/etc/wifidog-ng/ssl.key")
+
+        srv_ssl:on_request(on_request)
+        srv_ssl:on_error404(http_callback_404)
+    end
+end
+
+return M
diff --git a/net/wifidog-ng/files/wifidog-ng/config.lua b/net/wifidog-ng/files/wifidog-ng/config.lua
new file mode 100644 (file)
index 0000000..04f3d00
--- /dev/null
@@ -0,0 +1,158 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local uci = require "uci"
+local util = require "wifidog-ng.util"
+
+local M = {}
+
+local cfg = {}
+
+function M.parse()
+    local c = uci.cursor()
+
+    c:foreach('wifidog-ng', 'gateway', function(s)
+        local port = s.port or 2060
+        local ssl_port = s.ssl_port or 8443
+        local interface = s.interface or "lan"
+        local checkinterval = s.checkinterval or 30
+        local client_timeout = s.client_timeout or 5
+        local temppass_time = s.temppass_time or 30
+        local id = s.id
+        local address = s.address
+
+        cfg.gw_port = tonumber(port)
+        cfg.gw_ssl_port = tonumber(ssl_port)
+        cfg.checkinterval = tonumber(checkinterval)
+        cfg.client_timeout = tonumber(client_timeout)
+        cfg.temppass_time = tonumber(temppass_time)
+        cfg.gw_address = s.address
+        cfg.gw_id = s.id
+
+        local st = util.ubus("network.interface." .. interface, "status")
+        cfg.gw_ifname = st.device
+
+        if not cfg.gw_address then
+            cfg.gw_address = st["ipv4-address"][1].address
+        end
+
+        if not cfg.gw_id then
+            local devst = util.ubus("network.device", "status", {name = st.device})
+            local macaddr = devst.macaddr
+            cfg.gw_id = macaddr:gsub(":", ""):upper()
+        end
+    end)
+
+    c:foreach('wifidog-ng', 'server', function(s)
+        local host = s.host
+        local path = s.path or "/wifidog/"
+        local gw_port = cfg.gw_port
+        local gw_id = cfg.gw_id
+        local gw_address = cfg.gw_address
+        local ssid = cfg.ssid or ""
+        local proto, port = "http", ""
+        
+
+        if s.port ~= "80" and s.port ~= "443" then
+            port = ":" .. s.port
+        end
+
+        if s.ssl == "1" then
+            proto = "https"
+        end
+
+        cfg.login_url = string.format("%s://%s%s%s%s?gw_address=%s&gw_port=%d&gw_id=%s&ssid=%s",
+            proto, host, port, path, s.login_path, gw_address, gw_port, gw_id, ssid)
+
+        cfg.auth_url = string.format("%s://%s%s%s%s?gw_id=%s",
+            proto, host, port, path, s.auth_path, gw_id)
+
+        cfg.ping_url = string.format("%s://%s%s%s%s?gw_id=%s",
+            proto, host, port, path, s.ping_path, gw_id)
+
+        cfg.portal_url = string.format("%s://%s%s%s%s?gw_id=%s",
+            proto, host, port, path, s.portal_path, gw_id)
+
+        cfg.msg_url = string.format("%s://%s%s%s%s?gw_id=%s",
+            proto, host, port, path, s.msg_path, gw_id)
+    end)
+
+    cfg.parsed = true
+end
+
+function M.get()
+    if not cfg.parsed then
+        M.parse()
+    end
+
+    return cfg
+end
+
+function M.add_whitelist(typ, value)
+    local c = uci.cursor()
+    local opt
+
+    if typ == "mac" then
+        typ = "validated_user"
+        opt = "mac"
+    elseif typ == "domain" then
+        typ = "validated_domain"
+        opt = "domain"
+    else
+        return
+    end
+
+    local exist = false
+    c:foreach("wifidog-ng", typ, function(s)
+        if s[opt] == value then
+            exist = true
+        end
+    end)
+
+    if not exist then
+        local s = c:add("wifidog-ng", typ)
+        c:set("wifidog-ng", s, opt, value)
+        c:commit("wifidog-ng")
+    end
+end
+
+function M.del_whitelist(typ, value)
+    local c = uci.cursor()
+    local opt
+
+    if typ == "mac" then
+        typ = "validated_user"
+        opt = "mac"
+    elseif typ == "domain" then
+        typ = "validated_domain"
+        opt = "domain"
+    else
+        return
+    end
+
+    c:foreach("wifidog-ng", typ, function(s)
+        if s[opt] == value then
+            c:delete("wifidog-ng", s[".name"])
+        end
+    end)
+
+    c:commit("wifidog-ng")
+end
+
+return M
diff --git a/net/wifidog-ng/files/wifidog-ng/heartbeat.lua b/net/wifidog-ng/files/wifidog-ng/heartbeat.lua
new file mode 100644 (file)
index 0000000..0649be2
--- /dev/null
@@ -0,0 +1,46 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local uloop = require "uloop"
+local http = require "socket.http"
+local util = require "wifidog-ng.util"
+local config = require "wifidog-ng.config"
+
+local M = {}
+
+local timer = nil
+local start_time = os.time()
+
+local function heartbeat()
+    local cfg = config.get()
+
+    timer:set(1000 * cfg.checkinterval)
+
+    local sysinfo = util.ubus("system", "info")
+
+    local url = string.format("%s&sys_uptime=%d&sys_memfree=%d&sys_load=%d&wifidog_uptime=%d",
+        cfg.ping_url, sysinfo.uptime, sysinfo.memory.free, sysinfo.load[1], os.time() - start_time)
+    http.request(url)
+end
+
+function M.start()
+    timer = uloop.timer(heartbeat, 1000)
+end
+
+return M
diff --git a/net/wifidog-ng/files/wifidog-ng/ubus.lua b/net/wifidog-ng/files/wifidog-ng/ubus.lua
new file mode 100644 (file)
index 0000000..a2c57a2
--- /dev/null
@@ -0,0 +1,128 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local uci = require "uci"
+local ubus = require "ubus"
+local http = require "socket.http"
+local auth = require "wifidog-ng.auth"
+local config = require "wifidog-ng.config"
+
+
+local M = {}
+
+local conn = nil
+
+local ubus_codes = {
+    ["INVALID_COMMAND"] = 1,
+    ["INVALID_ARGUMENT"] = 2,
+    ["METHOD_NOT_FOUND"] = 3,
+    ["NOT_FOUND"] = 4,
+    ["NO_DATA"] = 5,
+    ["PERMISSION_DENIED"] = 6,
+    ["TIMEOUT"] = 7,
+    ["NOT_SUPPORTED"] = 8,
+    ["UNKNOWN_ERROR"] = 9,
+    ["CONNECTION_FAILED"] = 10
+}
+
+local function reload_validated_domain()
+    local c = uci.cursor()
+
+    local file = io.open("/tmp/dnsmasq.d/wifidog-ng", "w")
+
+    c:foreach("wifidog-ng", "validated_domain", function(s)
+        file:write("ipset=/" .. s.domain .. "/wifidog-ng-ip\n")
+    end)
+    file:close()
+
+    os.execute("/etc/init.d/dnsmasq restart &")
+end
+
+local methods = {
+    ["wifidog-ng"] = {
+        roam = {
+            function(req, msg)
+                local cfg = config.get()
+
+                if not msg.ip or not msg.mac then
+                    return ubus_codes["INVALID_ARGUMENT"]
+                end
+
+                local url = string.format("%s&stage=roam&ip=%s&mac=%s", cfg.auth_url, msg.ip, msg.mac)
+                local r = http.request(url) or ""
+                local token = r:match("token=(%w+)")
+                if token then
+                    auth.new_term(msg.ip, msg.mac, token)
+                end
+            end, {ip = ubus.STRING, mac = ubus.STRING }
+        },
+        term = {
+            function(req, msg)
+                if msg.action == "show" then
+                    conn:reply(req, {terms = auth.get_terms()});
+                    return
+                end
+
+                if not msg.action or not msg.mac then
+                    return ubus_codes["INVALID_ARGUMENT"]
+                end
+
+                if msg.action == "add" then
+                    auth.allow_user(mac)
+                elseif msg.action == "del" then
+                    auth.deny_user(mac)
+                end
+            end, {action = ubus.STRING, mac = ubus.STRING }
+        },
+        whitelist = {
+            function(req, msg)
+                if not msg.action or not msg.type or not msg.value then
+                    return ubus_codes["INVALID_ARGUMENT"]
+                end
+
+                if msg.action == "add" then
+                    config.add_whitelist(msg.type, msg.value)
+                    if msg.type == "mac" then
+                        auth.allow_user(msg.value)
+                    end
+                elseif msg.action == "del" then
+                    config.del_whitelist(msg.type, msg.value)
+                    if msg.type == "mac" then
+                        auth.deny_user(msg.value)
+                    end
+                end
+
+                if msg.type == "domain" then
+                    reload_validated_domain()
+                end
+            end, {action = ubus.STRING, type = ubus.STRING, value = ubus.STRING }
+        },
+    }
+}
+
+function M.init()
+    conn = ubus.connect()
+    if not conn then
+        error("Failed to connect to ubus")
+    end
+
+    conn:add(methods)
+end
+
+return M
diff --git a/net/wifidog-ng/files/wifidog-ng/util.lua b/net/wifidog-ng/files/wifidog-ng/util.lua
new file mode 100644 (file)
index 0000000..bf14e7d
--- /dev/null
@@ -0,0 +1,83 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local _ubus = require "ubus"
+local _ubus_connection = nil
+
+local M = {}
+
+function M.arp_get(ifname, ipaddr)
+    for l in io.lines("/proc/net/arp") do
+        local f = {}
+
+        for e in string.gmatch(l, "%S+") do
+            f[#f + 1] = e
+        end
+
+        if f[1] == ipaddr and f[6] == ifname then
+            return f[4]
+        end
+    end
+end
+
+function M.read_file(path, len)
+    local file = io.open(path, "r")
+    if not file then return nil end
+    
+    if not len then len = "*a" end
+
+    local data = file:read(len)
+    file:close()
+
+    return data
+end
+
+local ubus_codes = {
+       "INVALID_COMMAND",
+    "INVALID_ARGUMENT",
+    "METHOD_NOT_FOUND",
+    "NOT_FOUND",
+    "NO_DATA",
+    "PERMISSION_DENIED",
+    "TIMEOUT",
+    "NOT_SUPPORTED",
+    "UNKNOWN_ERROR",
+    "CONNECTION_FAILED"
+}
+
+function M.ubus(object, method, data)
+       if not _ubus_connection then
+       _ubus_connection = _ubus.connect()
+       assert(_ubus_connection, "Unable to establish ubus connection")
+       end
+       
+       if object and method then
+       if type(data) ~= "table" then
+               data = { }
+       end
+       local rv, err = _ubus_connection:call(object, method, data)
+       return rv, err, ubus_codes[err]
+       elseif object then
+       return _ubus_connection:signatures(object)
+       else
+       return _ubus_connection:objects()
+       end
+end
+
+return M
diff --git a/net/wifidog-ng/files/wifidog-ng/version.lua b/net/wifidog-ng/files/wifidog-ng/version.lua
new file mode 100644 (file)
index 0000000..feb4819
--- /dev/null
@@ -0,0 +1,30 @@
+--[[
+  Copyright (C) 2018 Jianhui Zhao <jianhuizhao329@gmail.com>
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public
+  License as published by the Free Software Foundation; either
+  version 2.1 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
+  Lesser General Public License for more details.
+  You should have received a copy of the GNU Lesser General Public
+  License along with this library; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
+  USA
+ --]]
+
+local M = {
+    MAJOR = 2,
+    MINOR = 0,
+    PATCH = 0
+}
+
+function M.string()
+    return string.format("%d.%d.%d", M.MAJOR, M.MINOR, M.PATCH)
+end
+
+return M
diff --git a/net/wifidog-ng/src/Makefile b/net/wifidog-ng/src/Makefile
new file mode 100644 (file)
index 0000000..f829d5d
--- /dev/null
@@ -0,0 +1,18 @@
+ifeq ($(findstring openwrt, $(CC)),)
+ifneq ($(KERNELRELEASE),)
+       wifidog-ng-objs := main.o config.o
+       obj-m := wifidog-ng.o
+else
+       KDIR = /lib/modules/$(shell uname -r)/build
+
+all:
+       make -C $(KDIR) M=$(PWD) modules
+
+clean:
+       rm -rf *.o *.ko *.mod.c Module.* modules.* .*.cmd .tmp*
+
+endif
+else
+       wifidog-ng-objs := main.o config.o
+       obj-m := wifidog-ng.o
+endif
diff --git a/net/wifidog-ng/src/config.c b/net/wifidog-ng/src/config.c
new file mode 100644 (file)
index 0000000..3ccad84
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ *  Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+#include <linux/uaccess.h>
+#include <linux/inetdevice.h>
+#include <linux/seq_file.h>
+
+#include "config.h"
+
+static struct proc_dir_entry *proc;
+static struct config conf;
+
+static int update_gw_interface(const char *interface)
+{
+    int ret = 0;
+    struct net_device *dev;
+    struct in_device *in_dev;
+
+    dev = dev_get_by_name(&init_net, interface);
+    if (!dev) {
+        pr_err("Not found interface: %s\n", interface);
+        return -ENOENT;
+    }
+
+    conf.interface_ifindex = dev->ifindex;
+
+    in_dev = inetdev_by_index(dev_net(dev), conf.interface_ifindex);
+    if (!in_dev) {
+        pr_err("Not found in_dev on %s\n", interface);
+        ret = -ENOENT;
+        goto QUIT;
+    }
+
+    for_primary_ifa(in_dev) {
+        conf.interface_ipaddr = ifa->ifa_local;
+        conf.interface_mask = ifa->ifa_mask;
+        conf.interface_broadcast = ifa->ifa_broadcast;
+
+        pr_info("Found ip from %s: %pI4\n", interface, &conf.interface_ipaddr);
+        break;
+    } endfor_ifa(in_dev)
+    
+QUIT:   
+    dev_put(dev);
+
+    return ret;
+}
+
+static int proc_config_show(struct seq_file *s, void *v)
+{
+    seq_printf(s, "enabled(RW) = %d\n", conf.enabled);
+    seq_printf(s, "interface(RW) = %s\n", conf.interface);
+    seq_printf(s, "ipaddr(RO) = %pI4\n", &conf.interface_ipaddr);
+    seq_printf(s, "netmask(RO) = %pI4\n", &conf.interface_mask);
+    seq_printf(s, "broadcast(RO) = %pI4\n", &conf.interface_broadcast);
+    seq_printf(s, "port(RW) = %d\n", conf.port);
+    seq_printf(s, "ssl_port(RW) = %d\n", conf.ssl_port);
+
+    return 0;
+}
+
+static ssize_t proc_config_write(struct file *file, const char __user *buf, size_t size, loff_t *ppos)
+{
+    char data[128];
+    char *delim, *key;
+    const char *value;
+    int update = 0;
+
+    if (size == 0)
+        return -EINVAL;
+
+    if (size > sizeof(data))
+        size = sizeof(data);
+
+    if (copy_from_user(data, buf, size))
+        return -EFAULT;
+
+    data[size - 1] = 0;
+
+    key = data;
+    while (key && *key) {
+        while (*key && (*key == ' '))
+            key++;
+
+        delim = strchr(key, '=');
+        if (!delim)
+            break;
+
+        *delim++ = 0;
+        value = delim;
+
+        delim = strchr(value, '\n');
+        if (delim)
+            *delim++ = 0;
+
+        if (!strcmp(key, "enabled")) {
+            conf.enabled = simple_strtol(value, NULL, 0);
+            if (conf.enabled)
+                update = 1;
+            pr_info("wifidog %s\n", conf.enabled ? "enabled" : "disabled");
+        } else if (!strcmp(key, "interface")) {
+            strncpy(conf.interface, value, sizeof(conf.interface) - 1);
+            update = 1;
+        } else if (!strcmp(key, "port")) {
+            conf.port = simple_strtol(value, NULL, 0);
+        } else if (!strcmp(key, "ssl_port")) {
+            conf.ssl_port = simple_strtol(value, NULL, 0);
+        }
+
+        key = delim;
+    }
+
+    if (update)
+        update_gw_interface(conf.interface);
+    return size;
+}
+
+static int proc_config_open(struct inode *inode, struct file *file)
+{
+    return single_open(file, proc_config_show, NULL);
+}
+
+const static struct file_operations proc_config_ops = {
+    .owner      = THIS_MODULE,
+    .open       = proc_config_open,
+    .read       = seq_read,
+    .write      = proc_config_write,
+    .llseek     = seq_lseek,
+    .release    = single_release
+};
+
+int init_config(void)
+{
+    int ret = 0;
+
+    conf.interface_ifindex= -1;
+    conf.port = 2060;
+    conf.ssl_port = 8443;
+    strcpy(conf.interface, "br-lan");
+
+    proc = proc_mkdir(PROC_DIR_NAME, NULL);
+    if (!proc) {
+        pr_err("can't create dir /proc/"PROC_DIR_NAME"/\n");
+        return -ENODEV;;
+    }
+
+    if (!proc_create("config", 0644, proc, &proc_config_ops)) {
+        pr_err("can't create file /proc/"PROC_DIR_NAME"/config\n");
+        ret = -EINVAL;
+        goto remove;
+    }
+
+    return 0;
+
+remove:
+    remove_proc_entry(PROC_DIR_NAME, NULL);
+    return ret;
+}
+
+void deinit_config(void)
+{
+    remove_proc_entry("config", proc);
+    remove_proc_entry(PROC_DIR_NAME, NULL);
+}
+
+struct config *get_config(void)
+{
+    return &conf;
+}
diff --git a/net/wifidog-ng/src/config.h b/net/wifidog-ng/src/config.h
new file mode 100644 (file)
index 0000000..a7414af
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ *  Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+#ifndef __CONFIG_H_
+#define __CONFIG_H_
+
+#include <linux/proc_fs.h>
+
+#define PROC_DIR_NAME "wifidog-ng"
+
+struct config {
+    int enabled;
+    char interface[32];
+    int interface_ifindex;
+    __be32 interface_ipaddr;
+    __be32 interface_mask;
+    __be32 interface_broadcast;
+    int port;
+    int ssl_port;
+};
+
+int init_config(void);
+void deinit_config(void);
+struct config *get_config(void);
+
+#endif
diff --git a/net/wifidog-ng/src/main.c b/net/wifidog-ng/src/main.c
new file mode 100644 (file)
index 0000000..96da9a6
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+ *  Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/version.h>
+
+#include <linux/ip.h>
+#include <linux/tcp.h>
+#include <linux/udp.h>
+#include <net/netfilter/nf_nat.h>
+#include <net/netfilter/nf_nat_l3proto.h>
+
+#include "utils.h"
+#include "config.h"
+
+#define IPS_HIJACKED    (1 << 31)
+#define IPS_ALLOWED     (1 << 30)
+
+static u32 wd_nf_nat_setup_info(void *priv, struct sk_buff *skb,
+    const struct nf_hook_state *state, struct nf_conn *ct)
+{
+    struct config *conf = get_config();
+    struct tcphdr *tcph = tcp_hdr(skb);
+    union nf_conntrack_man_proto proto;
+    struct nf_nat_range newrange;
+    static uint16_t PORT_80 = htons(80);
+
+    proto.tcp.port = (tcph->dest == PORT_80) ? htons(conf->port) : htons(conf->ssl_port);
+    newrange.flags       = NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED;
+    newrange.min_addr.ip = newrange.max_addr.ip = conf->interface_ipaddr;
+    newrange.min_proto   = newrange.max_proto = proto;
+
+    ct->status |= IPS_HIJACKED;
+
+    return nf_nat_setup_info(ct, &newrange, NF_NAT_MANIP_DST);
+}
+
+static u32 wifidog_hook(void *priv, struct sk_buff *skb, const struct nf_hook_state *state)
+{
+    struct config *conf = get_config();
+    struct iphdr *iph = ip_hdr(skb);
+    struct nf_conn *ct;
+    struct tcphdr *tcph;
+    struct udphdr *udph;
+    enum ip_conntrack_info ctinfo;
+    static uint16_t PORT_80 = htons(80);    /* http */
+    static uint16_t PORT_443 = htons(443);  /* https */
+    static uint16_t PORT_67 = htons(67);    /* dhcp */
+    static uint16_t PORT_53 = htons(53);    /* dns */
+
+    if (unlikely(!conf->enabled))
+        return NF_ACCEPT;
+
+    if (state->in->ifindex != conf->interface_ifindex)
+        return NF_ACCEPT;
+
+    /* Accept broadcast */
+    if (skb->pkt_type == PACKET_BROADCAST || skb->pkt_type == PACKET_MULTICAST)
+        return NF_ACCEPT;
+
+    /* Accept all to local area networks */
+    if ((iph->daddr | ~conf->interface_mask) == conf->interface_broadcast)
+        return NF_ACCEPT;
+
+    ct = nf_ct_get(skb, &ctinfo);
+    if (!ct || (ct->status & IPS_ALLOWED))
+        return NF_ACCEPT;
+
+    if (ct->status & IPS_HIJACKED) {
+        if (is_allowed_mac(skb, state)) {
+            /* Avoid duplication of authentication */
+            nf_reset(skb);
+            nf_ct_kill(ct);
+        }
+        return NF_ACCEPT;
+    } else if (ctinfo == IP_CT_NEW && (is_allowed_dest_ip(skb, state) || is_allowed_mac(skb, state))) {
+        ct->status |= IPS_ALLOWED;
+        return NF_ACCEPT;
+    }
+
+    switch (iph->protocol) {
+    case IPPROTO_TCP:
+        tcph = tcp_hdr(skb);
+        if(tcph->dest == PORT_53 || tcph->dest == PORT_67) {
+            ct->status |= IPS_ALLOWED;
+            return NF_ACCEPT;
+        }
+
+        if (tcph->dest == PORT_80 || tcph->dest == PORT_443)
+            goto redirect;
+        else
+            return NF_DROP;
+
+    case IPPROTO_UDP:
+        udph = udp_hdr(skb);
+        if(udph->dest == PORT_53 || udph->dest == PORT_67) {
+            ct->status |= IPS_ALLOWED;
+            return NF_ACCEPT;
+        }
+        return NF_DROP;
+
+    default:
+        ct->status |= IPS_ALLOWED;
+        return NF_ACCEPT;
+    }
+
+redirect:
+    /* all packets from unknown client are dropped */
+    if (ctinfo != IP_CT_NEW || (ct->status & IPS_DST_NAT_DONE)) {
+        pr_debug("dropping packets of suspect stream, src:%pI4, dst:%pI4\n", &iph->saddr, &iph->daddr);
+        return NF_DROP;
+    }
+
+    return nf_nat_ipv4_in(priv, skb, state, wd_nf_nat_setup_info);
+}
+
+static struct nf_hook_ops wifidog_ops[] __read_mostly = {
+    {
+        .hook       = wifidog_hook,
+        .pf         = PF_INET,
+        .hooknum    = NF_INET_PRE_ROUTING,
+        .priority   = NF_IP_PRI_CONNTRACK + 1 /* after conntrack */
+    }
+};
+
+static int __init wifidog_init(void)
+{
+    int ret;
+
+    ret = init_config();
+    if (ret)
+        return ret;
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
+    ret = nf_register_net_hooks(&init_net, wifidog_ops, ARRAY_SIZE(wifidog_ops));
+#else
+    ret = nf_register_hooks(wifidog_ops, ARRAY_SIZE(wifidog_ops));
+#endif
+    if (ret < 0) {
+        pr_err("can't register hook\n");
+        goto remove_config;
+    }
+
+    pr_info("kmod of wifidog is started\n");
+
+    return 0;
+
+remove_config:
+    deinit_config();
+    return ret;
+}
+
+static void __exit wifidog_exit(void)
+{
+    deinit_config();
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(4, 12, 14)
+    nf_unregister_net_hooks(&init_net, wifidog_ops, ARRAY_SIZE(wifidog_ops));
+#else
+    nf_unregister_hooks(wifidog_ops, ARRAY_SIZE(wifidog_ops));
+#endif
+
+    pr_info("kmod of wifidog-ng is stop\n");
+}
+
+module_init(wifidog_init);
+module_exit(wifidog_exit);
+
+MODULE_AUTHOR("jianhui zhao <jianhuizhao329@gmail.com>");
+MODULE_LICENSE("GPL");
diff --git a/net/wifidog-ng/src/utils.h b/net/wifidog-ng/src/utils.h
new file mode 100644 (file)
index 0000000..5f7aa08
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ *  Copyright (C) 2017 jianhui zhao <jianhuizhao329@gmail.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License version 2 as
+ *  published by the Free Software Foundation.
+ */
+
+#ifndef __UTILS_H_
+#define __UTILS_H_
+
+#include <linux/netfilter/ipset/ip_set.h>
+
+static inline int wd_ip_set_test(const char *name, const struct sk_buff *skb,
+    struct ip_set_adt_opt *opt, const struct nf_hook_state *state)
+{
+    static struct xt_action_param par = { };
+    struct ip_set *set = NULL;
+    ip_set_id_t index;
+    int ret;
+
+    index = ip_set_get_byname(state->net, name, &set);
+    if (!set)
+        return 0;
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
+    par.net = state->net;
+#else
+    par.state = state;
+#endif
+
+    ret = ip_set_test(index, skb, &par, opt);
+    ip_set_put_byindex(state->net, index);
+    return ret;
+}
+
+static inline int is_allowed_mac(struct sk_buff *skb, const struct nf_hook_state *state)
+{
+    static struct ip_set_adt_opt opt = {
+        .family = NFPROTO_IPV4,
+        .dim = IPSET_DIM_ONE,
+        .flags = IPSET_DIM_ONE_SRC,
+        .ext.timeout = UINT_MAX,
+    };
+
+    return wd_ip_set_test("wifidog-ng-mac", skb, &opt, state);
+}
+
+static inline int is_allowed_dest_ip(struct sk_buff *skb, const struct nf_hook_state *state)
+{
+    static struct ip_set_adt_opt opt = {
+        .family = NFPROTO_IPV4,
+        .dim = IPSET_DIM_ONE,
+        .ext.timeout = UINT_MAX,
+    };
+
+    return wd_ip_set_test("wifidog-ng-ip", skb, &opt, state);
+}
+
+#endif
diff --git a/net/wsdd2/Makefile b/net/wsdd2/Makefile
new file mode 100644 (file)
index 0000000..1cda1ae
--- /dev/null
@@ -0,0 +1,46 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=wsdd2
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/Andy2244/wsdd2.git
+PKG_SOURCE_DATE:=2018-07-24
+PKG_SOURCE_VERSION:=2c31ba3b720af81848c47dff7ad7c6c30c0c0f50
+PKG_MIRROR_HASH:=eb903a870d99c6001996dbfc22c15e1020278c45ed2441ceb61bc5395f417afa
+
+PKG_MAINTAINER:=Andy Walsh <andy.walsh44+github@gmail.com>
+PKG_LICENSE:=GPL-3.0-only
+PKG_LICENSE_FILES:=COPYING
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/wsdd2
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=IP Addresses and Names
+  TITLE:=Web Services for Devices (WSD) daemon
+  URL:=https://kb.netgear.com/2649/NETGEAR-Open-Source-Code-for-Programmers-GPL
+endef
+
+define Package/wsdd2/description
+  Web Services for Devices or Web Services on Devices (WSD),
+  is a Microsoft API to simplify programming connections to web service
+  enabled devices, such as printers, scanners and file shares.
+
+  This daemon advertises and responds to probe requests from Windows clients looking for file shares.
+  It also implements LLMNR multicast name lookup services.
+endef
+
+define Build/Compile
+  $(TARGET_CC) $(TARGET_CFLAGS) $(TARGET_LDFLAGS) $(PKG_BUILD_DIR)/{wsdd2.c,wsd.c,llmnr.c} -o $(PKG_BUILD_DIR)/wsdd2
+endef
+
+define Package/wsdd2/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/wsdd2 $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/wsdd2.init $(1)/etc/init.d/wsdd2
+endef
+
+$(eval $(call BuildPackage,wsdd2))
diff --git a/net/wsdd2/files/wsdd2.init b/net/wsdd2/files/wsdd2.init
new file mode 100644 (file)
index 0000000..b795d8e
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+
+start_service() {
+    procd_open_instance
+    procd_set_param command /usr/bin/wsdd2 -w
+    procd_set_param respawn
+    procd_set_param file /var/etc/smb.conf
+    procd_close_instance
+}
diff --git a/net/wsdd2/patches/001-add_uuid_boot_id.patch b/net/wsdd2/patches/001-add_uuid_boot_id.patch
new file mode 100644 (file)
index 0000000..5f60f22
--- /dev/null
@@ -0,0 +1,22 @@
+--- a/wsd.c    2018-07-20
++++ b/wsd.c    2018-07-20
+@@ -97,12 +97,17 @@ static void uuid_endpoint(char *uuid, si
+       FILE *fp = fopen("/etc/machine-id", "r");
+       int c, i = 0;
++      if (!fp) {
++              DEBUG(0, W, "Can't open '/etc/machine-id', trying '/proc/sys/kernel/random/boot_id'");
++              fp = fopen("/proc/sys/kernel/random/boot_id", "r");
++      }
++              
+       if (!fp)
+               return;
+       while (i < 36 && (c = getc(fp)) != EOF &&
+-              (isdigit(c) || (islower(c) && isxdigit(c)))) {
+-              if (i == 8 || i == 13 || i == 18 || i == 23)
++              ((c == '-') || isdigit(c) || (islower(c) && isxdigit(c)))) {
++              if ((c != '-') && (i == 8 || i == 13 || i == 18 || i == 23))
+                       uuid[i++] = '-';
+               uuid[i++] = c;
+       }
index cb4bab3a749fd1bd2dbb4dcc7f335666bdc07a9c..816b1818393c79a93ba5520b783dd4097c562990 100644 (file)
@@ -6,14 +6,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=zerotier
-PKG_VERSION:=1.2.10
+PKG_VERSION:=1.2.12
 PKG_RELEASE:=1
 
 PKG_LICENSE:=GPL-3.0
 
 PKG_SOURCE_URL:=https://codeload.github.com/zerotier/ZeroTierOne/tar.gz/$(PKG_VERSION)?
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=1c79ec57e67764079a77704b336e642ae3cf221dc8088b0cf9e9c81e0a9c0c57
+PKG_HASH:=212799bfaeb5e7dff20f2cd83f15742c8e13b8e9535606cfb85abcfb5fb6fed4
 PKG_BUILD_DIR:=$(BUILD_DIR)/ZeroTierOne-$(PKG_VERSION)
 
 
index 21b9c955953446d4b3b01c4b4e52f323c60a057b..76c443c167206e00e4c6327f433e91a539009fe2 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=znc
-PKG_VERSION:=1.6.6
-PKG_RELEASE:=1
+PKG_VERSION:=1.7.1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://znc.in/releases \
                https://znc.in/releases/archive
-PKG_HASH:=7fb841bc71dc1749b1dc081e9eaf22ceb56ebb03c6b1d8804a4f9eb8bbd59525
+PKG_HASH:=44cfea7158ea05dc2547c7c6bc22371e66c869def90351de0ab90a9c200d39c4
 
-PKG_MAINTAINER:=Jonas Gorski <jogo@openwrt.org>
+PKG_MAINTAINER:=Jonas Gorski <jonas.gorski@gmail.com>
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=LICENSE
 
@@ -279,7 +279,7 @@ PKG_CONFIG_DEPENDS += $(patsubst %,CONFIG_PACKAGE_%,$(ZNC_MODULES))
 include $(INCLUDE_DIR)/package.mk
 
 CONFIGURE_VARS += \
-       CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin -fno-rtti" \
+       CXXFLAGS="$(TARGET_CFLAGS) -fno-builtin" \
        CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/include" \
        LDFLAGS="-nodefaultlibs -lc -L$(STAGING_DIR)/usr/lib -L$(STAGING_DIR)/lib" \
        LIBS="-lstdc++ -lm -lssl -lcrypto $(LIBGCC_S) -lc"
diff --git a/net/znc/patches/100-move_rootcheck_after_config.patch b/net/znc/patches/100-move_rootcheck_after_config.patch
deleted file mode 100644 (file)
index 15ecdca..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-From adf42357c9043c38d9a9b47544a1b46445bdae19 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jonas.gorski+openwrt@gmail.com>
-Date: Wed, 6 Apr 2011 04:10:23 +0200
-Subject: [PATCH] Move the root check to after config parsing
-
----
- src/main.cpp | 27 ++++++++++++++-------------
- 1 file changed, 14 insertions(+), 13 deletions(-)
-
---- a/src/main.cpp
-+++ b/src/main.cpp
-@@ -312,19 +312,6 @@ int main(int argc, char** argv) {
-               CUtils::PrintStatus(true, "");
-       }
--      if (isRoot()) {
--              CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid");
--              CUtils::PrintError("reasons for this and it can, in theory, cause great damage!");
--              if (!bAllowRoot) {
--                      CZNC::DestroyInstance();
--                      return 1;
--              }
--              CUtils::PrintError("You have been warned.");
--              CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root.");
--              CUtils::PrintError("ZNC will start in 30 seconds.");
--              sleep(30);
--      }
--
-       if (bMakeConf) {
-               if (!pZNC->WriteNewConfig(sConfig)) {
-                       CZNC::DestroyInstance();
-@@ -346,6 +333,20 @@ int main(int argc, char** argv) {
-               return 1;
-       }
-+      if (isRoot()) {
-+              CUtils::PrintError("You are running ZNC as root! Don't do that! There are not many valid");
-+              CUtils::PrintError("reasons for this and it can, in theory, cause great damage!");
-+              if (!bAllowRoot) {
-+                      CZNC::DestroyInstance();
-+                      return 1;
-+              }
-+              CUtils::PrintError("You have been warned.");
-+              CUtils::PrintError("Hit CTRL+C now if you don't want to run ZNC as root.");
-+              CUtils::PrintError("ZNC will start in 30 seconds.");
-+              sleep(30);
-+      }
-+
-+
-       if (bForeground) {
-               int iPid = getpid();
-               CUtils::PrintMessage("Staying open for debugging [pid: " + CString(iPid) + "]");
index 60d335c74b989c4ef85c2871a293defb0d9fe23c..6282482f0b1e69cb8713a5f4ddba0ab0614a9393 100644 (file)
@@ -11,7 +11,7 @@ Subject: [PATCH] Don't rebuild everything when the Makefile's timestamp
 
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -112,7 +112,7 @@ clean:
+@@ -128,7 +128,7 @@ clean:
  distclean: clean
        rm -rf $(DISTCLEAN)
  
@@ -22,7 +22,7 @@ Subject: [PATCH] Don't rebuild everything when the Makefile's timestamp
        $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@
 --- a/modules/Makefile.in
 +++ b/modules/Makefile.in
-@@ -112,12 +112,12 @@ install_datadir:
+@@ -127,12 +127,12 @@ install_datadir:
  clean:
        rm -rf $(CLEAN)
  
index d92deeea3437f1093983b8028e09b712a4f60010..6395af59187d59f7674fa9093265a63312bc1c55 100644 (file)
@@ -1,15 +1,17 @@
 --- a/src/main.cpp
 +++ b/src/main.cpp
-@@ -304,10 +304,12 @@ int main(int argc, char** argv) {
-                       CUtils::PrintStatus(false, "");
-                       CUtils::PrintError("No modules found. Perhaps you didn't install ZNC properly?");
-                       CUtils::PrintError("Read http://wiki.znc.in/Installation for instructions.");
+@@ -412,12 +412,14 @@ int main(int argc, char** argv) {
+                 "No modules found. Perhaps you didn't install ZNC properly?");
+             CUtils::PrintError(
+                 "Read https://wiki.znc.in/Installation for instructions.");
 +#if 0
-                       if (!CUtils::GetBoolInput("Do you really want to run ZNC without any modules?", false)) {
-                               CZNC::DestroyInstance();
-                               return 1;
-                       }
+             if (!CUtils::GetBoolInput(
+                     "Do you really want to run ZNC without any modules?",
+                     false)) {
+                 CZNC::DestroyInstance();
+                 return 1;
+             }
 +#endif
-               }
-               CUtils::PrintStatus(true, "");
-       }
+         }
+         CUtils::PrintStatus(true, "");
+     }
index e5277f14997bf16d54cc5d32e8c0e42335bbbba2..4cc0d13ce12bae4eac72a6b66ddfbd8cfde1fedd 100644 (file)
@@ -6,17 +6,20 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mpc
-PKG_VERSION:=0.28
+PKG_VERSION:=0.30
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://www.musicpd.org/download/mpc/0
-PKG_HASH:=a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547
+PKG_SOURCE_URL:=https://www.musicpd.org/download/mpc/0
+PKG_HASH:=65fc5b0a8430efe9acbe6e261127960682764b20ab994676371bdc797d867fce
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+
 include $(INCLUDE_DIR)/package.mk
 
 define Package/mpc
@@ -34,23 +37,18 @@ define Package/mpc/description
        this is MPC
 endef
 
-define Build/Configure
-$(call Build/Configure/Default, \
-       --disable-iconv \
-)
-endef
+CONFIGURE_ARGS+= --disable-iconv
 
-define Build/Compile
-$(call Build/Compile/Default,\
-               CFLAGS="$(TARGET_CFLAGS) -std=gnu99" \
-               prefix="/usr" \
-               all \
-)
+# Newer sources require meson/ninja to build so...
+# Use our hacked-up version of the mpc v0.28 autotools.
+define Build/Prepare
+       $(call Build/Prepare/Default)
+       $(CP) ./autotools-files/* $(PKG_BUILD_DIR)/
 endef
 
 define Package/mpc/install
        $(INSTALL_DIR) $(1)/usr/bin
-       $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mpc $(1)/usr/bin/
+       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/mpc $(1)/usr/bin/
        $(INSTALL_BIN) ./files/pls-handler.sh $(1)/usr/bin/
 endef
 
diff --git a/sound/mpc/autotools-files/Makefile.am b/sound/mpc/autotools-files/Makefile.am
new file mode 100644 (file)
index 0000000..75c0ca3
--- /dev/null
@@ -0,0 +1,33 @@
+ACLOCAL_AMFLAGS = -I m4
+AUTOMAKE_OPTIONS = foreign 1.11 dist-xz subdir-objects
+
+bin_PROGRAMS = src/mpc
+
+src_mpc_SOURCES = \
+       src/main.c src/mpc.h \
+       src/list.c src/list.h \
+       src/password.c src/password.h \
+       src/status.c src/status.h \
+       src/args.c src/args.h \
+       src/format.c src/format.h \
+       src/song_format.c src/song_format.h \
+       src/util.c src/util.h \
+       src/command.c src/command.h \
+       src/queue.c src/queue.h \
+       src/sticker.c src/sticker.h \
+       src/tab.c src/tab.h \
+       src/idle.c src/idle.h \
+       src/message.c src/message.h \
+       src/search.c src/search.h \
+       src/output.c src/output.h \
+       src/options.c src/options.h \
+       src/path.c src/path.h \
+       src/Compiler.h
+
+if HAVE_ICONV
+src_mpc_SOURCES += src/charset.c src/charset.h
+endif
+
+src_mpc_CPPFLAGS = $(AM_CPPFLAGS) $(ICONV_CFLAGS) $(LIBMPDCLIENT_CFLAGS)
+src_mpc_LDADD = $(ICONV_LIBS) $(LIBMPDCLIENT_LIBS)
+
diff --git a/sound/mpc/autotools-files/config.h.in b/sound/mpc/autotools-files/config.h.in
new file mode 100644 (file)
index 0000000..f3e89cb
--- /dev/null
@@ -0,0 +1,61 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if iconv() support is enabled */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#undef HAVE_LANGINFO_CODESET
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/sound/mpc/autotools-files/configure.ac b/sound/mpc/autotools-files/configure.ac
new file mode 100644 (file)
index 0000000..9eb1ee2
--- /dev/null
@@ -0,0 +1,177 @@
+AC_PREREQ(2.60)
+AC_INIT(mpc, 0.30, musicpd-dev-team@lists.sourceforge.net)
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_SRCDIR(src/main.c)
+AM_INIT_AUTOMAKE([foreign 1.11 dist-xz subdir-objects])
+AM_SILENT_RULES
+AC_CONFIG_HEADERS(config.h)
+
+
+dnl
+dnl programs
+dnl
+
+AC_PROG_CC_C99
+AC_PROG_INSTALL
+AC_PROG_MAKE_SET
+PKG_PROG_PKG_CONFIG
+
+
+dnl
+dnl declare variables
+dnl
+
+AC_SUBST(AM_CFLAGS)
+AC_SUBST(AM_CPPFLAGS)
+
+
+dnl
+dnl OS specific defaults
+dnl
+
+case "$host" in
+*-mingw32* | *-windows* | *-cygwin*)
+       AM_CFLAGS="$AM_CFLAGS -mms-bitfields -fno-strict-aliasing"
+       ;;
+esac
+
+if test -z "$prefix" || test "x$prefix" = xNONE; then
+       local_lib=
+       local_include=
+
+       # aren't autotools supposed to be smart enough to figure this out?
+       # oh well, the git-core Makefile managed to do some of the work for us :)
+       case "`uname -s | tr A-Z a-z`" in
+       darwin*)
+               local_lib='/sw/lib /opt/local/lib'
+               local_include='/sw/include /opt/local/include'
+               ;;
+       freebsd* | openbsd*)
+               local_lib=/usr/local/lib
+               local_include=/usr/local/include
+               ;;
+       netbsd*)
+               local_lib=/usr/pkg/lib
+               local_include=/usr/pkg/include
+               LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/pkg/lib"
+               ;;
+       esac
+
+       for d in $local_lib; do
+               if test -d "$d"; then
+                       LDFLAGS="$LDFLAGS -L$d"
+                       break
+               fi
+       done
+       for d in $local_include; do
+               if test -d "$d"; then
+                       CFLAGS="$CFLAGS -I$d"
+                       break
+               fi
+       done
+fi
+
+
+dnl
+dnl libc features
+dnl
+
+PKG_CHECK_MODULES([LIBMPDCLIENT], [libmpdclient >= 2.9],,
+       [AC_MSG_ERROR([libmpdclient 2.9 is required])])
+
+
+dnl
+dnl i18n / l10n (iconv)
+dnl
+
+AC_ARG_ENABLE(iconv,
+       AS_HELP_STRING([--disable-iconv],
+               [disable iconv support (default: enable)]),,
+       [enable_iconv=yes])
+
+if test x$enable_iconv = xyes; then
+       AC_CHECK_FUNC(iconv,
+               [ICONV_CFLAGS="" ICONV_LIBS=""],
+               [AC_CHECK_LIB(intl, iconv,
+                       [ICONV_CFLAGS="" ICONV_LIBS="-lintl"],
+                       [enable_iconv=no])])
+fi
+
+if test x$enable_iconv = xyes; then
+       AC_CHECK_HEADER([locale.h],, [enable_iconv=no])
+       if test x$enable_iconv != xyes; then
+               AC_MSG_WARN(locale.h not available - disabling iconv)
+       fi
+fi
+
+if test x$enable_iconv = xyes; then
+       AC_DEFINE(HAVE_ICONV, 1, [Define if iconv() support is enabled])
+else
+       ICONV_CPPFLAGS=""
+       ICONV_LIBS=""
+fi
+
+AC_SUBST(ICONV_CPPFLAGS)
+AC_SUBST(ICONV_LIBS)
+
+AM_CONDITIONAL(HAVE_ICONV, test x$enable_iconv = xyes)
+
+
+dnl
+dnl CFLAGS
+dnl
+
+AX_APPEND_COMPILE_FLAGS([-Wall])
+AX_APPEND_COMPILE_FLAGS([-Wextra])
+AX_APPEND_COMPILE_FLAGS([-Wno-deprecated-declarations])
+AX_APPEND_COMPILE_FLAGS([-Wmissing-prototypes])
+AX_APPEND_COMPILE_FLAGS([-Wshadow])
+AX_APPEND_COMPILE_FLAGS([-Wpointer-arith])
+AX_APPEND_COMPILE_FLAGS([-Wstrict-prototypes])
+AX_APPEND_COMPILE_FLAGS([-Wcast-qual])
+AX_APPEND_COMPILE_FLAGS([-Wwrite-strings])
+
+
+dnl
+dnl build options
+dnl
+
+AC_ARG_ENABLE(werror,
+       AS_HELP_STRING([--enable-werror],
+               [Treat warnings as errors @<:@default=disabled@:>@]),,
+       enable_werror=no)
+
+if test "x$enable_werror" = xyes; then
+       AM_CFLAGS="$AM_CFLAGS -Werror -pedantic-errors"
+fi
+
+AC_ARG_ENABLE(debug,
+       AS_HELP_STRING([--enable-debug],
+               [Enable debugging @<:@default=disabled@:>@]),,
+       enable_debug=no)
+
+if test "x$enable_debug" = xno; then
+       AM_CPPFLAGS="$AM_CPPFLAGS -DNDEBUG"
+
+       AX_APPEND_COMPILE_FLAGS([-ffunction-sections])
+       AX_APPEND_COMPILE_FLAGS([-fdata-sections])
+       AX_APPEND_COMPILE_FLAGS([-fvisibility=hidden])
+
+       AX_APPEND_LINK_FLAGS([-Wl,--gc-sections])
+fi
+
+AC_ARG_ENABLE(test,
+       AS_HELP_STRING([--enable-test],
+               [build the test programs (default: disabled)]),,
+       enable_test=no)
+
+if test "x$enable_test" = xyes; then
+       AM_PATH_CHECK(,, [AC_MSG_ERROR([check not found])])
+fi
+
+AM_CONDITIONAL(ENABLE_TEST, test "x$enable_test" = xyes)
+
+
+dnl
+
+AC_OUTPUT(Makefile)
diff --git a/sound/mpc/autotools-files/m4/ax_append_compile_flags.m4 b/sound/mpc/autotools-files/m4/ax_append_compile_flags.m4
new file mode 100644 (file)
index 0000000..dc7b866
--- /dev/null
@@ -0,0 +1,65 @@
+# ===========================================================================
+#  http://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
+#
+# DESCRIPTION
+#
+#   For every FLAG1, FLAG2 it is checked whether the compiler works with the
+#   flag.  If it does, the flag is added FLAGS-VARIABLE
+#
+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+#   CFLAGS) is used.  During the check the flag is always added to the
+#   current language's flags.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   NOTE: This macro depends on the AX_APPEND_FLAG and
+#   AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
+#   AX_APPEND_LINK_FLAGS.
+#
+# LICENSE
+#
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 4
+
+AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+  AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3])
+done
+])dnl AX_APPEND_COMPILE_FLAGS
diff --git a/sound/mpc/autotools-files/m4/ax_append_flag.m4 b/sound/mpc/autotools-files/m4/ax_append_flag.m4
new file mode 100644 (file)
index 0000000..08f2e07
--- /dev/null
@@ -0,0 +1,71 @@
+# ===========================================================================
+#      http://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+#   FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+#   added in between.
+#
+#   If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+#   CFLAGS) is used.  FLAGS-VARIABLE is not changed if it already contains
+#   FLAG.  If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+#   FLAG.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 6
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+  AS_CASE([" AS_VAR_GET(FLAGS) "],
+    [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+    [
+     AS_VAR_APPEND(FLAGS,[" $1"])
+     AC_RUN_LOG([: FLAGS="$FLAGS"])
+    ])
+  ],
+  [
+  AS_VAR_SET(FLAGS,[$1])
+  AC_RUN_LOG([: FLAGS="$FLAGS"])
+  ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
diff --git a/sound/mpc/autotools-files/m4/ax_append_link_flags.m4 b/sound/mpc/autotools-files/m4/ax_append_link_flags.m4
new file mode 100644 (file)
index 0000000..c73ddaf
--- /dev/null
@@ -0,0 +1,63 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS])
+#
+# DESCRIPTION
+#
+#   For every FLAG1, FLAG2 it is checked whether the linker works with the
+#   flag.  If it does, the flag is added FLAGS-VARIABLE
+#
+#   If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is
+#   used. During the check the flag is always added to the linker's flags.
+#
+#   If EXTRA-FLAGS is defined, it is added to the linker's default flags
+#   when the check is done.  The check is thus made with the flags: "LDFLAGS
+#   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to
+#   issue an error when a bad flag is given.
+#
+#   NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG.
+#   Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS.
+#
+# LICENSE
+#
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 4
+
+AC_DEFUN([AX_APPEND_LINK_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+  AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3])
+done
+])dnl AX_APPEND_LINK_FLAGS
diff --git a/sound/mpc/autotools-files/m4/ax_check_compile_flag.m4 b/sound/mpc/autotools-files/m4/ax_check_compile_flag.m4
new file mode 100644 (file)
index 0000000..ca36397
--- /dev/null
@@ -0,0 +1,74 @@
+# ===========================================================================
+#   http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   Check whether the given FLAG works with the current language's compiler
+#   or gives an error.  (Warnings, however, are ignored)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+#   If EXTRA-FLAGS is defined, it is added to the current language's default
+#   flags (e.g. CFLAGS) when the check is done.  The check is thus made with
+#   the flags: "CFLAGS EXTRA-FLAGS FLAG".  This can for example be used to
+#   force the compiler to issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+#   macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 4
+
+AC_DEFUN([AX_CHECK_COMPILE_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
+AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
+  ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
+  _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
+  AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+    [AS_VAR_SET(CACHEVAR,[yes])],
+    [AS_VAR_SET(CACHEVAR,[no])])
+  _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+  [m4_default([$2], :)],
+  [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_COMPILE_FLAGS
diff --git a/sound/mpc/autotools-files/m4/ax_check_link_flag.m4 b/sound/mpc/autotools-files/m4/ax_check_link_flag.m4
new file mode 100644 (file)
index 0000000..eb01a6c
--- /dev/null
@@ -0,0 +1,74 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+#   Check whether the given FLAG works with the linker or gives an error.
+#   (Warnings, however, are ignored)
+#
+#   ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+#   success/failure.
+#
+#   If EXTRA-FLAGS is defined, it is added to the linker's default flags
+#   when the check is done.  The check is thus made with the flags: "LDFLAGS
+#   EXTRA-FLAGS FLAG".  This can for example be used to force the linker to
+#   issue an error when a bad flag is given.
+#
+#   INPUT gives an alternative input source to AC_LINK_IFELSE.
+#
+#   NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+#   macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
+#
+# LICENSE
+#
+#   Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+#   Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+#   This program is free software: you can redistribute it and/or modify it
+#   under the terms of the GNU General Public License as published by the
+#   Free Software Foundation, either version 3 of the License, or (at your
+#   option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY; without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
+#   Public License for more details.
+#
+#   You should have received a copy of the GNU General Public License along
+#   with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Archive. When you make and distribute a
+#   modified version of the Autoconf Macro, you may extend this special
+#   exception to the GPL to apply to your modified version as well.
+
+#serial 4
+
+AC_DEFUN([AX_CHECK_LINK_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
+AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
+  ax_check_save_flags=$LDFLAGS
+  LDFLAGS="$LDFLAGS $4 $1"
+  AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+    [AS_VAR_SET(CACHEVAR,[yes])],
+    [AS_VAR_SET(CACHEVAR,[no])])
+  LDFLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+  [m4_default([$2], :)],
+  [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_LINK_FLAGS
diff --git a/sound/mpc/autotools-files/m4/ax_require_defined.m4 b/sound/mpc/autotools-files/m4/ax_require_defined.m4
new file mode 100644 (file)
index 0000000..cae1111
--- /dev/null
@@ -0,0 +1,37 @@
+# ===========================================================================
+#    http://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+#   AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+#   been defined and thus are available for use.  This avoids random issues
+#   where a macro isn't expanded.  Instead the configure script emits a
+#   non-fatal:
+#
+#     ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+#   It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+#   Here's an example:
+#
+#     AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+#   Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+#   Copying and distribution of this file, with or without modification, are
+#   permitted in any medium without royalty provided the copyright notice
+#   and this notice are preserved. This file is offered as-is, without any
+#   warranty.
+
+#serial 1
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+  m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
diff --git a/sound/mpc/autotools-files/m4/check.m4 b/sound/mpc/autotools-files/m4/check.m4
new file mode 100644 (file)
index 0000000..9515ae0
--- /dev/null
@@ -0,0 +1,132 @@
+dnl AM_PATH_CHECK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
+dnl Test for check, and define CHECK_CFLAGS and CHECK_LIBS
+dnl
+
+AC_DEFUN([AM_PATH_CHECK],
+[
+  AC_MSG_WARN([A@&t@M_PATH_CHECK() is deprecated])
+  AC_MSG_WARN([[use P@&t@KG_CHECK_MODULES([CHECK], [check >= 0.9.4]) instead]])
+  AC_ARG_WITH([check],
+  [  --with-check=PATH       prefix where check is installed [default=auto]])
+  min_check_version=ifelse([$1], ,0.8.2,$1)
+
+  AC_MSG_CHECKING(for check - version >= $min_check_version)
+
+  if test x$with_check = xno; then
+    AC_MSG_RESULT(disabled)
+    ifelse([$3], , AC_MSG_ERROR([disabling check is not supported]), [$3])
+  else
+    if test "x$with_check" != x; then
+      CHECK_CFLAGS="-I$with_check/include"
+      CHECK_LIBS="-L$with_check/lib -lcheck"
+    else
+      CHECK_CFLAGS=""
+      CHECK_LIBS="-lcheck"
+    fi
+
+    ac_save_CFLAGS="$CFLAGS"
+    ac_save_LIBS="$LIBS"
+
+    CFLAGS="$CFLAGS $CHECK_CFLAGS"
+    LIBS="$CHECK_LIBS $LIBS"
+
+    rm -f conf.check-test
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT([])
+#include <check.h>
+
+int main ()
+{
+  int major, minor, micro;
+  char *tmp_version;
+
+  system ("touch conf.check-test");
+
+  /* HP/UX 9 (%@#!) writes to sscanf strings */
+  tmp_version = strdup("$min_check_version");
+  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
+     printf("%s, bad version string\n", "$min_check_version");
+     return 1;
+   }
+    
+  if ((CHECK_MAJOR_VERSION != check_major_version) ||
+      (CHECK_MINOR_VERSION != check_minor_version) ||
+      (CHECK_MICRO_VERSION != check_micro_version))
+    {
+      printf("\n*** The check header file (version %d.%d.%d) does not match\n",
+            CHECK_MAJOR_VERSION, CHECK_MINOR_VERSION, CHECK_MICRO_VERSION);
+      printf("*** the check library (version %d.%d.%d).\n",
+            check_major_version, check_minor_version, check_micro_version);
+      return 1;
+    }
+
+  if ((check_major_version > major) ||
+      ((check_major_version == major) && (check_minor_version > minor)) ||
+      ((check_major_version == major) && (check_minor_version == minor) && (check_micro_version >= micro)))
+    {
+      return 0;
+    }
+  else
+    {
+      printf("\n*** An old version of check (%d.%d.%d) was found.\n",
+             check_major_version, check_minor_version, check_micro_version);
+      printf("*** You need a version of check being at least %d.%d.%d.\n", major, minor, micro);
+      printf("***\n"); 
+      printf("*** If you have already installed a sufficiently new version, this error\n");
+      printf("*** probably means that the wrong copy of the check library and header\n");
+      printf("*** file is being found. Rerun configure with the --with-check=PATH option\n");
+      printf("*** to specify the prefix where the correct version was installed.\n");
+    }
+
+  return 1;
+}
+])],, no_check=yes, [echo $ac_n "cross compiling; assumed OK... $ac_c"])
+
+    CFLAGS="$ac_save_CFLAGS"
+    LIBS="$ac_save_LIBS"
+
+    if test "x$no_check" = x ; then
+      AC_MSG_RESULT(yes)
+      ifelse([$2], , :, [$2])
+    else
+      AC_MSG_RESULT(no)
+      if test -f conf.check-test ; then
+        :
+      else
+        echo "*** Could not run check test program, checking why..."
+        CFLAGS="$CFLAGS $CHECK_CFLAGS"
+        LIBS="$CHECK_LIBS $LIBS"
+        AC_TRY_LINK([
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <check.h>
+], ,  [ echo "*** The test program compiled, but did not run. This usually means"
+        echo "*** that the run-time linker is not finding check. You'll need to set your"
+        echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+        echo "*** to the installed location  Also, make sure you have run ldconfig if that"
+        echo "*** is required on your system"
+       echo "***"
+        echo "*** If you have an old version installed, it is best to remove it, although"
+        echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
+      [ echo "*** The test program failed to compile or link. See the file config.log for"
+        echo "*** the exact error that occured." ])
+      
+        CFLAGS="$ac_save_CFLAGS"
+        LIBS="$ac_save_LIBS"
+      fi
+
+      CHECK_CFLAGS=""
+      CHECK_LIBS=""
+
+      rm -f conf.check-test
+      ifelse([$3], , AC_MSG_ERROR([check not found]), [$3])
+    fi
+
+    AC_SUBST(CHECK_CFLAGS)
+    AC_SUBST(CHECK_LIBS)
+
+    rm -f conf.check-test
+
+  fi
+])
index 771984cba3ec9caf435fc2963108f8b08bbc73de..132f22fb0f20ae5a9c0378913a30d91d4176f2cf 100644 (file)
@@ -6,12 +6,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mpd
-PKG_VERSION:=0.20.9
-PKG_RELEASE:=2
+PKG_VERSION:=0.20.20
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.20/
-PKG_HASH:=cd77a2869e32354b004cc6b34fcb0bee56114caa2d9ed862aaa8071441e34eb7
+PKG_HASH:=a9e458c6e07cdf62649de7722e1e5a7f13aa82eeb397bfbbebc07cf5cf273584
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 
 PKG_LICENSE:=GPL-2.0
@@ -35,7 +35,7 @@ define Package/mpd/Default
   TITLE:=Music Player Daemon
   URL:=http://www.musicpd.org/
   DEPENDS:= +zlib +libcurl +libpthread +libmpdclient +libstdcpp $(ICONV_DEPENDS) \
-           +AUDIO_SUPPORT:alsa-lib +boost +boost-container +libexpat
+           +AUDIO_SUPPORT:alsa-lib +boost +boost-container +libexpat +libflac
 endef
 
 define Package/mpd/Default/description
@@ -66,7 +66,7 @@ endef
 define Package/mpd-mini
 $(call Package/mpd/Default)
   TITLE+= (mini)
-  DEPENDS+= +libflac +libmpg123 +libvorbisidec
+  DEPENDS+= +libmpg123 +libvorbisidec
   PROVIDES:=mpd
   VARIANT:=mini
 endef
@@ -162,7 +162,6 @@ ifeq ($(BUILD_VARIANT),full)
   CONFIGURE_ARGS += \
        --enable-upnp \
        --enable-ffmpeg \
-       --disable-flac \
        --enable-id3 \
        --enable-mms \
        --disable-mpg123 \
index 7f31d7d06d76a5b43ebba23ea88234a605a95096..a8981cdd63586798208c5996e8263fb430c2d135 100644 (file)
@@ -1,6 +1,6 @@
 --- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
 +++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
-@@ -931,6 +931,7 @@ static const char *const ffmpeg_mime_typ
+@@ -937,6 +937,7 @@ static const char *const ffmpeg_mime_typ
        "audio/qcelp",
        "audio/vorbis",
        "audio/vorbis+ogg",
index f30cd17fe8cfcc7f583220baf46f68db2d4d5ff3..c5c15823b58e94f2088b124fc42221cea9dadaab 100644 (file)
@@ -7,15 +7,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=shairport-sync
-PKG_VERSION:=3.1.6
+PKG_VERSION:=3.2.1
 PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/mikebrady/shairport-sync.git
+PKG_SOURCE_URL:=https://github.com/mikebrady/shairport-sync.git
 PKG_SOURCE_VERSION:=$(PKG_VERSION)
 PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=8f440a6bca6a58d04f7c0f6c7ea711b31a0aa4abc7e4d8f4da7346a085dcd966
+PKG_MIRROR_HASH:=f07553651485d04e9482ebb94eb8034fb46076664c716d060514a85b3ce8aef3
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
                Mike Brady <mikebrady@eircom.net>
 
@@ -35,7 +35,7 @@ define Package/shairport-sync/default
   TITLE:=AirPlay compatible audio player
   DEPENDS:=@AUDIO_SUPPORT +libpthread +libstdcpp +alsa-lib +libconfig +libdaemon +libpopt
   PROVIDES:=shairport-sync
-  URL:=http://github.com/mikebrady/shairport-sync
+  URL:=https://github.com/mikebrady/shairport-sync
 endef
 
 define Package/shairport-sync-openssl
index 53e23561d225c434175d9238a7ef7d36b4ce01b4..f7469102483e760a51f3207725e335f63d281c38 100644 (file)
@@ -8,16 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acl
-PKG_REV:=c39f7c5475e3e00d8abeb7b30e61958670fb3ee2
-PKG_VERSION:=20180121
+PKG_VERSION:=2.2.53
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=0291d931bbac041f14bc12d317e505cd596e0ec6f1b8bcdfa03b9a1fad274ac2
-PKG_SOURCE_URL:=https://git.savannah.gnu.org/git/acl.git
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=$(PKG_REV)
+PKG_SOURCE_URL:=https://git.savannah.nongnu.org/cgit/acl.git/snapshot
+PKG_HASH:=9e905397ac10d06768c63edd0579c34b8431555f2ea8e8f2cee337b31f856805
 PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
 
 PKG_LICENSE:=LGPL-2.1 GPL-2.0
@@ -30,7 +26,7 @@ include $(INCLUDE_DIR)/package.mk
 
 define Package/acl/Default
   TITLE:=Access control list (ACL) manipulation
-  URL:=http://savannah.nongnu.org/projects/acl
+  URL:=https://savannah.nongnu.org/projects/acl
   SUBMENU:=Filesystem
 endef
 
index faab8c6947b1d1f0c292c4e4125ab43542795483..aea241df32b6461cb73c2dff0f0ff5fe619bf1b4 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acpica-unix
-PKG_VERSION:=20180427
+PKG_VERSION:=20180629
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://acpica.org/sites/$(patsubst %-unix,%,$(PKG_NAME))/files/$(PKG_SOURCE_URL)
-PKG_HASH:=ae01b2d9e06192dca8fec9ccba327f766454e10935f98f608ec7de2690fd0c16
+PKG_HASH:=70d11f3f2adbdc64a5b33753e1889918af811ec8050722fbee0fdfc3bfd29a4f
 PKG_MAINTAINER:=Philip Prindeville <philipp@redfish-solutions.com>
 
 PKG_LICENSE:=GPL-2.0
index 8e0538001d37c8701bd7ab502293a5025704fd60..c327aa8489787a7ed85fc9c5c3572ef306665bd3 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=acpid
-PKG_VERSION:=2.0.29
+PKG_VERSION:=2.0.30
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@SF/acpid2
-PKG_HASH:=58503b27975c466e627eb741c5453dd662f97edef1a3d0aac822fd03a84203ff
+PKG_HASH:=28b77b62d3f64ebd1c2a3d16bccc6d4333b4e24a86aeacebec255fad223cf4cb
 PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=COPYING
@@ -24,8 +24,8 @@ define Package/acpid
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=The ACPI Daemon (acpid) With Netlink Support
-  URL:=http://tedfelix.com/linux/acpid-netlink.html
-  DEPENDS:=+kmod-input-evdev 
+  URL:=https://sourceforge.net/projects/acpid2/
+  DEPENDS:=+kmod-input-evdev
 endef
 
 define Package/acpid/description
diff --git a/utils/acpid/patches/002-dont-use-isfdtype.patch b/utils/acpid/patches/002-dont-use-isfdtype.patch
deleted file mode 100644 (file)
index cd4e062..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Partially roll back upstream commit 4711119089e1ad08dad206f4fded68f1972fdeed
-since released versions of uClibc don't support isfdtype().
-
-Signed-off-by: Gustavo Zaarias <gustavo@zacarias.com.ar>
-
-Index: acpid-2.0.23/sock.c
-===================================================================
---- acpid-2.0.23.orig/sock.c
-+++ acpid-2.0.23/sock.c
-@@ -53,7 +53,10 @@ int non_root_clients;
- int
- is_socket(int fd)
- {
--    return (isfdtype(fd, S_IFSOCK) == 1);
-+      int v;
-+      socklen_t l = sizeof(int);
-+
-+      return (getsockopt(fd, SOL_SOCKET, SO_TYPE, (char *)&v, &l) == 0);
- }
- /* accept a new client connection */
index ea2eb2f80045461e0f49e85446b988cd87d3a4fd..10ba299aaa6fdf776fca289174a0584c0c6a512d 100644 (file)
@@ -7,15 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ap51-flash
-PKG_VERSION:=2017-12-07
+PKG_VERSION:=2018.0
 PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/ap51-flash/ap51-flash.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=f94f9c99711d14a3c0186318d822d67d9d0ce391
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
-PKG_MIRROR_HASH:=15786a0ecae9be5ed4e8f32940624d1a1c83da924294df08003616a863947074
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/ap51-flash/ap51-flash/releases/download/v$(PKG_VERSION)
+PKG_HASH:=e38e48a12d7c7b8e189f5538b78bbf00548044414d9ededa18ec9a5b5886afaa
 PKG_MAINTAINER:=Russell Senior <russell@personaltelco.net>
 PKG_LICENSE:=GPL-3.0+
 PKG_LICENSE_FILES:=LICENSES/preferred/GPL-3.0
@@ -26,7 +23,7 @@ define Package/ap51-flash
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=A tool for flashing (nearly) all ap51/ap61 based routers
-  URL:=http://dev.cloudtrax.com/wiki/ap51-flash-station
+  URL:=https://ap51-flash.readthedocs.io/en/latest/
 endef
 
 # pass optimization flags
index 1c3bcccf6c660afc6e09d589f82040254c3d32b9..10f5eb73248365414f383205a0bda0117deb854c 100644 (file)
@@ -8,16 +8,16 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=bluez
-PKG_VERSION:=5.49
-PKG_RELEASE:=2
+PKG_VERSION:=5.50
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/bluetooth/
-PKG_HASH:=33301d7a514c73d535ee1f91c2aed1af1f2e53efe11d3ac06bcf0d7abed2ce95
+PKG_HASH:=5ffcaae18bbb6155f1591be8c24898dc12f062075a40b538b745bfd477481911
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
-PKG_MAINTAINER:=Nicolas Thill <nico@openwrt.org>
+PKG_MAINTAINER:=
 
 PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
@@ -143,8 +143,6 @@ define Package/bluez-daemon/install
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/bluetooth/bluetoothd $(1)/usr/bin/
        $(CP) $(PKG_INSTALL_DIR)/usr/bin/bluetoothctl $(1)/usr/bin/
        $(CP) $(PKG_INSTALL_DIR)/usr/lib/bluetooth/obexd $(1)/usr/bin/
-       $(INSTALL_DIR) $(1)/etc/config
-       $(INSTALL_DATA) ./files/bluetooth.config $(1)/etc/config/bluetooth
        $(INSTALL_DIR) $(1)/etc/dbus-1/system.d/
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/src/bluetooth.conf $(1)/etc/dbus-1/system.d/bluetooth.conf
        $(INSTALL_DIR) $(1)/etc/bluetooth
diff --git a/utils/bluez/files/bluetooth.config b/utils/bluez/files/bluetooth.config
deleted file mode 100644 (file)
index 6f23617..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-config bluetoothd
-#      option config   /etc/bluetooth/main.conf
-       option enabled  1
-
-config hciattach
-       option initspeed        115200
-       option tty      ttyS1
-       option type     csr
-       option speed    115200
-       option flow     noflow
-       option enabled  0
-
-config rfcomm
-#      option config   /etc/bluetooth/rfcomm.conf
-       option enabled  0
index ac42cb08cd060b2224dd1f10b576d1d19188be98..01c7e5e9ea2bbde855a49ae85575446764548021 100644 (file)
@@ -1,6 +1,6 @@
---- a/Makefile.in      2017-09-14 11:47:06.000000000 +0200
-+++ b/Makefile.in      2017-09-15 02:52:39.315926972 +0200
-@@ -2472,7 +2472,7 @@
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -2547,7 +2547,7 @@ unit_tests = $(am__append_52) unit/test-
  @CLIENT_TRUE@                                 client/gatt.h client/gatt.c
  
  @CLIENT_TRUE@client_bluetoothctl_LDADD = gdbus/libgdbus-internal.la src/libshared-glib.la \
@@ -9,7 +9,7 @@
  
  @MESH_TRUE@mesh_meshctl_SOURCES = mesh/main.c \
  @MESH_TRUE@                           mesh/mesh-net.h \
-@@ -2491,7 +2491,7 @@
+@@ -2566,7 +2566,7 @@ unit_tests = $(am__append_52) unit/test-
  
  @MESH_TRUE@mesh_meshctl_LDADD = gdbus/libgdbus-internal.la src/libshared-glib.la \
  @MESH_TRUE@                           lib/libbluetooth-internal.la \
@@ -18,7 +18,7 @@
  
  @MONITOR_TRUE@monitor_btmon_SOURCES = monitor/main.c monitor/bt.h \
  @MONITOR_TRUE@                                monitor/display.h monitor/display.c \
-@@ -2747,7 +2747,7 @@
+@@ -2827,7 +2827,7 @@ unit_tests = $(am__append_52) unit/test-
  @READLINE_TRUE@                                               tools/obex-client-tool.c
  
  @READLINE_TRUE@tools_obex_client_tool_LDADD = lib/libbluetooth-internal.la \
@@ -27,7 +27,7 @@
  
  @READLINE_TRUE@tools_obex_server_tool_SOURCES = $(gobex_sources) $(btio_sources) \
  @READLINE_TRUE@                                               tools/obex-server-tool.c
-@@ -2756,15 +2756,15 @@
+@@ -2836,15 +2836,15 @@ unit_tests = $(am__append_52) unit/test-
  @READLINE_TRUE@tools_bluetooth_player_SOURCES = tools/bluetooth-player.c
  @READLINE_TRUE@tools_bluetooth_player_LDADD = gdbus/libgdbus-internal.la \
  @READLINE_TRUE@                               src/libshared-glib.la \
@@ -46,7 +46,7 @@
  
  @DEPRECATED_TRUE@@READLINE_TRUE@attrib_gatttool_SOURCES = attrib/gatttool.c attrib/att.c attrib/gatt.c \
  @DEPRECATED_TRUE@@READLINE_TRUE@                              attrib/gattrib.c btio/btio.c \
-@@ -2773,7 +2773,7 @@
+@@ -2853,7 +2853,7 @@ unit_tests = $(am__append_52) unit/test-
  @DEPRECATED_TRUE@@READLINE_TRUE@                              client/display.h
  
  @DEPRECATED_TRUE@@READLINE_TRUE@attrib_gatttool_LDADD = lib/libbluetooth-internal.la \
index cf76ae149cf2151c753fe1ce8c659c33e738989c..8f5e3a67c0e2bafdf8c6bcd66e82accb77fe8153 100644 (file)
@@ -1,5 +1,5 @@
---- a/src/shared/util.h.old    2016-09-26 07:29:00.000000000 -0500
-+++ b/src/shared/util.h        2017-12-27 22:49:50.538716424 -0600
+--- a/src/shared/util.h
++++ b/src/shared/util.h
 @@ -26,6 +26,7 @@
  #include <alloca.h>
  #include <byteswap.h>
index 749787c5b3a7f6338b5007184cb1a2fa52ca6728..7ed295168fae0d6aa34958a8d2b0e46aefa50df3 100644 (file)
@@ -16,11 +16,9 @@ directly, and to do so it needs the full path of the daemon.
  delete mode 100644 obexd/src/org.bluez.obex.service
  create mode 100644 obexd/src/org.bluez.obex.service.in
 
-diff --git a/Makefile.obexd b/Makefile.obexd
-index 3760867..142e7c3 100644
 --- a/Makefile.obexd
 +++ b/Makefile.obexd
-@@ -2,12 +2,12 @@
+@@ -1,12 +1,12 @@
  if SYSTEMD
  systemduserunitdir = @SYSTEMD_USERUNITDIR@
  systemduserunit_DATA = obexd/src/obex.service
@@ -33,11 +31,8 @@ index 3760867..142e7c3 100644
 -EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
 +EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
  
- obex_plugindir = $(libdir)/obex/plugins
+ if OBEX
  
-diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
-deleted file mode 100644
-index a538088..0000000
 --- a/obexd/src/org.bluez.obex.service
 +++ /dev/null
 @@ -1,4 +0,0 @@
@@ -45,9 +40,6 @@ index a538088..0000000
 -Name=org.bluez.obex
 -Exec=/bin/false
 -SystemdService=dbus-org.bluez.obex.service
-diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
-new file mode 100644
-index 0000000..9c815f2
 --- /dev/null
 +++ b/obexd/src/org.bluez.obex.service.in
 @@ -0,0 +1,4 @@
@@ -55,7 +47,3 @@ index 0000000..9c815f2
 +Name=org.bluez.obex
 +Exec=@libexecdir@/obexd
 +SystemdService=dbus-org.bluez.obex.service
--- 
-1.8.3.1
-
-
index 698fe232ffaf7227b881618911a27cb6f7aa57e9..363bd400e23c2e40db13af84dd8646fbc9d97aa4 100644 (file)
@@ -1,5 +1,3 @@
-diff --git a/src/bluetooth.conf b/src/bluetooth.conf
-index 0c0b221..013cf97 100644
 --- a/src/bluetooth.conf
 +++ b/src/bluetooth.conf
 @@ -26,10 +26,10 @@
diff --git a/utils/bluez/patches/205-refresh_adv_manager_for_non-LE_devices.patch b/utils/bluez/patches/205-refresh_adv_manager_for_non-LE_devices.patch
new file mode 100644 (file)
index 0000000..e9813e6
--- /dev/null
@@ -0,0 +1,46 @@
+From 2c3bba7b38be03834162e34069156f1fd49f0528 Mon Sep 17 00:00:00 2001
+From: "antoine.belvire@laposte.net" <antoine.belvire@laposte.net>
+Date: Tue, 27 Mar 2018 20:30:26 +0200
+Subject: adapter: Don't refresh adv_manager for non-LE devices
+
+btd_adv_manager_refresh is called upon MGMT_SETTING_DISCOVERABLE setting change
+but as only LE adapters have an adv_manager, this leads to segmentation fault
+for non-LE devices:
+
+0  btd_adv_manager_refresh (manager=0x0) at src/advertising.c:1176
+1  0x0000556fe45fcb02 in settings_changed (settings=<optimized out>,
+    adapter=0x556fe53f7c70) at src/adapter.c:543
+2  new_settings_callback (index=<optimized out>, length=<optimized out>,
+    param=<optimized out>, user_data=0x556fe53f7c70) at src/adapter.c:573
+3  0x0000556fe462c278 in request_complete (mgmt=mgmt@entry=0x556fe53f20c0,
+    status=<optimized out>, opcode=opcode@entry=7, index=index@entry=0,
+    length=length@entry=4, param=0x556fe53eb5f9) at src/shared/mgmt.c:261
+4  0x0000556fe462cd9d in can_read_data (io=<optimized out>,
+    user_data=0x556fe53f20c0) at src/shared/mgmt.c:353
+5  0x0000556fe46396e3 in watch_callback (channel=<optimized out>,
+    cond=<optimized out>, user_data=<optimized out>)
+    at src/shared/io-glib.c:170
+6  0x00007fe351c980e5 in g_main_context_dispatch ()
+   from /usr/lib64/libglib-2.0.so.0
+7  0x00007fe351c984b0 in ?? () from /usr/lib64/libglib-2.0.so.0
+8  0x00007fe351c987c2 in g_main_loop_run () from /usr/lib64/libglib-2.0.so.0
+9  0x0000556fe45abc75 in main (argc=<optimized out>, argv=<optimized out>)
+    at src/main.c:770
+
+This commit prevents the call to btd_adv_manager_refresh for non-LE devices.
+---
+ src/adapter.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/src/adapter.c
++++ b/src/adapter.c
+@@ -540,7 +540,8 @@ static void settings_changed(struct btd_
+               g_dbus_emit_property_changed(dbus_conn, adapter->path,
+                                       ADAPTER_INTERFACE, "Discoverable");
+               store_adapter_info(adapter);
+-              btd_adv_manager_refresh(adapter->adv_manager);
++              if (adapter->supported_settings & MGMT_SETTING_LE)
++                      btd_adv_manager_refresh(adapter->adv_manager);
+       }
+       if (changed_mask & MGMT_SETTING_BONDABLE) {
index 386ac9e4d9d2b44202c7635315af30aaf5ab7cd9..2deda025652c43d6d3ec4f639f50cc6c7612776e 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ccrypt
-PKG_VERSION:=1.10
-PKG_RELEASE:=3
+PKG_VERSION:=1.11
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/ccrypt
-PKG_HASH:=87d66da2170facabf6f2fc073586ae2c7320d4689980cfca415c74688e499ba0
+PKG_HASH:=b19c47500a96ee5fbd820f704c912f6efcc42b638c0a6aa7a4e3dc0a6b51a44f
 PKG_MAINTAINER:=Hannu Nyman <hannu.nyman@iki.fi>
 PKG_LICENSE:=GPLv2+
 
index 4ac9abb20c94ce5b199003a6826d2dff62593d6a..13db6e6fbf6198e6e6c2751a702ee19c7cede84b 100644 (file)
@@ -1,33 +1,5 @@
---- a/configure.ac
-+++ b/configure.ac
-@@ -123,17 +123,6 @@ AC_MSG_RESULT($UINT32_TYPE)
- AC_DEFINE_UNQUOTED(UINT32_TYPE,$UINT32_TYPE,unsigned 32 bit integer type)
- dnl ----------------------------------------------------------------------
--dnl Internationalization
--
--GETTEXT_PACKAGE=ccrypt
--AC_SUBST(GETTEXT_PACKAGE)
--AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
--
--AM_GNU_GETTEXT
--AM_GNU_GETTEXT_VERSION([0.14.3])
--IT_PO_SUBDIR(po)
--
--dnl ----------------------------------------------------------------------
- dnl Libtool (needed by intl/)
- LT_INIT
-@@ -153,9 +142,7 @@ AC_SUBST(TAR)
- dnl ----------------------------------------------------------------------
- AC_CONFIG_FILES([doc/ccrypt.1
-          doc/ccguess.1
--         po/Makefile.in 
-          m4/Makefile 
--         intl/Makefile 
-          Makefile 
-          src/Makefile 
-          emacs/Makefile
+diff --git a/Makefile.am b/Makefile.am
+index bfe1d43..2f45264 100644
 --- a/Makefile.am
 +++ b/Makefile.am
 @@ -4,7 +4,7 @@
  
  EXTRA_DIST = m4/ChangeLog config.rpath README-WIN
  
+diff --git a/Makefile.in b/Makefile.in
+index 314e162..18dcff3 100644
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -36,7 +36,7 @@ host_triplet = @host@
- subdir = .
- DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(srcdir)/config.h.in \
--      $(top_srcdir)/configure $(top_srcdir)/intl/Makefile.in \
-+      $(top_srcdir)/configure \
-       ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS config.guess \
-       config.rpath config.sub depcomp elisp-comp install-sh \
-       ltmain.sh missing mkinstalldirs
-@@ -66,7 +66,7 @@ am__CONFIG_DISTCLEAN_FILES = config.stat
+@@ -117,7 +117,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
   configure.lineno config.status.lineno
  mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
  CONFIG_HEADER = config.h
 -CONFIG_CLEAN_FILES = intl/Makefile
 +CONFIG_CLEAN_FILES =
  CONFIG_CLEAN_VPATH_FILES =
- SOURCES =
- DIST_SOURCES =
-@@ -277,7 +277,7 @@ target_alias = @target_alias@
+ AM_V_P = $(am__v_P_@AM_V@)
+ am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+@@ -177,7 +177,7 @@ CTAGS = ctags
+ CSCOPE = cscope
+ DIST_SUBDIRS = $(SUBDIRS)
+ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+-      $(top_srcdir)/intl/Makefile.in ABOUT-NLS AUTHORS COPYING \
++      ABOUT-NLS AUTHORS COPYING \
+       ChangeLog INSTALL NEWS README compile config.guess \
+       config.rpath config.sub install-sh ltmain.sh missing \
+       mkinstalldirs
+@@ -403,7 +403,7 @@ target_alias = @target_alias@
  top_build_prefix = @top_build_prefix@
  top_builddir = @top_builddir@
  top_srcdir = @top_srcdir@
  EXTRA_DIST = m4/ChangeLog config.rpath README-WIN
  ACLOCAL_AMFLAGS = -I m4
  all: config.h
+diff --git a/configure.ac b/configure.ac
+index 56d11f1..6d32602 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -148,17 +148,6 @@ fi
+ AC_MSG_RESULT($UINT32_TYPE)
+ AC_DEFINE_UNQUOTED(UINT32_TYPE,$UINT32_TYPE,unsigned 32 bit integer type)
+-dnl ----------------------------------------------------------------------
+-dnl Internationalization
+-
+-GETTEXT_PACKAGE=ccrypt
+-AC_SUBST(GETTEXT_PACKAGE)
+-AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
+-
+-AM_GNU_GETTEXT
+-AM_GNU_GETTEXT_VERSION([0.19.8])
+-dnl IT_PO_SUBDIR(po)
+-
+ dnl ----------------------------------------------------------------------
+ dnl Libtool (needed by intl/)
+@@ -180,9 +169,7 @@ AC_SUBST(TAR)
+ dnl ----------------------------------------------------------------------
+ AC_CONFIG_FILES([doc/ccrypt.1
+          doc/ccguess.1
+-         po/Makefile.in 
+          m4/Makefile 
+-         intl/Makefile 
+          Makefile 
+          src/Makefile 
+          emacs/Makefile
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 4cb1d03..ff33d59 100644
 --- a/src/Makefile.am
 +++ b/src/Makefile.am
 @@ -56,4 +56,4 @@ uninstall-local:
  # internationalization stuff
  localedir = $(datadir)/locale
INCLUDES = -I../intl -I$(top_srcdir)/intl -DLOCALEDIR=\"$(localedir)\"
AM_CPPFLAGS = @EXTRA_INCLUDES@ -I../intl -I$(top_srcdir)/intl -DLOCALEDIR=\"$(localedir)\"
 -LIBS = @LIBINTL@ @LIBS@
 +LIBS = @LIBS@
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 27c7d28..01c6764 100644
 --- a/src/Makefile.in
 +++ b/src/Makefile.in
-@@ -159,7 +159,7 @@ LDFLAGS = @LDFLAGS@
- LIBICONV = @LIBICONV@
- LIBINTL = @LIBINTL@
+@@ -278,7 +278,7 @@ LIBMULTITHREAD = @LIBMULTITHREAD@
  LIBOBJS = @LIBOBJS@
+ LIBPTH = @LIBPTH@
+ LIBPTH_PREFIX = @LIBPTH_PREFIX@
 -LIBS = @LIBINTL@ @LIBS@
 +LIBS = @LIBS@
+ LIBTHREAD = @LIBTHREAD@
  LIBTOOL = @LIBTOOL@
  LIPO = @LIPO@
- LN_S = @LN_S@
index 45497983e434290623b6a18926d45051d9ae8fca..29ad43e0cf8e8921eebb3187f55d6a16b9ddb3de 100644 (file)
@@ -8,15 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=crelay
-PKG_VERSION:=0.10.1
+PKG_VERSION:=0.12
 PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/ondrej1024/crelay
-PKG_SOURCE_VERSION:=V$(PKG_VERSION)
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=e7cae6dcc299cbec86e6cbc79dd155a1489d97c9a46b3b4e5179a6ca11cc4b8b
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=https://codeload.github.com/ondrej1024/crelay/tar.gz/V$(PKG_VERSION)?
+PKG_HASH:=84b2523107bb3e7263d0be1c3c367de1956b41711293e108f4ce483f5e66913f
 
 PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
 PKG_LICENSE:=GPL-2.0
@@ -29,7 +26,7 @@ define Package/crelay
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=USB relay remote control daemon
-  URL:=http://github.com/ondrej1024/crelay
+  URL:=https://github.com/ondrej1024/crelay
   DEPENDS:=+libftdi1 +hidapi +libusb-1.0
 endef
 
index df382afb212f55e3d7db0d48a9aac1d469cb1fd4..db3dad38eff8cf6a0b9e2ac1de213a12e56f6d83 100644 (file)
@@ -8,14 +8,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=cryptsetup
-PKG_VERSION:=2.0.3
+PKG_VERSION:=2.0.4
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0+ LGPL-2.1+
 PKG_LICENSE_FILES:=COPYING COPYING.LGPL
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/cryptsetup/v2.0
-PKG_HASH:=4d6cca04c1f5ff4a68d045d190efb2623087eda0274ded92f92a4b6911e501d4
+PKG_HASH:=9d3a3c7033293e0c97f0ad0501fd5b4d4913ae497cbf70cca06633ccc54b5734
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
@@ -30,7 +30,7 @@ define Package/cryptsetup/Default
   SUBMENU:=Encryption
   TITLE:=Cryptsetup
   DEPENDS:=+libblkid +libuuid +libpopt +lvm2 +libdevmapper +libjson-c +@KERNEL_DIRECT_IO
-  URL:=http://code.google.com/p/cryptsetup/
+  URL:=https://gitlab.com/cryptsetup/cryptsetup/
 endef
 
 define Package/cryptsetup
diff --git a/utils/device-observatory/Makefile b/utils/device-observatory/Makefile
new file mode 100644 (file)
index 0000000..8f0103c
--- /dev/null
@@ -0,0 +1,36 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=device-observatory
+PKG_VERSION:=1.2.0
+PKG_RELEASE:=1
+
+PKG_LICENSE:=GPL-3.0+
+
+PKG_SOURCE_URL:=https://codeload.github.com/mwarning/device-observatory/tar.gz/v$(PKG_VERSION)?
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=83b3f362f154a427abbd3af31b3c2dda9983cdc15f6b833d804727ef0fbdc72e
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/device-observatory
+       SECTION:=utils
+       CATEGORY:=Utilities
+       TITLE:=device-observatory
+       MAINTAINER:=Moritz Warning <moritzwarning@web.de>
+       URL:=https://github.com/mwarning/device-observatory/
+       DEPENDS:=+iw +libpcap +libmicrohttpd-no-ssl
+endef
+
+define Package/device-observatory/description
+       Show information about connected devices and connections to increase security awareness.
+endef
+
+define Package/device-observatory/install
+       $(CP) files/* $(1)
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/device-observatory $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/usr/share/device-observatory
+       $(INSTALL_DATA) $(PKG_BUILD_DIR)/misc/macdb.txt $(1)/usr/share/device-observatory/macdb.txt
+endef
+
+$(eval $(call BuildPackage,device-observatory))
diff --git a/utils/device-observatory/files/etc/config/device-observatory b/utils/device-observatory/files/etc/config/device-observatory
new file mode 100644 (file)
index 0000000..b3d80c0
--- /dev/null
@@ -0,0 +1,26 @@
+
+config setup
+       list dev 'wlan0'
+       list mdev 'mon0'
+
+       option mac_db '/usr/share/device-observatory/macdb.txt'
+       option port_db '/etc/services'
+
+       # Optional JSON output into file
+#      option json_output '/tmp/device-observatory.json'
+
+       # Time after which a device is removed from the record
+       option device_timeout 3600
+
+       # Create monitoring interface mon0 based on physical interface wifi phy0.
+       # See 'iw dev' output for a list of interfaces.
+       list create_monitor 'mon0'
+
+       # Track router itself as device
+       option track_localhost 0
+
+       # Set to 0 to disable webserver
+       option webserver_port 8080
+
+       # Not needed, all necessary files are included
+#      option webserver_path '/www'
diff --git a/utils/device-observatory/files/etc/init.d/device-observatory b/utils/device-observatory/files/etc/init.d/device-observatory
new file mode 100755 (executable)
index 0000000..1405e36
--- /dev/null
@@ -0,0 +1,66 @@
+#!/bin/sh /etc/rc.common
+
+START=90
+USE_PROCD=1
+PROG=/usr/bin/device-observatory
+OPTS=""
+
+
+boot() {
+       local dev="$(uci get -q device-observatory.@setup[0].dev | cut -d ' ' -f 1)"
+
+       # Wait for interface to be up
+       ubus -t 15 wait_for network.interface network.${dev:-localhost} 2>/dev/null
+       rc_procd start_service
+}
+
+xappend() {
+       local name="$2" value="$1"
+       OPTS="$OPTS --${name//_/-} ${value//'/\\'}"
+}
+
+append_opts() {
+       local name value cfg="$1"; shift
+       for name in $*; do
+               config_get value "$cfg" "$name"
+               [ -n "$value" ] && xappend "$value" "$name"
+       done
+}
+
+append_opts_list() {
+       local name cfg="$1"; shift
+       for name in $*; do
+               config_list_foreach "$cfg" "$name" xappend "$name"
+       done
+}
+
+create_monitor_interface() {
+       local ifce="$1" n=$(echo -n "$1" | tail -c 1)
+
+       if [ ! -d "/sys/class/net/$ifce/" ]; then
+               iw phy "phy$n" interface add "$ifce" type monitor
+               ip link set dev "$ifce" up
+       fi
+}
+
+start_instance() {
+       local cfg="$1"
+
+       OPTS=""
+
+       config_list_foreach "$cfg" "create_monitor" create_monitor_interface "create_monitor"
+
+       append_opts_list "$cfg" dev mdev
+       append_opts "$cfg" mac_db port_db json_output device_timeout webserver_port webserver_path track_localhost
+
+       procd_open_instance
+       procd_set_param command $PROG $OPTS
+       procd_set_param stderr 1
+       procd_set_param stdout 0
+       procd_close_instance
+}
+
+start_service() {
+       config_load 'device-observatory'
+       config_foreach start_instance 'setup'
+}
index e0b3350b6d28cc04e714232c1017b1dc5f6a78e7..ed843f131169af3e4cdde115ced3710fe1c47e25 100644 (file)
@@ -11,16 +11,14 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=digitemp
 PKG_VERSION:=3.7.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/bcl/digitemp/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=6fa4d965350d5501b6ca73ee8a09276ca4f65b6d85dae62f0a796239bae5000e
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_URL:=https://github.com/bcl/digitemp.git
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=be824bbbc81189931bf4b130a8acc39288d75662
 PKG_MAINTAINER:=Jasper Scholte <NightNL@outlook.com>
 PKG_LICENSE:=GPL-2.0+
-PKG_MIRROR_HASH:=490f9c94c671aa74ce0ef4fbc95231644f3aa7023d2b947714ed55fd712672f2
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -28,7 +26,7 @@ define Package/digitemp/Default
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=DigiTemp is a simple to use program for reading values from 1-wire devices.
-  URL:=http://www.digitemp.com
+  URL:=https://www.digitemp.com
 endef
 
 define Package/digitemp/Default/description
index df221b8867f9bf44c81482dfecfec89e83397760..bf61564d87ccf9e8c7e88af0e19f735a79a00943 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=fio
-PKG_VERSION:=3.7
+PKG_VERSION:=3.8
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Dragan Stancevic <ds@codeminutia.com>
 PKG_LICENSE:=GPL-2.0+
@@ -16,7 +16,7 @@ PKG_LICENSE_FILES:=COPYING
 
 PKG_SOURCE_URL:=http://brick.kernel.dk/snaps
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=73aba1b307f084ba5ec3ac3084233e3a0ef297a2991e904ab391cc95f07f003c
+PKG_HASH:=7868c4332aab98b88b7ebbb3ecfebc86cbc68b74ac0104575fa4f66bb7874a0e
 
 include $(INCLUDE_DIR)/package.mk
 
index bde3fe43208c848cd4dd3b857feeb5bc5a4d0581..c328c338677ee47c64a36c7b69b8a1e10696639b 100644 (file)
@@ -9,15 +9,17 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gammu
-PKG_VERSION:=1.38.4
-PKG_RELEASE:=2
+PKG_VERSION:=1.39.0
+PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=http://dl.cihar.com/gammu/releases/
+PKG_SOURCE_URL:=https://dl.cihar.com/gammu/releases
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_HASH:=a8ba1dc52ee82562abd57e9546c409f2f887f45187aae012fe43af0b730611ae
+PKG_HASH:=66d1d991d7a993fdf254d4c425f0fdd38c9cca15b1735936695a486067a6a9f8
+
 PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
 PKG_LICENCE:=GPL-2.0
 
+PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
@@ -28,7 +30,7 @@ define Package/gammu
        SECTION:=utils
        CATEGORY:=Utilities
        TITLE:=Cell phone/modem SMS and control tool
-       URL:=http://dl.cihar.com/gammu/releases/
+       URL:=https://wammu.eu/gammu/
        DEPENDS:=+libpthread +libcurl +glib2 $(ICONV_DEPENDS) $(INTL_DEPENDS)
        DEPENDS+=+PACKAGE_python:python +PACKAGE_bluez-libs:bluez-libs
        DEPENDS+=+PACKAGE_libmariadb:libmariadb +PACKAGE_unixodbc:unixodbc +PACKAGE_libpq:libpq
index 91abfe753f0f692da3344d89d7aaa45a2082551c..9aa8eaa3bc9a3d0a8718f16dd6c762bd2987ebc1 100644 (file)
@@ -1,36 +1,41 @@
+diff --git a/cmake/FindIconv.cmake b/cmake/FindIconv.cmake
+index 3ec0493..f716700 100644
 --- a/cmake/FindIconv.cmake
 +++ b/cmake/FindIconv.cmake
-@@ -34,9 +34,9 @@ string(REGEX REPLACE "(.*)/include/?" "\
+@@ -9,10 +9,10 @@
+ include(CheckCCompilerFlag)
+ include(CheckCSourceCompiles)
  
- FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv c HINTS "${ICONV_INCLUDE_BASE_DIR}/lib" PATHS /opt/local/lib)
-  
--IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
-+IF(NOT DISABLE_ICONV AND ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
-    SET(ICONV_FOUND TRUE) 
--ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
-+ENDIF(NOT DISABLE_ICONV AND ICONV_INCLUDE_DIR AND ICONV_LIBRARIES) 
+-IF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
++IF(NOT DISABLE_ICONV AND ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+   # Already in cache, be silent
+   SET(ICONV_FIND_QUIETLY TRUE)
+-ENDIF (ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
++ENDIF(NOT DISABLE_ICONV AND ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
  
- set(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR})
- set(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARIES})
+ IF(APPLE)
+     FIND_PATH(ICONV_INCLUDE_DIR iconv.h
+diff --git a/configure b/configure
+index 4f51ca7..5b0d993 100755
 --- a/configure
 +++ b/configure
-@@ -31,6 +31,7 @@ Usage: ./configure [options]
+@@ -33,6 +33,7 @@ Usage: ./configure [options]
  --enable-backup     enable backup support
  --enable-win32      enable mingw crosscomilation
  --enable-protection enable compile time protections
 +--disable-iconv     disable iconv support
- --with-python=<path> path to Python interpreter
  --without-gnapplet  disable installation of gnapplet
  --without-completion disable installation of bash completion script
-@@ -57,6 +58,7 @@ CMAKE_PROTECTION=
- CMAKE_PYTHON=
+@@ -57,6 +58,7 @@ CMAKE_CROSS=
+ CMAKE_PROTECTION=
  CMAKE_GNAP=
  CMAKE_COMPLETE=
 +CMAKE_ICONV=
  
  # process command line
  while [ "$#" -gt 0 ] ; do
-@@ -94,6 +96,12 @@ while [ "$#" -gt 0 ] ; do
+@@ -91,6 +93,12 @@ while [ "$#" -gt 0 ] ; do
          --disable-protection)
              CMAKE_PROTECTION="-DENABLE_PROTECTION=OFF"
              ;;
@@ -43,9 +48,9 @@
          --enable-debug)
              CMAKE_DEBUG="-DCMAKE_BUILD_TYPE=Debug"
              ;;
-@@ -142,4 +150,4 @@ fi
+@@ -139,4 +147,4 @@ fi
  cd "$BUILD_DIR"
  
  # invoke cmake to do configuration
--cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE
-+cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
+-cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE
++cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
index ec0badf2a79eac3733b66c84b14bfcd2fc98ec70..6c7ff71e6810b2336126046442d5a5c79e8d3bcd 100644 (file)
@@ -1,6 +1,6 @@
 --- a/CMakeLists.txt
 +++ b/CMakeLists.txt
-@@ -537,8 +537,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMP
+@@ -511,8 +511,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMP
          #    MACRO_TUNE_LINKER("-pie")
          # These do not work on Windows right now
          if (NOT WIN32)
index cfacf1128f8b0f7867046d0bb1be167988878351..e0a59b4a80fca475df1c5a0add927ac03bb30df8 100644 (file)
@@ -8,7 +8,7 @@
 +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
 --- a/configure
 +++ b/configure
-@@ -25,6 +25,7 @@ Usage: ./configure [options]
+@@ -27,6 +27,7 @@ Usage: ./configure [options]
  
  --help|-h           shows this help
  --prefix=<path>     installation prefix
@@ -16,7 +16,7 @@
  --enable-shared     enables shared build
  --enable-debug      enables debug build
  --enable-tiger      enables Mac OS X 10.4 (Tiger) build
-@@ -50,6 +51,7 @@ SOURCE_DIR=`pwd`
+@@ -51,6 +52,7 @@ SOURCE_DIR=`pwd`
  
  # cmake parameters
  CMAKE_PREFIX=
 +            CMAKE_ROOT="-DCMAKE_TOOLCHAIN_FILE=$SOURCE_DIR/cmake/Toolchain-cross.cmake"
 +            echo "SET(CMAKE_FIND_ROOT_PATH ${1##--cross-root=})" >> $SOURCE_DIR/cmake/Toolchain-cross.cmake
 +            ;;
-         --with-python=*)
-             CMAKE_PYTHON="-DBUILD_PYTHON=${1##--with-python=}"
+         --enable-backup)
+             CMAKE_BACKUP="-DWITH_BACKUP=ON"
              ;;
-@@ -150,4 +156,4 @@ fi
+@@ -147,4 +153,4 @@ fi
  cd "$BUILD_DIR"
  
  # invoke cmake to do configuration
--cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
-+cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
+-cmake $SOURCE_DIR $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
++cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
index c1e67284b9f3e5e57243e1dd0001c67db8e1d4b5..fecb07f550c3213f1c25e1a3de3d71028c03ec20 100644 (file)
@@ -1,7 +1,7 @@
 --- a/configure
 +++ b/configure
-@@ -36,6 +36,7 @@ Usage: ./configure [options]
- --with-python=<path> path to Python interpreter
+@@ -37,6 +37,7 @@ Usage: ./configure [options]
+ --disable-iconv     disable iconv support
  --without-gnapplet  disable installation of gnapplet
  --without-completion disable installation of bash completion script
 +--without-libdbi      disable libdbi support
@@ -16,7 +16,7 @@
  
  # process command line
  while [ "$#" -gt 0 ] ; do
-@@ -120,6 +122,9 @@ while [ "$#" -gt 0 ] ; do
+@@ -117,6 +119,9 @@ while [ "$#" -gt 0 ] ; do
          --without-completion)
              CMAKE_COMPLETE="-DINSTALL_BASH_COMPLETION=OFF"
              ;;
@@ -26,9 +26,9 @@
          --build=*)
              ;;
          --disable-dependency-tracking)
-@@ -156,4 +161,4 @@ fi
+@@ -153,4 +158,4 @@ fi
  cd "$BUILD_DIR"
  
  # invoke cmake to do configuration
--cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
-+cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_PYTHON $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV $CMAKE_LIBDBI
+-cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV
++cmake $SOURCE_DIR $CMAKE_ROOT $CMAKE_PREFIX $CMAKE_SHARED $CMAKE_DEBUG $CMAKE_BACKUP $CMAKE_CROSS $CMAKE_PROTECTION $CMAKE_GNAP $CMAKE_COMPLETE $CMAKE_ICONV $CMAKE_LIBDBI
index 38850557757b34500f2dc0090c56603553aaaeff..c8c1ff9cabea07a5e94340e0ab51796070cdea1b 100644 (file)
@@ -8,14 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=gzip
-PKG_VERSION:=1.7
+PKG_VERSION:=1.9
 PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@GNU/gzip
-PKG_HASH:=eccbaa178c7801618c887956f1668d45bb57863a9d2678bfc3e36d01fb951904
+PKG_HASH:=ae506144fc198bd8f81f1f4ad19ce63d5a2d65e42333255977cf1dcf1479089a
 PKG_LICENSE:=GPL-3.0+
 
+PKG_BUILD_PARALLEL:=1
 PKG_INSTALL:=1
 
 include $(INCLUDE_DIR)/package.mk
index 23d41a33738ee5dea19ff3284df6956995eff610..409369903ad5029707d70b6bd3d4d7d6dd08c7c0 100644 (file)
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=joe
-PKG_VERSION:=4.4
+PKG_VERSION:=4.6
 PKG_RELEASE:=1
 
-PKG_SOURCE_URL:=@SF/joe-editor
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_HASH:=a5704828bbca29acb9e200414fef522c66cdf9ce28150f402d6767da43460979
-PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_URL:=@SF/joe-editor
+PKG_HASH:=495a0a61f26404070fe8a719d80406dc7f337623788e445b92a9f6de512ab9de
+
 PKG_MAINTAINER:=Vitaly Protsko <villy@sft.ru>
 PKG_LICENCE:=GPL-2.0
 
@@ -37,7 +37,7 @@ define Package/joe
   CATEGORY:=Utilities
   SUBMENU:=Editors
   TITLE:=JOE - Joes own editor
-  URL:=http://sourceforge.net/projects/joe-editor/
+  URL:=https://sourceforge.net/projects/joe-editor/
   DEPENDS:=+libncurses
 endef
 
index 2bd8f1498b14d3ca0ce07481a8a90f899816b06b..7b2f6c0879691af59fefdf9cbf7f966870575397 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=logrotate
-PKG_VERSION:=3.10.0
-PKG_RELEASE:=2
+PKG_VERSION:=3.14.0
+PKG_RELEASE:=1
 
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:= https://github.com/logrotate/logrotate/releases/download/$(PKG_VERSION)
-PKG_HASH:=dbc76cae5d4912455b5221654bb6114e43d91a3a0879ce3e20a62a157532912e
+PKG_HASH:=4703bdc0e2df3b322f9dff0aafc99aa9172c9e4acae28b7c924cc7d4e5b29d55
 PKG_LICENSE:=GPL-2.0
 
 include $(INCLUDE_DIR)/package.mk
index 65df6f3ddb62c93abdf1d5b2e4101320054113e4..7b36b67988f331d47a4b4cb7d9398cc559a4135b 100644 (file)
@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=lsof
-PKG_VERSION:=4.89
-PKG_RELEASE:=2
+PKG_VERSION:=4.91
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://www.mirrorservice.org/sites/lsof.itap.purdue.edu/pub/tools/unix/lsof/ ftp://sunsite.ualberta.ca/pub/Mirror/lsof/ ftp://ftp.fu-berlin.de/pub/unix/tools/lsof
-PKG_HASH:=81ac2fc5fdc944793baf41a14002b6deb5a29096b387744e28f8c30a360a3718
+PKG_HASH:=c9da946a525fbf82ff80090b6d1879c38df090556f3fe0e6d782cb44172450a3
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)_$(PKG_VERSION)
 PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
 PKG_LICENSE:=Unique
@@ -22,12 +22,10 @@ PKG_LICENSE_FILES:=00README
 
 include $(INCLUDE_DIR)/package.mk
 
-TARGET_LDFLAGS += $(LIBRPC)
-
 define Package/lsof
   SECTION:=utils
   CATEGORY:=Utilities
-  DEPENDS:=$(LIBRPC_DEPENDS)
+  DEPENDS:=+libtirpc
   TITLE:=LiSt Open Files - a diagnostic tool
   URL:=http://people.freebsd.org/~abe/
 endef
@@ -38,6 +36,9 @@ else
   LINUX_CLIB_IPV6=
 endif
 
+TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/tirpc
+TARGET_LDFLAGS += -ltirpc
+
 define Build/Prepare
        $(PKG_UNPACK)
        (cd $(PKG_BUILD_DIR) && tar -xf $(PKG_NAME)_$(PKG_VERSION)_src.tar && mv $(PKG_NAME)_$(PKG_VERSION)_src/* .)
@@ -45,6 +46,7 @@ define Build/Prepare
 endef
 
 define Build/Configure
+       $(SED) 's/rpc\/rpc/\/tirpc\/rpc\/rpc/g' $(PKG_BUILD_DIR)/Configure
        cd $(PKG_BUILD_DIR); \
                LINUX_CLIB="-DGLIBCV=2 $(LINUX_CLIB_IPV6)" \
                LSOF_CC="$(TARGET_CC)" \
@@ -53,6 +55,7 @@ define Build/Configure
                LSOF_CFGL="$(TARGET_LDFLAGS)" \
                LSOF_AR="$(TARGET_CROSS)ar cr" \
                LSOF_RANLIB="$(TARGET_CROSS)ranlib" \
+               LSOF_INCLUDE="$(STAGING_DIR)/usr/include" \
                ./Configure -n linux
 endef
 
index 497668e9440dd8c085d5512152948b88e9773e0a..8d1d80883050e3611e78cd8ff77946e26806bbb1 100644 (file)
@@ -9,14 +9,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=LVM2
-PKG_VERSION:=2.02.177
-PKG_RELEASE:=2
+PKG_VERSION:=2.02.181
+PKG_RELEASE:=1
 PKG_LICENSE:=GPL-2.0 LGPL-2.1
 
 PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tgz
-PKG_SOURCE_URL:=ftp://sources.redhat.com/pub/lvm2/releases \
-               http://ftp.gwdg.de/pub/linux/sources.redhat.com/lvm2/
-PKG_HASH:=4025a23ec9b15c2cb7486d151c29dc953b75efc4d452cfe9dbbc7c0fac8e80f2
+PKG_SOURCE_URL:=https://sourceware.org/pub/lvm2
+PKG_HASH:=400fead33b3abc2d82bd631b63f644b646e83040699f2e8f91ff5779119bb89e
 PKG_MAINTAINER:=Daniel Golle <daniel@makrotopia.org>
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME).$(PKG_VERSION)
 
@@ -26,7 +25,7 @@ define Package/libdevmapper
   SECTION:=libs
   CATEGORY:=Libraries
   TITLE:=The Linux Kernel Device Mapper userspace library
-  URL:=http://sourceware.org/dm/
+  URL:=https://sourceware.org/dm/
   DEPENDS:=+kmod-dm +libpthread +libuuid +librt
 endef
 
@@ -40,8 +39,8 @@ define Package/lvm2
   CATEGORY:=Utilities
   SUBMENU:=Disc
   TITLE:=The Linux Logical Volume Manager
-  URL:=http://sourceware.org/lvm2/
-  DEPENDS:=+libdevmapper +libblkid +libreadline +libncurses
+  URL:=https://sourceware.org/lvm2/
+  DEPENDS:=+libdevmapper +libblkid +libreadline +libncurses +libaio
 endef
 
 define Package/lvm2/description
index 0ba1c9b764cb3acb6648a6280025793f55a01c68..8807cbb026e0f738b2ea7b5fa9a7fc572b5147d5 100644 (file)
@@ -1,6 +1,6 @@
 --- a/make.tmpl.in
 +++ b/make.tmpl.in
-@@ -19,7 +19,7 @@ SHELL = @SHELL@
+@@ -25,7 +25,7 @@ SHELL = @SHELL@
  
  # Allow environment to override any built-in default value for CC.
  # If there is a built-in default, CC is NOT set to @CC@ here.
index 09d2db96256c7f3700057cb7fba8117341c29750..625fb6c44f1eb73896f09ce6511803d72fae6269 100644 (file)
@@ -1,6 +1,6 @@
 --- a/lib/device/dev-type.c
 +++ b/lib/device/dev-type.c
-@@ -22,7 +22,7 @@
+@@ -24,7 +24,7 @@
  #include <ctype.h>
  
  #ifdef BLKID_WIPING_SUPPORT
index 1db823477a7823a6ca52aa3e58ec433aeb36f617..43036fa1a7e7ae82dda9ba6a00ccf74fbbd2b084 100644 (file)
@@ -1,15 +1,15 @@
 --- a/lib/commands/toolcontext.c
 +++ b/lib/commands/toolcontext.c
-@@ -1869,7 +1869,7 @@ struct cmd_context *create_toolcontext(u
+@@ -1860,7 +1860,7 @@ struct cmd_context *create_toolcontext(unsigned is_clvmd,
        /* FIXME Make this configurable? */
        reset_lvm_errno(1);
  
 -#ifndef VALGRIND_POOL
 +#if defined(__GLIBC__) && !defined(VALGRIND_POOL)
        /* Set in/out stream buffering before glibc */
-       if (set_buffering) {
-               /* Allocate 2 buffers */
-@@ -2249,7 +2249,7 @@ void destroy_toolcontext(struct cmd_cont
+       if (set_buffering
+ #ifdef SYS_gettid
+@@ -2254,7 +2254,7 @@ void destroy_toolcontext(struct cmd_context *cmd)
        if (cmd->libmem)
                dm_pool_destroy(cmd->libmem);
  
@@ -20,7 +20,7 @@
                if (is_valid_fd(STDIN_FILENO) &&
 --- a/tools/lvmcmdline.c
 +++ b/tools/lvmcmdline.c
-@@ -3074,6 +3074,7 @@ int lvm_split(char *str, int *argc, char
+@@ -3109,6 +3109,7 @@ int lvm_split(char *str, int *argc, char **argv, int max)
  /* Make sure we have always valid filedescriptors 0,1,2 */
  static int _check_standard_fds(void)
  {
@@ -28,7 +28,7 @@
        int err = is_valid_fd(STDERR_FILENO);
  
        if (!is_valid_fd(STDIN_FILENO) &&
-@@ -3100,6 +3101,12 @@ static int _check_standard_fds(void)
+@@ -3135,6 +3136,12 @@ static int _check_standard_fds(void)
                       strerror(errno));
                return 0;
        }
index 6762742f276f7a2097c7227f4d8ca4e822a9847b..8f7f25d1d35c1d92188771e7492b06b3dc72e887 100644 (file)
@@ -1,6 +1,6 @@
 --- a/lib/mm/memlock.c
 +++ b/lib/mm/memlock.c
-@@ -174,12 +174,15 @@ static void _allocate_memory(void)
+@@ -183,12 +183,15 @@ static void _allocate_memory(void)
           *  memory on free(), this is good enough for our purposes.
           */
        while (missing > 0) {
@@ -16,7 +16,7 @@
                inf = mallinfo();
  
                if (hblks < inf.hblks) {
-@@ -189,9 +192,12 @@ static void _allocate_memory(void)
+@@ -198,9 +201,12 @@ static void _allocate_memory(void)
                        free(areas[area]);
                        _size_malloc_tmp /= 2;
                } else {
@@ -29,7 +29,7 @@
  
                if (area == max_areas && missing > 0) {
                        /* Too bad. Warn the user and proceed, as things are
-@@ -480,8 +486,13 @@ static void _lock_mem(struct cmd_context
+@@ -521,8 +527,13 @@ static void _lock_mem(struct cmd_context
         * will not block memory locked thread
         * Note: assuming _memlock_count_daemon is updated before _memlock_count
         */
index 30cc5e63906fb35115a7ac8d0ab1830677490609..a1fcb7da8edf1a2db53b7d4a14e635739211c566 100644 (file)
@@ -15,7 +15,7 @@ on standard C libraries without O_DIRECT_SUPPORT.
 
 --- a/lib/device/dev-io.c
 +++ b/lib/device/dev-io.c
-@@ -529,7 +529,7 @@ int dev_open_flags(struct device *dev, i
+@@ -570,7 +570,7 @@ int dev_open_flags(struct device *dev, i
                return 0;
        }
  
index 288d5039cfa9250dadf0cb2572289d1027650924..8f0798c675d70c11ca1fda4bf3cb898ca9e0bd2f 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=lxc
 PKG_VERSION:=2.1.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_LICENSE:=LGPL-2.1+ BSD-2-Clause GPL-2.0
 PKG_MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
diff --git a/utils/lxc/patches/001-nl-avoid-NULL-pointer-dereference.patch b/utils/lxc/patches/001-nl-avoid-NULL-pointer-dereference.patch
new file mode 100644 (file)
index 0000000..4c402a0
--- /dev/null
@@ -0,0 +1,37 @@
+From c8f05589644d6b719e5a2c7fc548604f248be9be Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Sun, 29 Jul 2018 17:44:06 +0200
+Subject: [PATCH] nl: avoid NULL pointer dereference
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's a valid case to call nla_put() with NULL data and 0 len. It's done e.g. in
+the nla_put_attr().
+
+There has to be a check for data in nla_put() as passing NULL to the memcpy()
+is not allowed. Even if length is 0, both pointers have to be valid.
+
+For a reference see C99 standard (7.21.1/2), it says: "pointer arguments on
+such a call shall still have valid values".
+
+Reported-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+[christian.brauner@ubuntu.com: adapted commit message]
+Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
+---
+ src/lxc/nl.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/src/lxc/nl.c
++++ b/src/lxc/nl.c
+@@ -61,7 +61,8 @@ static int nla_put(struct nlmsg *nlmsg,
+       rta = NLMSG_TAIL(nlmsg->nlmsghdr);
+       rta->rta_type = attr;
+       rta->rta_len = rtalen;
+-      memcpy(RTA_DATA(rta), data, len);
++      if (data && len)
++              memcpy(RTA_DATA(rta), data, len);
+       nlmsg->nlmsghdr->nlmsg_len = tlen;
+       return 0;
+ }
index 1277ab15c2b235b9b941293ccdf01e21f1282dbf..ab3ae2b6813fa3a8bcb0fae8f91a20fe8df9807a 100644 (file)
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mc
 PKG_VERSION:=4.8.21
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
 PKG_LICENSE:=GPL-3.0+
 
@@ -16,6 +16,7 @@ PKG_SOURCE_URL:=http://ftp.midnight-commander.org/
 PKG_HASH:=8f37e546ac7c31c9c203a03b1c1d6cb2d2f623a300b86badfd367e5559fe148c
 PKG_BUILD_PARALLEL:=1
 PKG_FIXUP:=autoreconf gettext-version
+PKG_BUILD_DEPENDS:=MC_VFS:libtirpc
 
 PKG_CONFIG_DEPENDS := \
        CONFIG_PACKAGE_MC \
@@ -33,7 +34,7 @@ include $(INCLUDE_DIR)/nls.mk
 define Package/mc
        SECTION:=utils
        CATEGORY:=Utilities
-       DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
+       DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(ICONV_DEPENDS)
        TITLE:=Midnight Commander - a powerful visual file manager
        URL:=https://www.midnight-commander.org/
        MENU:=1
@@ -89,6 +90,8 @@ endif
 
 ifeq ($(CONFIG_MC_VFS),)
 CONFIGURE_ARGS += --disable-vfs
+else
+TARGET_CPPFLAGS += -I$(STAGING_DIR)/usr/include/tirpc
 endif
 
 define Package/mc/install
index 37a61c6134b9bad4d2c6afea5d61cfa800c68cf5..887744a151e8402fd120e6593226a9a3080f1bb1 100644 (file)
@@ -8,12 +8,13 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=owfs
-PKG_VERSION:=2.9p5
+PKG_VERSION:=3.2p2
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=@SF/$(PKG_NAME)
-PKG_HASH:=f7e11bae6cd29d58726e6d29b297834e5656d6069a407d798067ae25cb0812ea
+PKG_SOURCE_URL:=https://codeload.github.com/owfs/owfs/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=904ee3ab1d80e9d3461b310f0cc78b2175e24aa0075edc4f7f92371c667d0bb6
+
 PKG_MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
 PKG_LICENSE:=GPL-2.0
 
@@ -36,7 +37,7 @@ include $(INCLUDE_DIR)/package.mk
 
 define Package/owfs/Default
   TITLE:=OWFS (1-Wire File System)
-  URL:=http://owfs.sourceforge.net/
+  URL:=https://github.com/owfs/owfs
   SECTION:=net
   CATEGORY:=Network
   SUBMENU:=Filesystem
@@ -85,7 +86,8 @@ define Package/libow
   DEPENDS:= \
     +libpthread \
     +LIBOW_MASTER_USB:libusb-compat \
-    +LIBOW_MASTER_W1:kmod-w1
+    +LIBOW_MASTER_W1:kmod-w1 \
+    +libavahi-client
   TITLE:=OWFS - common shared library
 endef
 
@@ -118,7 +120,6 @@ endef
 define Package/owshell
   $(call Package/owfs/Utility)
   TITLE:=OWFS - shell utilities
-  DEPENDS+= +USE_UCLIBC:librpc
 endef
 
 define Package/owshell/description
diff --git a/utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch b/utils/owfs/patches/100-fix-netlink-w1-status-message-detection.patch
deleted file mode 100644 (file)
index 251065f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-AaAA
---- a/module/owlib/src/c/ow_w1_parse.c
-+++ b/module/owlib/src/c/ow_w1_parse.c
-@@ -237,7 +237,7 @@ enum Netlink_Read_Status W1_Process_Resp
-                       owfree(nlp.nlm) ;
-                       return nrs_nodev ;
-               }
--              if ( nrs_callback == NULL ) { // status message
-+              if ( nrs_callback == NULL ) { // bus reset
-                       owfree(nlp.nlm) ;
-                       return nrs_complete ;
-               }
-@@ -246,7 +246,7 @@ enum Netlink_Read_Status W1_Process_Resp
-               nrs_callback( &nlp, v, pn ) ;
-               LEVEL_DEBUG("Called nrs_callback");
-               owfree(nlp.nlm) ;
--              if ( nlp.cn->ack != 0 ) {
-+              if ( nlp.cn->seq != nlp.cn->ack ) {
-                       if ( nlp.w1m->type == W1_LIST_MASTERS ) {
-                               continue ; // look for more data
-                       }
-@@ -254,7 +254,7 @@ enum Netlink_Read_Status W1_Process_Resp
-                               continue ; // look for more data
-                       }
-               }
--              nrs_callback = NULL ; // now look for status message
-+              return nrs_complete ; // status message
-       }
-       return nrs_timeout ;
- }
diff --git a/utils/owfs/patches/101-fix-no-reset-routine-segfault.patch b/utils/owfs/patches/101-fix-no-reset-routine-segfault.patch
deleted file mode 100644 (file)
index 731c4a0..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- a/module/owlib/src/c/ow_reset.c
-+++ b/module/owlib/src/c/ow_reset.c
-@@ -21,6 +21,10 @@ RESET_TYPE BUS_reset(const struct parsed
-       struct connection_in * in = pn->selected_connection ;
-       STAT_ADD1_BUS(e_bus_resets, in);
-+      if ( in->iroutines.reset == NO_RESET_ROUTINE ) {
-+              return BUS_RESET_OK;
-+      }
-+
-       switch ( (in->iroutines.reset) (pn) ) {
-       case BUS_RESET_OK:
-               in->reconnect_state = reconnect_ok;     // Flag as good!
index 9d04894f2fbf7703ff2c0fd8a97b2c7d29fd9feb..26bb686d43e9d39fab917b8a62e06b2c08da5265 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=pciutils
-PKG_VERSION:=3.5.6
+PKG_VERSION:=3.6.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/software/utils/pciutils
-PKG_HASH:=f346eeb90cce0910c05b877fe49eadc760fa084c0455fd313e39d4b2c2d4bb21
+PKG_HASH:=fcc0431cc951c3563f1e4f946d27c8e2161cfd81f25316e6bd783fa6118469e0
 PKG_MAINTAINER:=Álvaro Fernández Rojas <noltari@gmail.com>
 
 PKG_LICENSE:=GPL-2.0
@@ -37,13 +37,13 @@ define Package/pciutils/description
  of PCI devices
 endef
 
-PCI_IDS_REV:=91cfa8a0c994634ba9a4a8639aa2ac6dff8453b9
+PCI_IDS_REV:=4ad9327b147ce7bb6ae27b68efe0c1d89d9eb9a1
 PCI_IDS_FILE:=pci.ids.$(PCI_IDS_REV)
 define Download/pci_ids
   FILE:=$(PCI_IDS_FILE)
   URL_FILE:=pci.ids
   URL:=@GITHUB/pciutils/pciids/$(PCI_IDS_REV)
-  HASH:=798528092d1c58eeac99c6505033ec4ce8fe3e19d7e0c41b06790d58753a89b6
+  HASH:=f8386c74ecc74f3c410b2f0f4885e7705c5dfcacd52fe924a931a63b246c8793
 endef
 $(eval $(call Download,pci_ids))
 
index 7eb2b438881561dadfcd35c823f5c9459e09d7cd..3872c455cfbca9ec969d048251e9a30ecaa42a2e 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=picocom
-PKG_VERSION:=1.7
-PKG_RELEASE:=2
+PKG_VERSION:=3.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/picocom
-PKG_HASH:=d0f31c8f7a215a76922d30c81a52b9a2348c89e02a84935517002b3bc2c1129e
+PKG_SOURCE_URL:=https://codeload.github.com/npat-efault/picocom/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=e6761ca932ffc6d09bd6b11ff018bdaf70b287ce518b3282d29e0270e88420bb
 
 PKG_MAINTAINER:=Steven Barth <cyrus@openwrt.org>
 PKG_LICENSE:=GPL-2.0+
@@ -24,7 +24,7 @@ define Package/picocom
   SECTION:=utils
   CATEGORY:=Utilities
   TITLE:=A minimal dumb-terminal emulation program
-  URL:=http://code.google.com/p/picocom/
+  URL:=https://github.com/npat-efault/picocom
   SUBMENU:=Terminal
 endef
 
diff --git a/utils/picocom/patches/010-fix-compile.patch b/utils/picocom/patches/010-fix-compile.patch
new file mode 100644 (file)
index 0000000..ec4ecb5
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/Makefile b/Makefile
+index d6a4d60..a07d801 100644
+--- a/Makefile
++++ b/Makefile
+@@ -51,7 +51,6 @@ linenoise-1.0/linenoise.o : linenoise-1.0/linenoise.c linenoise-1.0/linenoise.h
+ OBJS += picocom.o term.o fdio.o split.o termios2.o custbaud_bsd.o
+ picocom : $(OBJS)
+-      $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
+ picocom.o : picocom.c term.h fdio.h split.h custbaud.h
+ term.o : term.c term.h termios2.h custbaud_bsd.h custbaud.h
diff --git a/utils/picocom/patches/100-musl-compat.patch b/utils/picocom/patches/100-musl-compat.patch
deleted file mode 100644 (file)
index 5f7d750..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Index: picocom-1.7/term.c
-===================================================================
---- picocom-1.7.orig/term.c
-+++ picocom-1.7/term.c
-@@ -33,10 +33,11 @@
- #include <string.h>
- #include <errno.h>
- #include <unistd.h>
--#ifdef __linux__
-+#if defined(__linux__) && (defined(__GLIBC__) || defined(__UCLIBC__))
- #include <termio.h>
- #else
- #include <termios.h>
-+#include <sys/ioctl.h>
- #endif /* of __linux__ */
- #include "term.h"
index 2c38ae353d18aa495a7c3791494ef4cb25991b16..2fc73562ff3beb4071c4ef564e62582ee74cf9bc 100644 (file)
@@ -4,10 +4,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2018.06.26
+PKG_VERSION:=2018.07.23
 PKG_RELEASE:=1
 
-PKG_MAINTAINER:=Christian Simon <simon@swine.de>
+PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
 PKG_LICENSE:=Apache-2.0
 
 include $(INCLUDE_DIR)/package.mk
@@ -79,6 +79,7 @@ endef
 define Package/prometheus-node-exporter-lua-openwrt
   $(call Package/prometheus-node-exporter-lua/Default)
   TITLE+= (openwrt collector)
+  DEPENDS:=prometheus-node-exporter-lua
 endef
 
 Build/Compile=
@@ -92,6 +93,7 @@ define Package/prometheus-node-exporter-lua/install
        $(INSTALL_BIN) ./files/usr/bin/prometheus-node-exporter-lua $(1)/usr/bin/prometheus-node-exporter-lua
        $(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors
        $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/cpu.lua         $(1)/usr/lib/lua/prometheus-collectors/
+       $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/conntrack.lua   $(1)/usr/lib/lua/prometheus-collectors/
        $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/filefd.lua      $(1)/usr/lib/lua/prometheus-collectors/
        $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/loadavg.lua     $(1)/usr/lib/lua/prometheus-collectors/
        $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/meminfo.lua     $(1)/usr/lib/lua/prometheus-collectors/
diff --git a/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/conntrack.lua b/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/conntrack.lua
new file mode 100644 (file)
index 0000000..93b26c2
--- /dev/null
@@ -0,0 +1,8 @@
+local function scrape()
+  metric("node_nf_conntrack_entries", "gauge", nil,
+    string.sub(get_contents("/proc/sys/net/netfilter/nf_conntrack_count"), 1, -2))
+  metric("node_nf_conntrack_entries_limit", "gauge", nil,
+    string.sub(get_contents("/proc/sys/net/netfilter/nf_conntrack_max"), 1, -2))
+end
+
+return { scrape = scrape }
index d75007c83c03136158184474516dc6e14d034f1a..aeb941b6d8625d22d3455f0d9461ca3f7ebee1c5 100644 (file)
@@ -9,10 +9,10 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=qemu
-PKG_VERSION:=2.11.1
+PKG_VERSION:=2.12.1
 PKG_RELEASE:=1
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=d9df2213ceed32e91dab7bc9dd19c1af83f91ba72c7aeef7605dfaaf81732ccb
+PKG_HASH:=4150809a52d821398dfd38c94b065513ef26b393fda9aba4bb6f09644cf1e5ca
 PKG_SOURCE_URL:=http://wiki.qemu-project.org/download/
 PKG_LICENSE:=GPL-2.0
 PKG_LICENSE_FILES:=LICENSE tcg/LICENSE
index 83668f6afb3c6492d17fce34234c0d8006f64212..2f64815e7752ad31ae2473f311a019b49469d0c9 100644 (file)
@@ -7,16 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rtl-ais
-PKG_VERSION:=20151213
+PKG_VERSION:=0.3
+PKG_RELEASE:=1
 
-PKG_RELEASE=$(PKG_SOURCE_VERSION)
-
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/dgiardini/rtl-ais.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=b805be0164475e58a73b57763a8cbbf8a2bd0ded
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_MIRROR_HASH:=0bf15869935e4496108ade4f7e9c1f7990b11ce53c9c1e0c9e81bc7f082b33b5
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://codeload.github.com/dgiardini/rtl-ais/tar.gz/v$(PKG_VERSION)?
+PKG_HASH:=01e2b675226ec403c409cec8b55999008f5c7aa9e82d6c0ba085ef13b200ceb1
 
 PKG_LICENSE:=GPL-2.0+
 PKG_LICENSE_FILES:=COPYING
index 2732bd42910336dea20b247fdbc5fb3166f8b5fd..02574b42273c420cb34f2885bae7f2f8d3663d0b 100644 (file)
@@ -7,19 +7,14 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rtl-sdr
-PKG_VERSION:=0.5.3-20150608-$(PKG_SOURCE_VERSION)
-PKG_RELEASE:=3
+PKG_VERSION:=0.5.4
+PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://git.osmocom.org/rtl-sdr.git
-PKG_SOURCE_VERSION:=e3c03f738f5aef4dc51e2b741fbdb542b9cc1bb1
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://git.osmocom.org/rtl-sdr/snapshot
+PKG_HASH:=f38da8a230de5fc997f83a19cff7f8c1a66b62a9cf70ddc997d44696b97ea1df
 
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.gz
-PKG_MIRROR_HASH:=6b1a3ae95e6d9e896ec4f8dcca46b7cf5741533bb549d429ac3fd46c76e2d595
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
 PKG_BUILD_PARALLEL:=1
-
 CMAKE_INSTALL:=1
 
 PKG_LICENSE:=GPLv2
index d0eae629fed27b752e64d6ca3a26b62ba942af0b..ec90ae9345be3af97ca9cc9247791c6e6f651f13 100644 (file)
@@ -7,15 +7,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=rtl_433
-PKG_VERSION:=6531ea4
-PKG_RELEASE:=$(PKG_SOURCE_VERSION)
+PKG_VERSION:=18.05
+PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/merbanan/rtl_433.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=6531ea48a7933ac8289724672059e54fd8aad8eb
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_MIRROR_HASH:=f96301c8d7e87605b113aad4493f15b63a675fea6f00642b0606de5a3a858746
+PKG_SOURCE_URL:=https://codeload.github.com/merbanan/rtl_433/tar.gz/$(PKG_VERSION)?
+PKG_HASH:=4710105234e3b71ae839e2d3f2628d6c12879fcda9c849fffe847d4de42a74f3
 
 CMAKE_INSTALL:=1
 
index e5722293f5787a78b1e9a1c6a555214afdb188bd..d385363e7783e3466ef239cf63f4130f97e66cb8 100644 (file)
@@ -8,30 +8,24 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=stoken
-PKG_VERSION:=0.8
-PKG_REV:=c4d79ffbf5053e44be4b64da22b1b7fb6a51daf2
-PKG_RELEASE:=2
+PKG_VERSION:=0.92
+PKG_RELEASE:=1
 
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/cernekee/stoken.git
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=@SF/stoken
+PKG_HASH:=aa2b481b058e4caf068f7e747a2dcf5772bcbf278a4f89bc9efcbf82bcc9ef5a
 
-PKG_SOURCE_VERSION:=$(PKG_REV)
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_REV).tar.gz
-PKG_MIRROR_HASH:=2f77c42b14a0b6b1e4d44dfd4d66b63ce6ed7484ca97debec0344f5c966e2e5c
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 PKG_MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 PKG_LICENSE:=LGPL-2.1
 PKG_INSTALL:=1
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
-
 PKG_FIXUP:=autoreconf
 
 include $(INCLUDE_DIR)/package.mk
 
 define Package/stoken/Default
   TITLE:=tokencode generator compatible with RSA SecurID 128-bit (AES)
-  URL:=http://sourceforge.net/p/stoken/
+  URL:=https://sourceforge.net/p/stoken/wiki/Home/
   DEPENDS:= +libxml2 +libnettle
 endef
 
index 7f57432391cb6f70d6096f7e76573208e734f41a..ca598ab034b08311681353ecbf1f2a312ab12436 100644 (file)
@@ -8,15 +8,15 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uvcdynctrl
-PKG_VERSION:=0.2.4
-PKG_REV:=2
+PKG_VERSION:=0.2.5
+PKG_RELEASE:=1
 
 PKG_SOURCE:=libwebcam-src-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=@SF/libwebcam
-PKG_HASH:=91741aca11f079eb6d043e31b7da6fe1f7927c28d7496590386928f8466b4297
+PKG_HASH:=3ca5199c7b8398b655a7c38e3ad4191bb053b1486503287f20d30d141bda9d41
 PKG_MAINTAINER:=Roger D <rogerdammit@gmail.com>
 
-PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-src-$(PKG_VERSION)
+PKG_BUILD_DIR:=$(BUILD_DIR)/libwebcam-$(PKG_VERSION)
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/cmake.mk
@@ -26,7 +26,7 @@ define Package/uvcdynctrl
   CATEGORY:=Utilities
   DEPENDS:=+libwebcam
   TITLE:=Manage dynamic controls in uvcvideo
-  URL:=http://sourceforge.net/projects/libwebcam/
+  URL:=https://sourceforge.net/projects/libwebcam/
   MENU:=1
 endef
 
@@ -41,7 +41,7 @@ define Package/libwebcam
   CATEGORY:=Libraries
   DEPENDS:=+libxml2 +libiconv-full
   TITLE:=Webcam library
-  URL:=http://sourceforge.net/projects/libwebcam/
+  URL:=https://sourceforge.net/projects/libwebcam/
 endef
 
 define Package/libwebcam/description