# enable BUILD_LOG
sed -i '1s/^/config BUILD_LOG\n\tbool\n\tdefault y\n\n/' Config-build.in
- ./scripts/feeds update -a
- ./scripts/feeds install -a
- make defconfig
+ ./scripts/feeds update -a > /dev/null
+ ./scripts/feeds install -a > /dev/null
+ make defconfig > /dev/null
echo_blue "=== Setting up SDK done"
RET=0
echo_blue "=== $pkg_name: begin compile logs"
for f in $(find logs/package/feeds/packages/$pkg_name/ -type f); do
- echo_blue "Printing $f"
- cat "$f"
+ echo_blue "Printing last 200 lines of $f"
+ tail -n200 "$f"
done
echo_blue "=== $pkg_name: end compile logs"
include $(TOPDIR)/rules.mk
PKG_NAME:=netdata
-PKG_VERSION:=1.7.0
+PKG_VERSION:=1.8.0
PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=GPL-3.0
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/firehol/netdata/releases/download/v$(PKG_VERSION)
-PKG_HASH:=7fa23ceaccf6548fba165cd4839ce694784b2fcf7f90de0a0162b9c529805fc0
+PKG_HASH:=1624a3b02f07dc8881b8edd5899049d4d3d53e485424ffb2fb65a322e2ff82c3
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
monitoring for Linux systems, applications and SNMP devices over the web.
endef
+TARGET_CFLAGS += -ffunction-sections -fdata-sections
+TARGET_LDFLAGS += -Wl,--gc-sections
+
CONFIGURE_ARGS += --with-zlib --with-math --disable-x86-sse --disable-lto
define Package/netdata/conffiles
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
- rm -rf $(1)/usr/lib/netdata/python.d/python_modules/pyyaml2
- rm -rf $(1)/usr/lib/netdata/python.d/python_modules/pyyaml3
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
--- /dev/null
+#
+# This is free software, licensed under the GNU General Public License v2.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=pycurl
+PKG_VERSION:=7.43.0
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Waldemar Konik <informatyk74@interia.pl>
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILE=COPYING-LGPL
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://dl.bintray.com/pycurl/pycurl/
+PKG_HASH:=aa975c19b79b6aa6c0518c0cc2ae33528900478f0b500531dbcdbf05beec584c
+
+PKG_BUILD_DEPENDS:=python libcurl
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-curl
+ CATEGORY:=Languages
+ SECTION:=lang
+ SUBMENU:=Python
+ TITLE:=Python module interface to the cURL library
+ URL:=http://pycurl.io/
+ DEPENDS:=+python +libcurl
+endef
+
+define Package/python-curl/description
+Python module interface to the cURL library.
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,install --prefix=/usr --root=$(PKG_INSTALL_DIR))
+endef
+
+define Package/python-curl/install
+ $(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
+ $(CP) \
+ $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/* \
+ $(1)$(PYTHON_PKG_DIR)
+endef
+
+$(eval $(call BuildPackage,python-curl))
--- /dev/null
+#
+# Copyright (C) 2017 Andrew McConachie
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-dpkt
+PKG_VERSION:=1.91
+PKG_RELEASE:=1
+PKG_MAINTAINER:=Andrew McConachie <andrew@depht.com>
+PKG_LICENSE:=BSD-3-Clause
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/kbandla/dpkt.git
+PKG_SOURCE_VERSION:=6cd0909d613a66033ecdefaca6cc07cfa7d46d6b
+PKG_MIRROR_HASH:=fe8657552b1dbaf8b9eba50168730e200567dc88a06932aa1cf60dc93211d16b
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
+
+PKG_BUILD_DEPENDS:=python python-setuptools
+
+include $(INCLUDE_DIR)/package.mk
+$(call include_mk, python-package.mk)
+
+define Package/python-dpkt
+ SECTION:=language-python
+ CATEGORY:=Languages
+ SUBMENU:=Python
+ TITLE:=python-dpkt
+ URL:=https://dpkt.readthedocs.io/en/latest/
+ DEPENDS:=+python
+endef
+
+define Package/python-dpkt/description
+ dpkt is a python module for fast, simple packet creation / parsing, with definitions for the basic TCP/IP protocols
+ https://pypi.python.org/pypi/dpkt
+ https://github.com/kbandla/dpkt
+endef
+
+define Build/Compile
+ $(call Build/Compile/PyMod,,\
+ install --prefix=/usr --root="$(PKG_INSTALL_DIR)" \
+ )
+endef
+
+$(eval $(call PyPackage,python-dpkt))
+$(eval $(call BuildPackage,python-dpkt))
PKG_NAME:=python
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
-PKG_RELEASE:=6
+PKG_RELEASE:=7
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://www.python.org/ftp/python/$(PKG_VERSION)
$(call Build/Compile/python-pip)
endef
+define Build/InstallMkFiles
+ $(INSTALL_DIR) $(STAGING_DIR)/mk/
+ $(INSTALL_DATA) \
+ ./files/python-package.mk \
+ ./files/python-host.mk \
+ ./files/python-version.mk \
+ ./files/python-package-install.sh \
+ $(STAGING_DIR)/mk/
+endef
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/ $(1)/usr/lib/pkgconfig
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config \
$(1)/usr/lib/python$(PYTHON_VERSION)/
+ $(call Build/InstallMkFiles)
endef
PYTHON_BASE_LIB_FILES:= \
CONFIG_SITE=
define Host/Install
+ $(call Build/InstallMkFiles)
$(MAKE) -C $(HOST_BUILD_DIR) install
- $(INSTALL_DIR) $(HOST_PYTHON_DIR)/bin/ $(STAGING_DIR)/mk/
+ $(INSTALL_DIR) $(HOST_PYTHON_DIR)/bin/
$(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON_DIR)/bin/pgen2
- # Install these mk files in the Host/Install phase ;
- # The Build/InstallDev rule is activated only for target builds.
- # But if someone needs only the host Python, then
- # these files need to be installed in this phase, and not Build/InstallDev
- $(INSTALL_DATA) \
- ./files/python-package.mk \
- ./files/python-host.mk \
- ./files/python-version.mk \
- ./files/python-package-install.sh \
- $(STAGING_DIR)/mk/
endef
$(eval $(call HostBuild))
$(HOST_PYTHON_BIN) $(2);
endef
+define host_python_settings
+ ARCH="$(HOST_ARCH)" \
+ CC="$(HOSTCC)" \
+ CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
+ CXX="$(HOSTCXX)" \
+ LD="$(HOSTCC)" \
+ LDSHARED="$(HOSTCC) -shared" \
+ CFLAGS="$(HOST_CFLAGS)" \
+ CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
+ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
+ _PYTHON_HOST_PLATFORM=linux2
+endef
+
# $(1) => commands to execute before running pythons script
# $(2) => python script and its arguments
# $(3) => additional variables
define Build/Compile/HostPyRunHost
$(call HostPython, \
$(if $(1),$(1);) \
- CC="$(HOSTCC)" \
- CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
- CXX="$(HOSTCXX)" \
- LD="$(HOSTCC)" \
- LDSHARED="$(HOSTCC) -shared" \
- CFLAGS="$(HOST_CFLAGS)" \
- CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON_INC_DIR)" \
- LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
- _PYTHON_HOST_PLATFORM=linux2 \
+ $(call host_python_settings) \
$(3) \
, \
$(2) \
# Note: I shamelessly copied this from Yousong's logic (from python-packages);
HOST_PYTHON_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON_VERSION)
define host_python_pip_install
+ $(call host_python_settings) \
$(HOST_PYTHON_PIP) install \
--root=$(1) \
--prefix=$(2) \
PKG_NAME:=python3
# XXX: reset PKG_RELEASE to 1 only if Python's pip & setuptools versions have also bumped;
# otherwise, keep bumping PKG_RELEASE
-PKG_RELEASE:=5
+PKG_RELEASE:=6
PKG_VERSION:=$(PYTHON_VERSION).$(PYTHON_VERSION_MICRO)
PKG_SOURCE:=Python-$(PKG_VERSION).tar.xz
$(call Build/Compile/python3-pip)
endef
+define Build/InstallMkFiles
+ $(INSTALL_DIR) $(STAGING_DIR)/mk/
+ $(INSTALL_DATA) \
+ ./files/python3-package.mk \
+ ./files/python3-host.mk \
+ ./files/python3-version.mk \
+ ./files/python3-package-install.sh \
+ $(STAGING_DIR)/mk/
+endef
+
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/ $(1)/usr/lib/
$(INSTALL_DIR) $(1)/usr/lib/python$(PYTHON_VERSION)/
$(CP) \
$(PKG_INSTALL_DIR)/usr/lib/python$(PYTHON_VERSION)/config-$(PYTHON_VERSION) \
$(1)/usr/lib/python$(PYTHON_VERSION)/
+ $(call Build/InstallMkFiles)
endef
PYTHON3_BASE_LIB_FILES:= \
endef
define Host/Install
+ $(call Build/InstallMkFiles)
$(MAKE) -C $(HOST_BUILD_DIR) install
-
- $(INSTALL_DIR) $(HOST_PYTHON3_DIR)/bin/ $(STAGING_DIR)/mk/
+ $(INSTALL_DIR) $(HOST_PYTHON3_DIR)/bin/
$(INSTALL_BIN) $(HOST_BUILD_DIR)/Parser/pgen $(HOST_PYTHON3_DIR)/bin/pgen3
-
- # Install these mk files in the Host/Install phase ;
- # The Build/InstallDev rule is activated only for target builds.
- # But if someone needs only the host Python, then
- # these files need to be installed in this phase, and not Build/InstallDev
- $(INSTALL_DATA) \
- ./files/python3-package.mk \
- ./files/python3-host.mk \
- ./files/python3-version.mk \
- ./files/python3-package-install.sh \
- $(STAGING_DIR)/mk/
endef
$(eval $(call HostBuild))
$(HOST_PYTHON3_BIN) $(2);
endef
+define host_python3_settings
+ ARCH="$(HOST_ARCH)" \
+ CC="$(HOSTCC)" \
+ CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
+ CXX="$(HOSTCXX)" \
+ LD="$(HOSTCC)" \
+ LDSHARED="$(HOSTCC) -shared" \
+ CFLAGS="$(HOST_CFLAGS)" \
+ CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
+ LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
+ _PYTHON_HOST_PLATFORM=linux2
+endef
+
# $(1) => commands to execute before running pythons script
# $(2) => python script and its arguments
# $(3) => additional variables
define Build/Compile/HostPy3RunHost
$(call HostPython3, \
$(if $(1),$(1);) \
- CC="$(HOSTCC)" \
- CCSHARED="$(HOSTCC) $(HOST_FPIC)" \
- CXX="$(HOSTCXX)" \
- LD="$(HOSTCC)" \
- LDSHARED="$(HOSTCC) -shared" \
- CFLAGS="$(HOST_CFLAGS)" \
- CPPFLAGS="$(HOST_CPPFLAGS) -I$(HOST_PYTHON3_INC_DIR)" \
- LDFLAGS="$(HOST_LDFLAGS) -lpython$(PYTHON3_VERSION) -Wl$(comma)-rpath=$(STAGING_DIR_HOSTPKG)/lib" \
- _PYTHON_HOST_PLATFORM=linux2 \
+ $(call host_python3_settings) \
$(3) \
, \
$(2) \
# Note: I shamelessly copied this from Yousong's logic (from python-packages);
HOST_PYTHON3_PIP:=$(STAGING_DIR_HOSTPKG)/bin/pip$(PYTHON3_VERSION)
define host_python3_pip_install
+ $(call host_python3_settings) \
$(HOST_PYTHON3_PIP) install \
--root=$(1) \
--prefix=$(2) \
include $(TOPDIR)/rules.mk
PKG_NAME:=ruby
-PKG_VERSION:=2.4.1
+PKG_VERSION:=2.4.2
PKG_RELEASE:=1
# First two numbes
PKG_ABI_VERSION:=$(subst $(space),.,$(wordlist 1, 2, $(subst .,$(space),$(PKG_VERSION))))
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=http://cache.ruby-lang.org/pub/ruby/$(PKG_ABI_VERSION)/
-PKG_HASH:=4fc8a9992de3e90191de369270ea4b6c1b171b7941743614cc50822ddc1fe654
+PKG_SOURCE_URL:=https://cache.ruby-lang.org/pub/ruby/$(PKG_ABI_VERSION)/
+PKG_HASH:=748a8980d30141bd1a4124e11745bb105b436fb1890826e0d2b9ea31af27f735
PKG_MAINTAINER:=Luiz Angelo Daros de Luca <luizluca@gmail.com>
PKG_LICENSE:=BSD-2-Clause
PKG_LICENSE_FILES:=COPYING
--- /dev/null
+diff -pU3 a/configure b/configure
+--- a/configure 2017-09-14 21:52:19.000000000 +0900
++++ b/configure 2017-09-15 07:03:12.000000000 +0900
+@@ -10614,6 +10614,7 @@ fi
+ ac_res=$ac_cv_search___gmpz_init
+ if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
++ $as_echo "#define HAVE_LIBGMP 1" >>confdefs.h
+
+ fi
+
+@@ -10683,6 +10684,7 @@ fi
+ ac_res=$ac_cv_search_malloc_conf
+ if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
++ $as_echo "#define HAVE_LIBJEMALLOC 1" >>confdefs.h
+
+ else
+ with_jemalloc=no
+diff -pU3 a/configure.in b/configure.in
+--- a/configure.in 2017-08-04 23:39:29.000000000 +0900
++++ b/configure.in 2017-09-15 07:20:40.000000000 +0900
+@@ -1403,13 +1403,15 @@ AC_ARG_WITH([gmp],
+ AS_IF([test "x$with_gmp" != xno],
+ [AC_CHECK_HEADERS(gmp.h)
+ AS_IF([test "x$ac_cv_header_gmp_h" != xno],
+- AC_SEARCH_LIBS([__gmpz_init], [gmp]))])
++ AC_SEARCH_LIBS([__gmpz_init], [gmp],
++ [AC_DEFINE(HAVE_LIBGMP, 1)]))])
+
+ AC_ARG_WITH([jemalloc],
+ [AS_HELP_STRING([--with-jemalloc],[use jemalloc allocator])],
+ [with_jemalloc=$withval], [with_jemalloc=no])
+ AS_IF([test "x$with_jemalloc" = xyes],[
+- AC_SEARCH_LIBS([malloc_conf], [jemalloc], [], [with_jemalloc=no])
++ AC_SEARCH_LIBS([malloc_conf], [jemalloc],
++ [AC_DEFINE(HAVE_LIBJEMALLOC, 1)], [with_jemalloc=no])
+ AC_CHECK_HEADER(jemalloc/jemalloc.h, [
+ AC_DEFINE(RUBY_ALTERNATIVE_MALLOC_HEADER, [<jemalloc/jemalloc.h>])
+ ])
PKG_NAME:=file
PKG_VERSION:=5.25
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=ftp://ftp.astron.com/pub/file/
+PKG_SOURCE_URL:=https://sources.lede-project.org/ \
+ http://pkgs.fedoraproject.org/lookaside/pkgs/file/ \
+ http://download.openpkg.org/components/cache/file/ \
+ ftp://ftp.astron.com/pub/file/
PKG_HASH:=3735381563f69fb4239470b8c51b876a80425348b8285a7cded8b61d6b890eca
PKG_LICENSE:=BSD-2c
define Package/file/Default
TITLE:=File type determination
URL:=ftp://ftp.astron.com/pub/file/
- MAINTAINER:=Luka Perkov <luka@openwrt.org>
+ MAINTAINER:=Marko Ratkaj <marko.ratkaj@sartura.hr>
endef
define Package/file
define Package/libmagic/install
$(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libmagic.so.* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libmagic.so.* $(1)/usr/lib/
endef
$(eval $(call BuildPackage,file))
include $(TOPDIR)/rules.mk
PKG_NAME:=libcoap
-PKG_RELEASE:=3
+PKG_VERSION:=v4.1.2
+PKG_RELEASE:=1
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/obgm/libcoap
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE_VERSION:=2da31de732c0e51a9bc9e1d4aea21e25da89cf87
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
-PKG_MIRROR_HASH:=b61fe3245a329dfcf198187149d2072509b18ca6e348d0b423c0f44d11e930e4
+PKG_SOURCE_VERSION:=fa5248603049ddf95cc84608aad569120763bf2b
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_MIRROR_HASH:=0ab4bc9569a78904743cc3074fd1c0fc9c78c85fd510fef5145dd872523619e6
PKG_MAINTAINER:=Anton Glukhov <anton.a.glukhov@gmail.com>
PKG_LICENSE:=GPL-2.0+ BSD-2-Clause
Constrained Application Protocol (RFC 7252) library
endef
+define Package/coap-client
+ SECTION:=utils
+ CATEGORY:=Utilities
+ DEPENDS:=+libcoap
+ TITLE:=CoAP (RFC 7252) client tool
+endef
+
+define Package/coap-client/description
+ Constrained Application Protocol (RFC7252) client tool
+endef
+
+define Package/coap-server
+ SECTION:=net
+ CATEGORY:=Network
+ DEPENDS:=+libcoap
+ TITLE:=CoAP (RFC 7252) server programs
+endef
+
+define Package/coap-server/description
+ Constrained Application Protocol (RFC 7252) server and resource directory server
+endef
+
TARGET_CFLAGS += $(FPIC)
CONFIGURE_ARGS += \
- --disable-examples \
+ --enable-examples \
--disable-documentation
ifeq ($(CONFIG_BIG_ENDIAN),y)
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libcoap-1.so* $(1)/usr/lib/
endef
+define Package/coap-client/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/coap-client $(1)/usr/bin/
+endef
+
+define Package/coap-server/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/coap-server $(1)/usr/bin/
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/coap-rd $(1)/usr/bin/
+endef
+
$(eval $(call BuildPackage,libcoap))
+$(eval $(call BuildPackage,coap-client))
+$(eval $(call BuildPackage,coap-server))
PKG_NAME:=libffi
PKG_VERSION:=3.2.1
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=ftp://sourceware.org/pub/libffi/
$(1)/usr/lib/
endef
+define Host/Install
+ $(call Host/Install/Default)
+ # Adjust host libffi headers ; the default rule does
+ # not seem to install them to the proper include folder
+ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/include
+ $(CP) \
+ $(STAGING_DIR_HOSTPKG)/lib/libffi-$(PKG_VERSION)/include/*.h \
+ $(STAGING_DIR_HOSTPKG)/include
+endef
+
$(eval $(call HostBuild))
$(eval $(call BuildPackage,libffi))
PKG_LICENSE:=BSD-3-Clause
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
-PKG_VERSION:=0.8.56
+PKG_VERSION:=0.9.15
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=4d13eca938085298edbad6a731d77dfd55c8d514
-PKG_MIRROR_HASH:=88d1ab14a945c8c8c9fadfb248568294ac5f62dea3b8d99e60dbb8262f7107bc
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_VERSION:=cea46db1edb72231c9e009d7e6d6799256676eb8
+PKG_MIRROR_HASH:=a686754cef2ef29a511b8ea06d121f0ce562b570d6cea6c6a7562ff47b91d2a2
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/cesnet/libnetconf2/
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
--- /dev/null
+#
+# Copyright (C) 2017 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libredblack
+PKG_VERSION:=0.2.3
+PKG_RELEASE=$(PKG_SOURCE_VERSION)
+
+PKG_LICENSE:=GPL-2.0+
+PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=a399310d99b61eec4d3c0677573ab5dddcf9395d
+PKG_MIRROR_HASH:=71b05e70988b97865f734c698dd5564e349680556ccb8634a5bddf344012f22a
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/sysrepo/libredblack.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_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/libredblack
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=RedBlack tree library
+ URL:=$(PKG_SOURCE_URL)
+endef
+
+define Package/libredblack/description
+ RedBlack Balanced Tree Searching and Sorting Library.
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libredblack.{so*,a,la} $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/redblack.h $(1)/usr/include/
+endef
+
+define Package/libredblack/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libredblack.{so*,a,la} $(1)/usr/lib/
+
+ $(INSTALL_DIR) $(1)/usr/include
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/include/redblack.h $(1)/usr/include
+endef
+
+$(eval $(call BuildPackage,libredblack))
--- /dev/null
+#
+# Copyright (C) 2017 Steven Hessing
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libtins
+PKG_RELEASE:=1
+
+PKG_MAINTAINER:= Steven Hessing <steven.hessing@gmail.com>
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/mfontanini/libtins.git
+PKG_SOURCE_VERSION:=v3.5
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
+PKG_MIRROR_HASH:=47cd7d659ffa75dcfc2172ef54151fd36dc87de9e0f04bb066f6b076a7df7b57
+
+PKG_LICENSE:=BSD-2-Clause
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+PKG_BUILD_PARALLEL:=1
+
+CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+CMAKE_OPTIONS += -D_RUN_RESULT_VAR=FORCE
+CMAKE_OPTIONS += -DLIBTINS_ENABLE_WPA2=0
+CMAKE_OPTIONS += -DLIBTINS_ENABLE_CXX11=1
+
+define Package/libtins
+ SECTION:=net
+ CATEGORY:=Libraries
+ TITLE:=libtins
+ URL:=http://libtins.github.io/
+ DEPENDS:=+libstdcpp +libpcap
+endef
+
+define Package/libtins/description
+libtins is a high-level, multiplatform C++ network packet sniffing and crafting library.
+endef
+
+define Package/libtins/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/libtins.so.3.5 $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libtins))
include $(TOPDIR)/rules.mk
PKG_NAME:=libyang
-PKG_VERSION:=0.12.174
+PKG_VERSION:=0.13.46
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_LICENSE:=GPL-2.0+
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=d1556e0ae3872d676dfd63bd6073fe7e72d0130f
+PKG_MIRROR_HASH:=4a23a3854ceca147e113ab65ecdce3371e30b59436680e7d981b0bab6dbe751d
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/CESNET/libyang.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=7e811613b335afc8e1b2c0ee77e7b3f371bc9175
-PKG_MIRROR_HASH:=860865b294c628ad66ca5ef6848aae8df93e46325302914dbfb14264866f1678
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
+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_BUILD_PARALLEL:=1
PKG_INSTALL:=1
CATEGORY:=Libraries
TITLE:=YANG data modeling language library
URL:=$(PKG_SOURCE_URL)
- DEPENDS:=+libpcre
+ DEPENDS:=+libpcre +libpthread
endef
define Package/yanglint
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlite
-PKG_VERSION:=3190300
+PKG_VERSION:=3200100
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
-PKG_HASH:=06129c03dced9f87733a8cba408871bd60673b8f93b920ba8d815efab0a06301
+PKG_HASH:=ec66595b29bc0798b023a5122021ea646ab4fa9e2f735937c5426feeba950742
PKG_SOURCE_URL:=http://www.sqlite.org/2017/
PKG_LICENSE:=PUBLICDOMAIN
include $(TOPDIR)/rules.mk
PKG_NAME:=dovecot
-PKG_VERSION:=2.2.31
-PKG_RELEASE:=2
+PKG_VERSION:=2.2.32
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.dovecot.org/releases/2.2
-PKG_HASH:=034be40907748128d65088a4f59789b2f99ae7b33a88974eae0b6a68ece376a1
+PKG_HASH:=160b2151e2af359877f69cb2dcdfe1a3f4138ad3766e3b8562b96616e2f6bc2e
PKG_LICENSE:=LGPL-2.1 MIT BSD-3-Clause Unique
PKG_LICENSE_FILES:=COPYING COPYING.LGPL COPYING.MIT
include $(TOPDIR)/rules.mk
PKG_NAME:=pigeonhole
-PKG_VERSION:=0.4.16
+PKG_VERSION:=0.4.20
PKG_RELEASE:=1
DOVECOT_VERSION:=2.2
PKG_SOURCE:=dovecot-$(DOVECOT_VERSION)-$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pigeonhole.dovecot.org/releases/$(DOVECOT_VERSION)
-PKG_HASH:=8f0b98f18062d6e241eef74ebe16cc167cd246361cbe6657d94f0ecc5d7d3234
+PKG_HASH:=6fe17d0b8f25f2ad580e01ad81ce47a9e965255e383a1f80e455f9ca0f00be5b
PKG_LICENSE:=LGPL-2.1
PKG_LICENSE_FILES:=COPYING COPYING.LGPL
include $(TOPDIR)/rules.mk
PKG_NAME:=youtube-dl
-PKG_VERSION:=2017.06.05
+PKG_VERSION:=2017.09.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://yt-dl.org/downloads/$(PKG_VERSION)/
-PKG_HASH:=b54ca848490285909d0830c04c19376c2d78da74d8de0056387b11ba34234e8c
+PKG_HASH:=8b6defdd7cb9a8228eca2ef03a8c203a3ccba1ed97cb700f11b40a3af548212a
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_LICENSE:=Unlicense
PKG_LICENSE_FILES:=LICENSE
PKG_MAINTAINER:=Adrian Panella <ianchi74@outlook.com>
-PKG_BUILD_DEPENDS:=python/host
+PKG_BUILD_DEPENDS:=python/host zip/host
include $(INCLUDE_DIR)/package.mk
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=3.0.1
+PKG_VERSION:=3.0.2
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
* adb\_manmode => do not automatically update block lists during startup, use backups instead (default: '0', disabled)
## Examples
-**change default dns backend to 'unbound':**
-<pre><code>
+**change default dns backend to 'unbound':**
+
Adblock deposits the sorted and filtered block list (adb_list.overall) in '/var/lib/unbound' where unbound can find them in its jail.
If you use manual configuration for unbound, then just include the following line in your 'server' clause:
-
+<pre><code>
include: "/var/lib/unbound/adb_list.overall"
</code></pre>
-**change default dns backend to 'named' (bind):**
-<pre><code>
+**change default dns backend to 'named' (bind):**
+
Adblock deposits the sorted and filtered block list (adb_list.overall) in '/var/lib/bind' where bind can find them.
To use the block list please modify the following bind configuration files:
-
+<pre><code>
change '/etc/bind/named.conf', in the 'options' namespace add:
response-policy { zone "rpz"; };
$INCLUDE /var/lib/bind/adb_list.overall
</code></pre>
-**change default dns backend to 'kresd':**
-<pre><code>
+**change default dns backend to 'kresd':**
+
The knot-resolver (kresd) is only available on turris omnia devices. Currently there's no package for kresd in the official LEDE / OpenWrt package repository.
Adblock deposits the sorted and filtered block list (adb_list.overall) in '/etc/kresd' where kresd can find them.
To use the block list please create/modify the following kresd configuration files:
+<pre><code>
+TurrisOS > 3.6:
+ edit '/etc/config/resolver' and change / uncomment the following options:
+ forward_upstream '0'
+ list rpz_file '/etc/kresd/adb_list.overall'
-edit '/etc/config/resolver' and uncomment the following option:
- option include_config '/etc/kresd/custom.conf'
-
-in the same file change the 'forward_upstream' option like that:
- forward_upstream '0'
+TurrisOS < 3.6:
+ edit '/etc/config/resolver' and change / uncomment the following options:
+ forward_upstream '0'
+ option include_config '/etc/kresd/custom.conf'
-create '/etc/kresd/custom.conf' and add:
- policy.add(policy.rpz(policy.DENY, '/etc/kresd/adb_list.overall'))
- policy.add(policy.all(policy.FORWARD('8.8.8.8')))
- policy.add(policy.all(policy.FORWARD('8.8.4.4')))
+ create '/etc/kresd/custom.conf' and add:
+ policy.add(policy.rpz(policy.DENY, '/etc/kresd/adb_list.overall'))
+ policy.add(policy.all(policy.FORWARD({'8.8.8.8', '8.8.4.4'})))
</code></pre>
-**change default dns backend to 'dnscrypt-proxy':**
-<pre><code>
+**change default dns backend to 'dnscrypt-proxy':**
+
Adblock deposits the sorted and filtered block list (adb_list.overall) by default in '/tmp' where DNSCrypt-Proxy can find them.
The blacklist option is not supported by default, because DNSCrypt-Proxy is compiled without plugins support.
Take a custom LEDE build with plugins support to use this feature:
-
+<pre><code>
edit '/etc/config/dnscrypt-proxy' and add the following option per dnscrypt-proxy instance:
list blacklist 'domains:/tmp/adb_list.overall'
</code></pre>
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="3.0.1"
-adb_sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
+adb_ver="3.0.2"
+adb_sysver="unknown"
adb_enabled=0
adb_debug=0
adb_manmode=0
#
f_envload()
{
- local dns_up cnt=0
+ local dns_up sys_call sys_desc sys_model sys_ver cnt=0
+
+ # get system information
+ #
+ sys_call="$(ubus -S call system board 2>/dev/null)"
+ if [ -n "${sys_call}" ]
+ then
+ sys_desc="$(printf '%s' "${sys_call}" | jsonfilter -e '@.release.description')"
+ sys_model="$(printf '%s' "${sys_call}" | jsonfilter -e '@.model')"
+ sys_ver="$(cat /etc/turris-version 2>/dev/null)"
+ if [ -n "${sys_ver}" ]
+ then
+ sys_desc="${sys_desc}/${sys_ver}"
+ fi
+ adb_sysver="${sys_model}, ${sys_desc}"
+ fi
# source in system libraries
#
include $(TOPDIR)/rules.mk
PKG_NAME:=chrony
-PKG_VERSION:=3.1
-PKG_RELEASE:=2
+PKG_VERSION:=3.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://download.tuxfamily.org/chrony/
-PKG_HASH:=9d9107dcdb7768a03dc129d33b2a7a25f1eea2f5620bc85eb00cfea07c1b6075
+PKG_HASH:=329f6718dd8c3ece3eee78be1f4821cbbeb62608e7d23f25da293cfa433c4116
PKG_MAINTAINER:=Miroslav Lichvar <mlichvar0@gmail.com>
PKG_LICENSE:=GPL-2.0
diff --git a/sysincl.h b/sysincl.h
-index 30e9b48..8fe16c0 100644
+index a9e4da0..e2a6e78 100644
--- a/sysincl.h
+++ b/sysincl.h
-@@ -70,4 +70,8 @@
- #include <arpa/inet.h>
+@@ -80,4 +80,8 @@
+ #include <sys/random.h>
#endif
+#if defined(LINUX) && !defined(IP_FREEBIND)
PKG_NAME:=htpdate
PKG_VERSION:=1.1.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.vervest.org/htp/archive/c/
CATEGORY:=Network
TITLE:=an HTP (Hypertext Time Protocol) implementation
URL:=http://www.vervest.com/htp/
- MAINTAINER:=Tijs Van Buggenhout <tvbuggen@netzerk.be>
+ MAINTAINER:=Tijs Van Buggenhout <tvbuggen@netzerk.be>, \
+ Marcin Jurkowski <marcin1j@gmail.com>
endef
define Package/htpdate/description
endef
define Package/htpdate/conffiles
-/etc/default/htpdate
+/etc/config/htpdate
endef
define Build/Compile
define Package/htpdate/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/htpdate $(1)/usr/sbin/
- $(INSTALL_DIR) $(1)/etc/default/
- $(INSTALL_CONF) ./files/htpdate.default $(1)/etc/default/htpdate
+ $(INSTALL_DIR) $(1)/etc/config/
+ $(INSTALL_CONF) ./files/htpdate.conf $(1)/etc/config/htpdate
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_BIN) ./files/htpdate.init $(1)/etc/init.d/htpdate
endef
--- /dev/null
+config htpdate 'htpdate'
+ option enabled 1
+ list server 'www.google.com'
+ list server 'www.yahoo.com'
+ list server 'www.linux.com'
+ list server 'www.freebsd.org'
+ option proxy_host ''
+ option proxy_port '8080'
+ option debug 0
+ option sanity_check 1
+ #list option '-4'
+++ /dev/null
-OPTIONS="www.google.com www.yahoo.com www.linux.org www.freebsd.org"
# Copyright (C) 2006 OpenWrt.org
START=49
-BIN=htpdate
-DEFAULT=/etc/default/$BIN
-RUN_D=/var/run
-PID_F=$RUN_D/$BIN.pid
-
-start() {
- [ -f $DEFAULT ] && . $DEFAULT
- mkdir -p $RUN_D
- $BIN -l -s -t $OPTIONS && $BIN -D $OPTIONS
+USE_PROCD=1
+PROG=/usr/sbin/htpdate
+
+
+
+
+validate_htpdate_section() {
+ uci_validate_section htpdate htpdate "${1}" \
+ 'server:list(host)' \
+ 'proxy_host:host' \
+ 'proxy_port:port:8080' \
+ 'debug:bool:0' \
+ 'sanity_check:bool:1' \
+ 'option:list(string)' \
+ 'enabled:bool:1'
}
-stop() {
- [ -f $PID_F ] && kill $(cat $PID_F)
+
+start_service() {
+ local server proxy debug sanity_check option enabled
+
+ validate_htpdate_section htpdate || {
+ echo "validation failed"
+ return 1
+ }
+
+ [ "$enabled" = 0 ] && return
+
+
+ procd_open_instance
+ procd_set_param command "$PROG" -f
+
+ [ -n "$proxy" ] && procd_append_param command -P $proxy:$proxy_port
+ [ "$debug" = "1" ] && procd_append_param command -d
+ [ "$sanity_check" = "0" ] && procd_append_param command -t
+ [ -n "$option" ] && procd_append_param command $option
+ for peer in $server; do
+ procd_append_param command $peer
+ done
+
+ procd_set_param stdout 1
+ procd_set_param stderr 1
+ procd_set_param respawn
+ procd_close_instance
}
+service_triggers() {
+ procd_add_reload_trigger "htpdate"
+ procd_add_validation validate_htpdate_section
+}
--- /dev/null
+--- a/htpdate.c
++++ b/htpdate.c
+@@ -395,6 +395,7 @@ Usage: htpdate [-046abdhlqstxD] [-i pid
+ -b burst mode\n\
+ -d debug mode\n\
+ -D daemon mode\n\
++ -f run in foreground\n\
+ -h help\n\
+ -i pid file\n\
+ -l use syslog for output\n\
+@@ -510,7 +511,7 @@ int main( int argc, char *argv[] ) {
+
+
+ /* Parse the command line switches and arguments */
+- while ( (param = getopt(argc, argv, "046abdhi:lm:p:qstu:xDM:P:") ) != -1)
++ while ( (param = getopt(argc, argv, "046abdhi:lm:p:qstu:xDfM:P:") ) != -1)
+ switch( param ) {
+
+ case '0': /* HTTP/1.0 */
+@@ -593,6 +594,9 @@ int main( int argc, char *argv[] ) {
+ daemonize = 1;
+ logmode = 1;
+ break;
++ case 'f': /* run in foreground */
++ daemonize = 2;
++ break;
+ case 'M': /* maximum poll interval */
+ if ( ( maxsleep = atoi(optarg) ) <= 0 ) {
+ fputs( "Invalid sleep time\n", stderr );
+@@ -631,7 +635,9 @@ int main( int argc, char *argv[] ) {
+
+ /* Run as a daemonize when -D is set */
+ if ( daemonize ) {
+- runasdaemon( pidfile );
++ if ( daemonize == 1 ) {
++ runasdaemon( pidfile );
++ }
+ /* Query only mode doesn't exist in daemon mode */
+ if ( !setmode )
+ setmode = 1;
include $(TOPDIR)/rules.mk
PKG_NAME:=inadyn
-PKG_VERSION=2017-02-02
+PKG_VERSION=2.2
PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=https://github.com/troglobit/inadyn
-PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=3b9ae1c22f96194232cc86ded33af9e0a1602af2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=9db6cd8d2b421d8bc61d4ae60c8215a86d73657746a1b06d79f4fbfd79734f6e
+PKG_SOURCE_URL:=https://github.com/troglobit/inadyn/releases/download/v$(PKG_VERSION)
+PKG_HASH:=27aed84a3d04591540b01ef91a5af4b02cbd0e0c20db36a2660453780bd645f6
PKG_FIXUP:=autoreconf
define Package/inadyn/install
$(INSTALL_DIR) $(1)/etc
- $(INSTALL_DATA) $(PKG_BUILD_DIR)/examples/dyndns.conf $(1)/etc/inadyn.conf
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/inadyn $(1)/usr/sbin/
endef
PKG_TINYCBOR_PROTO:=git
PKG_TINYCBOR_VERSION:=0.4
PKG_TINYCBOR_SOURCE_VERSION:=a088996aa5f59b4f27f20fadad053d88bee357d4
+PKG_TINYCBOR_MIRROR_HASH:=77c600bd7362df8291148fa3d94ca780815ea2b74b817dca7565310ea0abff96
PKG_TINYCBOR_SOURCE:=$(PKG_TINYCBOR_NAME)-$(PKG_TINYCBOR_VERSION).tar.bz2
PKG_TINYCBOR_SOURCE_URL:=https://github.com/01org/tinycbor.git
PKG_TINYCBOR_SUBDIR:=$(PKG_TINYCBOR_NAME)
define Download/iotivity-tinycbor
FILE:=$(PKG_TINYCBOR_SOURCE)
URL:=$(PKG_TINYCBOR_SOURCE_URL)
+ MIRROR_HASH:=$(PKG_TINYCBOR_MIRROR_HASH)
PROTO:=$(PKG_TINYCBOR_PROTO)
VERSION:=$(PKG_TINYCBOR_SOURCE_VERSION)
SUBDIR:=$(PKG_TINYCBOR_SUBDIR)
PKG_NAME:=linknx
PKG_VERSION:=0.0.1.33
-PKG_RELEASE:=1
+PKG_RELEASE:=2
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:=f627ed44feaea5a1f67c53f2810c44a14c059cef
+PKG_SOURCE_VERSION:=6166831eff645f21a7fd22ec3f7855f36005b8d9
PKG_SOURCE_SUBDIR:=$(PKG_NAME)
-PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.gz
-PKG_MIRROR_HASH:=713876afcb0ed9ff23ae820daa644f1927b2a0f02abbb81fa154304768f7e97b
+PKG_SOURCE:=$(PKG_NAME)-${PKG_VERSION}.tar.xz
+PKG_MIRROR_HASH:=9d38d3a5b4bd935f841fbacf0ee00a9bb9e75ac7a7e7609864254ebb5bbdb960
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
PKG_BUILD_DEPENDS:=argp-standalone
include $(TOPDIR)/rules.mk
PKG_NAME:=mwan3
-PKG_VERSION:=2.6.5
+PKG_VERSION:=2.6.6
PKG_RELEASE:=1
PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
PKG_LICENSE:=GPLv2
else
$LOG notice "Starting tracker on interface $INTERFACE (${DEVICE:-unknown})"
mwan3_set_iface_hotplug_state $INTERFACE "offline"
- mwan3_track $INTERFACE $DEVICE "offline" "$src_ip"
+ mwan3_track $INTERFACE $DEVICE "unknown" "$src_ip"
fi
;;
ifdown)
mwan3_list_track_ips()
{
- track_ips="$1 $track_ips"
+ track_ips="$track_ips $1"
}
config_list_foreach $1 track_ip mwan3_list_track_ips
+++ /dev/null
-if PACKAGE_netopeer2-server
-
-config SSH_SERVER
- bool "Install the default ssh server (openssh-server)"
- default y
-
-endif
PKG_LICENSE:=BSD-3-Clause
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
-PKG_VERSION:=0.3.65
+PKG_VERSION:=0.4.0
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=c204b59f9c2bb7e63eb907f33c44adbf208295ee
-PKG_MIRROR_HASH:=61a2b3e0ee9a3cf2f73715843f059c79292446ad3643f4eeb85d48d1e185c3b9
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_VERSION:=d028c1f931819db4b3e3cb1fd2d349a4fd5c0459
+PKG_MIRROR_HASH:=7f5b3ad49aaf2a8ceea2c17a37e276f5694af570ef904cfc5a6f53d295809cef
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz
PKG_SOURCE_URL:=https://github.com/CESNET/Netopeer2.git
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk
-define Package/netopeer2-server/config
- source "$(SOURCE)/Config_server.in"
-endef
-
define Package/netopeer2-keystored/config
source "$(SOURCE)/Config_keystored.in"
endef
CATEGORY:=Utilities
TITLE:=NETCONF server
URL:=$(PKG_SOURCE_URL)
- DEPENDS:=+libpthread +libyang +libnetconf2 +netopeer2-keystored +libsysrepo +sysrepocfg +sysrepoctl +sysrepo +SSH_SERVER:openssh-server
+ DEPENDS:=+libpthread +libyang +libnetconf2 +netopeer2-keystored +libsysrepo +sysrepocfg +sysrepoctl +sysrepo
MENU:=1
endef
sysrepoctl --install --yang=/etc/sysrepo/yang/ietf-netconf-server.yang -o root:root -p 600
sysrepoctl -m ietf-netconf-server -e listen
sysrepoctl -m ietf-netconf-server -e ssh-listen
- sysrepoctl -m ietf-netconf-server -e tls-listen
- sysrepoctl -m ietf-netconf-server -e call-home
- sysrepoctl -m ietf-netconf-server -e ssh-call-home
- sysrepoctl -m ietf-netconf-server -e tls-call-home
if [ -x /bin/sysrepocfg ]; then
sysrepocfg -d startup -i /usr/share/netopeer2-server/stock_config.xml ietf-netconf-server
rm /usr/share/netopeer2-server/stock_config.xml
--- /dev/null
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/server/ietf_netconf_server.c
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/server/ietf_netconf_server.c
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/server/ietf_netconf_server.c
+@@ -1161,8 +1161,8 @@ feature_change_ietf_netconf_server(const
+ {
+ int rc, rc2 = 0;
+ const char *path = NULL;
+- sr_val_iter_t *sr_iter;
+- sr_val_t *sr_val;
++ sr_val_t *values;
++ size_t value_cnt;
+
+ assert(feature_name);
+
+@@ -1180,26 +1180,26 @@ feature_change_ietf_netconf_server(const
+ return EXIT_SUCCESS;
+ }
+
+- rc = sr_get_items_iter(np2srv.sr_sess.srs, path, &sr_iter);
++ rc =sr_get_items(np2srv.sr_sess.srs, path, &values, &value_cnt);
+ if (rc != SR_ERR_OK) {
+ ERR("Failed to get \"%s\" values iterator from sysrepo (%s).", sr_strerror(rc));
+ return EXIT_FAILURE;
+ }
+
+- while ((rc = sr_get_item_next(np2srv.sr_sess.srs, sr_iter, &sr_val)) == SR_ERR_OK) {
+- if (sr_val->type == SR_LIST_T) {
++ size_t i;
++ for(i = 0; i < value_cnt; i++) {
++ if (values[i].type == SR_LIST_T) {
+ /* no semantic meaning */
+ continue;
+ }
+
+- rc2 = module_change_resolve(np2srv.sr_sess.srs, SR_OP_CREATED, NULL, sr_val, NULL, NULL);
+- sr_free_val(sr_val);
++ rc2 = module_change_resolve(np2srv.sr_sess.srs, SR_OP_CREATED, NULL, &values[i], NULL, NULL);
+ if (rc2) {
+ ERR("Failed to enable nodes depending on the \"%s\" ietf-netconf-server feature.", feature_name);
+ break;
+ }
+ }
+- sr_free_val_iter(sr_iter);
++ sr_free_values(values, value_cnt);
+ if (rc2) {
+ return EXIT_FAILURE;
+ } else if ((rc != SR_ERR_OK) && (rc != SR_ERR_NOT_FOUND)) {
--- /dev/null
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/CMakeLists.txt
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
+@@ -67,6 +67,9 @@ if(NOT MAN_INSTALL_DIR)
+ set(MAN_INSTALL_DIR share/man)
+ endif()
+
++include(CheckFunctionExists)
++check_function_exists(eaccess HAVE_EACCESS)
++
+ # install binary
+ install(TARGETS netopeer2-cli DESTINATION ${BIN_INSTALL_DIR})
+
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/commands.c
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/commands.c
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/commands.c
+@@ -37,6 +37,10 @@
+ # include <openssl/x509v3.h>
+ #endif
+
++#ifndef HAVE_EACCESS
++#define eaccess access
++#endif
++
+ #include "commands.h"
+ #include "configuration.h"
+ #include "completion.h"
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/completion.c
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
+@@ -27,6 +27,10 @@
+
+ #include <nc_client.h>
+
++#ifndef HAVE_EACCESS
++#define eaccess access
++#endif
++
+ #include "commands.h"
+ #include "linenoise/linenoise.h"
+
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/configuration.c
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/configuration.c
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/configuration.c
+@@ -28,6 +28,10 @@
+ #include <libyang/libyang.h>
+ #include <nc_client.h>
+
++#ifndef HAVE_EACCESS
++#define eaccess access
++#endif
++
+ #include "configuration.h"
+ #include "commands.h"
+ #include "linenoise/linenoise.h"
--- /dev/null
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/CMakeLists.txt
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/CMakeLists.txt
+@@ -69,6 +69,10 @@ endif()
+
+ include(CheckFunctionExists)
+ check_function_exists(eaccess HAVE_EACCESS)
++check_function_exists(mkstemps HAVE_MKSTEMPS)
++if(HAVE_MKSTEMPS)
++ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DHAVE_MKSTEMPS")
++endif(HAVE_MKSTEMPS)
+
+ # install binary
+ install(TARGETS netopeer2-cli DESTINATION ${BIN_INSTALL_DIR})
+Index: netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
+===================================================================
+--- netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459.orig/cli/completion.c
++++ netopeer2-0.4.0-d028c1f931819db4b3e3cb1fd2d349a4fd5c0459/cli/completion.c
+@@ -120,6 +120,7 @@ readinput(const char *instruction, const
+ char* tmpname = NULL, *input = NULL, *old_content = NULL, *ptr, *ptr2;
+
+ /* Create a unique temporary file */
++#ifdef HAVE_MKSTEMPS
+ if (asprintf(&tmpname, "/tmp/tmpXXXXXX.xml") == -1) {
+ ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
+ goto fail;
+@@ -129,6 +130,23 @@ readinput(const char *instruction, const
+ ERROR(__func__, "Failed to create a temporary file (%s).", strerror(errno));
+ goto fail;
+ }
++#else
++ if (asprintf(&tmpname, "/tmp/tmpXXXXXX") == -1) {
++ ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
++ goto fail;
++ }
++ /* cannot fail */
++ mktemp(tmpname);
++ if (asprintf(&tmpname, ".xml") == -1) {
++ ERROR(__func__, "asprintf() failed (%s).", strerror(errno));
++ goto fail;
++ }
++ tmpfd = open(tmpname, O_RDWR | O_CREAT | O_EXCL, 0600);
++ if (tmpfd == -1) {
++ ERROR(__func__, "Failed to create a temporary file (%s).", strerror(errno));
++ goto fail;
++ }
++#endif /* #ifdef HAVE_MKSTEMPS */
+
+ /* Read the old content, if any */
+ if (old_tmp != NULL) {
--- /dev/null
+#
+# Copyright (C) 2017 Steven Hessing
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+# Name and release number of this package
+PKG_NAME:=noddos
+PKG_RELEASE:=1
+PKG_LICENSE:=GPLv3
+
+PKG_SOURCE_VERSION:=0.5.0
+PKG_SOURCE_URL:=https://github.com/noddos/noddos/releases/download/v$(PKG_SOURCE_VERSION)/
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.xz
+PKG_HASH:=61119d76bbc1e7de74c3f3cd58fe7048581a1653dbffa03ae4215163b5221b18
+
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+
+CMAKE_INSTALL:=1
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/noddos
+ SECTION:=net
+ CATEGORY:=Network
+ TITLE:=noddos -- device-aware cloud-powered firewall
+ URL:=https://www.noddos.io/
+ DEPENDS:=+libstdcpp +libnetfilter-conntrack +libcurl +libopenssl +openssl-util +ca-bundle +ca-certificates +wget +bzip2 +libtins +ipset +libpthread
+endef
+
+define Package/noddos/description
+Noddos discovers what devices you have in your network and tailors the firewall rules based on whitelisted flows for that device. Noddos downloads the firewall rules periodically from the cloud. In order to support creating these firewall rules, noddos can optionally upload anonimized traffic statistics for each device to the cloud.
+endef
+
+define Package/noddos/conffiles
+ /etc/config/noddos
+endef
+
+define Package/noddos/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(INSTALL_DIR) $(1)/usr/sbin
+ $(INSTALL_DIR) $(1)/etc/config
+ $(INSTALL_DIR) $(1)/etc/init.d
+ $(INSTALL_DIR) $(1)/etc/noddos
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/src/noddos $(1)/usr/sbin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/getnoddosdeviceprofiles $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/tools/makenoddoscert.sh $(1)/usr/bin
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.init $(1)/etc/init.d/noddos
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/files/noddos.uciconfig $(1)/etc/config/noddos
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.conf-base $(1)/etc/noddos
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddosconfig.pem $(1)/etc/noddos
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/files/noddos.conf-base $(1)/etc/noddos
+endef
+
+define Package/noddos/prerm
+ #!/bin/sh
+ # check if we are on real system
+ if [ -z "$${IPKG_INSTROOT}" ]; then
+ /etc/init.d/noddos stop
+ echo "Removing rc.d symlink for noddos"
+ /etc/init.d/noddos disable
+ fi
+ exit 0
+endef
+
+define Package/noddos/postrm
+ #!/bin/sh
+ # check if we are on real system
+ if [ -z "$${IPKG_INSTROOT}" ]; then
+ echo "Removing noddos data directory"
+ rm -rf /var/lib/noddos
+ if [ -f /var/etc/noddos.conf ]; then
+ rm /var/etc/noddos.conf
+ fi
+ fi
+ exit 0
+endef
+
+$(eval $(call BuildPackage,noddos))
# - check if default mode has changed from being tcp_only
#
PKG_NAME:=shadowsocks-libev
-PKG_VERSION:=3.0.8
-PKG_RELEASE:=14
+PKG_VERSION:=3.1.0
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/shadowsocks/shadowsocks-libev/releases/download/v$(PKG_VERSION)
-PKG_HASH:=3bdf7f8f89050aee896496fd86b6b7ef694754f0b8cd97c4b5a04d1d3e5c2e5b
+PKG_HASH:=3b6493ebdcfff1eb31faf34d164d57049f7253ff5bffafa6ce2263c9ac123f31
PKG_MAINTAINER:=Yousong Zhou <yszhou4tech@gmail.com>
SUBMENU:=Web Servers/Proxies
TITLE:=shadowsocks-libev $(1)
URL:=https://github.com/shadowsocks/shadowsocks-libev
- DEPENDS:=+libev +libmbedtls +libpcre +libpthread +libsodium +libudns +shadowsocks-libev-config +zlib
+ DEPENDS:=+libcares +libev +libmbedtls +libpcre +libpthread +libsodium +shadowsocks-libev-config +zlib
endef
define Package/shadowsocks-libev-$(1)/install
## components
-`ss-local` provides SOCKS5 proxy.
+`ss-local` provides SOCKS5 proxy with UDP associate support.
socks5 ss plain
- --------> tcp:udp:local_address:local_port ----> ss server -------> dest
+ --------> tcp:local_address:local_port ----> ss server -------> dest
`ss-redir`. The REDIRECT and TPROXY part are to be provided by `ss-rules` script. REDIRECT only works for tcp traffic (see also darkk/redsocks). TPROXY is used to proxy udp messages, but it's only available in the PREROUTING chain and as such cannot proxy local out traffic.
ss_mkjson_server_conf || return 1
[ "$disable_sni" = 0 ] && disable_sni=false || disable_sni=true
cat <<-EOF
- ${q}disable_sni${q}: $disable_sni,
+ "disable_sni": $disable_sni,
EOF
}
procd_set_param file "$confjson"
procd_set_param respawn
procd_close_instance
- ss_rules_cb "$cfg"
+ ss_rules_cb
fi
}
}
ss_rules_iptchains_init_tcp() {
- local ipt="iptables -t nat"
local local_target
[ -n "$o_redir_tcp_port" ] || return 0
+++ /dev/null
-From a91d70dd37e9555d104629538890d44ef355c772 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Mon, 26 Jun 2017 14:49:36 +0800
-Subject: [PATCH 1/2] decouple use_syslog from pid_flags
-
-Sometimes we need processes to run in the foreground to be supervised
-and at the same time use syslog facility instead of logging its stdout,
-stderr output
----
- src/jconf.c | 6 ++++++
- src/local.c | 2 +-
- src/manager.c | 2 +-
- src/redir.c | 2 +-
- src/server.c | 2 +-
- src/tunnel.c | 2 +-
- src/utils.h | 18 +++++++++++-------
- 7 files changed, 22 insertions(+), 12 deletions(-)
-
-diff --git a/src/jconf.c b/src/jconf.c
-index 3c58148..05445c3 100644
---- a/src/jconf.c
-+++ b/src/jconf.c
-@@ -313,6 +313,12 @@ read_jconf(const char *file)
- check_json_value_type(value, json_boolean,
- "invalid config file: option 'ipv6_first' must be a boolean");
- conf.ipv6_first = value->u.boolean;
-+#ifdef HAS_SYSLOG
-+ } else if (strcmp(name, "use_syslog") == 0) {
-+ check_json_value_type(value, json_boolean,
-+ "invalid config file: option 'use_syslog' must be a boolean");
-+ use_syslog = value->u.boolean;
-+#endif
- }
- }
- } else {
-diff --git a/src/local.c b/src/local.c
-index 78f6d29..e4bd477 100644
---- a/src/local.c
-+++ b/src/local.c
-@@ -1522,8 +1522,8 @@ main(int argc, char **argv)
- local_addr = "127.0.0.1";
- }
-
-+ USE_SYSLOG(argv[0], pid_flags);
- if (pid_flags) {
-- USE_SYSLOG(argv[0]);
- daemonize(pid_path);
- }
-
-diff --git a/src/manager.c b/src/manager.c
-index 6e7197c..338ab85 100644
---- a/src/manager.c
-+++ b/src/manager.c
-@@ -1149,8 +1149,8 @@ main(int argc, char **argv)
- timeout = "60";
- }
-
-+ USE_SYSLOG(argv[0], pid_flags);
- if (pid_flags) {
-- USE_SYSLOG(argv[0]);
- daemonize(pid_path);
- }
-
-diff --git a/src/redir.c b/src/redir.c
-index 3809411..fae8d54 100644
---- a/src/redir.c
-+++ b/src/redir.c
-@@ -1140,8 +1140,8 @@ main(int argc, char **argv)
- #endif
- }
-
-+ USE_SYSLOG(argv[0], pid_flags);
- if (pid_flags) {
-- USE_SYSLOG(argv[0]);
- daemonize(pid_path);
- }
-
-diff --git a/src/server.c b/src/server.c
-index 534dbd8..1c25c74 100644
---- a/src/server.c
-+++ b/src/server.c
-@@ -1726,8 +1726,8 @@ main(int argc, char **argv)
- }
- #endif
-
-+ USE_SYSLOG(argv[0], pid_flags);
- if (pid_flags) {
-- USE_SYSLOG(argv[0]);
- daemonize(pid_path);
- }
-
-diff --git a/src/tunnel.c b/src/tunnel.c
-index 77c7380..2419fa0 100644
---- a/src/tunnel.c
-+++ b/src/tunnel.c
-@@ -1022,8 +1022,8 @@ main(int argc, char **argv)
- local_addr = "127.0.0.1";
- }
-
-+ USE_SYSLOG(argv[0], pid_flags);
- if (pid_flags) {
-- USE_SYSLOG(argv[0]);
- daemonize(pid_path);
- }
-
-diff --git a/src/utils.h b/src/utils.h
-index 2603e85..53f3983 100644
---- a/src/utils.h
-+++ b/src/utils.h
-@@ -35,7 +35,7 @@
-
- #include <android/log.h>
- #define USE_TTY()
--#define USE_SYSLOG(ident)
-+#define USE_SYSLOG(ident, _cond)
- #define LOGI(...) \
- ((void)__android_log_print(ANDROID_LOG_DEBUG, "shadowsocks", \
- __VA_ARGS__))
-@@ -53,7 +53,7 @@
- extern FILE *logfile;
- #define TIME_FORMAT "%Y-%m-%d %H:%M:%S"
- #define USE_TTY()
--#define USE_SYSLOG(ident)
-+#define USE_SYSLOG(ident, _cond)
- #define USE_LOGFILE(ident) \
- do { \
- if (ident != NULL) { logfile = fopen(ident, "w+"); } } \
-@@ -99,11 +99,15 @@ extern int use_syslog;
- use_tty = isatty(STDERR_FILENO); \
- } while (0)
-
--#define USE_SYSLOG(ident) \
-- do { \
-- use_syslog = 1; \
-- openlog((ident), LOG_CONS | LOG_PID, 0); } \
-- while (0)
-+#define USE_SYSLOG(_ident, _cond) \
-+ do { \
-+ if (!use_syslog && (_cond)) { \
-+ use_syslog = 1; \
-+ } \
-+ if (use_syslog) { \
-+ openlog((_ident), LOG_CONS | LOG_PID, 0); \
-+ } \
-+ } while (0)
-
- #define LOGI(format, ...) \
- do { \
---
-2.12.2
-
+++ /dev/null
-From afe796ce6e7a4164459009c58d7e60862edb0be3 Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech@gmail.com>
-Date: Tue, 1 Aug 2017 15:21:38 +0800
-Subject: [PATCH 2/2] syslog with daemon facility instead of kern (0)
-
----
- src/utils.h | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/utils.h b/src/utils.h
-index 53f3983..3b624e8 100644
---- a/src/utils.h
-+++ b/src/utils.h
-@@ -99,14 +99,14 @@ extern int use_syslog;
- use_tty = isatty(STDERR_FILENO); \
- } while (0)
-
--#define USE_SYSLOG(_ident, _cond) \
-- do { \
-- if (!use_syslog && (_cond)) { \
-- use_syslog = 1; \
-- } \
-- if (use_syslog) { \
-- openlog((_ident), LOG_CONS | LOG_PID, 0); \
-- } \
-+#define USE_SYSLOG(_ident, _cond) \
-+ do { \
-+ if (!use_syslog && (_cond)) { \
-+ use_syslog = 1; \
-+ } \
-+ if (use_syslog) { \
-+ openlog((_ident), LOG_CONS | LOG_PID, LOG_DAEMON); \
-+ } \
- } while (0)
-
- #define LOGI(format, ...) \
---
-2.12.2
-
PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=118378698e0fa1216b52ace92fe9eae0f7d32c39becbc50837a895d7367674b2c973b1633c8919045d9d16dd2a5fdbedb9d62ff1513547ee4770a2e9116d8b1e
+PKG_HASH:=3d1446f7e437104c8f8c7257ccdbddfc0dc7df3ea68b80274c11dd94cc1c8629
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0+
PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=c06e365d06c484e7ef673e5a8597d70996f1008a00163aae2d7a53d0d720739a8b0317a093b3e75487ef1c8a02ac4c4c542480757226a974671f82ab08353896
+PKG_HASH:=e90d419ed8a6da615c3a0d6fdcb9481f8e71f89c2bdcff09ab027198ca2ce293
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0+
PKG_SOURCE_URL:=http://www.shorewall.net/pub/shorewall/$(PKG_DIRECTORY)/shorewall-$(PKG_MAINVERSION)/
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_HASH:=b616c5886b5bc274e88052359ca4c8aa6df60a9706958698eac7fc362f1c893de00ed2272535d61a88cb6a786bae9b7cba64a835833a9f81c991fb2ffed8244b
+PKG_HASH:=29a2f2be295b4f995b38e663b771660ccdc6321134bcfbd0f9378f9bb1237e3c
PKG_MAINTAINER:=Willem van den Akker <wvdakker@wilsoft.nl>
PKG_LICENSE:=GPL-2.0+
include $(TOPDIR)/rules.mk
PKG_NAME:=sngrep
-PKG_VERSION=1.4.2
+PKG_VERSION=1.4.4-rc2
PKG_RELEASE:=1
PKG_MAINTAINER:=Daniel Engberg <daniel.engberg.lists@pyret.net>
PKG_LICENSE:=GPL-3.0
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/irontec/sngrep
PKG_SOURCE_SUBDIR=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=da791185cabeea5a6fcc7372157340b2d1369df7
+PKG_SOURCE_VERSION:=cf5e1da49d00bc7ab1afe9d63daa240db2b9b19c
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_MIRROR_HASH:=2cc640e065f33cae4a3a8e14bdc740e49269cd850eee2ffa9eb821427caaa371
+PKG_MIRROR_HASH:=a6cee2caa108a618134fe87d7c04862e93aa2fdf9647d81dfe4abe91a6c9c19f
PKG_FIXUP:=autoreconf
PKG_MAINTAINER:=Mislav Novakovic <mislav.novakovic@sartura.hr>
PKG_NAME:=sysrepo
-PKG_VERSION:=0.6.0
+PKG_VERSION:=0.7.0
PKG_RELEASE:=2
PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=e4a5705a4c5293ba121048c71899b98243d99edf
-PKG_MIRROR_HASH:=aa0fb5d7c947dd428d9f573c84edf6237c8c1a4db92dcd4d7552a68d25277a39
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_VERSION).tar.bz2
+PKG_SOURCE_VERSION:=7aa2f18d234267403147df92c0005c871f0aa840
+PKG_MIRROR_HASH:=31125596ae1c4dbf8dd48c639bf78043060ab1b89678c860eb2b10606fe4b686
+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_SOURCE_VERSION)
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION)
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_ROOT:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR)
+PKG_BUILD_DIR:=$(PKG_BUILD_ROOT)
CMAKE_INSTALL:=1
CATEGORY:=Utilities
URL:=$(PKG_SOURCE_URL)
TITLE:=YANG-based data store library
- DEPENDS:=+libyang +libprotobuf-c +libev +libavl
+ DEPENDS:=+libyang +libprotobuf-c +libev +libredblack +librt
endef
define Package/sysrepo
CMAKE_OPTIONS += \
-DCMAKE_BUILD_TYPE:STRING=Release \
+ -DUSE_AVL_LIB:BOOL=FALSE \
-DENABLE_TESTS:BOOL=FALSE \
-DBUILD_EXAMPLES:BOOL=FALSE \
-DCMAKE_DISABLE_FIND_PACKAGE_SWIG=TRUE \
-Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/CMakeLists.txt
+Index: sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/CMakeLists.txt
===================================================================
---- sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf.orig/src/CMakeLists.txt
-+++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/CMakeLists.txt
+--- sysrepo-7aa2f18d234267403147df92c0005c871f0aa840.orig/src/CMakeLists.txt
++++ sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/CMakeLists.txt
@@ -21,14 +21,6 @@ set(GENERATED_PROTO_H "${COMMON_BIN_DIR}
set(GENERATED_PROTO_C "${COMMON_BIN_DIR}/${PROTO_NAME}.pb-c.c")
configure_file("${COMMON_DIR}/sr_constants.h.in" "${COMMON_BIN_DIR}/sr_constants.h" ESCAPE_QUOTES @ONLY)
-Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.c
+Index: sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sysrepo.pb-c.c
===================================================================
--- /dev/null
-+++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.c
-@@ -0,0 +1,10517 @@
++++ sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sysrepo.pb-c.c
+@@ -0,0 +1,10537 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: sysrepo.proto */
+
+ (ProtobufCMessageInit) sr__copy_config_req__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
-+#define sr__copy_config_resp__field_descriptors NULL
-+#define sr__copy_config_resp__field_indices_by_name NULL
-+#define sr__copy_config_resp__number_ranges NULL
++static const ProtobufCFieldDescriptor sr__copy_config_resp__field_descriptors[1] =
++{
++ {
++ "errors",
++ 1,
++ PROTOBUF_C_LABEL_REPEATED,
++ PROTOBUF_C_TYPE_MESSAGE,
++ offsetof(Sr__CopyConfigResp, n_errors),
++ offsetof(Sr__CopyConfigResp, errors),
++ &sr__error__descriptor,
++ NULL,
++ 0, /* flags */
++ 0,NULL,NULL /* reserved1,reserved2, etc */
++ },
++};
++static const unsigned sr__copy_config_resp__field_indices_by_name[] = {
++ 0, /* field[0] = errors */
++};
++static const ProtobufCIntRange sr__copy_config_resp__number_ranges[1 + 1] =
++{
++ { 1, 0 },
++ { 0, 1 }
++};
+const ProtobufCMessageDescriptor sr__copy_config_resp__descriptor =
+{
+ PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC,
+ "Sr__CopyConfigResp",
+ "sr",
+ sizeof(Sr__CopyConfigResp),
-+ 0,
++ 1,
+ sr__copy_config_resp__field_descriptors,
+ sr__copy_config_resp__field_indices_by_name,
-+ 0, sr__copy_config_resp__number_ranges,
++ 1, sr__copy_config_resp__number_ranges,
+ (ProtobufCMessageInit) sr__copy_config_resp__init,
+ NULL,NULL,NULL /* reserved[123] */
+};
+ sr__operation__value_ranges,
+ NULL,NULL,NULL,NULL /* reserved[1234] */
+};
-Index: sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.h
+Index: sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sysrepo.pb-c.h
===================================================================
--- /dev/null
-+++ sysrepo-e4a5705a4c5293ba121048c71899b98243d99edf/src/common/sysrepo.pb-c.h
-@@ -0,0 +1,4236 @@
++++ sysrepo-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sysrepo.pb-c.h
+@@ -0,0 +1,4238 @@
+/* Generated by the protocol buffer compiler. DO NOT EDIT! */
+/* Generated from: sysrepo.proto */
+
+
+#if PROTOBUF_C_VERSION_NUMBER < 1000000
+# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers.
-+#elif 1001001 < PROTOBUF_C_MIN_COMPILER_VERSION
++#elif 1002001 < PROTOBUF_C_MIN_COMPILER_VERSION
+# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c.
+#endif
+
+struct _Sr__CopyConfigResp
+{
+ ProtobufCMessage base;
++ size_t n_errors;
++ Sr__Error **errors;
+};
+#define SR__COPY_CONFIG_RESP__INIT \
+ { PROTOBUF_C_MESSAGE_INIT (&sr__copy_config_resp__descriptor) \
-+ }
++ , 0,NULL }
+
+
+/*
--- /dev/null
+Index: sysrepo-0.7.0-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sr_utils.c
+===================================================================
+--- sysrepo-0.7.0-7aa2f18d234267403147df92c0005c871f0aa840.orig/src/common/sr_utils.c
++++ sysrepo-0.7.0-7aa2f18d234267403147df92c0005c871f0aa840/src/common/sr_utils.c
+@@ -460,14 +460,24 @@ sr_fd_set_nonblock(int fd)
+
+ #if defined(SO_PEERCRED)
+
++#if defined(__GLIBC__)
+ #if !defined(SCM_CREDENTIALS)
+-/* struct ucred is ifdefined behind __USE_GNU, but __USE_GNU is not defined */
+ struct ucred {
+ pid_t pid; /* process ID of the sending process */
+ uid_t uid; /* user ID of the sending process */
+ gid_t gid; /* group ID of the sending process */
+ };
+ #endif /* !defined(SCM_CREDENTIALS) */
++#else
++#if !defined(__USE_GNU)
++struct ucred {
++ pid_t pid; /* process ID of the sending process */
++ uid_t uid; /* user ID of the sending process */
++ gid_t gid; /* group ID of the sending process */
++};
++/* struct ucred is ifdefined behind __USE_GNU, but __USE_GNU is not defined */
++#endif /* !defined(__USE_GNU) */
++#endif /* defined(__GLIBC__) */
+
+ int
+ sr_get_peer_eid(int fd, uid_t *uid, gid_t *gid)
include $(TOPDIR)/rules.mk
PKG_NAME:=unbound
-PKG_VERSION:=1.6.5
-PKG_RELEASE:=1
+PKG_VERSION:=1.6.6
+PKG_RELEASE:=2
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.unbound.net/downloads
-PKG_HASH:=e297aa1229015f25bf24e4923cb1dadf1f29b84f82a353205006421f82cc104e
+PKG_HASH:=972b14dc33093e672652a7b2b5f159bab2198b0fe9c9e1c5707e1895d4d4b390
PKG_BUILD_DEPENDS:=libexpat
PKG_BUILD_PARALLEL:=1
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 congfiguration.
+
+ option extended_stats '0'
+ Boolean. extended statistics are printed from unbound-control.
+ Keeping track of more statistics takes time.
+
option hide_binddata '1'
Boolean. If enabled version.server, version.bind, id.server, and
hostname.bind queries are refused.
Typical to configure maybe 0~300, but 1800 is the maximum accepted.
option unbound_control '0'
- Boolean. Enables unbound-control application access ports. Enabling
- this without the unbound-control package installed is robust.
+ Level. Enables unbound-control application access ports.
+ 0 - No unbound-control Access, or add your own in 'unbound_ext.conf'
+ 1 - Unencrypted Local Host Access
+ 2 - SSL Local Host Access; auto unbound-control-setup if available
+ 3 - SSL Network Access; auto unbound-control-setup if available
+ 4 - SSL Network Access; static key/pem files must already exist
option validator '0'
Boolean. Enable DNSSEC. Unbound names this the "validator" module.
if ( bconf == 1 ) {
x = ( "local-data: \"" fqdn ". 120 IN A " adr "\"" ) ;
y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
- print ( x "\n" y ) > hostfile ;
+ print ( x "\n" y "\n" ) > hostfile ;
}
else {
# GA or ULA routed addresses only (not LL or MC)
sub( /\/.*/, "", adr ) ;
adr = ( adr slaac ) ;
-
-
- if ( split( adr, tmp0, ":" ) >= 8 ) {
- sub( "::", ":", adr ) ;
+
+
+ if ( split( adr, tmp0, ":" ) >= 8 ) {
+ sub( "::", ":", adr ) ;
}
if ( bconf == 1 ) {
x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
- print ( x "\n" y ) > hostfile ;
+ print ( x "\n" y "\n" ) > hostfile ;
}
else {
if ( bconf == 1 ) {
x = ( "local-data: \"" fqdn ". 120 IN AAAA " adr "\"" ) ;
y = ( "local-data-ptr: \"" adr " 120 " fqdn "\"" ) ;
- print ( x "\n" y ) > hostfile ;
+ print ( x "\n" y "\n" ) > hostfile ;
}
else {
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 "\"" ) ;
- print ( x "\n" y ) > hostfile ;
+ print ( x "\n" y "\n" ) > hostfile ;
}
else {
#
##############################################################################
-UNBOUND_B_CONTROL=0
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_QUERY_MIN=0
UNBOUND_B_QRY_MINST=0
+UNBOUND_D_CONTROL=0
UNBOUND_D_DOMAIN_TYPE=static
UNBOUND_D_DHCP_LINK=none
UNBOUND_D_EXTRA_DNS=0
UNBOUND_HINTFILE=$UNBOUND_VARDIR/root.hints
UNBOUND_TIMEFILE=$UNBOUND_VARDIR/hotplug.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
+
##############################################################################
UNBOUND_ANCHOR=/usr/sbin/unbound-anchor
# Ensure access and prepare to jail
chown -R unbound:unbound $UNBOUND_VARDIR
- chmod 775 $UNBOUND_VARDIR
- chmod 664 $UNBOUND_VARDIR/*
+ chmod 755 $UNBOUND_VARDIR
+ chmod 644 $UNBOUND_VARDIR/*
+
+
+ if [ -f $UNBOUND_CTLKEY_FILE -o -f $UNBOUND_CTLPEM_FILE \
+ -o -f $UNBOUND_SRVKEY_FILE -o -f $UNBOUND_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
+
+ 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
+
+ chown -R unbound:unbound $UNBOUND_CTLKEY_FILE $UNBOUND_CTLPEM_FILE \
+ $UNBOUND_SRVKEY_FILE $UNBOUND_SRVPEM_FILE
+
+ chmod 640 $UNBOUND_CTLKEY_FILE $UNBOUND_CTLPEM_FILE \
+ $UNBOUND_SRVKEY_FILE $UNBOUND_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
+ ;;
+ esac
+ fi
}
##############################################################################
unbound_control() {
- if [ "$UNBOUND_B_CONTROL" -gt 0 ] ; then
+ 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
+ # 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
+ fi
+ fi
+
+
+ case "$UNBOUND_D_CONTROL" in
+ 1)
{
- # Enable remote control tool, but only at local host for security
- # You can hand write fancier encrypted access with /etc/..._ext.conf
+ # Local Host Only Unencrypted Remote Control
echo "remote-control:"
echo " control-enable: yes"
echo " control-use-cert: no"
echo " control-interface: ::1"
echo
} >> $UNBOUND_CONFFILE
- fi
+ ;;
+
+ 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
+ ;;
+
+ [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
+ ;;
+ esac
{
local cfg="$1"
local rt_mem rt_conn modulestring
+ # Make fresh conf file
+ echo > $UNBOUND_CONFFILE
+
{
# Make fresh conf file
echo "# $UNBOUND_CONFFILE generated by UCI $( date )"
echo
- } > $UNBOUND_CONFFILE
-
-
- {
# No threading
echo "server:"
echo " username: unbound"
echo " infra-cache-slabs: 1"
echo " key-cache-slabs: 1"
echo
- } >> $UNBOUND_CONFFILE
-
-
- {
+ # 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 " verbosity: 1"
echo " statistics-interval: 0"
echo " statistics-cumulative: no"
- echo " extended-statistics: no"
- echo
} >> $UNBOUND_CONFFILE
- {
- # Interfaces (access contol "option local_service")
- echo " interface: 0.0.0.0"
- echo " interface: ::0"
- echo " outgoing-interface: 0.0.0.0"
- echo " outgoing-interface: ::0"
- echo
- } >> $UNBOUND_CONFFILE
+ if [ "$UNBOUND_B_EXT_STATS" -gt 0 ] ; then
+ {
+ # Log More
+ echo " extended-statistics: yes"
+ echo
+ } >> $UNBOUND_CONFFILE
+
+ else
+ {
+ # Log Less
+ echo " extended-statistics: no"
+ echo
+ } >> $UNBOUND_CONFFILE
+ fi
case "$UNBOUND_D_PROTOCOL" in
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_QRY_MINST "$cfg" query_min_strict 0
config_get_bool UNBOUND_B_PRIV_BLCK "$cfg" rebind_protection 1
config_get_bool UNBOUND_B_LOCL_BLCK "$cfg" rebind_localhost 0
- config_get_bool UNBOUND_B_CONTROL "$cfg" unbound_control 0
config_get_bool UNBOUND_B_DNSSEC "$cfg" validator 0
config_get_bool UNBOUND_B_NTP_BOOT "$cfg" validator_ntp 1
config_get UNBOUND_N_RX_PORT "$cfg" listen_port 53
config_get UNBOUND_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
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'
##############################################################################
-# UNBOUND UCI USER ADDED CLAUSES
+# Extended user clauses added to the end of the UCI generated 'unbound.conf'
#
-# Put your own forward:, view:, stub:, and control: clauses here. This file is
-# appended to the end of UCI auto generated 'unbound.conf'. This is done with
-# include: statement. Notice, it is outside of the server: clause.
+# Put your own forward:, view:, stub:, or remote-control: clauses here. This
+# file is appended to the end of 'unbound.conf' with an include: statement.
+# Notice that it is not part of the server: clause. Use 'unbound_srv.conf' to
+# place custom option statements in the server: clause.
##############################################################################
##############################################################################
-# UNBOUND UCI USER ADDED SERVER OPTIONS
+# User custom options added in the server: clause part of UCI 'unbound.conf'
#
-# Put your own choice options here when not covered by UCI. These are all part
-# of the server: clause only. Most likely are hardening options or local-zone:
-# This is in an include: statement towards the end of the server: cluase.
+# Add your own option statements here when they are not covered by UCI. This
+# file is placed _inside_ the server: clause with an include: statement. Do
+# not start other clauses here, because that would brake the server: clause.
+# Use 'unbound_ext.conf' to start new clauses at the end of 'unbound.conf'.
##############################################################################
-#
-# Example configuration file.
-#
--# See unbound.conf(5) man page, version 1.6.5.
+-# See unbound.conf(5) man page, version 1.6.6.
-#
-# this is a comment.
+##############################################################################
PKG_NAME:=wireguard
-PKG_VERSION:=0.0.20170907
+PKG_VERSION:=0.0.20170918
PKG_RELEASE:=1
PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=a1ee12d60662607e4c5a19f84b5115e56f083e2600053882e161537f12d963fd
+PKG_HASH:=e083f18596574fb7050167090bfb4db4df09a1a99f3c1adc77f820c166368881
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
SECTION:=net
CATEGORY:=Network
SUBMENU:=VPN
- URL:=https://www.wireguard.io
+ URL:=https://www.wireguard.com
MAINTAINER:=Baptiste Jonglez <openwrt@bitsofnetworks.org>, \
- Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> \
+ Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>, \
Dan Luedtke <mail@danrl.com>, \
Jason A. Donenfeld <Jason@zx2c4.com>
endef
more useful than IPSec, while avoiding the massive headache. It intends to
be considerably more performant than OpenVPN. WireGuard is designed as a
general purpose VPN for running on embedded interfaces and super computers
- alike, fit for many different circumstances.
- It runs over UDP.
+ alike, fit for many different circumstances. It uses UDP.
endef
define Package/wireguard
PKG_SOURCE_URL:=https://github.com/linux-can/can-utils
PKG_SOURCE_DATE:=2017-02-16
PKG_SOURCE_VERSION:=cb33a55720716cbe01e6025a2bda74a1b7e492d3
-PKG_MIRROR_HASH:=cb6a615bc7d62923d5bc0130891e824e9964de8a31920004b74872a07d8743ef
+PKG_MIRROR_HASH:=d9c01eeff3d81a28161ca5c3937ec005a1f49ca3eb97bee0164d53cc66365786
PKG_MAINTAINER:=Anton Glukhov <anton.a.glukhov@gmail.com>
PKG_LICENSE:=GPL-2.0+
PKG_NAME:=collectd
PKG_VERSION:=5.7.2
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
--- /dev/null
+From af01dd6fa3eb458e2fbb272703b0cae37ea54a9b Mon Sep 17 00:00:00 2001
+From: Marcin Jurkowski <marcin1j@gmail.com>
+Date: Tue, 11 Jul 2017 15:00:25 +0200
+Subject: [PATCH] uptime plugin: don't cache boot time and simplify Linux code
+
+Caching boottime on startup yields incorrect uptime values if system
+date changes after the daemon is started.
+This is almost certain to happen on embedded systems without RTC, where
+clock is set from NTP server at some point after boot process.
+
+On Linux, we can retrieve uptime directly by either reading /proc/uptime
+(it's sufficient to read a few bytes) or calling sysinfo() function.
+Use the latter since it's the most efficient way in speed, memory
+requirements and code simplicity terms.
+---
+ src/uptime.c | 71 ++++++++++++++++--------------------------------------------
+ 1 file changed, 19 insertions(+), 52 deletions(-)
+
+--- a/src/uptime.c
++++ b/src/uptime.c
+@@ -25,8 +25,7 @@
+ #include "plugin.h"
+
+ #if KERNEL_LINUX
+-#define STAT_FILE "/proc/stat"
+-/* Using /proc filesystem to retrieve the boot time, Linux only. */
++#include <sys/sysinfo.h>
+ /* #endif KERNEL_LINUX */
+
+ #elif HAVE_LIBKSTAT
+@@ -53,8 +52,6 @@
+ /*
+ * Global variables
+ */
+-/* boottime always used, no OS distinction */
+-static time_t boottime;
+
+ #if HAVE_LIBKSTAT
+ extern kstat_ctl_t *kc;
+@@ -72,8 +69,6 @@ static void uptime_submit(gauge_t value)
+ plugin_dispatch_values(&vl);
+ }
+
+-static int uptime_init(void) /* {{{ */
+-{
+ /*
+ * On most unix systems the uptime is calculated by looking at the boot
+ * time (stored in unix time, since epoch) and the current one. We are
+@@ -84,48 +79,21 @@ static int uptime_init(void) /* {{{ */
+ * the boot time, the plugin is unregistered and there is no chance to
+ * try again later. Nevertheless, this is very unlikely to happen.
+ */
+-
++static time_t uptime_get_sys(void) { /* {{{ */
++ time_t result;
+ #if KERNEL_LINUX
+- unsigned long starttime;
+- char buffer[1024];
+- int ret;
+- FILE *fh;
+-
+- ret = 0;
+-
+- fh = fopen(STAT_FILE, "r");
++ struct sysinfo info;
++ int status;
+
+- if (fh == NULL) {
++ status = sysinfo(&info);
++ if (status != 0) {
+ char errbuf[1024];
+- ERROR("uptime plugin: Cannot open " STAT_FILE ": %s",
++ ERROR("uptime plugin: Error calling sysinfo: %s",
+ sstrerror(errno, errbuf, sizeof(errbuf)));
+ return (-1);
+ }
+
+- while (fgets(buffer, 1024, fh) != NULL) {
+- /* look for the btime string and read the value */
+- ret = sscanf(buffer, "btime %lu", &starttime);
+- /* avoid further loops if btime has been found and read
+- * correctly (hopefully) */
+- if (ret == 1)
+- break;
+- }
+-
+- fclose(fh);
+-
+- /* loop done, check if no value has been found/read */
+- if (ret != 1) {
+- ERROR("uptime plugin: No value read from " STAT_FILE "");
+- return (-1);
+- }
+-
+- boottime = (time_t)starttime;
+-
+- if (boottime == 0) {
+- ERROR("uptime plugin: btime read from " STAT_FILE ", "
+- "but `boottime' is zero!");
+- return (-1);
+- }
++ result = (time_t)info.uptime;
+ /* #endif KERNEL_LINUX */
+
+ #elif HAVE_LIBKSTAT
+@@ -159,13 +127,13 @@ static int uptime_init(void) /* {{{ */
+ return (-1);
+ }
+
+- boottime = (time_t)knp->value.ui32;
+-
+- if (boottime == 0) {
++ if (knp->value.ui32 == 0) {
+ ERROR("uptime plugin: kstat_data_lookup returned success, "
+ "but `boottime' is zero!");
+ return (-1);
+ }
++
++ result = time(NULL) - (time_t)knp->value.ui32;
+ /* #endif HAVE_LIBKSTAT */
+
+ #elif HAVE_SYS_SYSCTL_H
+@@ -186,13 +154,13 @@ static int uptime_init(void) /* {{{ */
+ return (-1);
+ }
+
+- boottime = boottv.tv_sec;
+-
+- if (boottime == 0) {
++ if (boottv.tv_sec == 0) {
+ ERROR("uptime plugin: sysctl(3) returned success, "
+ "but `boottime' is zero!");
+ return (-1);
+ }
++
++ result = time(NULL) - boottv.tv_sec;
+ /* #endif HAVE_SYS_SYSCTL_H */
+
+ #elif HAVE_PERFSTAT
+@@ -212,18 +180,18 @@ static int uptime_init(void) /* {{{ */
+ if (hertz <= 0)
+ hertz = HZ;
+
+- boottime = time(NULL) - cputotal.lbolt / hertz;
++ result = cputotal.lbolt / hertz;
+ #endif /* HAVE_PERFSTAT */
+
+- return (0);
+-} /* }}} int uptime_init */
++ return result;
++} /* }}} int uptime_get_sys */
+
+ static int uptime_read(void) {
+ gauge_t uptime;
+ time_t elapsed;
+
+ /* calculate the amount of time elapsed since boot, AKA uptime */
+- elapsed = time(NULL) - boottime;
++ elapsed = uptime_get_sys();
+
+ uptime = (gauge_t)elapsed;
+
+@@ -233,6 +201,5 @@ static int uptime_read(void) {
+ }
+
+ void module_register(void) {
+- plugin_register_init("uptime", uptime_init);
+ plugin_register_read("uptime", uptime_read);
+ } /* void module_register */
PKG_SOURCE_URL:=https://github.com/cryptodev-linux/cryptodev-linux
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=a705360197260d28535746ae98c461ba2cfb7a9e
-PKG_MIRROR_HASH:=553069ecf1f3d5d5652404aaf438610f555c94db4369c7c1db85210c4e3cdfee
+PKG_MIRROR_HASH:=334a8f4df18e36e97459b4c6669c9873c13c4f5dae25243cf41ff70c2ce661d8
PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com>
PKG_VERSION_MAJOR:=3
PKG_VERSION_PATCH:=8153
PKG_VERSION:=$(PKG_VERSION_MAJOR).$(PKG_VERSION_PATCH)
-PKG_RELEASE:=1
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
-DUSE_STATIC_OPENZWAVE=no \
-DUSE_PYTHON=no
+TARGET_CXXFLAGS+=-DWITH_GPIO
+
define Build/Prepare
$(call Build/Prepare/Default)
# Fix APPVERSION to suppress update popup
buienradar_rain_example.pl \
_domoticz_main* \
download_update.sh \
- dzVents/{.gitignore,documentation,examples} \
+ dzVents/{.gitignore,documentation,examples,generated_scripts} \
dzVents/runtime/{integration-tests,misc/smoothing.xlsx,tests} \
logrotate/ \
lua_parsers/example* \
[ -n "$loglevel" ] && procd_append_param command -loglevel "$loglevel"
[ -n "$syslog" ] && procd_append_param command -syslog "$syslog"
[ -n "$userdata" ] && {
- mkdir -p "$userdata"
- chmod 0770 "$userdata"
- chown domoticz:domoticz "$userdata"
+ mkdir -p "${userdata}/generated_scripts"
+ chmod -R 0770 "$userdata"
+ chown -R domoticz:domoticz "$userdata"
procd_append_param command -userdata "$userdata"
}
[ -n "$sslcert" -a "${sslwww:-0}" -gt 0 ] && {
+++ /dev/null
---- a/hardware/OpenZWave.cpp
-+++ b/hardware/OpenZWave.cpp
-@@ -948,7 +948,7 @@ bool COpenZWave::OpenSerialConnector()
-
- m_nodes.clear();
- m_bNeedSave = false;
-- std::string ConfigPath = szStartupFolder + "Config/";
-+ std::string ConfigPath = "/usr/share/domoticz/openzwave/";
- std::string UserPath = ConfigPath;
- if (szStartupFolder != szUserDataFolder)
- {
---- a/main/EventSystem.cpp
-+++ b/main/EventSystem.cpp
-@@ -33,7 +33,7 @@ extern "C" {
- #endif
- }
-
--extern std::string szUserDataFolder;
-+extern std::string szScriptsFolder;
- extern http::server::CWebServerHelper m_webservers;
-
- static std::string m_printprefix;
-@@ -149,7 +149,7 @@ void CEventSystem::StartEventSystem()
- GetCurrentScenesGroups();
- GetCurrentUserVariables();
- #ifdef ENABLE_PYTHON
-- Plugins::PythonEventsInitialize(szUserDataFolder);
-+ Plugins::PythonEventsInitialize(szScriptsFolder);
- #endif
-
- m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CEventSystem::Do_Work, this)));
-@@ -181,9 +181,9 @@ void CEventSystem::LoadEvents()
- {
- std::string dzv_Dir,s;
- #ifdef WIN32
-- dzv_Dir = szUserDataFolder + "scripts\\dzVents\\generated_scripts\\";
-+ dzv_Dir = szScriptsFolder + "dzVents\\generated_scripts\\";
- #else
-- dzv_Dir = szUserDataFolder + "scripts/dzVents/generated_scripts/";
-+ dzv_Dir = szScriptsFolder + "dzVents/generated_scripts/";
- #endif
- boost::unique_lock<boost::shared_mutex> eventsMutexLock(m_eventsMutex);
- _log.Log(LOG_STATUS, "EventSystem: reset all events...");
-@@ -274,18 +274,18 @@ void CEventSystem::LoadEvents()
- void CEventSystem::Do_Work()
- {
- #ifdef WIN32
-- m_lua_Dir = szUserDataFolder + "scripts\\lua\\";
-- m_dzv_Dir = szUserDataFolder + "scripts\\dzVents\\runtime\\";
-+ m_lua_Dir = szScriptsFolder + "lua\\";
-+ m_dzv_Dir = szScriptsFolder + "dzVents\\runtime\\";
- #else
-- m_lua_Dir = szUserDataFolder + "scripts/lua/";
-- m_dzv_Dir = szUserDataFolder + "scripts/dzVents/runtime/";
-+ m_lua_Dir = szScriptsFolder + "lua/";
-+ m_dzv_Dir = szScriptsFolder + "dzVents/runtime/";
- #endif
-
- #ifdef ENABLE_PYTHON
- #ifdef WIN32
-- m_python_Dir = szUserDataFolder + "scripts\\python\\";
-+ m_python_Dir = szScriptsFolder + "python\\";
- #else
-- m_python_Dir = szUserDataFolder + "scripts/python/";
-+ m_python_Dir = szScriptsFolder + "python/";
- #endif
- #endif
- m_stoprequested = false;
-@@ -1426,9 +1426,9 @@ void CEventSystem::EvaluateEvent(const s
- {
- std::string dzv_scripts;
- #ifdef WIN32
-- dzv_scripts = szUserDataFolder + "scripts\\dzVents\\scripts\\";
-+ dzv_scripts = szScriptsFolder + "dzVents\\scripts\\";
- #else
-- dzv_scripts = szUserDataFolder + "scripts/dzVents/scripts/";
-+ dzv_scripts = szScriptsFolder + "dzVents/scripts/";
- #endif
- DirectoryListing(FileEntries, dzv_scripts, false, true);
- for (itt = FileEntries.begin(); itt != FileEntries.end(); ++itt)
-@@ -2404,7 +2404,7 @@ bool CEventSystem::parseBlocklyActions(c
- }
- #if !defined WIN32
- if (sPath.find("/") != 0)
-- sPath = szUserDataFolder + "scripts/" + sPath;
-+ sPath = szScriptsFolder + sPath;
- #endif
-
- m_sql.AddTaskItem(_tTaskItem::ExecuteScript(0.2f, sPath, sParam));
-@@ -3508,11 +3508,11 @@ void CEventSystem::EvaluateLua(const std
- {
- std::stringstream lua_DirT;
-
-- lua_DirT << szUserDataFolder <<
-+ lua_DirT << szScriptsFolder <<
- #ifdef WIN32
-- "scripts\\dzVents\\";
-+ "dzVents\\";
- #else
-- "scripts/dzVents/";
-+ "dzVents/";
- #endif
-
- lua_pushstring(lua_state, "script_path");
-@@ -4695,9 +4695,9 @@ namespace http {
-
- std::stringstream template_file;
- #ifdef WIN32
-- template_file << szUserDataFolder << "scripts\\templates\\" << eventType << "." << interpreter;
-+ template_file << szScriptsFolder << "templates\\" << eventType << "." << interpreter;
- #else
-- template_file << szUserDataFolder << "scripts/templates/" << eventType << "." << interpreter;
-+ template_file << szScriptsFolder << "templates/" << eventType << "." << interpreter;
- #endif
- std::ifstream file;
- std::stringstream template_content;
---- a/main/LuaHandler.cpp
-+++ b/main/LuaHandler.cpp
-@@ -22,7 +22,7 @@ extern "C" {
- #include "mainworker.h"
- #include "../hardware/hardwaretypes.h"
-
--extern std::string szUserDataFolder;
-+extern std::string szScriptsFolder;
-
- int CLuaHandler::l_domoticz_updateDevice(lua_State* lua_state)
- {
-@@ -155,9 +155,9 @@ bool CLuaHandler::executeLuaScript(const
- {
- std::stringstream lua_DirT;
- #ifdef WIN32
-- lua_DirT << szUserDataFolder << "scripts\\lua_parsers\\";
-+ lua_DirT << szScriptsFolder << "lua_parsers\\";
- #else
-- lua_DirT << szUserDataFolder << "scripts/lua_parsers/";
-+ lua_DirT << szScriptsFolder << "lua_parsers/";
- #endif
- std::string lua_Dir = lua_DirT.str();
-
---- a/main/SQLHelper.cpp
-+++ b/main/SQLHelper.cpp
-@@ -633,6 +633,7 @@ const char *sqlCreateMobileDevices =
- "[LastUpdate] DATETIME DEFAULT(datetime('now', 'localtime'))"
- ");";
-
-+extern std::string szScriptsFolder;
- extern std::string szUserDataFolder;
-
- CSQLHelper::CSQLHelper(void)
-@@ -3683,9 +3684,9 @@ uint64_t CSQLHelper::UpdateValueInt(cons
- //Execute possible script
- std::string scriptname;
- #ifdef WIN32
-- scriptname = szUserDataFolder + "scripts\\domoticz_main.bat";
-+ scriptname = szScriptsFolder + "domoticz_main.bat";
- #else
-- scriptname = szUserDataFolder + "scripts/domoticz_main";
-+ scriptname = szScriptsFolder + "domoticz_main";
- #endif
- if (file_exist(scriptname.c_str()))
- {
-@@ -6641,7 +6642,7 @@ bool CSQLHelper::HandleOnOffAction(const
- std::string scriptname = OnAction.substr(9);
- #if !defined WIN32
- if (scriptname.find("/") != 0)
-- scriptname = szUserDataFolder + "scripts/" + scriptname;
-+ scriptname = szScriptsFolder + scriptname;
- #endif
- std::string scriptparams="";
- //Add parameters
-@@ -6675,7 +6676,7 @@ bool CSQLHelper::HandleOnOffAction(const
- std::string scriptname = OffAction.substr(9);
- #if !defined WIN32
- if (scriptname.find("/") != 0)
-- scriptname = szUserDataFolder + "scripts/" + scriptname;
-+ scriptname = szScriptsFolder + scriptname;
- #endif
- std::string scriptparams = "";
- int pindex = scriptname.find(' ');
---- a/main/WebServer.cpp
-+++ b/main/WebServer.cpp
-@@ -59,6 +59,7 @@
-
- #define round(a) ( int ) ( a + .5 )
-
-+extern std::string szScriptsFolder;
- extern std::string szUserDataFolder;
- extern std::string szWWWFolder;
-
-@@ -2987,9 +2988,9 @@ namespace http {
- if (scriptname.find("..") != std::string::npos)
- return;
- #ifdef WIN32
-- scriptname = szUserDataFolder + "scripts\\" + scriptname;
-+ scriptname = szScriptsFolder + scriptname;
- #else
-- scriptname = szUserDataFolder + "scripts/" + scriptname;
-+ scriptname = szScriptsFolder + scriptname;
- #endif
- if (!file_exist(scriptname.c_str()))
- return;
---- a/main/domoticz.cpp
-+++ b/main/domoticz.cpp
-@@ -136,6 +136,7 @@ static const _facilities facilities[] =
- };
- std::string logfacname = "user";
- #endif
-+std::string szScriptsFolder;
- std::string szStartupFolder;
- std::string szUserDataFolder;
- std::string szWWWFolder;
-@@ -696,6 +697,19 @@ int main(int argc, char**argv)
- szUserDataFolder = szroot;
- }
-
-+ szScriptsFolder=szStartupFolder;
-+ if (cmdLine.HasSwitch("-scripts"))
-+ {
-+ if (cmdLine.GetArgumentCount("-scripts") != 1)
-+ {
-+ _log.Log(LOG_ERROR, "Please specify a path for scripts directory");
-+ return 1;
-+ }
-+ std::string szroot = cmdLine.GetSafeArgument("-scripts", 0, "");
-+ if (szroot.size() != 0)
-+ szScriptsFolder = szroot;
-+ }
-+
- if (cmdLine.HasSwitch("-startupdelay"))
- {
- if (cmdLine.GetArgumentCount("-startupdelay") != 1)
---- a/main/mainworker.cpp
-+++ b/main/mainworker.cpp
-@@ -159,6 +159,7 @@
-
- #define round(a) ( int ) ( a + .5 )
-
-+extern std::string szScriptsFolder;
- extern std::string szStartupFolder;
- extern std::string szUserDataFolder;
- extern std::string szWWWFolder;
-@@ -1473,8 +1474,8 @@ void MainWorker::Do_Work()
- m_sql.GetPreferencesVar("ReleaseChannel", nValue);
- bool bIsBetaChannel = (nValue != 0);
-
-- std::string scriptname = szUserDataFolder + "scripts/download_update.sh";
-- std::string strparm = szUserDataFolder;
-+ std::string scriptname = szScriptsFolder + "download_update.sh";
-+ std::string strparm = szScriptsFolder;
- if (bIsBetaChannel)
- strparm += " /beta";
-
---- a/notifications/NotificationHTTP.cpp
-+++ b/notifications/NotificationHTTP.cpp
-@@ -6,7 +6,7 @@
- #include "../main/SQLHelper.h"
- #include "../main/Logger.h"
-
--extern std::string szUserDataFolder;
-+extern std::string szScriptsFolder;
-
- CNotificationHTTP::CNotificationHTTP() : CNotificationBase(std::string("http"), OPTIONS_NONE)
- {
-@@ -105,7 +105,7 @@ bool CNotificationHTTP::SendMessageImple
- std::string scriptparams = "";
- #if !defined WIN32
- if (scriptname.find("/") != 0)
-- scriptname = szUserDataFolder + "scripts/" + scriptname;
-+ scriptname = szScriptsFolder + scriptname;
- #endif
- //Add parameters
- uPos = scriptname.find(" ");
---- a/push/GooglePubSubPush.cpp
-+++ b/push/GooglePubSubPush.cpp
-@@ -22,7 +22,7 @@ extern "C" {
- using namespace boost::python;
- #endif
-
--extern std::string szUserDataFolder;
-+extern std::string szScriptsFolder;
-
- // this should be filled in by the preprocessor
- extern const char * Python_exe;
-@@ -231,11 +231,11 @@ void CGooglePubSubPush::DoGooglePubSubPu
-
- #ifdef ENABLE_PYTHON_DECAP
- #ifdef WIN32
-- python_DirT << szUserDataFolder << "scripts\\python\\";
-- std::string filename = szUserDataFolder + "scripts\\python\\" + "googlepubsub.py";
-+ python_DirT << szScriptsFolder << "python\\";
-+ std::string filename = szScriptsFolder + "python\\" + "googlepubsub.py";
- #else
-- python_DirT << szUserDataFolder << "scripts/python/";
-- std::string filename = szUserDataFolder + "scripts/python/" + "googlepubsub.py";
-+ python_DirT << szScriptsFolder << "python/";
-+ std::string filename = szScriptsFolder + "python/" + "googlepubsub.py";
- #endif
-
- wchar_t * argv[1];
---- a/hardware/EvohomeScript.cpp
-+++ b/hardware/EvohomeScript.cpp
-@@ -30,7 +30,7 @@
-
- #include <string>
-
--extern std::string szUserDataFolder;
-+extern std::string szScriptsFolder;
-
-
- CEvohomeScript::CEvohomeScript(const int ID)
-@@ -143,7 +143,7 @@ void CEvohomeScript::RunScript(const cha
- std::string scriptname = OnAction.substr(9);
- #if !defined WIN32
- if (scriptname.find("/") != 0)
-- scriptname = szUserDataFolder + "scripts/" + scriptname;
-+ scriptname = szScriptsFolder + "scripts/" + scriptname;
- #endif
- std::string scriptparams="";
- //Add parameters
---- a/main/EventsPythonModule.cpp
-+++ b/main/EventsPythonModule.cpp
-@@ -108,7 +108,7 @@
-
- int PythonEventsInitalized = 0;
-
-- bool PythonEventsInitialize(std::string szUserDataFolder) {
-+ bool PythonEventsInitialize(std::string szScriptsFolder) {
-
- if (!Plugins::Py_LoadLibrary())
- {
-@@ -131,9 +131,9 @@
-
- std::string ssPath;
- #ifdef WIN32
-- ssPath = szUserDataFolder + "scripts\\python\\;";
-+ ssPath = szScriptsFolder + "python\\;";
- #else
-- ssPath = szUserDataFolder + "scripts/python/:";
-+ ssPath = szScriptsFolder + "python/:";
- #endif
-
- std::wstring sPath = std::wstring(ssPath.begin(), ssPath.end());
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -521,20 +521,23 @@ else()
+ MESSAGE(FATAL_ERROR "cURL not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install curl libcurl4-openssl-dev')")
+ ENDIF(CURL_FOUND)
+
+-find_path(LIBUSB_INCLUDE_DIR usb.h
+- HINTS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
+-find_library(LIBUSB_LIBRARY NAMES usb
+- HINTS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
+-set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})
++option(WITH_LIBUSB "Enable libusb support" NO)
++ if(WITH_LIBUSB)
++ find_path(LIBUSB_INCLUDE_DIR usb.h
++ HINTS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
++ find_library(LIBUSB_LIBRARY NAMES usb
++ HINTS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
++ set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})
+
+-find_package_handle_standard_args(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
+-IF(LIBUSB_FOUND)
+- MESSAGE(STATUS "LIBUSB found at: ${LIBUSB_LIBRARIES}")
+- add_definitions(-DWITH_LIBUSB)
+- target_link_libraries(domoticz ${LIBUSB_LIBRARIES})
+-else()
+- MESSAGE(STATUS "==== LibUSB not found, support for TE923/Voltcraft disabled!")
+-ENDIF(LIBUSB_FOUND)
++ find_package_handle_standard_args(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
++ IF(LIBUSB_FOUND)
++ MESSAGE(STATUS "LIBUSB found at: ${LIBUSB_LIBRARIES}")
++ add_definitions(-DWITH_LIBUSB)
++ target_link_libraries(domoticz ${LIBUSB_LIBRARIES})
++ else()
++ MESSAGE(STATUS "==== LibUSB not found, support for TE923/Voltcraft disabled!")
++ ENDIF(LIBUSB_FOUND)
++endif(WITH_LIBUSB)
+
+ #
+ # Find MD5/RMD160/SHA library
+++ /dev/null
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -521,20 +521,23 @@ else()
- MESSAGE(FATAL_ERROR "cURL not found on your system, see install.txt how to get them installed. (for example 'sudo apt-get install curl libcurl4-openssl-dev')")
- ENDIF(CURL_FOUND)
-
--find_path(LIBUSB_INCLUDE_DIR usb.h
-- HINTS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
--find_library(LIBUSB_LIBRARY NAMES usb
-- HINTS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
--set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})
-+option(WITH_LIBUSB "Enable libusb support" NO)
-+ if(WITH_LIBUSB)
-+ find_path(LIBUSB_INCLUDE_DIR usb.h
-+ HINTS ${PC_LIBUSB_INCLUDEDIR} ${PC_LIBUSB_INCLUDE_DIRS})
-+ find_library(LIBUSB_LIBRARY NAMES usb
-+ HINTS ${PC_LIBUSB_LIBDIR} ${PC_LIBUSB_LIBRARY_DIRS})
-+ set(LIBUSB_LIBRARIES ${LIBUSB_LIBRARY})
-
--find_package_handle_standard_args(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
--IF(LIBUSB_FOUND)
-- MESSAGE(STATUS "LIBUSB found at: ${LIBUSB_LIBRARIES}")
-- add_definitions(-DWITH_LIBUSB)
-- target_link_libraries(domoticz ${LIBUSB_LIBRARIES})
--else()
-- MESSAGE(STATUS "==== LibUSB not found, support for TE923/Voltcraft disabled!")
--ENDIF(LIBUSB_FOUND)
-+ find_package_handle_standard_args(LIBUSB DEFAULT_MSG LIBUSB_LIBRARIES LIBUSB_INCLUDE_DIR)
-+ IF(LIBUSB_FOUND)
-+ MESSAGE(STATUS "LIBUSB found at: ${LIBUSB_LIBRARIES}")
-+ add_definitions(-DWITH_LIBUSB)
-+ target_link_libraries(domoticz ${LIBUSB_LIBRARIES})
-+ else()
-+ MESSAGE(STATUS "==== LibUSB not found, support for TE923/Voltcraft disabled!")
-+ ENDIF(LIBUSB_FOUND)
-+endif(WITH_LIBUSB)
-
- #
- # Find MD5/RMD160/SHA library
--- /dev/null
+diff --git a/hardware/EvohomeScript.cpp b/hardware/EvohomeScript.cpp
+index 5258fc55..0a44e97c 100644
+--- a/hardware/EvohomeScript.cpp
++++ b/hardware/EvohomeScript.cpp
+@@ -30,7 +30,7 @@
+
+ #include <string>
+
+-extern std::string szUserDataFolder;
++extern std::string szScriptsFolder;
+
+
+ CEvohomeScript::CEvohomeScript(const int ID)
+@@ -143,7 +143,7 @@ void CEvohomeScript::RunScript(const char *pdata, const unsigned char length)
+ std::string scriptname = OnAction.substr(9);
+ #if !defined WIN32
+ if (scriptname.find("/") != 0)
+- scriptname = szUserDataFolder + "scripts/" + scriptname;
++ scriptname = szScriptsFolder + "scripts/" + scriptname;
+ #endif
+ std::string scriptparams="";
+ //Add parameters
+diff --git a/hardware/OpenZWave.cpp b/hardware/OpenZWave.cpp
+index 1f5c341c..24db61c9 100644
+--- a/hardware/OpenZWave.cpp
++++ b/hardware/OpenZWave.cpp
+@@ -948,7 +948,7 @@ bool COpenZWave::OpenSerialConnector()
+
+ m_nodes.clear();
+ m_bNeedSave = false;
+- std::string ConfigPath = szStartupFolder + "Config/";
++ std::string ConfigPath = "/usr/share/domoticz/openzwave/";
+ std::string UserPath = ConfigPath;
+ if (szStartupFolder != szUserDataFolder)
+ {
+diff --git a/main/EventSystem.cpp b/main/EventSystem.cpp
+index 4eff02fd..f2b17b97 100644
+--- a/main/EventSystem.cpp
++++ b/main/EventSystem.cpp
+@@ -33,9 +33,11 @@ extern "C" {
+ #endif
+ }
+
++extern std::string szScriptsFolder;
+ extern std::string szUserDataFolder;
+ extern http::server::CWebServerHelper m_webservers;
+
++static std::string dzv_Dir;
+ static std::string m_printprefix;
+
+ #ifdef ENABLE_PYTHON
+@@ -115,7 +117,6 @@ static const _tJsonMap JsonMap[] =
+ { NULL, NULL, tString }
+ };
+
+-
+ CEventSystem::CEventSystem(void)
+ {
+ m_stoprequested = false;
+@@ -149,7 +150,7 @@ void CEventSystem::StartEventSystem()
+ GetCurrentScenesGroups();
+ GetCurrentUserVariables();
+ #ifdef ENABLE_PYTHON
+- Plugins::PythonEventsInitialize(szUserDataFolder);
++ Plugins::PythonEventsInitialize(szScriptsFolder);
+ #endif
+
+ m_thread = boost::shared_ptr<boost::thread>(new boost::thread(boost::bind(&CEventSystem::Do_Work, this)));
+@@ -179,11 +180,11 @@ void CEventSystem::SetEnabled(const bool bEnabled)
+
+ void CEventSystem::LoadEvents()
+ {
+- std::string dzv_Dir,s;
++ std::string s;
+ #ifdef WIN32
+- dzv_Dir = szUserDataFolder + "scripts\\dzVents\\generated_scripts\\";
++ dzv_Dir = szUserDataFolder + "generated_scripts\\";
+ #else
+- dzv_Dir = szUserDataFolder + "scripts/dzVents/generated_scripts/";
++ dzv_Dir = szUserDataFolder + "generated_scripts/";
+ #endif
+ boost::unique_lock<boost::shared_mutex> eventsMutexLock(m_eventsMutex);
+ _log.Log(LOG_STATUS, "EventSystem: reset all events...");
+@@ -274,18 +275,18 @@ void CEventSystem::LoadEvents()
+ void CEventSystem::Do_Work()
+ {
+ #ifdef WIN32
+- m_lua_Dir = szUserDataFolder + "scripts\\lua\\";
+- m_dzv_Dir = szUserDataFolder + "scripts\\dzVents\\runtime\\";
++ m_lua_Dir = szScriptsFolder + "lua\\";
++ m_dzv_Dir = szScriptsFolder + "dzVents\\runtime\\";
+ #else
+- m_lua_Dir = szUserDataFolder + "scripts/lua/";
+- m_dzv_Dir = szUserDataFolder + "scripts/dzVents/runtime/";
++ m_lua_Dir = szScriptsFolder + "lua/";
++ m_dzv_Dir = szScriptsFolder + "dzVents/runtime/";
+ #endif
+
+ #ifdef ENABLE_PYTHON
+ #ifdef WIN32
+- m_python_Dir = szUserDataFolder + "scripts\\python\\";
++ m_python_Dir = szScriptsFolder + "python\\";
+ #else
+- m_python_Dir = szUserDataFolder + "scripts/python/";
++ m_python_Dir = szScriptsFolder + "python/";
+ #endif
+ #endif
+ m_stoprequested = false;
+@@ -1426,9 +1427,9 @@ void CEventSystem::EvaluateEvent(const std::string &reason, const uint64_t Devic
+ {
+ std::string dzv_scripts;
+ #ifdef WIN32
+- dzv_scripts = szUserDataFolder + "scripts\\dzVents\\scripts\\";
++ dzv_scripts = szScriptsFolder + "dzVents\\scripts\\";
+ #else
+- dzv_scripts = szUserDataFolder + "scripts/dzVents/scripts/";
++ dzv_scripts = szScriptsFolder + "dzVents/scripts/";
+ #endif
+ DirectoryListing(FileEntries, dzv_scripts, false, true);
+ for (itt = FileEntries.begin(); itt != FileEntries.end(); ++itt)
+@@ -2404,7 +2405,7 @@ bool CEventSystem::parseBlocklyActions(const std::string &Actions, const std::st
+ }
+ #if !defined WIN32
+ if (sPath.find("/") != 0)
+- sPath = szUserDataFolder + "scripts/" + sPath;
++ sPath = szScriptsFolder + sPath;
+ #endif
+
+ m_sql.AddTaskItem(_tTaskItem::ExecuteScript(0.2f, sPath, sParam));
+@@ -3508,13 +3509,16 @@ void CEventSystem::EvaluateLua(const std::string &reason, const std::string &fil
+ {
+ std::stringstream lua_DirT;
+
+- lua_DirT << szUserDataFolder <<
++ lua_DirT << szScriptsFolder <<
+ #ifdef WIN32
+- "scripts\\dzVents\\";
++ "dzVents\\";
+ #else
+- "scripts/dzVents/";
++ "dzVents/";
+ #endif
+
++ lua_pushstring(lua_state, "generated_script_path");
++ lua_pushstring(lua_state, dzv_Dir.c_str());
++ lua_rawset(lua_state, -3);
+ lua_pushstring(lua_state, "script_path");
+ lua_pushstring(lua_state, lua_DirT.str().c_str());
+ lua_rawset(lua_state, -3);
+@@ -4695,9 +4699,9 @@ namespace http {
+
+ std::stringstream template_file;
+ #ifdef WIN32
+- template_file << szUserDataFolder << "scripts\\templates\\" << eventType << "." << interpreter;
++ template_file << szScriptsFolder << "templates\\" << eventType << "." << interpreter;
+ #else
+- template_file << szUserDataFolder << "scripts/templates/" << eventType << "." << interpreter;
++ template_file << szScriptsFolder << "templates/" << eventType << "." << interpreter;
+ #endif
+ std::ifstream file;
+ std::stringstream template_content;
+diff --git a/main/EventsPythonModule.cpp b/main/EventsPythonModule.cpp
+index f69e7219..2d97562e 100644
+--- a/main/EventsPythonModule.cpp
++++ b/main/EventsPythonModule.cpp
+@@ -108,7 +108,7 @@
+
+ int PythonEventsInitalized = 0;
+
+- bool PythonEventsInitialize(std::string szUserDataFolder) {
++ bool PythonEventsInitialize(std::string szScriptsFolder) {
+
+ if (!Plugins::Py_LoadLibrary())
+ {
+@@ -131,9 +131,9 @@
+
+ std::string ssPath;
+ #ifdef WIN32
+- ssPath = szUserDataFolder + "scripts\\python\\;";
++ ssPath = szScriptsFolder + "python\\;";
+ #else
+- ssPath = szUserDataFolder + "scripts/python/:";
++ ssPath = szScriptsFolder + "python/:";
+ #endif
+
+ std::wstring sPath = std::wstring(ssPath.begin(), ssPath.end());
+diff --git a/main/LuaHandler.cpp b/main/LuaHandler.cpp
+index 8fdcb278..c2ad98ff 100644
+--- a/main/LuaHandler.cpp
++++ b/main/LuaHandler.cpp
+@@ -22,7 +22,7 @@ extern "C" {
+ #include "mainworker.h"
+ #include "../hardware/hardwaretypes.h"
+
+-extern std::string szUserDataFolder;
++extern std::string szScriptsFolder;
+
+ int CLuaHandler::l_domoticz_updateDevice(lua_State* lua_state)
+ {
+@@ -155,9 +155,9 @@ bool CLuaHandler::executeLuaScript(const std::string &script, const std::string
+ {
+ std::stringstream lua_DirT;
+ #ifdef WIN32
+- lua_DirT << szUserDataFolder << "scripts\\lua_parsers\\";
++ lua_DirT << szScriptsFolder << "lua_parsers\\";
+ #else
+- lua_DirT << szUserDataFolder << "scripts/lua_parsers/";
++ lua_DirT << szScriptsFolder << "lua_parsers/";
+ #endif
+ std::string lua_Dir = lua_DirT.str();
+
+diff --git a/main/SQLHelper.cpp b/main/SQLHelper.cpp
+index 491aa5a2..d529243a 100644
+--- a/main/SQLHelper.cpp
++++ b/main/SQLHelper.cpp
+@@ -633,6 +633,7 @@ const char *sqlCreateMobileDevices =
+ "[LastUpdate] DATETIME DEFAULT(datetime('now', 'localtime'))"
+ ");";
+
++extern std::string szScriptsFolder;
+ extern std::string szUserDataFolder;
+
+ CSQLHelper::CSQLHelper(void)
+@@ -3683,9 +3684,9 @@ uint64_t CSQLHelper::UpdateValueInt(const int HardwareID, const char* ID, const
+ //Execute possible script
+ std::string scriptname;
+ #ifdef WIN32
+- scriptname = szUserDataFolder + "scripts\\domoticz_main.bat";
++ scriptname = szScriptsFolder + "domoticz_main.bat";
+ #else
+- scriptname = szUserDataFolder + "scripts/domoticz_main";
++ scriptname = szScriptsFolder + "domoticz_main";
+ #endif
+ if (file_exist(scriptname.c_str()))
+ {
+@@ -6641,7 +6642,7 @@ bool CSQLHelper::HandleOnOffAction(const bool bIsOn, const std::string &OnAction
+ std::string scriptname = OnAction.substr(9);
+ #if !defined WIN32
+ if (scriptname.find("/") != 0)
+- scriptname = szUserDataFolder + "scripts/" + scriptname;
++ scriptname = szScriptsFolder + scriptname;
+ #endif
+ std::string scriptparams="";
+ //Add parameters
+@@ -6675,7 +6676,7 @@ bool CSQLHelper::HandleOnOffAction(const bool bIsOn, const std::string &OnAction
+ std::string scriptname = OffAction.substr(9);
+ #if !defined WIN32
+ if (scriptname.find("/") != 0)
+- scriptname = szUserDataFolder + "scripts/" + scriptname;
++ scriptname = szScriptsFolder + scriptname;
+ #endif
+ std::string scriptparams = "";
+ int pindex = scriptname.find(' ');
+diff --git a/main/WebServer.cpp b/main/WebServer.cpp
+index f8471791..d2cf10b2 100644
+--- a/main/WebServer.cpp
++++ b/main/WebServer.cpp
+@@ -59,6 +59,7 @@
+
+ #define round(a) ( int ) ( a + .5 )
+
++extern std::string szScriptsFolder;
+ extern std::string szUserDataFolder;
+ extern std::string szWWWFolder;
+
+@@ -2987,9 +2988,9 @@ namespace http {
+ if (scriptname.find("..") != std::string::npos)
+ return;
+ #ifdef WIN32
+- scriptname = szUserDataFolder + "scripts\\" + scriptname;
++ scriptname = szScriptsFolder + scriptname;
+ #else
+- scriptname = szUserDataFolder + "scripts/" + scriptname;
++ scriptname = szScriptsFolder + scriptname;
+ #endif
+ if (!file_exist(scriptname.c_str()))
+ return;
+diff --git a/main/domoticz.cpp b/main/domoticz.cpp
+index 5ef96f68..52599b14 100644
+--- a/main/domoticz.cpp
++++ b/main/domoticz.cpp
+@@ -136,6 +136,7 @@ static const _facilities facilities[] =
+ };
+ std::string logfacname = "user";
+ #endif
++std::string szScriptsFolder;
+ std::string szStartupFolder;
+ std::string szUserDataFolder;
+ std::string szWWWFolder;
+@@ -696,6 +697,19 @@ int main(int argc, char**argv)
+ szUserDataFolder = szroot;
+ }
+
++ szScriptsFolder=szStartupFolder;
++ if (cmdLine.HasSwitch("-scripts"))
++ {
++ if (cmdLine.GetArgumentCount("-scripts") != 1)
++ {
++ _log.Log(LOG_ERROR, "Please specify a path for scripts directory");
++ return 1;
++ }
++ std::string szroot = cmdLine.GetSafeArgument("-scripts", 0, "");
++ if (szroot.size() != 0)
++ szScriptsFolder = szroot;
++ }
++
+ if (cmdLine.HasSwitch("-startupdelay"))
+ {
+ if (cmdLine.GetArgumentCount("-startupdelay") != 1)
+diff --git a/main/mainworker.cpp b/main/mainworker.cpp
+index 803690e1..e89a783b 100644
+--- a/main/mainworker.cpp
++++ b/main/mainworker.cpp
+@@ -159,6 +159,7 @@
+
+ #define round(a) ( int ) ( a + .5 )
+
++extern std::string szScriptsFolder;
+ extern std::string szStartupFolder;
+ extern std::string szUserDataFolder;
+ extern std::string szWWWFolder;
+@@ -1473,8 +1474,8 @@ void MainWorker::Do_Work()
+ m_sql.GetPreferencesVar("ReleaseChannel", nValue);
+ bool bIsBetaChannel = (nValue != 0);
+
+- std::string scriptname = szUserDataFolder + "scripts/download_update.sh";
+- std::string strparm = szUserDataFolder;
++ std::string scriptname = szScriptsFolder + "download_update.sh";
++ std::string strparm = szScriptsFolder;
+ if (bIsBetaChannel)
+ strparm += " /beta";
+
+diff --git a/notifications/NotificationHTTP.cpp b/notifications/NotificationHTTP.cpp
+index decff3b4..632e4e66 100644
+--- a/notifications/NotificationHTTP.cpp
++++ b/notifications/NotificationHTTP.cpp
+@@ -6,7 +6,7 @@
+ #include "../main/SQLHelper.h"
+ #include "../main/Logger.h"
+
+-extern std::string szUserDataFolder;
++extern std::string szScriptsFolder;
+
+ CNotificationHTTP::CNotificationHTTP() : CNotificationBase(std::string("http"), OPTIONS_NONE)
+ {
+@@ -105,7 +105,7 @@ bool CNotificationHTTP::SendMessageImplementation(
+ std::string scriptparams = "";
+ #if !defined WIN32
+ if (scriptname.find("/") != 0)
+- scriptname = szUserDataFolder + "scripts/" + scriptname;
++ scriptname = szScriptsFolder + scriptname;
+ #endif
+ //Add parameters
+ uPos = scriptname.find(" ");
+diff --git a/push/GooglePubSubPush.cpp b/push/GooglePubSubPush.cpp
+index 359a7d7c..46e489f6 100644
+--- a/push/GooglePubSubPush.cpp
++++ b/push/GooglePubSubPush.cpp
+@@ -22,7 +22,7 @@ extern "C" {
+ using namespace boost::python;
+ #endif
+
+-extern std::string szUserDataFolder;
++extern std::string szScriptsFolder;
+
+ // this should be filled in by the preprocessor
+ extern const char * Python_exe;
+@@ -231,11 +231,11 @@ void CGooglePubSubPush::DoGooglePubSubPush()
+
+ #ifdef ENABLE_PYTHON_DECAP
+ #ifdef WIN32
+- python_DirT << szUserDataFolder << "scripts\\python\\";
+- std::string filename = szUserDataFolder + "scripts\\python\\" + "googlepubsub.py";
++ python_DirT << szScriptsFolder << "python\\";
++ std::string filename = szScriptsFolder + "python\\" + "googlepubsub.py";
+ #else
+- python_DirT << szUserDataFolder << "scripts/python/";
+- std::string filename = szUserDataFolder + "scripts/python/" + "googlepubsub.py";
++ python_DirT << szScriptsFolder << "python/";
++ std::string filename = szScriptsFolder + "python/" + "googlepubsub.py";
+ #endif
+
+ wchar_t * argv[1];
+diff --git a/scripts/dzVents/runtime/dzVents.lua b/scripts/dzVents/runtime/dzVents.lua
+index d0dfa869..8370d6a9 100644
+--- a/scripts/dzVents/runtime/dzVents.lua
++++ b/scripts/dzVents/runtime/dzVents.lua
+@@ -1,8 +1,9 @@
+ local currentPath = globalvariables['script_path']
++local generatedScriptPath = globalvariables['generated_script_path']
+ local triggerReason = globalvariables['script_reason']
+
+ _G.scriptsFolderPath = currentPath .. 'scripts' -- global
+-_G.generatedScriptsFolderPath = currentPath .. 'generated_scripts' -- global
++_G.generatedScriptsFolderPath = generatedScriptPath -- global
+ _G.dataFolderPath = currentPath .. 'data' -- global
+
+ package.path = package.path .. ';' .. currentPath .. '?.lua'
+@@ -10,7 +11,7 @@ package.path = package.path .. ';' .. currentPath .. 'runtime/?.lua'
+ package.path = package.path .. ';' .. currentPath .. 'runtime/device-adapters/?.lua'
+ package.path = package.path .. ';' .. currentPath .. 'dzVents/?.lua'
+ package.path = package.path .. ';' .. currentPath .. 'scripts/?.lua'
+-package.path = package.path .. ';' .. currentPath .. 'generated_scripts/?.lua'
++package.path = package.path .. ';' .. generatedScriptPath .. '?.lua'
+ package.path = package.path .. ';' .. currentPath .. 'data/?.lua'
+
+ local EventHelpers = require('EventHelpers')
PKG_SOURCE_URL:=https://github.com/webstack/mbtools.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=149e9c69cec180f18cf8781cf5285b97352bf719
-PKG_MIRROR_HASH:=1e6e2f0e40b1c596bb55279bcedfac5a8deb86ef56978dce01a78877151c9352
+PKG_MIRROR_HASH:=3aed4146e06bd9f9bcc271824c6b1d75d1fc2a0bd980f2b729c3b4755c6f70a8
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
PKG_SOURCE_DATE:=2017-03-20
PKG_SOURCE_VERSION:=37c86e60c0442fef570b75cd81aeb1db4d0cbafd
-PKG_MIRROR_HASH:=fc49fce4f592ffdc2a9c8f453ea96b28eb3ece0c6303ed73462cc61fb5b63318
+PKG_MIRROR_HASH:=652958e818d984804be6846ba504961f31c6e98414d0d34ec7a0d76d0844584a
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=
include $(TOPDIR)/rules.mk
PKG_NAME:=nano
-PKG_VERSION:=2.8.6
+PKG_VERSION:=2.8.7
PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=COPYING
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@GNU/nano
-PKG_HASH:=9a46962a3ae59db922467a095217ed23280b42d80640f932f3a59ba2a6a85776
+PKG_HASH:=fbe31746958698d73c6726ee48ad8b0612697157961a2e9aaa83b4aa53d1165a
PKG_INSTALL:=1
PKG_BUILD_PARALLEL:=1
--- /dev/null
+From 28cfab7580c42a6d6c9c5d787ce736094fd51a0c Mon Sep 17 00:00:00 2001
+From: Benno Schulenberg <bensberg@telfort.nl>
+Date: Tue, 29 Aug 2017 19:28:44 +0200
+Subject: tweaks: fix compilation when configured with --enable-tiny
+
+When moving the cursor to the top-left corner, it is not necessary
+to compute leftedge because firstcolumn IS the relevant leftedge.
+
+Reported-by: Jordi Mallach <jordi@debian.org>
+---
+ src/move.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/move.c b/src/move.c
+index d138356..ce276e4 100644
+--- a/src/move.c
++++ b/src/move.c
+@@ -121,7 +121,7 @@ void do_page_up(void)
+ openfile->current = openfile->edittop;
+ openfile->current_y = 0;
+
+- leftedge = leftedge_for(openfile->firstcolumn, openfile->edittop);
++ leftedge = openfile->firstcolumn;
+ target_column = 0;
+ } else
+ get_edge_and_target(&leftedge, &target_column);
+@@ -152,7 +152,7 @@ void do_page_down(void)
+ openfile->current = openfile->edittop;
+ openfile->current_y = 0;
+
+- leftedge = leftedge_for(openfile->firstcolumn, openfile->edittop);
++ leftedge = openfile->firstcolumn;
+ target_column = 0;
+ } else
+ get_edge_and_target(&leftedge, &target_column);
+--
+cgit v1.0-41-gc330
+
PKG_LICENSE_FILES:=LICENSE
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/zip$(PKG_REV)
+HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_NAME)-$(PKG_VERSION)/zip$(PKG_REV)
PKG_CHECK_FORMAT_SECURITY:=0
+include $(INCLUDE_DIR)/host-build.mk
include $(INCLUDE_DIR)/package.mk
define Package/zip
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
endef
+define Host/Compile
+ +$(HOST_MAKE_VARS) $(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) -I. -f unix/Makefile generic
+endef
+
+define Host/Install
+ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin/
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/zip $(STAGING_DIR_HOSTPKG)/bin/
+endef
+
+$(eval $(call HostBuild))
$(eval $(call BuildPackage,zip))