* An optional PKG_LICENSE_FILES tag including the filenames of the license-files in the source-package.
(E.g.: PKG_LICENSE_FILES:=COPYING)
* PKG_RELEASE should be initially set to 1 or reset to 1 if the software version is changed. You should increment it if the package itself has changed. For example, modifying a support script, changing configure options like --disable* or --enable* switches, or if you changed something in the package which causes the resulting binaries to be different. Changes like correcting md5sums, changing mirror URLs, adding a maintainer field or updating a comment or copyright year in a Makefile do not require a change to PKG_RELEASE.
+* Avoid reuse of PKG_NAME in call, define and eval lines to improve readability.
#### Commits in your pull-requests should:
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://hisham.hm/htop/releases/$(PKG_VERSION)/
-PKG_MD5SUM:=7d354d904bad591a931ad57e99fea84a
+PKG_HASH:=179be9dccb80cee0c5e1a1f58c8f72ce7b2328ede30fb71dcdf336539be2f487
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
include $(TOPDIR)/rules.mk
PKG_NAME:=monit
-PKG_VERSION:=5.18
+PKG_VERSION:=5.20.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=ebac395ec50c1ae64d568db1260bc049d0e0e624c00e79d7b1b9a59c2679b98d
PKG_SOURCE_URL:=http://mmonit.com/monit/dist
-PKG_MD5SUM:=a1bfac0fbb83439435f8616200d2364d
PKG_LICENSE:=AGPL-3.0
PKG_LICENSE_FILES:=COPYING
define Package/monit/Default
SECTION:=admin
CATEGORY:=Administration
- DEPENDS:= +libpthread
+ DEPENDS:= +libpthread +zlib
TITLE:=System services monitoring utility
URL:=http://mmonit.com/monit/
MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
--- a/configure
+++ b/configure
-@@ -13849,14 +13849,7 @@ fi
+@@ -13839,14 +13839,7 @@ fi
# Find the right directory to put the root-mode PID file in
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking pid file location" >&5
$as_echo_n "checking pid file location... " >&6; }
--- /dev/null
+# openwisp.org
+#
+# This is free software, licensed under the GNU General Public License v3.
+# See /LICENSE for more information.
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openwisp-config
+PKG_VERSION:=0.4.5
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+PKG_SOURCE_URL:=https://github.com/openwisp/openwisp-config.git
+PKG_SOURCE_VERSION:=0.4.5
+PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_VERSION)
+PKG_MIRROR_HASH:=017a8ed35ebfda2805426e7da02559d5cc2845ee9ded60fdae8e848d377424fb
+PKG_LICENSE:=GPL-3.0
+PKGARCH:=all
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/openwisp-config/default
+ TITLE:=Remote configuration management agent ($(2) variant)
+ CATEGORY:=Administration
+ SECTION:=admin
+ SUBMENU:=openwisp
+ DEPENDS:=+curl +lua +libuci-lua +luafilesystem $(3)
+ VARIANT:=$(1)
+ MAINTAINER:=Federico Capoano <f.capoano@cineca.it>
+ URL:=http://openwisp.org
+endef
+
+Package/openwisp-config-openssl=$(call Package/openwisp-config/default,openssl,OpenSSL,+ca-certificates +libopenssl)
+Package/openwisp-config-mbedtls=$(call Package/openwisp-config/default,mbedtls,mbedTLS,+ca-certificates +libmbedtls)
+Package/openwisp-config-cyassl=$(call Package/openwisp-config/default,cyassl,CyaSSL,+ca-certificates +libcyassl)
+# deprecated on recent versions of OpenWRT (>= Designated Driver) and LEDE (>= 17.01)
+Package/openwisp-config-polarssl=$(call Package/openwisp-config/default,polarssl,PolarSSL,+ca-certificates +libpolarssl)
+Package/openwisp-config-nossl=$(call Package/openwisp-config/default,nossl,No SSL)
+
+define Build/Compile
+endef
+
+define Package/openwisp-config-$(BUILD_VARIANT)/conffiles
+/etc/config/openwisp
+endef
+
+ifeq ($(BUILD_VARIANT),openssl)
+CONFIG_OPENWISP_UCI:=ssl
+endif
+ifeq ($(BUILD_VARIANT),mbedtls)
+CONFIG_OPENWISP_UCI:=ssl
+endif
+ifeq ($(BUILD_VARIANT),cyassl)
+CONFIG_OPENWISP_UCI:=ssl
+endif
+ifeq ($(BUILD_VARIANT),polarssl)
+CONFIG_OPENWISP_UCI:=ssl
+endif
+ifeq ($(BUILD_VARIANT),nossl)
+CONFIG_OPENWISP_UCI:=nossl
+endif
+
+
+define Package/openwisp-config-$(BUILD_VARIANT)/install
+ $(INSTALL_DIR) \
+ $(1)/usr/sbin \
+ $(1)/etc/init.d \
+ $(1)/etc/config \
+ $(1)/etc/openwisp \
+ $(1)/usr/lib/lua/openwisp
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/openwisp.agent \
+ $(1)/usr/sbin/openwisp_config
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/openwisp.init \
+ $(1)/etc/init.d/openwisp_config
+
+ $(INSTALL_CONF) $(PKG_BUILD_DIR)/openwisp-config/files/openwisp-$(CONFIG_OPENWISP_UCI).config \
+ $(1)/etc/config/openwisp
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-reload-config \
+ $(1)/usr/sbin/openwisp-reload-config
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/lib/openwisp/utils.lua \
+ $(1)/usr/lib/lua/openwisp/utils.lua
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-store-unmanaged.lua \
+ $(1)/usr/sbin/openwisp-store-unmanaged
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-restore-unmanaged.lua \
+ $(1)/usr/sbin/openwisp-restore-unmanaged
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-remove-default-wifi.lua \
+ $(1)/usr/sbin/openwisp-remove-default-wifi
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-uci-autoname.lua \
+ $(1)/usr/sbin/openwisp-uci-autoname
+
+ $(INSTALL_BIN) \
+ $(PKG_BUILD_DIR)/openwisp-config/files/sbin/openwisp-update-config.lua \
+ $(1)/usr/sbin/openwisp-update-config
+
+ $(CP) $(PKG_BUILD_DIR)/VERSION $(1)/etc/openwisp/
+endef
+
+$(eval $(call BuildPackage,openwisp-config-openssl))
+$(eval $(call BuildPackage,openwisp-config-mbedtls))
+$(eval $(call BuildPackage,openwisp-config-cyassl))
+$(eval $(call BuildPackage,openwisp-config-polarssl))
+$(eval $(call BuildPackage,openwisp-config-nossl))
include $(TOPDIR)/rules.mk
PKG_NAME:=zabbix
-PKG_VERSION:=3.0.3
+PKG_VERSION:=3.2.4
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=22cf19ef5a9478df2281bf518e8be38adc7dbc508bf63111e02388ca7aabeef4
PKG_SOURCE_URL:=@SF/zabbix
-PKG_MD5SUM:=7c45d37000e67d75042695344c9937e0
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILES:=COPYING
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/lua-mosquitto
SUBMENU:=Lua
SECTION:=lang
CATEGORY:=Languages
MAINTAINER:=Karl Palsson <karlp@remake.is>
endef
-define Package/$(PKG_NAME)/description
+define Package/lua-mosquitto/description
Lua bindings to libmosquitto
endef
-define Package/$(PKG_NAME)/install
+define Package/lua-mosquitto/install
$(INSTALL_DIR) $(1)/usr/lib/lua
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mosquitto.so $(1)/usr/lib/lua
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,lua-mosquitto))
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/lua-openssl
SUBMENU:=Lua
SECTION:=lang
CATEGORY:=Languages
A free, MIT-licensed OpenSSL binding for Lua.
endef
-define Package/$(PKG_NAME)/install
+define Package/lua-openssl/install
$(INSTALL_DIR) $(1)/usr/lib/lua
$(INSTALL_BIN) $(PKG_BUILD_DIR)/openssl.so $(1)/usr/lib/lua/
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,lua-openssl))
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/lua-penlight
SUBMENU:=Lua
SECTION:=lang
CATEGORY:=Languages
MAINTAINER:= Karl Palsson <karlp@remake.is>
endef
-define Package/$(PKG_NAME)/description
+define Package/lua-penlight/description
It is often said of Lua that it does not include batteries.
Penlight is the batteries.
endef
echo "Nothing to compile, pure lua package"
endef
-define Package/$(PKG_NAME)/install
+define Package/lua-penlight/install
$(INSTALL_DIR) $(1)/usr/lib/lua
$(CP) $(PKG_BUILD_DIR)/lua/pl $(1)/usr/lib/lua
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,lua-penlight))
PKG_NAME:=cryptography
PKG_VERSION:=1.5.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://pypi.python.org/packages/21/e1/37fc14f9d77924e84ba0dcb88eb8352db914583af229287c6c965d66ba0d
--- /dev/null
+diff --git a/setup.py b/setup.py
+index b5c05df..a777dd7 100644
+--- a/setup.py
++++ b/setup.py
+@@ -266,6 +266,7 @@ class DummyPyTest(test):
+ with open(os.path.join(base_dir, "README.rst")) as f:
+ long_description = f.read()
+
++setup_requirements=[]
+
+ setup(
+ name=about["__title__"],
PKG_NAME:=boost
PKG_VERSION:=1.63.0
PKG_SOURCE_VERSION:=1_63_0
-PKG_RELEASE:=3
+PKG_RELEASE:=2
PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2
PKG_SOURCE_URL:=https://sourceforge.net/projects/boost/files/boost/$(PKG_VERSION)
| - Boost.Locale |
| - Boost.Coroutine2 |
| - Boost.Fiber |
-| Also, due to hardware contraints, the following libs and those that are |
-| dependent, are disabled for some Targets. |
-| - Boost.Context |
-| - Disabled for -> avr32, octeon and netlogic. |
-| - Boost.Fiber |
-| - Disabled for -> ar7, rb532, brcm63xx.smp, brcm63xx, brcm47xx, |
-| brcm47xx.legacy, brcm2708_bcm2708, au1000, ath25, |
-| adm8668 and adm5120. |
-----------------------------------------------------------------------------
This package provides the following run-time libraries:
- container
- context
- coroutine (Deprecated - use Coroutine2)
- - - coroutine2 (Requires GCC v5 or newer)
+ - - coroutine2 (Requires GCC v5 and up)
- date_time
- exception
- filesystem
- - fiber (Requires GCC v5 or newer)
+ - fiber (Requires GCC v5 and up)
- graph
- - graph-parallel
- iostreams
config boost-libs-all
bool "Include all Boost libraries."
default m if ALL
- select PACKAGE_boost-container
- select PACKAGE_boost-date_time
- select PACKAGE_boost-iostreams
- select PACKAGE_boost-math
- select PACKAGE_boost-program_options
- select PACKAGE_boost-serialization
- select PACKAGE_boost-signals
- select PACKAGE_boost-regex
- select PACKAGE_boost-graph if PACKAGE_boost-regex
- select PACKAGE_boost-system
- select PACKAGE_boost-atomic if PACKAGE_boost-system
- select PACKAGE_boost-chrono if PACKAGE_boost-system
- select PACKAGE_boost-random if PACKAGE_boost-system
- select PACKAGE_boost-filesystem if PACKAGE_boost-system
- select PACKAGE_boost-locale if PACKAGE_boost-system
- select PACKAGE_boost-timer if PACKAGE_boost-chrono
- select PACKAGE_boost-thread if PACKAGE_boost-chrono&&PACKAGE_boost-atomic
- select PACKAGE_boost-context if PACKAGE_boost-chrono&&PACKAGE_boost-thread
- select PACKAGE_boost-coroutine if PACKAGE_boost-context
- select PACKAGE_boost-fiber if boost-coroutine2
- select PACKAGE_boost-log if PACKAGE_boost-chrono&&PACKAGE_boost-date_time&&PACKAGE_boost-thread&&PACKAGE_boost-filesystem&&PACKAGE_boost-regex
- select PACKAGE_boost-wave if PACKAGE_boost-date_time&&PACKAGE_boost-thread&&PACKAGE_boost-filesystem
- select PACKAGE_boost-python
- select PACKAGE_boost-python3
- select boost-test-pkg if PACKAGE_boost-system&&PACKAGE_boost-timer
- select boost-coroutine2 if PACKAGE_boost-coroutine
- select boost-graph-parallel if PACKAGE_boost-graph
-
+ select PACKAGE_boost-libs
+ select boost-test-pkg
+ select boost-coroutine2
+ select boost-graph-parallel
config boost-test-pkg
- depends on PACKAGE_boost-system&&PACKAGE_boost-timer
bool "Boost test package."
default m if ALL
select PACKAGE_boost-test
config boost-coroutine2
- depends on !@GCC_VERSION_4_8&&PACKAGE_boost-coroutine
+ depends on !@GCC_VERSION_4_8
bool "Boost couroutine2 support."
- default m if ALL
+ select PACKAGE_boost-coroutine
+ default n
config boost-graph-parallel
- depends on PACKAGE_boost-graph
bool "Boost parallel graph support."
- default m if ALL
+ select PACKAGE_boost-graph
+ default n
$(foreach lib,$(BOOST_LIBS), \
config PACKAGE_boost-$(lib)
prompt "Boost $(lib) library."
default m if ALL
- $(if $(findstring graph,$(lib)),depends on PACKAGE_boost-regex,)\
- $(if $(findstring atomic,$(lib)),depends on PACKAGE_boost-system,)\
- $(if $(findstring chrono,$(lib)),depends on PACKAGE_boost-system,)\
- $(if $(findstring random,$(lib)),depends on PACKAGE_boost-system,)\
- $(if $(findstring filesystem,$(lib)),depends on PACKAGE_boost-system,)\
- $(if $(findstring locale,$(lib)),depends on PACKAGE_boost-system&&BUILD_NLS,)\
- $(if $(findstring timer,$(lib)),depends on PACKAGE_boost-chrono,)\
- $(if $(findstring thread,$(lib)),depends on PACKAGE_boost-chrono&&PACKAGE_boost-atomic,)\
- $(if $(findstring context,$(lib)),depends on PACKAGE_boost-chrono&&PACKAGE_boost-thread&&@(!TARGET_avr32&&!TARGET_octeon&&!TARGET_netlogic),)\
- $(if $(findstring coroutine,$(lib)),depends on PACKAGE_boost-context,)\
- $(if $(findstring fiber,$(lib)),depends on @boost-coroutine2&&@(!TARGET_ar7&&!TARGET_rb532&&!TARGET_brcm63xx_smp&&!TARGET_brcm63xx&&!TARGET_brcm47xx&&!TARGET_brcm47xx_legacy&&!TARGET_brcm2708_bcm2708&&!TARGET_au1000&&!TARGET_ath25&&!TARGET_adm8668&&!TARGET_adm5120),)\
- $(if $(findstring log,$(lib)),depends on PACKAGE_boost-chrono&&PACKAGE_boost-date_time&&PACKAGE_boost-thread&&PACKAGE_boost-filesystem&&PACKAGE_boost-regex,)\
- $(if $(findstring wave,$(lib)),depends on PACKAGE_boost-date_time&&PACKAGE_boost-thread&&PACKAGE_boost-filesystem,)\
+ $(if $(findstring locale,$(lib)),depends on BUILD_NLS,)\
$(if $(findstring python,$(lib)),depends on PACKAGE_$(lib),)
+
)
endmenu
$(call Package/boost/Default)
TITLE+= (test)
HIDDEN:=1
+ DEPENDS+=+boost-system +boost-timer
endef
define Build/Configure
endef
# 1: short name
-# 2: dependencies on other boost libraries (short name) - Deprecated
+# 2: dependencies on other boost libraries (short name)
# 3: dependencies on other packages
# 4: conditional/inward dependencies
define DefineBoostLibrary
define Package/boost-$(1)
$(call Package/boost/Default)
TITLE+= ($(1))
- DEPENDS+= $(3) $(if $(4),@$(4),)
+ DEPENDS+= $$(foreach lib,$(2),+boost-$$(lib)) $(3) $(if $(4),@$(4),)
HIDDEN:=1
endef
endef
endef
-
-## If you are thinking in making changes to the following list, for some reason, the order of what follows matters.
-$(eval $(call DefineBoostLibrary,container,,,))
-$(eval $(call DefineBoostLibrary,date_time,,,))
-$(eval $(call DefineBoostLibrary,iostreams,,+zlib,))
-$(eval $(call DefineBoostLibrary,math,,,))
-$(eval $(call DefineBoostLibrary,program_options,,,))
-$(eval $(call DefineBoostLibrary,serialization,,,))
-$(eval $(call DefineBoostLibrary,signals,,,))
-
-$(eval $(call DefineBoostLibrary,regex,,,))
-$(eval $(call DefineBoostLibrary,graph,,,))
-
-$(eval $(call DefineBoostLibrary,system,,,))
-$(eval $(call DefineBoostLibrary,atomic,,,))
-$(eval $(call DefineBoostLibrary,chrono,,,))
-$(eval $(call DefineBoostLibrary,random,,,))
-$(eval $(call DefineBoostLibrary,filesystem,,,))
-$(eval $(call DefineBoostLibrary,locale,,$(ICONV_DEPENDS),BUILD_NLS))
-$(eval $(call DefineBoostLibrary,timer,,,))
-$(eval $(call DefineBoostLibrary,thread,,,))
-$(eval $(call DefineBoostLibrary,context,,,))
-$(eval $(call DefineBoostLibrary,coroutine,,,))
-$(eval $(call DefineBoostLibrary,fiber,,,))
-$(eval $(call DefineBoostLibrary,log,,,))
-$(eval $(call DefineBoostLibrary,wave,,,))
+$(eval $(call DefineBoostLibrary,atomic,system,))
+$(eval $(call DefineBoostLibrary,chrono,system,))
+$(eval $(call DefineBoostLibrary,container,,))
+$(eval $(call DefineBoostLibrary,context,chrono system thread,))
+$(eval $(call DefineBoostLibrary,coroutine,system chrono context thread,))
+$(eval $(call DefineBoostLibrary,date_time,,))
+#$(eval $(call DefineBoostLibrary,exception,,))
+$(eval $(call DefineBoostLibrary,fiber,coroutine,,))
+$(eval $(call DefineBoostLibrary,filesystem,system,))
+$(eval $(call DefineBoostLibrary,graph,regex,))
+$(eval $(call DefineBoostLibrary,iostreams,,+zlib))
+$(eval $(call DefineBoostLibrary,locale,system,$(ICONV_DEPENDS),BUILD_NLS))
+$(eval $(call DefineBoostLibrary,log,system chrono date_time thread filesystem regex,))
+$(eval $(call DefineBoostLibrary,math,,))
+#$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time.
+$(eval $(call DefineBoostLibrary,program_options,,))
$(eval $(call DefineBoostLibrary,python,,,PACKAGE_python))
$(eval $(call DefineBoostLibrary,python3,,,PACKAGE_python3))
-
-#$(eval $(call DefineBoostLibrary,mpi,,)) # OpenMPI does no exist in OpenWRT at this time.
-#$(eval $(call DefineBoostLibrary,exception,,))
+$(eval $(call DefineBoostLibrary,random,system,))
+$(eval $(call DefineBoostLibrary,regex,,))
+$(eval $(call DefineBoostLibrary,serialization,,))
+$(eval $(call DefineBoostLibrary,signals,,))
+$(eval $(call DefineBoostLibrary,system,,))
+$(eval $(call DefineBoostLibrary,thread,system chrono atomic,))
+$(eval $(call DefineBoostLibrary,timer,chrono))
+$(eval $(call DefineBoostLibrary,wave,date_time thread filesystem,))
define Host/Compile
TARGET_LDFLAGS += -pthread -lrt
TARGET_CFLAGS += \
+ $(if $(CONFIG_PACKAGE_boost-python), -I$(STAGING_DIR)/usr/include/python2.7/) \
+ $(if $(CONFIG_PACKAGE_boost-python3), -I$(STAGING_DIR)/usr/include/python3.5/) \
$(if $(CONFIG_SOFT_FLOAT),-DBOOST_NO_FENV_H) -fPIC
EXTRA_CXXFLAGS += $(if $(CONFIG_GCC_VERSION_4_8),-std=gnu++11,-std=gnu++14)
comma := ,
-
define Build/Compile
$(info Selected Boost API $(BOOST_ABI) for architecture $(ARCH) and cpu $(CPU_TYPE) $(CPU_SUBTYPE))
( cd $(PKG_BUILD_DIR) ; \
echo "using gcc : $(ARCH) : $(GNU_TARGET_NAME)-gcc : <compileflags>\"$(TARGET_CFLAGS)\" <cxxflags>\"$(TARGET_CXXFLAGS) $(EXTRA_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > tools/build/src/user-config.jam ; \
$(if $(CONFIG_PACKAGE_boost-python3), \
- echo "using python : 3.6 : : $(STAGING_DIR)/usr/include/python3.6/ ;" >> \
+ echo "using python : 3.5 : $(STAGING_DIR_ROOT)/usr/bin/python3 : $(STAGING_DIR)/usr/include/python3.5/ ;" >> \
tools/build/src/user-config.jam; \
) \
$(if $(CONFIG_PACKAGE_boost-python), \
- echo "using python : 2.7 : : $(STAGING_DIR)/usr/include/python2.7/ ;" >> \
+ echo "using python : 2.7 : $(STAGING_DIR_ROOT)/usr/bin/python : $(STAGING_DIR)/usr/include/python2.7/ ;" >> \
tools/build/src/user-config.jam; \
) \
b2 \
$(if $(or $(CONFIG_PACKAGE_boost-python),$(CONFIG_PACKAGE_boost-python3)),,--without-python), \
$(if $(CONFIG_PACKAGE_boost-$(lib)),,--without-$(lib))) \
) \
- $(if $(CONFIG_PACKAGE_boost-python),python=2.7,) \
- $(if $(CONFIG_PACKAGE_boost-python3),python=3.6,) \
$(if $(CONFIG_PACKAGE_boost-locale),boost.locale.iconv=on -sICONV_PATH=$(ICONV_PREFIX) boost.locale.posix=$(if $(USE_MUSL),on,off), \
boost.locale.iconv=off) \
\
include $(TOPDIR)/rules.mk
PKG_NAME:=flac
-PKG_VERSION:=1.3.1
-PKG_RELEASE:=3
+PKG_VERSION:=1.3.2
+PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://downloads.xiph.org/releases/flac/
-PKG_MD5SUM:=b9922c9a0378c88d3e901b234f852698
+PKG_MD5SUM:=454f1bfa3f93cc708098d7890d0499bd
+PKG_HASH:=91cfc3ed61dc40f47f050a109b08610667d73477af6ef36dcad31c31a4a8d53f
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_INSTALL:=1
ACLOCAL_AMFLAGS = -I m4
--SUBDIRS = doc include m4 man src examples test build objs
+-SUBDIRS = doc include m4 man src examples test build objs microbench
+SUBDIRS = include m4 src build objs
EXTRA_DIST = \
+++ b/src/Makefile.am
@@ -27,10 +27,7 @@ endif
SUBDIRS = \
- share \
libFLAC \
+ share \
- flac \
- metaflac \
$(XMMS_DIRS) \
--- a/configure.ac
+++ b/configure.ac
-@@ -348,11 +348,11 @@ fi
+@@ -386,10 +386,11 @@ fi
if test "x$debug" = xtrue; then
CPPFLAGS="-DDEBUG $CPPFLAGS"
-- CFLAGS=$(echo "$CFLAGS" | sed 's/-g//')
- CFLAGS="-g $CFLAGS"
+ CFLAGS=$(echo "$CFLAGS" | sed 's/-g[0-9]*//')
+ CFLAGS="-g3 $CFLAGS"
else
CPPFLAGS="-DNDEBUG $CPPFLAGS"
-- CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//;s/-g//')
+- CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//')
+ CFLAGS=$(echo "$CFLAGS" | sed 's/-O2//;s/-g[0-9]*//')
CFLAGS="-O3 -funroll-loops $CFLAGS"
fi
+++ /dev/null
---- a/src/libFLAC/cpu.c
-+++ b/src/libFLAC/cpu.c
-@@ -243,7 +243,7 @@ void FLAC__cpu_info(FLAC__CPUInfo *info)
- struct sigaction sigill_save;
- struct sigaction sigill_sse;
- sigill_sse.sa_sigaction = sigill_handler_sse_os;
-- __sigemptyset(&sigill_sse.sa_mask);
-+ sigemptyset(&sigill_sse.sa_mask);
- sigill_sse.sa_flags = SA_SIGINFO | SA_RESETHAND; /* SA_RESETHAND just in case our SIGILL return jump breaks, so we don't get stuck in a loop */
- if(0 == sigaction(SIGILL, &sigill_sse, &sigill_save))
- {
include $(TOPDIR)/rules.mk
PKG_NAME:=glib2
-PKG_VERSION:=2.50.2
-PKG_RELEASE:=2
+PKG_VERSION:=2.50.3
+PKG_RELEASE:=1
PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz
PKG_BUILD_DIR:=$(BUILD_DIR)/glib-$(PKG_VERSION)
PKG_SOURCE_URL:=@GNOME/glib/2.50
-PKG_MD5SUM:=5eeb2bfaf78a07be59585e8b6e80b1d6
+PKG_HASH:=82ee94bf4c01459b6b00cb9db0545c2237921e3060c0b74cff13fbc020cfd999
PKG_BUILD_PARALLEL:=1
HOST_BUILD_PARALLEL:=1
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)/Default
+define Package/libarchive/Default
SECTION:=libs
CATEGORY:=Libraries
DEPENDS:=+zlib +liblzma +libbz2 +libexpat
URL:=http://www.libarchive.org/
endef
-define Package/$(PKG_NAME)
- $(call Package/$(PKG_NAME)/Default)
+define Package/libarchive
+ $(call Package/libarchive/Default)
DEPENDS += +libopenssl
endef
-define Package/$(PKG_NAME)-noopenssl
- $(call Package/$(PKG_NAME)/Default)
+define Package/libarchive-noopenssl
+ $(call Package/libarchive/Default)
TITLE += (without OpenSSL dependency)
VARIANT:=noopenssl
endef
$(CP) $(PKG_INSTALL_DIR)/usr/bin/bsdtar $(1)/usr/bin
endef
-Package/$(PKG_NAME)-noopenssl/install = $(Package/$(PKG_NAME)/install)
+Package/libarchive-noopenssl/install = $(Package/libarchive/install)
$(eval $(call BuildPackage,libarchive))
$(eval $(call BuildPackage,libarchive-noopenssl))
# CMAKE_OPTIONS += -DLWS_WITHOUT_DEBUG=ON
-define Package/$(PKG_NAME)/Default
+define Package/libwebsockets/Default
SECTION:=libs
CATEGORY:=Libraries
TITLE:=libwebsockets
endef
define Package/libwebsockets-openssl
- $(call Package/$(PKG_NAME)/Default)
+ $(call Package/libwebsockets/Default)
TITLE += (OpenSSL)
DEPENDS += +libopenssl
VARIANT:=openssl
endef
define Package/libwebsockets-cyassl
- $(call Package/$(PKG_NAME)/Default)
+ $(call Package/libwebsockets/Default)
TITLE += (CyaSSL)
DEPENDS += +libcyassl
VARIANT:=cyassl
endef
define Package/libwebsockets-full
- $(call Package/$(PKG_NAME)/Default)
+ $(call Package/libwebsockets/Default)
TITLE += (Full - OpenSSL, libuv, plugins, CGI)
DEPENDS += +libopenssl +libuv
VARIANT:=full
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libwebsockets.so* $(1)/usr/lib/
endef
-Package/$(PKG_NAME)-cyassl/install = $(Package/$(PKG_NAME)/install)
-Package/$(PKG_NAME)-openssl/install = $(Package/$(PKG_NAME)/install)
-Package/$(PKG_NAME)-full/install = $(Package/$(PKG_NAME)/install)
+Package/libwebsockets-cyassl/install = $(Package/libwesockets/install)
+Package/libwebsockets-openssl/install = $(Package/libwebsockets/install)
+Package/libwesockets-full/install = $(Package/libwebsockets/install)
$(eval $(call BuildPackage,libwebsockets-openssl))
$(eval $(call BuildPackage,libwebsockets-cyassl))
--- /dev/null
+#
+# Copyright (C) 2017 Lucian Cristian <lucian.cristian@gmail.com>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+# updated to work with latest source from abrasive
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=musl-fts
+PKG_VERSION:=1.2.7
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/pullmoll/musl-fts.git
+PKG_SOURCE_VERSION:=0bde52df588e8969879a2cae51c3a4774ec62472
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
+
+PKG_MAINTAINER:= Lucian Cristian <lucian.cristian@gmail.com>
+
+PKG_LICENSE:=LGPL-2.1
+PKG_LICENSE_FILES:=COPYING AUTHORS
+
+PKG_FIXUP:=autoreconf
+PKG_REMOVE_FILES:=autogen.sh
+
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/musl-fts
+ SECTION:=libs
+ CATEGORY:=Libraries
+ TITLE:=fts implementation for musl libc
+ URL:=https://github.com/pullmoll/musl-fts
+ DEPENDS:= +libpthread
+endef
+
+define Package/musl-fts/description
+ The musl-fts package implements the fts(3) functions fts_open, fts_read, fts_children, fts_set and fts_close, which are missing in musl libc.
+endef
+
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/fts.h $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfts.so* $(1)/usr/lib/
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/musl-fts.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/musl-fts/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfts.so* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,musl-fts))
include $(TOPDIR)/rules.mk
PKG_NAME:=sqlite
-PKG_VERSION:=3160000
+PKG_VERSION:=3170000
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-autoconf-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.sqlite.org/2017/
-PKG_MD5SUM:=5102404047054b2cec2f43463293f94dea39425d42bf386d24596ab4fac7c7ff
+PKG_MD5SUM:=450a95a7bde697c9fe4de9ae2fffdcca
+PKG_HASH:=a4e485ad3a16e054765baf6371826b5000beed07e626510896069c0bf013874c
PKG_LICENSE:=PUBLICDOMAIN
PKG_LICENSE_FILES:=
include $(TOPDIR)/rules.mk
PKG_NAME:=postfix
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_SOURCE_URL:=ftp://ftp.porcupine.org/mirrors/postfix-release/official/
PKG_VERSION:=3.1.4
PKG_MD5SUM:=878a059d92ee3b093d7d3e97248c915d
CATEGORY:=Mail
TITLE:=Postfix Mail Transmit Agent
URL:=http://www.postfix.org/
- DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +POSTFIX_EAI:icu +libpcre
+ DEPENDS:=+POSTFIX_TLS:libopenssl +POSTFIX_SASL:libsasl2 +POSTFIX_LDAP:libopenldap +POSTFIX_DB:libdb47 +POSTFIX_SQLITE:libsqlite3 +POSTFIX_EAI:icu +libpcre
endef
define Package/postfix/description
default y
help
Implements support for cdb files using tinycdb
+ config POSTFIX_SQLITE
+ bool "SQLITE support"
+ default y
+ help
+ Implements support for SQLite3 DB
config POSTFIX_EAI
bool "SMTPUTF8 support"
default n
CCARGS+=-DNO_DB
endif
+ifdef CONFIG_POSTFIX_SQLITE
+ CCARGS+=-DHAS_SQLITE -I$(STAGING_DIR)/usr/include/
+ AUXLIBS+=-L$(STAGING_DIR)/usr/lib -lsqlite3 -lpthread
+endif
+
ifdef CONFIG_POSTFIX_EAI
AUXLIBS+=-licuuc
CCARGS+=-DHAS_EAI
--- /dev/null
+--- a/src/posttls-finger/posttls-finger.c
++++ b/src/posttls-finger/posttls-finger.c
+@@ -318,6 +318,7 @@
+ #include <sys/un.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
++#include <stdio.h>
+
+ #ifdef STRCASECMP_IN_STRINGS_H
+ #include <strings.h>
TARGET_CFLAGS += $(TARGET_CPPFLAGS)
-define Package/$(PKG_NAME)
+define Package/ssmtp
SECTION:=mail
CATEGORY:=Mail
DEPENDS:=+libopenssl
URL:=http://packages.debian.org/ssmtp
endef
-define Package/$(PKG_NAME)/description
+define Package/ssmtp/description
A secure, effective and simple way of getting mail off a system to your mail hub.
Mail is simply forwarded to the configured mailhost, no daemons running in the background.
Extremely easy configuration.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/ssmtp/conffiles
/etc/ssmtp/ssmtp.conf
/etc/ssmtp/revaliases
endef
CONFIGURE_ARGS += \
--enable-ssl
-define Package/$(PKG_NAME)/install
+define Package/ssmtp/install
$(INSTALL_DIR) $(1)/etc/ssmtp
$(INSTALL_CONF) $(PKG_BUILD_DIR)/ssmtp.conf $(1)/etc/ssmtp/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/revaliases $(1)/etc/ssmtp/
ln -s /usr/sbin/ssmtp $(1)/usr/sbin/sendmail
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,ssmtp))
include $(TOPDIR)/rules.mk
PKG_NAME:=adblock
-PKG_VERSION:=2.3.2
-PKG_RELEASE:=1
+PKG_VERSION:=2.4.0
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/adblock
SECTION:=net
CATEGORY:=Network
TITLE:=Powerful adblock script to block ad/abuse domains
PKGARCH:=all
endef
-define Package/$(PKG_NAME)/description
+define Package/adblock/description
Powerful adblock script to block ad/abuse domains via dnsmasq or unbound dns backend.
The script supports many domain blacklist sites plus manual black- and whitelist overrides.
Please see https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md for further information.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/adblock/conffiles
/etc/config/adblock
/etc/adblock/adblock.whitelist
/etc/adblock/adblock.blacklist
define Build/Compile
endef
-define Package/$(PKG_NAME)/install
+define Package/adblock/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/adblock.sh $(1)/usr/bin/
$(INSTALL_CONF) ./files/adblock.whitelist $(1)/etc/adblock/
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,adblock))
* automatically selects uclient-fetch or wget as download utility (other tools like curl or aria2c are supported as well)
* automatically supports a wide range of router modes, even AP modes are supported
* full IPv4 and IPv6 support
+* supports tld compression (top level domain compression), this feature removes thousands of needless host entries from the block lists and lowers the memory footprint for the dns backends
* each block list source will be updated and processed separately
* block list source parsing by fast & flexible regex rulesets
* overall duplicate removal in separate block lists
* adb\_iface => restrict the procd interface trigger to a (list of) certain wan interface(s) or disable it at all (default: not set, disabled)
* adb\_fetch => full path to a different download utility, see example below (default: not set, use wget)
* adb\_fetchparm => options for the download utility, see example below (default: not set, use wget options)
+ * adb\_tldcomp => enable/disable tld compression (default: '1', enabled)
## Examples
<pre><code>
wget (default):
option adb_fetch="/usr/bin/wget"
- option adb_fetchparm="--no-config --quiet --tries=1 --no-cache --no-cookies --max-redirect=0 --timeout=5 --no-check-certificate -O"
+ option adb_fetchparm="--no-config --quiet --no-cache --no-cookies --max-redirect=0 --timeout=10 --no-check-certificate -O"
aria2c:
option adb_fetch '/usr/bin/aria2c'
- option adb_fetchparm '-q --max-tries=1 --timeout=5 --allow-overwrite=true --auto-file-renaming=false --check-certificate=false -o'
+ option adb_fetchparm '-q --timeout=10 --allow-overwrite=true --auto-file-renaming=false --check-certificate=false -o'
uclient-fetch:
option adb_fetch '/bin/uclient-fetch'
- option adb_fetchparm '-q --timeout=5 --no-check-certificate -O'
+ option adb_fetchparm '-q --timeout=10 --no-check-certificate -O'
curl:
option adb_fetch '/usr/bin/curl'
- option adb_fetchparm '-s --retry 1 --connect-timeout 5 --insecure -o'
+ option adb_fetchparm '-s --connect-timeout 10 --insecure -o'
</code></pre>
**receive adblock statistics via ubus:**
if [ $(/etc/init.d/adblock enabled; printf ${?}) -eq 0 ]
then
procd_open_instance "adblock"
- procd_set_param env adb_procd="true"
procd_set_param command "${adb_script}" "${@}"
procd_set_param stdout 1
procd_set_param stderr 1
stop_service()
{
- export adb_procd="true"
rc_procd "${adb_script}" stop
}
query()
{
- export adb_procd="true"
rc_procd "${adb_script}" query "${1}"
}
{
local iface="$(uci -q get adblock.global.adb_iface)"
- procd_open_trigger
- procd_add_config_trigger "config.change" "adblock" /etc/init.d/adblock start
if [ -z "${iface}" ]
then
procd_add_raw_trigger "interface.*.up" 1000 /etc/init.d/adblock start
procd_add_interface_trigger "interface.*.up" "${name}" /etc/init.d/adblock start
done
fi
- procd_close_trigger
+ procd_add_config_trigger "config.change" "adblock" /etc/init.d/adblock start
}
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="2.3.2"
+adb_ver="2.4.0-2"
adb_enabled=1
adb_debug=0
adb_backup=0
+adb_tldcomp=1
adb_backupdir="/mnt"
adb_whitelist="/etc/adblock/adblock.whitelist"
adb_whitelist_rset="\$1 ~/^([A-Za-z0-9_-]+\.){1,}[A-Za-z]+/{print tolower(\"^\"\$1\"\\\|[.]\"\$1)}"
then
logger -t "adblock-[${adb_ver}] ${class}" "Please check the online documentation 'https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md'"
f_rmtemp
- f_rmdns
+ if [ "$(ls -dA "${adb_dnsdir}/${adb_dnsprefix}"* >/dev/null 2>&1)" ]
+ then
+ f_rmdns
+ f_dnsrestart
+ fi
exit 255
fi
fi
adb_rc=${?}
fi
- # check download result and prepare domain output (incl. list backup/restore)
+ # check download result and prepare domain output (incl. tld compression, list backup & restore)
#
if [ ${adb_rc} -eq 0 ] && [ -s "${adb_tmpload}" ]
then
awk "${src_rset}" "${adb_tmpload}" > "${adb_tmpfile}"
if [ -s "${adb_tmpfile}" ]
then
+ if [ ${adb_tldcomp} -eq 1 ]
+ then
+ awk -F "." '{for(f=NF;f > 1;f--) printf "%s.", $f;print $1}' "${adb_tmpfile}" | sort -u > "${adb_tmpload}"
+ awk '{if(NR==1){tld=$NF};while(getline){if($NF !~ tld"\\."){print tld;tld=$NF}}print tld}' "${adb_tmpload}" > "${adb_tmpfile}"
+ awk -F "." '{for(f=NF;f > 1;f--) printf "%s.", $f;print $1}' "${adb_tmpfile}" > "${adb_tmpload}"
+ else
+ sort -u "${adb_tmpfile}" > "${adb_tmpload}"
+ fi
+ mv -f "${adb_tmpload}" "${adb_tmpfile}"
f_list backup
else
f_list restore
then
if [ -s "${adb_tmpdir}/tmp.whitelist" ]
then
- grep -vf "${adb_tmpdir}/tmp.whitelist" "${adb_tmpfile}" | sort -u | eval "${adb_dnsformat}" > "${adb_dnsfile}"
+ grep -vf "${adb_tmpdir}/tmp.whitelist" "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
else
- sort -u "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
+ cat "${adb_tmpfile}" | eval "${adb_dnsformat}" > "${adb_dnsfile}"
fi
adb_rc=${?}
if [ ${adb_rc} -ne 0 ]
# handle different adblock actions
#
-if [ "${adb_procd}" = "true" ]
-then
- f_envload
- case "${1}" in
- stop)
- f_rmtemp
- f_rmdns
- f_dnsrestart
- ;;
- restart)
- f_rmtemp
- f_rmdns
- f_envcheck
- f_main
- ;;
- suspend)
- f_switch suspend
- ;;
- resume)
- f_switch resume
- ;;
- query)
- f_query "${2}"
- ;;
- *)
- f_envcheck
- f_main
- ;;
- esac
-fi
+f_envload
+case "${1}" in
+ stop)
+ f_rmtemp
+ f_rmdns
+ f_dnsrestart
+ ;;
+ restart)
+ f_rmtemp
+ f_rmdns
+ f_envcheck
+ f_main
+ ;;
+ suspend)
+ f_switch suspend
+ ;;
+ resume)
+ f_switch resume
+ ;;
+ query)
+ f_query "${2}"
+ ;;
+ *)
+ f_envcheck
+ f_main
+ ;;
+esac
exit 0
# no default dependencies
PKG_DEFAULT_DEPENDS=
-define Package/$(PKG_NAME)/Default
+define Package/ddns-scripts/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=IP Addresses and Names
endef
###### *************************************************************************
-define Package/$(PKG_NAME)
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts
+ $(call Package/ddns-scripts/Default)
TITLE:=Dynamic DNS Client scripts (with IPv6 support)
endef
# shown in LuCI package description
-define Package/$(PKG_NAME)/description
+define Package/ddns-scripts/description
Dynamic DNS Client scripts (with IPv6 support) - Info: http://wiki.openwrt.org/doc/howto/ddns.client
endef
# shown in menuconfig <Help>
-define Package/$(PKG_NAME)/config
+define Package/ddns-scripts/config
help
A highly configurable set of scripts for doing dynamic dns updates.
- IPv6 support
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_cloudflare
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts_cloudflare
+ $(call Package/ddns-scripts/Default)
TITLE:=CloudFlare.com API v1 (deprecated)
- DEPENDS:=$(PKG_NAME)
+ DEPENDS:=ddns-scripts
endef
-define Package/$(PKG_NAME)_cloudflare/description
+define Package/ddns-scripts_cloudflare/description
Dynamic DNS Client scripts extension for CloudFlare.com API-v1 (deprecated)
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_cloudflare.com-v4
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts_cloudflare.com-v4
+ $(call Package/ddns-scripts/Default)
TITLE:=CloudFlare.com API v4 (require cURL)
- DEPENDS:=$(PKG_NAME) +curl
+ DEPENDS:=ddns-scripts +curl
endef
-define Package/$(PKG_NAME)_cloudflare.com-v4/description
+define Package/ddns-scripts_cloudflare.com-v4/description
Dynamic DNS Client scripts extension for CloudFlare.com API-v4 (require/install cURL)
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_godaddy.com-v1
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts_godaddy.com-v1
+ $(call Package/ddns-scripts/Default)
TITLE:=GoDaddy.com (require cURL)
- DEPENDS:=$(PKG_NAME) +curl
+ DEPENDS:=ddns-scripts +curl
endef
-define Package/$(PKG_NAME)_godaddy.com-v1/description
+define Package/ddns-scripts_godaddy.com-v1/description
Dynamic DNS Client scripts extension for GoDaddy.com (require/install cURL)
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_no-ip_com
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts_no-ip_com
+ $(call Package/ddns-scripts/Default)
TITLE:=DDNS extension for No-IP.com
- DEPENDS:=$(PKG_NAME)
+ DEPENDS:=ddns-scripts
endef
-define Package/$(PKG_NAME)_no-ip_com/description
+define Package/ddns-scripts_no-ip_com/description
Dynamic DNS Client scripts extension for No-IP.com
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_nsupdate
- $(call Package/$(PKG_NAME)/Default)
+define Package/ddns-scripts_nsupdate
+ $(call Package/ddns-scripts/Default)
TITLE:=DDNS extension using Bind nsupdate
- DEPENDS:=$(PKG_NAME) +bind-client
+ DEPENDS:=ddns-scripts +bind-client
endef
-define Package/$(PKG_NAME)_nsupdate/description
+define Package/ddns-scripts_nsupdate/description
Dynamic DNS Client scripts extension for direct updates using Bind nsupdate
endef
-define Package/$(PKG_NAME)_nsupdate/config
+define Package/ddns-scripts_nsupdate/config
help
The script directly updates a PowerDNS (or maybe bind server) via nsupdate
from bind-client package. It requires
gzip -f9 $(PKG_BUILD_DIR)/files/public_suffix_list.dat
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/ddns-scripts/conffiles
/etc/config/ddns
endef
###### *************************************************************************
-define Package/$(PKG_NAME)/preinst
+define Package/ddns-scripts/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)/install
+define Package/ddns-scripts/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/dynamic_dns_*.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)/postinst
+define Package/ddns-scripts/postinst
#!/bin/sh
# if NOT run buildroot and PKG_UPGRADE then (re)start service if enabled
[ -z "$${IPKG_INSTROOT}" -a "$${PKG_UPGRADE}" = "1" ] && {
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)/prerm
+define Package/ddns-scripts/prerm
#!/bin/sh
# if run within buildroot exit
[ -n "$${IPKG_INSTROOT}" ] && exit 0
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_cloudflare/preinst
+define Package/ddns-scripts_cloudflare/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_cloudflare/install
+define Package/ddns-scripts_cloudflare/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare
$(INSTALL_DIR) $(1)/usr/share
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com_v1.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)_cloudflare/postinst
+define Package/ddns-scripts_cloudflare/postinst
#!/bin/sh
# remove old services file entries
/bin/sed -i '/cloudflare\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_cloudflare/prerm
+define Package/ddns-scripts_cloudflare/prerm
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_cloudflare.com-v4/preinst
+define Package/ddns-scripts_cloudflare.com-v4/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_cloudflare.com-v4/install
+define Package/ddns-scripts_cloudflare.com-v4/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_cloudflare.com-v4
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_cloudflare_com_v4.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)_cloudflare.com-v4/postinst
+define Package/ddns-scripts_cloudflare.com-v4/postinst
#!/bin/sh
# remove old services file entries
/bin/sed -i '/cloudflare\.com-v4/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_cloudflare.com-v4/prerm
+define Package/ddns-scripts_cloudflare.com-v4/prerm
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_godaddy.com-v1/preinst
+define Package/ddns-scripts_godaddy.com-v1/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_godaddy.com-v1/install
+define Package/ddns-scripts_godaddy.com-v1/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_godaddy.com-v1
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_godaddy_com_v1.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)_godaddy.com-v1/postinst
+define Package/ddns-scripts_godaddy.com-v1/postinst
#!/bin/sh
# remove old services file entries
/bin/sed -i '/godaddy\.com-v1/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_godaddy.com-v1/prerm
+define Package/ddns-scripts_godaddy.com-v1/prerm
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_no-ip_com/preinst
+define Package/ddns-scripts_no-ip_com/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_no-ip_com/install
+define Package/ddns-scripts_no-ip_com/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_no-ip_com
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_no-ip_com.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)_no-ip_com/postinst
+define Package/ddns-scripts_no-ip_com/postinst
#!/bin/sh
# remove old services file entries
/bin/sed -i '/no-ip\.com/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_no-ip_com/prerm
+define Package/ddns-scripts_no-ip_com/prerm
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
endef
###### *************************************************************************
-define Package/$(PKG_NAME)_nsupdate/preinst
+define Package/ddns-scripts_nsupdate/preinst
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_nsupdate/install
+define Package/ddns-scripts_nsupdate/install
$(INSTALL_DIR) $(1)/etc/uci-defaults
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/ddns.defaults $(1)/etc/uci-defaults/ddns_nsupdate
$(INSTALL_DIR) $(1)/usr/lib/ddns
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/update_nsupdate.sh $(1)/usr/lib/ddns
endef
-define Package/$(PKG_NAME)_nsupdate/postinst
+define Package/ddns-scripts_nsupdate/postinst
#!/bin/sh
# remove old services file entries
/bin/sed -i '/bind-nsupdate/d' $${IPKG_INSTROOT}/etc/ddns/services >/dev/null 2>&1
}
exit 0 # suppress errors
endef
-define Package/$(PKG_NAME)_nsupdate/prerm
+define Package/ddns-scripts_nsupdate/prerm
#!/bin/sh
# if NOT run buildroot then stop service
[ -z "$${IPKG_INSTROOT}" ] && /etc/init.d/ddns stop >/dev/null 2>&1
endef
###### *************************************************************************
-$(eval $(call BuildPackage,$(PKG_NAME)))
-$(eval $(call BuildPackage,$(PKG_NAME)_cloudflare))
-$(eval $(call BuildPackage,$(PKG_NAME)_cloudflare.com-v4))
-$(eval $(call BuildPackage,$(PKG_NAME)_godaddy.com-v1))
-$(eval $(call BuildPackage,$(PKG_NAME)_no-ip_com))
-$(eval $(call BuildPackage,$(PKG_NAME)_nsupdate))
+$(eval $(call BuildPackage,ddns-scripts))
+$(eval $(call BuildPackage,ddns-scripts_cloudflare))
+$(eval $(call BuildPackage,ddns-scripts_cloudflare.com-v4))
+$(eval $(call BuildPackage,ddns-scripts_godaddy.com-v1))
+$(eval $(call BuildPackage,ddns-scripts_no-ip_com))
+$(eval $(call BuildPackage,ddns-scripts_nsupdate))
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/dynapoint
SECTION:=net
CATEGORY:=Network
SUBMENU:=wireless
TITLE:=Dynamic access point manager
endef
-define Package/$(PKG_NAME)/description
+define Package/dynapoint/description
Dynapoint uses LUA scripts to allow dynamic access point creation
and deletion depending on changes of certain network conditions.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/dynapoint/conffiles
/etc/config/dynapoint
endef
define Build/Compile
endef
-define Package/$(PKG_NAME)/install
+define Package/dynapoint/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) ./src/dynapoint.lua $(1)/usr/sbin/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_DATA) ./src/dynapoint.config $(1)/etc/config/dynapoint
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,dynapoint))
include $(TOPDIR)/rules.mk
PKG_NAME:=gnunet
-PKG_SOURCE_VERSION:=a4295da3df82817ff2fe1fa547374a96a2e0280b
-PKG_VERSION:=0.10.2-git-20170111-$(PKG_SOURCE_VERSION)
+PKG_SOURCE_VERSION:=65f138e9a6156983ac74f8f1a5b8051d8f9be86a
+PKG_VERSION:=0.10.2-git-20170305-$(PKG_SOURCE_VERSION)
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
$(if $(CONFIG_PACKAGE_libsqlite3),--with-sqlite="$(STAGING_DIR)/usr",--without-sqlite) \
--disable-testing \
--disable-testruns \
- --disable-wachs \
--enable-experimental \
--with-extractor=$(STAGING_DIR)/usr \
--with-gnutls=$(STAGING_DIR)/usr \
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gnunet-$$$$bin $(1)/usr/bin/ ; \
done )
- ( for lib in arm ats block cadet core datacache dht \
+ ( for lib in arm ats block blockgroup cadetnew core datacache dht \
dns dnsparser fragmentation friends hello identity natauto natnew nse \
peerinfo regexblock regex revocation scalarproduct set \
statistics transport util; do \
done )
( for lex in daemon-topology helper-nat-client \
- helper-nat-server service-arm service-ats service-cadet \
+ helper-nat-server service-arm service-ats service-cadet-new \
service-core service-dht service-identity service-nat service-nat-auto \
service-nse service-peerinfo service-regex \
service-revocation service-scalarproduct-alice \
DEPENDS_experiments:=+libglpk
PLUGIN_experiments:=ats_mlp ats_ril
-LIBEXEC_experiments:=service-dht-whanau service-dht-xvine
# BIN_dv:=dv
LIB_dv:=dv
LIBEXEC_rest:=rest-server
CONF_rest:=rest
+DEPENDS_rps:=@BROKEN
BIN_rps:=rps
LIB_rps:=rps
LIBEXEC_rps:=service-rps
include $(TOPDIR)/rules.mk
PKG_NAME:=irssi
-PKG_VERSION:=0.8.21
+PKG_VERSION:=1.0.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
-PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/0.8.21/
-PKG_MD5SUM:=b820760c3b4f3b0c24abe4db82b6366a
+PKG_SOURCE_URL:=https://github.com/irssi/irssi/releases/download/1.0.1/
+PKG_HASH:=9428c51a3f3598ffaef438c351a8d609cf10db34f2435bdcb84456226c383ccf
PKG_FIXUP:=autoreconf
PKG_INSTALL:=1
#
-# Copyright (C) 2014-2016 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
+# Copyright (C) 2014-2017 CZ.NIC, z.s.p.o. <knot-dns@labs.nic.cz>
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
include $(TOPDIR)/rules.mk
PKG_NAME:=knot
-PKG_VERSION:=2.3.0
+PKG_VERSION:=2.3.3
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://secure.nic.cz/files/knot-dns/
-PKG_MD5SUM:=7ca754f972fb07faa4f30e50d8a4385b
+PKG_HASH:=a929bce3b957a81776b1db7b43b0e4473339bf16be8dbba5abb4b0593bf43c94
PKG_MAINTAINER:=Daniel Salzman <daniel.salzman@nic.cz>
PKG_LICENSE:=GPL-3.0 LGPL-2.0 0BSD MIT OLDAP-2.8
define Package/knot-zonecheck/install
$(INSTALL_DIR) $(1)/usr/bin
- $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/kzonecheck $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/kzonecheck $(1)/usr/bin/
endef
define Package/knot-keymgr/install
+++ /dev/null
-From 84849be189c49ef9556bd84d5e5103317372e8a7 Mon Sep 17 00:00:00 2001
-From: Karel Slany <karel.slany@nic.cz>
-Date: Thu, 11 Aug 2016 11:39:39 +0200
-Subject: [PATCH] Added conversion to wire format when writing FNV64 hash
- values.
-
-Test on big-endian machines have been failing.
----
- src/libknot/cookies/alg-fnv64.c | 6 +++---
- tests/libknot/test_cookies-client.c | 20 ++++++++++----------
- tests/libknot/test_cookies-server.c | 20 ++++++++++----------
- 3 files changed, 23 insertions(+), 23 deletions(-)
-
-diff --git a/src/libknot/cookies/alg-fnv64.c b/src/libknot/cookies/alg-fnv64.c
-index 9989a4f..5e263c1 100644
---- a/src/libknot/cookies/alg-fnv64.c
-+++ b/src/libknot/cookies/alg-fnv64.c
-@@ -17,10 +17,10 @@
- #include <assert.h>
- #include <stdint.h>
- #include <stdlib.h>
--#include <string.h>
-
- #include "contrib/fnv/fnv.h"
- #include "contrib/sockaddr.h"
-+#include "contrib/wire.h"
- #include "libknot/attribute.h"
- #include "libknot/cookies/alg-fnv64.h"
- #include "libknot/rrtype/opt-cookie.h"
-@@ -80,7 +80,7 @@ static uint16_t cc_gen_fnv64(const struct knot_cc_input *input,
- assert(KNOT_OPT_COOKIE_CLNT == sizeof(hash_val));
-
- cc_len = sizeof(hash_val);
-- memcpy(cc_out, &hash_val, cc_len);
-+ wire_write_u64(cc_out, hash_val);
-
- return cc_len;
- }
-@@ -127,7 +127,7 @@ static uint16_t sc_gen_fnv64(const struct knot_sc_input *input,
- assert(SRVR_FNV64_HASH_SIZE == sizeof(hash_val));
-
- hash_len = sizeof(hash_val);
-- memcpy(hash_out, &hash_val, hash_len);
-+ wire_write_u64(hash_out, hash_val);
-
- return hash_len;
- }
-diff --git a/tests/libknot/test_cookies-client.c b/tests/libknot/test_cookies-client.c
-index 44be903..712dbba 100644
---- a/tests/libknot/test_cookies-client.c
-+++ b/tests/libknot/test_cookies-client.c
-@@ -110,7 +110,7 @@ int main(int argc, char *argv[])
- hash_len = knot_cc_alg_fnv64.gen_func(&cc_in, hash, hash_len);
- ok(hash_len != 0 && hash_len == knot_cc_alg_fnv64.cc_size, "cookies: FNV64 client cookie output");
- {
-- uint8_t expected[] = { 0x74, 0x31, 0xf9, 0xa8, 0x03, 0xef, 0x15, 0xb1 };
-+ uint8_t expected[] = { 0xb1, 0x15, 0xef, 0x03, 0xa8, 0xf9, 0x31, 0x74 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 client cookie content");
- }
-
-@@ -123,7 +123,7 @@ int main(int argc, char *argv[])
- hash_len = knot_cc_alg_fnv64.gen_func(&cc_in, hash, hash_len);
- ok(hash_len != 0 && hash_len == knot_cc_alg_fnv64.cc_size, "cookies: FNV64 client cookie output");
- {
-- uint8_t expected[] = { 0x7c, 0x62, 0x25, 0xd2, 0x43, 0xdd, 0x09, 0xe7 };
-+ uint8_t expected[] = { 0xe7, 0x09, 0xdd, 0x43, 0xd2, 0x25, 0x62, 0x7c };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 client cookie content");
- }
-
-@@ -136,7 +136,7 @@ int main(int argc, char *argv[])
- hash_len = knot_cc_alg_fnv64.gen_func(&cc_in, hash, hash_len);
- ok(hash_len != 0 && hash_len == knot_cc_alg_fnv64.cc_size, "cookies: FNV64 client cookie output");
- {
-- uint8_t expected[] = { 0x7c, 0x62, 0x25, 0xd2, 0x43, 0xdd, 0x09, 0xe7 };
-+ uint8_t expected[] = { 0xe7, 0x09, 0xdd, 0x43, 0xd2, 0x25, 0x62, 0x7c };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 client cookie content");
- }
-
-@@ -149,7 +149,7 @@ int main(int argc, char *argv[])
- hash_len = knot_cc_alg_fnv64.gen_func(&cc_in, hash, hash_len);
- ok(hash_len != 0 && hash_len == knot_cc_alg_fnv64.cc_size, "cookies: FNV64 client cookie output");
- {
-- uint8_t expected[] = { 0x05, 0xa9, 0xd1, 0x08, 0x1b, 0x98, 0xe0, 0xaa };
-+ uint8_t expected[] = { 0xaa, 0xe0, 0x98, 0x1b, 0x08, 0xd1, 0xa9, 0x05 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 client cookie content");
- }
-
-@@ -162,7 +162,7 @@ int main(int argc, char *argv[])
- hash_len = knot_cc_alg_fnv64.gen_func(&cc_in, hash, hash_len);
- ok(hash_len != 0 && hash_len == knot_cc_alg_fnv64.cc_size, "cookies: FNV64 client cookie output");
- {
-- uint8_t expected[] = { 0x05, 0xa9, 0xd1, 0x08, 0x1b, 0x98, 0xe0, 0xaa };
-+ uint8_t expected[] = { 0xaa, 0xe0, 0x98, 0x1b, 0x08, 0xd1, 0xa9, 0x05 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 client cookie content");
- }
-
-@@ -179,7 +179,7 @@ int main(int argc, char *argv[])
- }
-
- {
-- uint8_t cookie[] = { 0x33, 0x0c, 0xa6, 0x80, 0x94, 0x17, 0xe5, 0xaf };
-+ uint8_t cookie[] = { 0xaf, 0xe5, 0x17, 0x94, 0x80, 0xa6, 0x0c, 0x33 };
- ret = knot_cc_check(cookie, sizeof(cookie), NULL, &knot_cc_alg_fnv64);
- ok(ret == KNOT_EINVAL, "cookies: FNV64 client cookie check no input");
- }
-@@ -190,7 +190,7 @@ int main(int argc, char *argv[])
- cc_in.secret_data = secret;
- cc_in.secret_len = sizeof(secret);
- {
-- uint8_t cookie[] = { 0x33, 0x0c, 0xa6, 0x80, 0x94, 0x17, 0xe5, 0xaf };
-+ uint8_t cookie[] = { 0xaf, 0xe5, 0x17, 0x94, 0x80, 0xa6, 0x0c, 0x33 };
- ret = knot_cc_check(cookie, sizeof(cookie), &cc_in, NULL);
- ok(ret == KNOT_EINVAL, "cookies: FNV64 client cookie check no algorithm");
- }
-@@ -201,7 +201,7 @@ int main(int argc, char *argv[])
- cc_in.secret_data = secret;
- cc_in.secret_len = sizeof(secret);
- {
-- uint8_t cookie[] = { 0x33, 0x0c, 0xa6, 0x80, 0x94, 0x17, 0xe5, 0xaf };
-+ uint8_t cookie[] = { 0xaf, 0xe5, 0x17, 0x94, 0x80, 0xa6, 0x0c, 0x33 };
- ret = knot_cc_check(cookie, sizeof(cookie), &cc_in, &knot_cc_alg_fnv64);
- ok(ret == KNOT_EOK, "cookies: FNV64 client good cookie check");
- }
-@@ -212,7 +212,7 @@ int main(int argc, char *argv[])
- cc_in.secret_data = secret;
- cc_in.secret_len = sizeof(secret);
- {
-- uint8_t cookie[] = { 0x33, 0x0c, 0xa6, 0x80, 0x94, 0x17, 0xe5, 0xaf };
-+ uint8_t cookie[] = { 0xaf, 0xe5, 0x17, 0x94, 0x80, 0xa6, 0x0c, 0x33 };
- ret = knot_cc_check(cookie, sizeof(cookie) - 1, &cc_in, &knot_cc_alg_fnv64);
- ok(ret == KNOT_EINVAL, "cookies: FNV64 client cookie check invalid length");
- }
-@@ -223,7 +223,7 @@ int main(int argc, char *argv[])
- cc_in.secret_data = secret;
- cc_in.secret_len = sizeof(secret);
- {
-- uint8_t cookie[] = { 0x33, 0x0c, 0xa6, 0x80, 0x94, 0x17, 0xe5, 0xae };
-+ uint8_t cookie[] = { 0xaf, 0xe5, 0x17, 0x94, 0x80, 0xa6, 0x0c, 0x32 };
- ret = knot_cc_check(cookie, sizeof(cookie), &cc_in, &knot_cc_alg_fnv64);
- ok(ret == KNOT_EINVAL, "cookies: FNV64 client cookie check invalid cookie");
- }
-diff --git a/tests/libknot/test_cookies-server.c b/tests/libknot/test_cookies-server.c
-index 32001c1..66a54ba 100644
---- a/tests/libknot/test_cookies-server.c
-+++ b/tests/libknot/test_cookies-server.c
-@@ -28,10 +28,10 @@
- #include "libknot/rrtype/opt-cookie.h"
-
- const char *cookie_opts[] = {
-- "\x00\x0a" "\x00\x10" "\x00\x01\x02\x03\x04\x05\x06\x07" "\xe0\xd9\x95\x4e\xbc\xc3\x99\x18", /* 8 octets long wrong server cookie. */
-- "\x00\x0a" "\x00\x10" "\x00\x01\x02\x03\x04\x05\x06\x07" "\xe0\xd9\x95\x4e\xbc\xc3\x99\x19", /* 8 octets long OK server cookie. */
-- "\x00\x0a" "\x00\x18" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\xc0\xbd\xdb\xec\x19\x78\x88\x38", /* 8B nonce 8B hash long wrong server cookie. */
-- "\x00\x0a" "\x00\x18" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\xc0\xbd\xdb\xec\x19\x78\x88\x39" /* 8B nonce 8B hash long OK server cookie. */
-+ "\x00\x0a" "\x00\x10" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x19\x99\xc3\xbc\x4e\x95\xd9\xdf", /* 8 octets long wrong server cookie. */
-+ "\x00\x0a" "\x00\x10" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x19\x99\xc3\xbc\x4e\x95\xd9\xe0", /* 8 octets long OK server cookie. */
-+ "\x00\x0a" "\x00\x18" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x39\x88\x78\x19\xec\xdb\xbd\xbf", /* 8B nonce 8B hash long wrong server cookie. */
-+ "\x00\x0a" "\x00\x18" "\x00\x01\x02\x03\x04\x05\x06\x07" "\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11\x39\x88\x78\x19\xec\xdb\xbd\xc0"/* 8B nonce 8B hash long OK server cookie. */
- };
-
- #define ROPT(i) ((const uint8_t *)cookie_opts[(i)])
-@@ -193,7 +193,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0x75, 0x45, 0x7c, 0x9a, 0xe0, 0x13, 0xa8, 0xea };
-+ uint8_t expected[] = { 0xea, 0xa8, 0x13, 0xe0, 0x9a, 0x7c, 0x45, 0x75 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
-@@ -210,7 +210,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0xc0, 0xbd, 0xdb, 0xec, 0x19, 0x78, 0x88, 0x39 };
-+ uint8_t expected[] = { 0x39, 0x88, 0x78, 0x19, 0xec, 0xdb, 0xbd, 0xc0 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
-@@ -227,7 +227,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0xe0, 0xd9, 0x95, 0x4e, 0xbc, 0xc3, 0x99, 0x19 };
-+ uint8_t expected[] = { 0x19, 0x99, 0xc3, 0xbc, 0x4e, 0x95, 0xd9, 0xe0 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
-@@ -244,7 +244,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0x4d, 0xde, 0xfa, 0x22, 0xb9, 0x0a, 0xcc, 0xd8 };
-+ uint8_t expected[] = { 0xd8, 0xcc, 0x0a, 0xb9, 0x22, 0xfa, 0xde, 0x4d };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
-@@ -261,7 +261,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0xa0, 0x35, 0xe3, 0xe0, 0x78, 0x7a, 0x91, 0xaf };
-+ uint8_t expected[] = { 0xaf, 0x91, 0x7a, 0x78, 0xe0, 0xe3, 0x35, 0xa0 };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
-@@ -278,7 +278,7 @@ int main(int argc, char *argv[])
- hash_len = knot_sc_alg_fnv64.hash_func(&sc_in, hash, hash_len);
- ok(hash_len != 0, "cookies: FNV64 server cookie output");
- {
-- uint8_t expected[] = { 0x8e, 0xa3, 0xf8, 0x97, 0x84, 0x0a, 0x3d, 0x8b };
-+ uint8_t expected[] = { 0x8b, 0x3d, 0x0a, 0x84, 0x97, 0xf8, 0xa3, 0x8e };
- ok(sizeof(expected) == hash_len && 0 == memcmp(expected, hash, hash_len), "cookies: FNV64 server cookie content");
- }
-
---
-2.7.4
-
PKG_NAME:=net-snmp
PKG_VERSION:=5.7.3
-PKG_RELEASE:=3
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/net-snmp
SNMP_MIB_MODULES_INCLUDED = \
+ agent/extend \
agentx \
host/hr_device \
host/hr_disk \
PKG_NAME:=ntp
PKG_VERSION:=4.2.8p9
-PKG_RELEASE:=2
+PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/
+#!/bin/sh
+
NAME=ntpd
-CONFIG=/etc/ntp.conf
-COMMAND=/sbin/$NAME
+COMMAND=/etc/init.d/$NAME
[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
- [ -x $COMMAND ] && [ -r $CONFIG ] && {
- killall ntpd
- /etc/init.d/ntpd start
- } &
+ $COMMAND enabled && {
+ $COMMAND restart
+ }
}
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/privoxy
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
endef
# shown in LuCI package description
-define Package/$(PKG_NAME)/description
+define Package/privoxy/description
$(TITLE) - Homepage: www.privoxy.org
endef
# shown in make menuconfig <Help>
-define Package/$(PKG_NAME)/config
+define Package/privoxy/config
help
Privoxy is a web proxy with advanced filtering capabilities for protecting
privacy, modifying web page content, managing cookies, controlling access,
# needed otherwise errors during compile
MAKE_FLAGS:=
-define Package/$(PKG_NAME)/conffiles
+define Package/privoxy/conffiles
/etc/config/privoxy
/etc/privoxy/user.action
/etc/privoxy/user.filter
/etc/privoxy/user.trust
endef
-define Package/$(PKG_NAME)/preinst
+define Package/privoxy/preinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] && exit 0 # if run within buildroot exit
exit 0 # suppress errors from stop command
endef
-define Package/$(PKG_NAME)/install
+define Package/privoxy/install
if [ -f $(PKG_INSTALL_DIR)/etc/privoxy/trust ]; then \
mv -f $(PKG_INSTALL_DIR)/etc/privoxy/trust $(PKG_INSTALL_DIR)/etc/privoxy/user.trust; \
fi
$(INSTALL_CONF) ./files/privoxy.config $(1)/etc/config/privoxy
endef
-define Package/$(PKG_NAME)/postinst
+define Package/privoxy/postinst
#!/bin/sh
grep -i privoxy $${IPKG_INSTROOT}/etc/services >/dev/null 2>&1 || \
echo -e "privoxy\t8118" >> $${IPKG_INSTROOT}/etc/services
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,privoxy))
# no default dependencies
PKG_DEFAULT_DEPENDS:=
-define Package/$(PKG_NAME)/Default
+define Package/radicale/Default
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
PKGARCH:=all
USERID:=radicale=5232:radicale=5232
endef
-define Package/$(PKG_NAME)-py2
- $(call Package/$(PKG_NAME)/Default)
+define Package/radicale-py2
+ $(call Package/radicale/Default)
TITLE+= (Python 2)
VARIANT:=2
DEPENDS:=+python-logging +python-openssl +python-xml +python-codecs
endef
-define Package/$(PKG_NAME)-py3
- $(call Package/$(PKG_NAME)/Default)
+define Package/radicale-py3
+ $(call Package/radicale/Default)
TITLE+= (Python 3)
VARIANT:=3
DEPENDS:=+python3-logging +python3-openssl +python3-xml +python3-codecs +python3-email
endef
# shown in LuCI package description
-define Package/$(PKG_NAME)-py2/description
+define Package/radicale-py2/description
Radicale CalDAV/CardDAV server (Python 2) - Homepage: http://radicale.org/
endef
-define Package/$(PKG_NAME)-py3/description
+define Package/radicale-py3/description
Radicale CalDAV/CardDAV server (Python 3) - Homepage: http://radicale.org/
endef
# shown in make menuconfig <Help>
-define Package/$(PKG_NAME)-py2/config
+define Package/radicale-py2/config
help
The Radicale Project is a CalDAV (calendar) and CardDAV (contact) server.
It aims to be a light solution, easy to use, easy to install, easy to configure.
Version : $(PKG_VERSION)
Homepage: http://radicale.org/
endef
-Package/$(PKG_NAME)-py3/config = $(Package/$(PKG_NAME)-py2/config)
+Package/radicale-py3/config = $(Package/radicale-py2/config)
-define Package/$(PKG_NAME)-py2/conffiles
+define Package/radicale-py2/conffiles
/etc/config/radicale
/etc/radicale/users
/etc/radicale/rights
endef
-Package/$(PKG_NAME)-py3/conffiles = $(Package/$(PKG_NAME)-py2/conffiles)
+Package/radicale-py3/conffiles = $(Package/radicale-py2/conffiles)
define Build/Configure
# nothing to configure
# nothing to compile
endef
-define Package/$(PKG_NAME)-py2/preinst
+define Package/radicale-py2/preinst
#!/bin/sh
[ -n "$${IPKG_INSTROOT}" ] && exit 0 # if run within buildroot exit
exit 0 # suppress errors from stop command
endef
-define Package/$(PKG_NAME)-py3/preinst
-$(call Package/$(PKG_NAME)-py2/preinst)
+define Package/radicale-py3/preinst
+$(call Package/radicale-py2/preinst)
endef
-define Package/$(PKG_NAME)/inst_all
+define Package/radicale/inst_all
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/radicale.init $(1)/etc/init.d/radicale
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/radicale $(1)/usr/bin/
endef
-define Package/$(PKG_NAME)-py2/install
- $(call Package/$(PKG_NAME)/inst_all, $(1))
+define Package/radicale-py2/install
+ $(call Package/radicale/inst_all, $(1))
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)/radicale
$(CP) $(PKG_BUILD_DIR)/radicale/* $(1)$(PYTHON_PKG_DIR)/radicale
endef
-define Package/$(PKG_NAME)-py3/install
- $(call Package/$(PKG_NAME)/inst_all, $(1))
+define Package/radicale-py3/install
+ $(call Package/radicale/inst_all, $(1))
$(INSTALL_DIR) $(1)$(PYTHON3_PKG_DIR)/radicale
$(CP) $(PKG_BUILD_DIR)/radicale/* $(1)$(PYTHON3_PKG_DIR)/radicale
endef
-define Package/$(PKG_NAME)-py2/postinst
+define Package/radicale-py2/postinst
#!/bin/sh
# patch /usr/bin/radicale force run using python2
/bin/sed -i 's/python/python2/' $${IPKG_INSTROOT}/usr/bin/radicale
endef
-define Package/$(PKG_NAME)-py3/postinst
+define Package/radicale-py3/postinst
#!/bin/sh
# patch /usr/bin/radicale force run using python3
/bin/sed -i 's/python/python3/' $${IPKG_INSTROOT}/usr/bin/radicale
endef
-$(eval $(call BuildPackage,$(PKG_NAME)-py2))
-$(eval $(call BuildPackage,$(PKG_NAME)-py3))
+$(eval $(call BuildPackage,radicale-py2))
+$(eval $(call BuildPackage,radicale-py3))
include $(TOPDIR)/rules.mk
PKG_NAME:=travelmate
-PKG_VERSION:=0.3.5
-PKG_RELEASE:=1
+PKG_VERSION:=0.4.1
+PKG_RELEASE:=2
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/travelmate
SECTION:=net
CATEGORY:=Network
TITLE:=A wlan connection manager for travel router
PKGARCH:=all
endef
-define Package/$(PKG_NAME)/description
+define Package/travelmate/description
A wlan connection manager for travel router.
Please see https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md for further information.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/travelmate/conffiles
/etc/config/travelmate
endef
define Build/Compile
endef
-define Package/$(PKG_NAME)/install
+define Package/travelmate/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) ./files/travelmate.sh $(1)/usr/bin/
$(INSTALL_CONF) ./files/travelmate.conf $(1)/etc/config/travelmate
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,travelmate))
* STA interfaces operating in an "always off" mode, to make sure that the AP is always accessible
* easy setup within normal OpenWrt/LEDE environment
* fast uplink connections
-* support multiple radios
+* "active mode" support, where travelmate will be restarted every n seconds (default 60) and checks the existing uplink connection regardless of ifdown event trigger
+* support of devices with multiple radios
* procd init system support
* procd based hotplug support, the travelmate start will be triggered by interface triggers
* status & debug logging to syslog
* travelmate config options:
* trm\_enabled => main switch to enable/disable the travelmate service (default: '0', disabled)
* trm\_debug => enable/disable debug logging (default: '0', disabled)
+ * trm\_active => keep travelmate in an active state (default: '0', disabled)
* trm\_maxwait => how long (in seconds) should travelmate wait for wlan interface reload action (default: '20')
* trm\_maxretry => how many times should travelmate try to find an uplink after a trigger event (default: '3')
+ * trm\_timeout => timeout in seconds for "active mode" (default: '60')
* trm\_iw => set this option to '0' to use iwinfo for wlan scanning (default: '1', use iw)
* trm\_radio => limit travelmate to a dedicated radio, e.g. 'radio0' (default: not set, use all radios)
* trm\_iface => restrict the procd interface trigger to a (list of) certain wan interface(s) or disable it at all (default: not set, disabled)
config travelmate 'global'
option trm_enabled '0'
option trm_debug '0'
+ option trm_active '0'
option trm_maxwait '20'
option trm_maxretry '3'
+ option trm_timeout '60'
option trm_iw '1'
trm_script="/usr/bin/travelmate.sh"
+boot()
+{
+ ubus -t 30 wait_for network.interface
+ rc_procd start_service
+}
+
start_service()
{
if [ $(/etc/init.d/travelmate enabled; printf ${?}) -eq 0 ]
then
- ubus -t 30 wait_for network.interface
procd_open_instance "travelmate"
- procd_set_param env trm_procd="true"
procd_set_param command "${trm_script}" "${@}"
procd_set_param stdout 1
procd_set_param stderr 1
{
local iface="$(uci -q get travelmate.global.trm_iface)"
- procd_open_trigger
- procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
if [ -z "${iface}" ]
then
procd_add_raw_trigger "interface.*.down" 1000 /etc/init.d/travelmate start
procd_add_interface_trigger "interface.*.down" "${name}" /etc/init.d/travelmate start
done
fi
- procd_close_trigger
+ procd_add_config_trigger "config.change" "travelmate" /etc/init.d/travelmate start
}
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# prepare environment
+# set initial defaults
#
LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-trm_ver="0.3.5"
+trm_ver="0.4.1-2"
+trm_sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
trm_enabled=1
trm_debug=0
+trm_active=0
trm_maxwait=20
trm_maxretry=3
-trm_radio="*"
+trm_timeout=60
trm_iw=1
+# f_envload: load travelmate environment
+#
f_envload()
{
# source required system libraries
fi
}
-# function to bring down all STA interfaces
+# f_prepare: gather radio information & bring down all STA interfaces
#
f_prepare()
{
local config="${1}"
local mode="$(uci -q get wireless."${config}".mode)"
- local network="$(uci -q get wireless."${config}".network)"
+ local radio="$(uci -q get wireless."${config}".device)"
local disabled="$(uci -q get wireless."${config}".disabled)"
- if [ "${mode}" = "sta" ] && [ -n "${network}" ]
+ if [ "${mode}" = "ap" ] && ([ -z "${disabled}" ] || [ "${disabled}" = "0" ]) && \
+ ([ -z "${trm_radio}" ] || [ "${trm_radio}" = "${radio}" ])
+ then
+ trm_radiolist="${trm_radiolist} ${radio}"
+ elif [ "${mode}" = "sta" ]
then
- trm_stalist="${trm_stalist} ${config}_${network}"
+ trm_stalist="${trm_stalist} ${config}_${radio}"
if [ -z "${disabled}" ] || [ "${disabled}" = "0" ]
then
uci -q set wireless."${config}".disabled=1
- f_log "debug" "config: ${config}, interface: ${network}"
fi
fi
+ f_log "debug" "mode: ${mode}, radio: ${radio}, config: ${config}, disabled: ${disabled}"
}
+# f_check: check interface status
+#
f_check()
{
- local ifname cnt=1 mode="${1}"
+ local ifname radio cnt=1 mode="${1}"
trm_ifstatus="false"
while [ ${cnt} -le ${trm_maxwait} ]
do
if [ "${mode}" = "ap" ]
then
- ifname="$(ubus -S call network.wireless status | jsonfilter -l1 -e "@.${trm_radio}.interfaces[@.config.mode=\"ap\"].ifname")"
- if [ -n "${ifname}" ]
- then
- trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -l1 -e "@.${trm_radio}.up")"
- fi
+ for radio in ${trm_radiolist}
+ do
+ trm_ifstatus="$(ubus -S call network.wireless status | jsonfilter -e "@.${radio}.up")"
+ if [ "${trm_ifstatus}" = "true" ]
+ then
+ trm_aplist="${trm_aplist} $(ubus -S call network.wireless status | jsonfilter -e "@.${radio}.interfaces[@.config.mode=\"ap\"].ifname")_${radio}"
+ ifname="${trm_aplist}"
+ else
+ trm_aplist=""
+ trm_ifstatus="false"
+ break
+ fi
+ done
else
ifname="$(ubus -S call network.wireless status | jsonfilter -l1 -e '@.*.interfaces[@.config.mode="sta"].ifname')"
if [ -n "${ifname}" ]
cnt=$((cnt+1))
sleep 1
done
- f_log "debug" "mode: ${mode}, radio: ${trm_radio}, name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}, max-wait: ${trm_maxwait}"
+ f_log "debug" "mode: ${mode}, name: ${ifname}, status: ${trm_ifstatus}, count: ${cnt}, max-wait: ${trm_maxwait}"
}
-# function to write to syslog
+# f_active: keep travelmate in an active state
+#
+f_active()
+{
+ if [ ${trm_active} -eq 1 ]
+ then
+ (sleep ${trm_timeout}; /etc/init.d/travelmate start >/dev/null 2>&1) &
+ fi
+}
+
+# f_log: function to write to syslog
#
f_log()
{
logger -t "travelmate-[${trm_ver}] ${class}" "${log_msg}"
if [ "${class}" = "error" ]
then
- logger -t "travelmate-[${trm_ver}] ${class}" "Please check the online documentation 'https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md'"
+ logger -t "travelmate-[${trm_ver}] ${class}" "Please check the readme 'https://github.com/openwrt/packages/blob/master/net/travelmate/files/README.md' (${trm_sysver})"
+ f_active
exit 255
fi
fi
}
+# f_main: main function for connection handling
+#
f_main()
{
- local ap_list ssid_list config network ssid cnt=1
- local sysver="$(ubus -S call system board | jsonfilter -e '@.release.description')"
+ local ssid_list config ap_radio sta_radio ssid cnt=1
- f_log "info " "start travelmate scanning ..."
f_check "initial"
if [ "${trm_ifstatus}" != "true" ]
then
ubus call network reload
fi
f_check "ap"
- ap_list="$(ubus -S call network.wireless status | jsonfilter -e "@.${trm_radio}.interfaces[@.config.mode=\"ap\"].ifname" | awk '{ORS=" "; print $0}')"
- f_log "debug" "ap-list: ${ap_list}, sta-list: ${trm_stalist}"
- if [ -z "${ap_list}" ] || [ -z "${trm_stalist}" ]
+ f_log "debug" "ap-list: ${trm_aplist}, sta-list: ${trm_stalist}"
+ if [ -z "${trm_aplist}" ] || [ -z "${trm_stalist}" ]
then
f_log "error" "no usable AP/STA configuration found"
fi
- for ap in ${ap_list}
+ for ap in ${trm_aplist}
do
cnt=1
+ ap_radio="${ap##*_}"
+ ap="${ap%%_*}"
+ if [ -z "$(printf "${trm_stalist}" | grep -Fo "_${ap_radio}")" ]
+ then
+ continue
+ fi
while [ ${cnt} -le ${trm_maxretry} ]
do
if [ ${trm_iw} -eq 1 ]
for sta in ${trm_stalist}
do
config="${sta%%_*}"
- network="${sta##*_}"
+ sta_radio="${sta##*_}"
ssid="\"$(uci -q get wireless."${config}".ssid)\""
- if [ -n "$(printf "${ssid_list}" | grep -Fo "${ssid}")" ]
+ if [ -n "$(printf "${ssid_list}" | grep -Fo "${ssid}")" ] && [ "${ap_radio}" = "${sta_radio}" ]
then
uci -q set wireless."${config}".disabled=0
uci -q commit wireless
f_check "sta"
if [ "${trm_ifstatus}" = "true" ]
then
- f_log "info " "wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
+ f_log "info " "wwan interface connected to uplink ${ssid} (${cnt}/${trm_maxretry}, ${trm_sysver})"
sleep 5
return 0
else
uci -q set wireless."${config}".disabled=1
uci -q commit wireless
ubus call network reload
- f_log "info " "wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry}, ${sysver})"
+ f_log "info " "wwan interface can't connect to uplink ${ssid} (${cnt}/${trm_maxretry}, ${trm_sysver})"
fi
fi
done
else
- f_log "info " "empty uplink list (${cnt}/${trm_maxretry}, ${sysver})"
+ f_log "info " "empty uplink list (${cnt}/${trm_maxretry}, ${trm_sysver})"
fi
cnt=$((cnt+1))
sleep 5
done
done
- f_log "info " "no wwan uplink found (${sysver})"
- else
- f_log "info " "wwan uplink still connected (${sysver})"
fi
}
-if [ "${trm_procd}" = "true" ]
-then
- f_envload
- f_main
-fi
+f_envload
+f_main
+f_active
exit 0
PKG_NAME:=unbound
PKG_VERSION:=1.6.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE
config unbound
option manual_conf '1'
- option root_age '30'
+ option root_age '9'
### Hybrid Manual/UCI
You like the UCI. Yet, you need to add some difficult to standardize options, or just are not ready to make a UCI request yet. The files `/etc/unbound/unbound_srv.conf` and `/etc/unbound/unbound_ext.conf` will be copied to Unbounds chroot directory and included during auto generation.
defaults with a bit of balancing. Tiny is close to the published
memory restricted configuration. Small 1/2 medium, and large 2x.
- option root_age '30'
+ option root_age '9'
Days. >90 Disables. Age limit for Unbound root data like root
DNSSEC key. Unbound uses RFC 5011 to manage root key. This could
harm flash ROM. This activity is mapped to "tmpfs," but every so
# This will likely be called outside of "start_service()" context
config_get_bool UNBOUND_B_DNSSEC "$cfg" validator 0
config_get_bool UNBOUND_B_NTP_BOOT "$cfg" validator_ntp 1
- config_get UNBOUND_N_ROOT_AGE "$cfg" root_age 30
+ config_get UNBOUND_N_ROOT_AGE "$cfg" root_age 9
}
##############################################################################
UNBOUND_N_EDNS_SIZE=1280
UNBOUND_N_FWD_PORTS=""
UNBOUND_N_RX_PORT=53
-UNBOUND_N_ROOT_AGE=28
+UNBOUND_N_ROOT_AGE=9
UNBOUND_TTL_MIN=120
fi
+ if [ -f $UNBOUND_KEYFILE ] ; then
+ # Lets not lose RFC 5011 tracking if we don't have to
+ cp -p $UNBOUND_KEYFILE $UNBOUND_KEYFILE.keep
+ fi
+
+
+ # Blind copy /etc/ to /var/lib/
mkdir -p $UNBOUND_VARDIR
rm -f $UNBOUND_VARDIR/dhcp_*
touch $UNBOUND_CONFFILE
# Debian-like package dns-root-data
cp -p /usr/share/dns/root.key $UNBOUND_KEYFILE
- elif [ -x "$UNBOUND_ANCHOR" ] ; then
+ elif [ -x $UNBOUND_ANCHOR ] ; then
$UNBOUND_ANCHOR -a $UNBOUND_KEYFILE
else
fi
fi
-
+
+ if [ -f $UNBOUND_KEYFILE.keep ] ; then
+ # root.key.keep is reused if newest
+ cp -u $UNBOUND_KEYFILE.keep $UNBOUND_KEYFILE
+ rm -f $UNBOUND_KEYFILE.keep
+ fi
+
+
# Ensure access and prepare to jail
chown -R unbound:unbound $UNBOUND_VARDIR
chmod 775 $UNBOUND_VARDIR
config_get UNBOUND_N_EDNS_SIZE "$cfg" edns_size 1280
config_get UNBOUND_N_RX_PORT "$cfg" listen_port 53
- config_get UNBOUND_N_ROOT_AGE "$cfg" root_age 7
+ config_get UNBOUND_N_ROOT_AGE "$cfg" root_age 9
config_get UNBOUND_D_DOMAIN_TYPE "$cfg" domain_type static
config_get UNBOUND_D_DHCP_LINK "$cfg" dhcp_link none
option rebind_protection '1'
option recursion 'passive'
option resource 'small'
- option root_age '28'
+ option root_age '9'
option ttl_min '120'
option unbound_control '0'
option validator '0'
include $(TOPDIR)/rules.mk
PKG_NAME:=vpnbypass
-PKG_VERSION:=1.1.1
-PKG_RELEASE:=4
+PKG_VERSION:=1.3.0
+PKG_RELEASE:=1
PKG_LICENSE:=GPL-3.0+
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
include $(INCLUDE_DIR)/package.mk
-define Package/$(PKG_NAME)
+define Package/vpnbypass
SECTION:=net
CATEGORY:=Network
DEPENDS:=+ip-full +ipset +iptables +ubox +dnsmasq-full
PKGARCH:=all
endef
-define Package/$(PKG_NAME)/description
+define Package/vpnbypass/description
This service can be used to enable simple VPN split tunnelling.
Supports accessing domains, IP ranges outside of your VPN tunnel.
Also supports dedicating local ports/IP ranges for direct internet access (outside of your VPN tunnel).
Please see the README for further information.
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/vpnbypass/conffiles
/etc/config/vpnbypass
endef
define Build/Compile
endef
-define Package/$(PKG_NAME)/install
+define Package/vpnbypass/install
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/files/vpnbypass.init $(1)/etc/init.d/vpnbypass
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_DATA) ./files/vpnbypass.hotplug $(1)/etc/hotplug.d/firewall/94-vpnbypass
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,vpnbypass))
- Proudly made in Canada, using locally-sourced electrons.
## Screenshot (luci-app-vpnbypass)
-![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/vpnbypass/screenshot01.png "screenshot")
+![screenshot](https://raw.githubusercontent.com/stangri/screenshots/master/vpnbypass/screenshot02.png "screenshot")
## Requirements
This service requires following packages to be installed on your router: ```ip-full ipset iptables dnsmasq-full``` (```ip-full``` requires you uninstall ```ip``` first; ```dnsmasq-full``` requires you uninstall ```dnsmasq``` first). Run the following commands to satisfy the requirements:
Domain lists should be in following format/syntax: ```/domain1.com/domain2.com/vpnbypass```. Please don't forget the leading ```/``` and trailing ```/vpnbypass```. There's no validation if you enter something incorrectly -- it just won't work. Please see [Notes/Known Issues](#notesknown-issues) if you want to edit this setting manually, without Web UI.
## What's New
+1.3.0
+- No longer depends on hardcoded WAN interface name (```wan```) works with other interface names (like ```wwan```).
+- Table ID, IPSET name and FW_MARK as well as FW_MASK can be defined in config file.
+- Uses iptables, not ip rules for handling local IPs/ranges.
+- More reliable creation/destruction of VPNBYPASS iptables chain.
+- Updated Web UI enables/start and stops/disables service.
+- Beautified output.
+
+1.2.0
+- More elegant handling of iptables (thanks [@hnyman](https://github.com/hnyman) and [@tohojo](https://github.com/tohojo)!).
+
1.1.1
-- More reliable way of obtaining WAN gateway on boot (thanks @dibdot for the hint!).
+- More reliable way of obtaining WAN gateway on boot (thanks [@dibdot](https://github.com/dibdot) for the hint!).
1.1.0:
- Detects individual IP addresses in the config and converts them to subnet automatically.
- Initial release.
## Notes/Known Issues
-Domains to be accessed outside of VPN tunnel are not defined in ```/etc/config/vpnpass```, but rather in ```/etc/config/dhcp```. To add/delete/edit domains you can use VPN Bypass Web UI or you can edit ```/etc/config/dhcp``` manually or run following commands:
+Domains to be accessed outside of VPN tunnel are handled by dnsmasq and thus are not defined in ```/etc/config/vpnpass```, but rather in ```/etc/config/dhcp```. To add/delete/edit domains you can use VPN Bypass Web UI or you can edit ```/etc/config/dhcp``` manually or run following commands:
```sh
uci add_list dhcp.@dnsmasq[-1].ipset='/github.com/plex.tv/google.com/vpnbypass'
uci add_list dhcp.@dnsmasq[-1].ipset='/hulu.com/netflix.com/nhl.com/vpnbypass'
config vpnbypass 'config'
- option enabled '1'
list localport '32400'
list localsubnet '192.168.1.81/29'
list remotesubnet '25.0.0.0/8'
START=94
USE_PROCD=1
-readonly TID="200" FW_MARK="0x010000" IPSET="vpnbypass"
+readonly __ok__='\033[0;32m[\xe2\x9c\x93]\033[0m'
+readonly __fail__='\033[0;31m[\xe2\x9c\x97]\033[0m'
+readonly __pass__='\033[0;33m[-]\033[0m'
+readonly __error__='\033[0;31mERROR\033[0m'
-output() {
- [ -n "$2" ] && [ ! $(($verbosity & $2)) -gt 0 ] && return 0;
- [ -t 1 ] && echo -e -n "$1"
- [ $(echo -e -n "$1" | wc -l) -gt 0 ] && logger -t "${PKG_NAME:-service} [$$]" "$(echo -e -n ${logmsg}${1})" && logmsg='' || logmsg=${logmsg}${1}
-}
+output() { local msg=$(echo -n "${1/$p_name /service }" | sed 's|\\033\[[0-9]\?;\?[0-9]\?[0-9]\?m||g'); [ -n "$2" ] && [ ! $(($verbosity & $2)) -gt 0 ] && return 0; [ -t 1 ] && echo -e -n "$1"; [ $(echo -e -n "$msg" | wc -l) -gt 0 ] && logger -t "${PKG_NAME:-service} [$$]" "$(echo -e -n ${logmsg}${msg})" && logmsg='' || logmsg=${logmsg}${msg}; }
+PKG_NAME="${PKG_NAME:-vpnbypass}"; p_name="${PKG_NAME} ${PKG_VERSION}"
-vpnbypass_enabled() {
- config_load vpnbypass
- config_get_bool enabled 'config' 'enabled' 0
+is_enabled() {
+ config_load $PKG_NAME
config_get verbosity 'config' 'verbosity' '2'
- PKG_NAME="${PKG_NAME:-vpnbypass}"
- [ -n "$PKG_VERSION" ] && p_name="$PKG_NAME $PKG_VERSION" || p_name="$PKG_NAME"
- [ -t 1 ] || p_name='service'
+ config_get TID 'config' 'table_number' '200'
+ config_get IPSET 'config' 'ipset' 'vpnbypass'
+ config_get FW_MARK 'config' 'fw_mark' '0x010000'
+ config_get FW_MASK 'config' 'fw_mask' '0xff0000'
source /lib/functions/network.sh
- [ "$enabled" -ne "0" ] && return 0
- output "$p_name is not enabled in the config file!\n"
- output "To enable, run 'uci set $PKG_NAME.config.enabled=1; uci commit $PKG_NAME'\n"
- return 1
+ return 0
}
-iptables_reset(){ [ -z "$PKG_NAME" ] && return 1; iptables-save | grep -Fv -- "$PKG_NAME" | iptables-restore; lsmod | grep -q ip6table_nat && ip6tables-save | grep -Fv -- "$PKG_NAME" | ip6tables-restore; }
+ipt() {
+ local d=$(echo $* | sed s/-A/-D/g)
+ [ "$d" != "$*" ] && iptables $d >/dev/null 2>&1
+ d=$(echo $* | sed s/-I/-D/g)
+ [ "$d" != "$*" ] && iptables $d >/dev/null 2>&1
+ d=$(echo $* | sed s/-N/-F/g)
+ [ "$d" != "$*" ] && iptables $d >/dev/null 2>&1
+ d=$(echo $* | sed s/-N/-X/g)
+ [ "$d" != "$*" ] && iptables $d >/dev/null 2>&1
+
+ iptables $* >/dev/null 2>&1
+}
-boot() { ubus -t 30 wait_for network.interface.wan && { rc_procd start_service; rc_procd service_triggers; } || output "ERROR: $p_name failed to settle network interface!\n"; }
+#boot() { ubus -t 30 wait_for network.interface.wan && { rc_procd start_service; rc_procd service_triggers; } || output "ERROR: $p_name failed to settle network interface!\n"; }
start_service() {
local ll c=1
config_load vpnbypass
- vpnbypass_enabled || return 1
+ is_enabled || return 1
config_get lports 'config' 'localport'
config_get rports 'config' 'remoteport'
config_get routes 'config' 'remotesubnet'
procd_set_param stderr 1
procd_close_instance
- while : ; do network_get_ipaddr wanip wan; network_get_gateway gwip wan; [ $c -ge 15 ] && break || let "c+=1"; [ -n "$wanip" -a -n "$gwip" ] && break || output "$p_name waiting for wan gateway...\n"; sleep 2; network_flush_cache; done
- [ -z "$wanip" -o -z "$gwip" ] && output "ERROR: $p_name could not get wan interface IP: $wanip or gateway: $gwip!\n" && exit 0
+ while : ; do
+ network_find_wan wan_if4; [ -n "wan_if4" ] && network_get_gateway wan_gw $wan_if4;
+ [ $c -ge 25 -o -n "$wan_gw" ] && break
+ output "$p_name waiting for wan gateway...\n"; sleep 2; network_flush_cache; let "c+=1";
+ done
+ [ -z "$wan_gw" ] && output "$__error__: $p_name could not discover wan gateway IP!\n" && exit 1
- for ll in ${routes}; do ip route del $ll; ip route add $ll via $gwip; done
- ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; iptables_reset; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
+ ipt -t mangle -N VPNBYPASS; ipt -t mangle -A PREROUTING -m mark --mark 0x00/${FW_MASK} -g VPNBYPASS;
+ ipt -t mangle -A VPNBYPASS -m set --match-set $IPSET dst -j MARK --set-mark ${FW_MARK}/${FW_MASK}
+ ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
ip route flush table "$TID"; ip route flush cache;
- ip route add default via "$gwip" table "$TID"; ip route flush cache;
- { modprobe xt_set; modprobe ip_set; modprobe ip_set_hash_ip; } >/dev/null 2>&1
+ ip route add default via "$wan_gw" table "$TID"; ip route flush cache;
ipset -q -exist create "$IPSET" hash:ip; ipset -q flush "$IPSET"
- for ll in ${lports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --sport "${ll//-/:}" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
- for ll in ${rports}; do iptables -t mangle -A PREROUTING -p tcp -m multiport --dport "${ll//-/:}" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
- for ll in ${ranges}; do iptables -t mangle -I PREROUTING -s "$ll" -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"; done
- iptables -t mangle -A PREROUTING -m set --match-set "$IPSET" dst -j MARK --set-mark "$FW_MARK/$FW_MARK" -m comment --comment "$PKG_NAME"
ip rule add fwmark "$FW_MARK" table "$TID"
+ { modprobe xt_set; modprobe ip_set; modprobe ip_set_hash_ip; } >/dev/null 2>&1
+ for ll in ${ranges}; do ipt -t mangle -I VPNBYPASS 1 -j MARK --set-mark ${FW_MARK}/${FW_MASK} -s "$ll"; done
+ for ll in ${lports}; do ipt -t mangle -I VPNBYPASS 1 -j MARK --set-mark ${FW_MARK}/${FW_MASK} -p tcp -m multiport --sport "${ll//-/:}"; done
+ for ll in ${routes}; do ipt -t mangle -I VPNBYPASS 1 -j MARK --set-mark ${FW_MARK}/${FW_MASK} -d "$ll"; done
+ for ll in ${rports}; do ipt -t mangle -I VPNBYPASS 1 -j MARK --set-mark ${FW_MARK}/${FW_MASK} -p tcp -m multiport --dport "${ll//-/:}"; done
output "$p_name started with TID: $TID; FW_MARK: $FW_MARK\n"
}
stop_service() {
local ll
- vpnbypass_enabled || return 1
- config_get routes 'config' 'remotesubnet'
+ is_enabled || return 1
- for ll in ${routes}; do ip route del "$ll"; done
- ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; iptables_reset; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
+ ip rule del fwmark "$FW_MARK" table "$TID" >/dev/null 2>&1; ipset -q flush "$IPSET"; ipset -q destroy "$IPSET";
ip route flush table "$TID"; ip route flush cache;
+ ipt -t mangle -D PREROUTING -m mark --mark 0x00/${FW_MASK} -g VPNBYPASS
+ ipt -t mangle -F VPNBYPASS; ipt -t mangle -X VPNBYPASS;
output "$p_name stopped\n"
}
-reload_service() { start_service; }
+reload_service(){
+ start_service
+}
+st_load_interfaces(){ local d; config_get d $1 ifname; [ "$1" == "$wan_if4" -o "$d" != "${d/tun}" -o "$d" != "${d/tap}" ] && ifaces=" ${1} ${ifaces}"; }
service_triggers() {
+ local ifaces n
procd_add_reload_trigger 'vpnbypass'
procd_open_trigger
procd_add_config_trigger "config.change" "vpnbypass" /etc/init.d/vpnbypass reload
- procd_add_interface_trigger "interface.*" "wan" /etc/init.d/vpnbypass reload
+ for n in $ifaces; do procd_add_interface_trigger "interface.*" "$n" /etc/init.d/openvpn-policy-routing reload; done;
procd_close_trigger
}
PKG_NAME:=xinetd
PKG_VERSION:=2.3.15
-PKG_RELEASE:=4
+PKG_RELEASE:=5
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://www.xinetd.org
define Package/xinetd/conffiles
/etc/xinetd.conf
+/etc/xinetd.d/
endef
TARGET_CFLAGS += -DNO_RPC
PKG_NAME:=collectd
PKG_VERSION:=5.7.1
-PKG_RELEASE:=2
+PKG_RELEASE:=4
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=https://collectd.org/files/ \
battery \
ceph \
cgroups \
- chrony \
cpusleep \
curl_json \
curl_xml \
lua \
lvm \
lpar \
+ madwifi \
mbmon \
md \
memcachec \
apcups \
ascent \
bind \
+ chrony \
conntrack \
contextswitch \
cpu \
iwinfo \
load \
logfile \
- madwifi \
+ match_empty_counter \
+ match_hashed \
+ match_regex \
+ match_timediff \
+ match_value \
memory \
modbus \
mysql \
$(eval $(call BuildPlugin,apcups,apcups status input,apcups,))
$(eval $(call BuildPlugin,ascent,ascent status input,ascent,+PACKAGE_collectd-mod-ascent:libcurl +PACKAGE_collectd-mod-ascent:libxml2))
$(eval $(call BuildPlugin,bind,BIND server/zone input,bind,+PACKAGE_collectd-mod-bind:libcurl +PACKAGE_collectd-mod-bind:libxml2))
+$(eval $(call BuildPlugin,chrony,chrony status input,chrony,))
$(eval $(call BuildPlugin,conntrack,connection tracking table size input,conntrack,))
$(eval $(call BuildPlugin,contextswitch,context switch input,contextswitch,))
$(eval $(call BuildPlugin,cpu,CPU input,cpu,))
$(eval $(call BuildPlugin,iwinfo,libiwinfo wireless statistics,iwinfo,+PACKAGE_collectd-mod-iwinfo:libiwinfo))
$(eval $(call BuildPlugin,load,system load input,load,))
$(eval $(call BuildPlugin,logfile,log files output,logfile,))
-$(eval $(call BuildPlugin,madwifi,MadWifi status input,madwifi,))
+$(eval $(call BuildPlugin,match-empty-counter,empty-counter match,match_empty_counter,))
+$(eval $(call BuildPlugin,match-hashed,hashed match,match_hashed,))
+$(eval $(call BuildPlugin,match-regex,regex match,match_regex,))
+$(eval $(call BuildPlugin,match-timediff,timediff match,match_timediff,))
+$(eval $(call BuildPlugin,match-value,value match,match_value,))
#$(eval $(call BuildPlugin,mysql,MySQL status input,mysql,+PACKAGE_collectd-mod-mysql:libmysqlclient-r))
$(eval $(call BuildPlugin,memory,physical memory usage input,memory,))
$(eval $(call BuildPlugin,modbus,read variables through libmodbus,modbus,+PACKAGE_collectd-mod-modbus:libmodbus))
--- /dev/null
+#
+# Copyright (C) 2016 - 2017 Stijn Tintel <stijn@linux-ipv6.be>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=domoticz
+PKG_VERSION_MAJOR:=3
+PKG_VERSION_PATCH:=5877
+PKG_VERSION:=$(PKG_VERSION_MAJOR).$(PKG_VERSION_PATCH)
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/domoticz/domoticz/archive/$(PKG_VERSION)/$(PKG_SOURCE)
+PKG_HASH:=fb88edbe428851a7a337a85faa93f6da00713b3ad086ff6957031dc9b3b58bba
+
+PKG_LICENSE:=GPL-3.0
+PKG_LICENSE_FILES:=License.txt
+
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+CMAKE_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Package/domoticz
+ SECTION:=utils
+ CATEGORY:=Utilities
+ TITLE:=Open Source Home Automation System
+ URL:=http://domoticz.com/
+ MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
+ USERID:=domoticz=6144:domoticz=6144
+ DEPENDS:= \
+ +boost \
+ +boost-date_time \
+ +boost-system \
+ +boost-thread \
+ +libcurl \
+ +libmosquittopp \
+ +libopenssl \
+ +libopenzwave \
+ +libsqlite3 \
+ +libstdcpp \
+ +zlib
+endef
+
+define Package/domoticz/description
+ Domoticz is a Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device.
+endef
+
+CMAKE_OPTIONS += \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DUSE_BUILTIN_MQTT=no \
+ -DUSE_BUILTIN_SQLITE=no \
+ -DUSE_STATIC_BOOST=no \
+ -DUSE_STATIC_LIBSTDCXX=no \
+ -DUSE_STATIC_OPENZWAVE=no \
+ -DUSE_PYTHON=no
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ # Fix APPVERSION to suppress update popup
+ sed -i 's/#define APPVERSION.*/#define APPVERSION $(PKG_VERSION_PATCH)/' \
+ $(PKG_BUILD_DIR)/appversion.default
+ # Remove unwanted scripts
+ cd $(PKG_BUILD_DIR)/scripts && rm -rf \
+ buienradar_rain_example.pl \
+ _domoticz_main.bat \
+ download_update.sh \
+ logrotate/ \
+ python/ \
+ readme.txt \
+ restart_domoticz \
+ templates/All.Python \
+ update_domoticz
+endef
+
+define Package/domoticz/install
+ $(INSTALL_DIR) $(1)/etc/config $(1)/etc/hotplug.d/tty $(1)/etc/init.d
+ $(INSTALL_BIN) ./files/domoticz.hotplug $(1)/etc/hotplug.d/tty/domoticz
+ $(INSTALL_BIN) ./files/domoticz.init $(1)/etc/init.d/domoticz
+ $(INSTALL_CONF) ./files/domoticz.config $(1)/etc/config/domoticz
+ $(INSTALL_DIR) $(1)/usr/share/domoticz $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/Config $(1)/usr/share/domoticz/openzwave
+ $(CP) $(PKG_INSTALL_DIR)/usr/scripts $(1)/usr/share/domoticz/
+ $(CP) $(PKG_INSTALL_DIR)/usr/www $(1)/usr/share/domoticz/
+ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/domoticz $(1)/usr/bin/domoticz
+endef
+
+define Package/domoticz/conffiles
+/etc/config/domoticz
+/var/lib/domoticz/
+endef
+
+$(eval $(call BuildPackage,domoticz))
--- /dev/null
+config domoticz
+ option disabled '1'
+ option loglevel '1'
+ option syslog 'daemon'
+ # option sslcert '/path/to/ssl.crt'
+ # option sslkey '/path/to/ssl.key'
+ # option sslpass 'passphrase'
+ option sslwww '0'
+ # CAUTION - by default, /var is not persistent accross reboots
+ # Don't forget the trailing / - domoticz requires it
+ option userdata '/var/lib/domoticz/'
+
+#config device
+# option product '658/200/0'
+# option symlink 'ttyACM-aeotec-zstick-g5'
+
+#config device
+# option serial '526359'
+# option symlink 'ttyUSB-serial'
+
+#config device
+# option usbif '2-1:1.0'
+# option symlink 'ttyUSB-port1'
+
+#config device
+# option product '67b/2303/202'
+# option usbif '2-2:1.0'
+# option symlink 'ttyUSB-port2'
--- /dev/null
+#!/bin/sh
+
+. /lib/functions.sh
+
+[ "$SUBSYSTEM" = "tty" ] || exit 0
+
+add() {
+ local cfg="$1"
+ local product serial symlink usbif
+
+ [ -c "/dev/$DEVICENAME" ] || return
+
+ config_get product "$cfg" product
+ config_get serial "$cfg" serial
+ config_get symlink "$cfg" symlink
+ config_get usbif "$cfg" usbif
+
+ [ -z "$product" -a -z "$serial" -a -z "$usbif" ] && return
+
+ . "/sys/$DEVPATH/device/../uevent"
+ SERIAL="$(cat /sys/$DEVPATH/device/../../serial)" 2>/dev/null
+ USBIF="$(echo $DEVPATH | awk -F/ 'BEGIN {i=3}; /ACM/ {i=2}; END {print $(NF-i)}')"
+
+ [ -n "$product" -a "$product" != "$PRODUCT" ] && return
+ [ -n "$serial" -a "$serial" != "$SERIAL" ] && return
+ [ -n "$usbif" -a "$usbif" != "$USBIF" ] && return
+
+ chgrp domoticz "/dev/$DEVICENAME"
+ chmod g+rw "/dev/$DEVICENAME"
+
+ [ -n "$symlink" ] && ln -s "/dev/$DEVICENAME" "/dev/$symlink"
+}
+
+remove() {
+ local cfg="$1"
+ local symlink
+
+ config_get symlink "$cfg" symlink
+
+ [ "/dev/$DEVICENAME" = "$(readlink /dev/$symlink)" ] && rm "/dev/$symlink"
+}
+
+config_load "domoticz"
+config_foreach "$ACTION" device
--- /dev/null
+#!/bin/sh /etc/rc.common
+
+START=99
+USE_PROCD=1
+PROG=/usr/bin/domoticz
+PIDFILE=/var/run/domoticz.pid
+
+start_domoticz() {
+ local section="$1"
+ local loglevel sslcert sslpass sslwww syslog userdata
+
+ config_get loglevel "$section" "loglevel"
+ config_get sslcert "$section" "sslcert"
+ config_get sslkey "$section" "sslkey"
+ config_get sslpass "$section" "sslpass"
+ config_get sslwww "$section" "sslwww"
+ config_get syslog "$section" "syslog"
+ config_get userdata "$section" "userdata"
+
+ [ -n "$loglevel" ] && procd_append_param command -loglevel "$loglevel"
+ [ -n "$syslog" ] && procd_append_param command -syslog "$syslog"
+ [ -n "$userdata" ] && procd_append_param command -userdata "$userdata"
+ [ -n "$sslcert" -a "${sslwww:-0}" -gt 0 ] && {
+ procd_append_param command -sslcert "$sslcert"
+ procd_append_param command -sslwww "$sslwww"
+ [ -n "$sslkey" ] && procd_append_param command -sslkey "$sslkey"
+ [ -n "$sslpass" ] && procd_append_param command -sslpass "$sslpass"
+ } || procd_append_param command -sslwww 0
+}
+
+start_service() {
+ mkdir -p /var/lib/domoticz
+ chmod 0770 /var/lib/domoticz
+ chown domoticz:domoticz /var/lib/domoticz
+
+ procd_open_instance
+
+ procd_set_param command "$PROG"
+ procd_append_param command -scripts /usr/share/domoticz/scripts/
+ procd_append_param command -wwwroot /usr/share/domoticz/www/
+
+ config_load "domoticz"
+ config_get_bool disabled "$section" "disabled" 0
+ [ "$disabled" -gt 0 ] && return 1
+ config_foreach start_domoticz domoticz
+
+ procd_set_param pidfile "$PIDFILE"
+ procd_set_param respawn
+ procd_set_param stdout 0
+ procd_set_param term_timeout 10
+ procd_set_param user "domoticz"
+
+ procd_close_instance
+}
--- /dev/null
+From 2504f02de752aceb5a3c1d4749032147efde8082 Mon Sep 17 00:00:00 2001
+From: dwmw2 <dwmw2@infradead.org>
+Date: Fri, 3 Feb 2017 07:40:35 +0000
+Subject: [PATCH] Add -sslkey option to allow separate cert/key files (#1195)
+
+---
+ main/domoticz.cpp | 11 +++++++++++
+ webserver/server_settings.hpp | 2 +-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+--- a/main/domoticz.cpp
++++ b/main/domoticz.cpp
+@@ -76,6 +76,7 @@ const char *szHelp=
+ #ifdef WWW_ENABLE_SSL
+ "\t-sslwww port (for example -sslwww 443, or -sslwww 0 to disable https)\n"
+ "\t-sslcert file_path (for example /opt/domoticz/server_cert.pem)\n"
++ "\t-sslkey file_path (if different from certificate file)\n"
+ "\t-sslpass passphrase (to access to server private key in certificate)\n"
+ "\t-sslmethod method (for SSL method)\n"
+ "\t-ssloptions options (for SSL options, default is 'default_workarounds,no_sslv2,single_dh_use')\n"
+@@ -682,6 +683,16 @@ int main(int argc, char**argv)
+ return 1;
+ }
+ secure_webserver_settings.cert_file_path = cmdLine.GetSafeArgument("-sslcert", 0, "");
++ secure_webserver_settings.private_key_file_path = secure_webserver_settings.cert_file_path;
++ }
++ if (cmdLine.HasSwitch("-sslkey"))
++ {
++ if (cmdLine.GetArgumentCount("-sslkey") != 1)
++ {
++ _log.Log(LOG_ERROR, "Please specify a file path for your server SSL key file");
++ return 1;
++ }
++ secure_webserver_settings.private_key_file_path = cmdLine.GetSafeArgument("-sslkey", 0, "");
+ }
+ if (cmdLine.HasSwitch("-sslpass"))
+ {
+--- a/webserver/server_settings.hpp
++++ b/webserver/server_settings.hpp
+@@ -227,7 +227,7 @@ public:
+ // use certificate file for all usage by default
+ certificate_chain_file_path = ssl_settings.cert_file_path;
+ ca_cert_file_path = ssl_settings.cert_file_path;
+- private_key_file_path = ssl_settings.cert_file_path;
++ private_key_file_path = ssl_settings.private_key_file_path;
+ tmp_dh_file_path = ssl_settings.cert_file_path;
+ verify_file_path = ssl_settings.cert_file_path;
+ }
--- /dev/null
+diff --git a/hardware/evohome.cpp b/hardware/evohome.cpp
+index fcbee6d..f77291e 100644
+--- a/hardware/evohome.cpp
++++ b/hardware/evohome.cpp
+@@ -423,11 +423,11 @@ void CEvohome::RunScript(const char *pdata, const unsigned char length)
+ boost::replace_all(OnAction, "{state}", s_strid.str());
+ boost::replace_all(OnAction, "{until}", CEvohomeDateTime::GetISODate(tsen->EVOHOME2));
+ //Execute possible script
+- std::string scriptname;
+- if (OnAction.find("script:///") != std::string::npos)
+- scriptname = OnAction.substr(9);
+- else
+- scriptname = OnAction.substr(8);
++ std::string scriptname = OnAction.substr(9);
++#if !defined WIN32
++ if (scriptname.find("/") != 0)
++ scriptname = szUserDataFolder + "scripts/" + scriptname;
++#endif
+ std::string scriptparams="";
+ //Add parameters
+ int pindex=scriptname.find(' ');
+@@ -439,7 +439,7 @@ void CEvohome::RunScript(const char *pdata, const unsigned char length)
+
+ if (file_exist(scriptname.c_str()))
+ {
+- m_sql.AddTaskItem(_tTaskItem::ExecuteScript(1,scriptname,scriptparams));
++ m_sql.AddTaskItem(_tTaskItem::ExecuteScript(0.2f,scriptname,scriptparams));
+ }
+ else
+ _log.Log(LOG_ERROR,"evohome: Error script not found '%s'",scriptname.c_str());
+@@ -1321,7 +1321,7 @@ bool CEvohome::DecodeZoneName(CEvohomeMsg &msg)
+ }
+ if(memcmp(&msg.payload[2],m_szNameErr,18)==0)
+ {
+- Log(true,LOG_STATUS,"evohome: %s: Warning zone name not set: %d", tag, msg.payload[0]);
++ Log(true,LOG_STATUS,"evohome: %s: Warning zone name not set: %d", tag, msg.payload[0]+1);
+ m_bStartup[0]=false;
+ return true;
+ }
+@@ -1606,9 +1606,11 @@ bool CEvohome::DecodeBatteryInfo(CEvohomeMsg &msg)
+ RFX_SETID3(msg.GetID(0),tsen.EVOHOME2.id1,tsen.EVOHOME2.id2,tsen.EVOHOME2.id3)
+ tsen.EVOHOME2.updatetype = updBattery;
+
+- double dbCharge=0;
+- if(nBattery!=0xFF)
+- dbCharge=(double)nBattery/2.0; //Presumed to be the charge level where sent
++ if (nBattery == 0xFF)
++ nBattery = 100; // recode full battery (0xFF) to 100 for consistency across device types
++ else
++ nBattery = nBattery / 2; // recode battery level values to 0-100 from original 0-200 values
++
+ if(nLowBat==0)
+ nBattery=0;
+ tsen.EVOHOME2.battery_level=nBattery;
+@@ -1657,9 +1659,11 @@ bool CEvohome::DecodeBatteryInfo(CEvohomeMsg &msg)
+ tsen.EVOHOME2.type=pTypeEvohomeWater;
+ tsen.EVOHOME2.subtype=sTypeEvohomeWater;
+ tsen.EVOHOME2.zone=nDevNo;
+- sDecodeRXMessage(this, (const unsigned char *)&tsen.EVOHOME2, NULL, nBattery);
++ RFX_SETID3(GetControllerID(), tsen.EVOHOME2.id1, tsen.EVOHOME2.id2, tsen.EVOHOME2.id3);
++ sDecodeRXMessage(this, (const unsigned char *)&tsen.EVOHOME2, "DHW Temp", nBattery); // Update DHW Zone sensor
+ }
+- Log(true,LOG_STATUS,"evohome: %s: %s=%d charge=%d (%.1f %%) level=%d (%s)",tag,szType.c_str(),nDevNo,nBattery,dbCharge,nLowBat,(nLowBat==0)?"Low":"OK");
++
++ Log(true,LOG_STATUS,"evohome: %s: %s=%d charge=%d(%%) level=%d (%s)",tag,szType.c_str(),nDevNo,nBattery,nLowBat,(nLowBat==0)?"Low":"OK");
+
+ return true;
+ }
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -606,8 +606,6 @@ else()
+ target_link_libraries(domoticz -lrt ${Boost_LIBRARIES} ${ZLIB_LIBRARIES} ${CURL_LIBRARIES} pthread ${LUA_LIBRARIES} ${MQTT_LIBRARIES} ${SQLite_LIBRARIES} ${CMAKE_DL_LIBS} ${TELLDUS_LIBRARIES} ${EXECINFO_LIBRARIES})
+ ENDIF()
+
+-ADD_PRECOMPILED_HEADER(domoticz "main/stdafx.h")
+-
+ IF(CMAKE_COMPILER_IS_GNUCXX)
+ option(USE_STATIC_LIBSTDCXX "Build with static libgcc/libstdc++ libraries" YES)
+ IF(USE_STATIC_LIBSTDCXX)
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -534,39 +534,6 @@ IF(OpenZWave)
+ target_link_libraries(domoticz ${OpenZWave})
+ include_directories(${CMAKE_SOURCE_DIR}/hardware/openzwave)
+ add_definitions(-DWITH_OPENZWAVE)
+- # open-zwave needs libudev
+- IF(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+- set(IOKIT_LIBRARY "-framework IOKit -framework CoreFoundation" CACHE FILEPATH "IOKit framework" FORCE)
+- target_link_libraries(domoticz ${IOKIT_LIBRARY})
+- else()
+- IF(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+- MESSAGE(STATUS "Building on FreeBSD, libudev not needed!")
+- FIND_PATH(ICONV_INCLUDE_DIR iconv.h)
+- FIND_LIBRARY(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c)
+- IF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+- SET(ICONV_FOUND TRUE)
+- #target_link_libraries(domoticz ${ICONV_INCLUDE_DIR})
+- target_link_libraries(domoticz ${ICONV_LIBRARIES} -lrt)
+- message(STATUS ${ICONV_LIBRARIES})
+- else()
+- MESSAGE(FATAL_ERROR "libiconv not found on your system")
+- ENDIF(ICONV_INCLUDE_DIR AND ICONV_LIBRARIES)
+- else()
+- find_library(UDEV NAMES libudev.a)
+- IF(UDEV)
+- message(STATUS ${UDEV})
+- target_link_libraries(domoticz ${UDEV} -lrt)
+- else()
+- find_library(UDEV NAMES libudev.so)
+- IF(UDEV)
+- message(STATUS ${UDEV})
+- target_link_libraries(domoticz ${UDEV} -lrt)
+- else()
+- MESSAGE(FATAL_ERROR "LIB UDEV not found on your system, see install.txt how to get them installed.\nsudo apt-get install libudev-dev")
+- ENDIF(UDEV)
+- ENDIF(UDEV)
+- ENDIF()
+- ENDIF()
+ else()
+ MESSAGE(STATUS "==== OpenZWave not found, support disabled!")
+ ENDIF(OpenZWave)
--- /dev/null
+--- a/hardware/OpenZWave.cpp
++++ b/hardware/OpenZWave.cpp
+@@ -993,7 +993,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
+@@ -44,7 +44,7 @@ extern "C" {
+ using namespace boost::python;
+ #endif
+
+-extern std::string szUserDataFolder;
++extern std::string szScriptsFolder;
+
+ CEventSystem::CEventSystem(void)
+ {
+@@ -1086,9 +1086,9 @@ void CEventSystem::EvaluateEvent(const s
+ std::stringstream lua_DirT;
+
+ #ifdef WIN32
+- lua_DirT << szUserDataFolder << "scripts\\lua\\";
++ lua_DirT << szScriptsFolder << "lua\\";
+ #else
+- lua_DirT << szUserDataFolder << "scripts/lua/";
++ lua_DirT << szScriptsFolder << "lua/";
+ #endif
+
+ std::string lua_Dir = lua_DirT.str();
+@@ -1139,9 +1139,9 @@ void CEventSystem::EvaluateEvent(const s
+ {
+ std::stringstream python_DirT;
+ #ifdef WIN32
+- python_DirT << szUserDataFolder << "scripts\\python\\";
++ python_DirT << szScriptsFolder << "python\\";
+ #else
+- python_DirT << szUserDataFolder << "scripts/python/";
++ python_DirT << szScriptsFolder << "python/";
+ #endif
+
+ std::string python_Dir = python_DirT.str();
+@@ -2021,7 +2021,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(1, sPath, sParam));
+@@ -2133,9 +2133,9 @@ void CEventSystem::EvaluatePython(const
+ std::stringstream python_DirT;
+
+ #ifdef WIN32
+- python_DirT << szUserDataFolder << "scripts\\python\\";
++ python_DirT << szScriptsFolder << "python\\";
+ #else
+- python_DirT << szUserDataFolder << "scripts/python/";
++ python_DirT << szScriptsFolder << "python/";
+ #endif
+ std::string python_Dir = python_DirT.str();
+ if(!Py_IsInitialized()) {
+@@ -3909,9 +3909,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_applyXPath(lua_State* lua_state)
+ {
+@@ -319,9 +319,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
+@@ -612,6 +612,7 @@ const char *sqlCreateMobileDevices =
+ "[LastUpdate] DATETIME DEFAULT(datetime('now', 'localtime'))"
+ ");";
+
++extern std::string szScriptsFolder;
+ extern std::string szUserDataFolder;
+
+ CSQLHelper::CSQLHelper(void)
+@@ -3408,9 +3409,9 @@ unsigned long long CSQLHelper::UpdateVal
+ //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()))
+ {
+@@ -6460,7 +6461,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
+@@ -6492,7 +6493,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
+@@ -55,6 +55,7 @@
+
+ #define round(a) ( int ) ( a + .5 )
+
++extern std::string szScriptsFolder;
+ extern std::string szUserDataFolder;
+ extern std::string szWWWFolder;
+
+@@ -2614,9 +2615,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
+@@ -135,6 +135,7 @@ static const _facilities facilities[] =
+ };
+ std::string logfacname = "user";
+ #endif
++std::string szScriptsFolder;
+ std::string szStartupFolder;
+ std::string szUserDataFolder;
+ std::string szWWWFolder;
+@@ -603,6 +604,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
+@@ -139,6 +139,7 @@
+
+ #define round(a) ( int ) ( a + .5 )
+
++extern std::string szScriptsFolder;
+ extern std::string szStartupFolder;
+ extern std::string szUserDataFolder;
+ extern std::string szWWWFolder;
+@@ -1394,8 +1395,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)
+ {
+@@ -97,7 +97,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
+@@ -20,7 +20,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;
+@@ -222,11 +222,11 @@ void CGooglePubSubPush::DoGooglePubSubPu
+
+ #ifdef ENABLE_PYTHON
+ #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
+
+ char * argv[1];
--- /dev/null
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -476,20 +476,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
include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/nls.mk
-define Package/$(PKG_NAME)
+define Package/mc
SECTION:=utils
CATEGORY:=Utilities
DEPENDS:=+glib2 +libncurses +libmount +MC_VFS:libssh2 $(LIBRPC_DEPENDS) $(ICONV_DEPENDS)
MENU:=1
endef
-define Package/$(PKG_NAME)/config
+define Package/mc/config
source "$(SOURCE)/Config.in"
endef
-define Package/$(PKG_NAME)/description
+define Package/mc/description
GNU Midnight Commander is a visual file manager.
It's a feature rich full-screen text mode application that allows you to copy,
move and delete files and whole directory trees, search for files and run commands in the subshell.
--disable-vfs
endif
-define Package/$(PKG_NAME)/install
+define Package/mc/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/mc $(1)/usr/bin
$(INSTALL_DIR) $(1)/etc/mc
$(INSTALL_DIR) $(1)/etc/mc/mcedit/Syntax
endef
-define Package/$(PKG_NAME)/conffiles
+define Package/mc/conffiles
/etc/mc/mc.menu
/etc/mc/skins/default.ini
endef
-$(eval $(call BuildPackage,$(PKG_NAME)))
+$(eval $(call BuildPackage,mc))
--- /dev/null
+#
+# Copyright (C) 2017 Hauke Mehrtens <hauke@hauke-m.de>
+# Copyright (C) 2016 - 2017 Stijn Tintel <stijn@linux-ipv6.be>
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=openzwave
+PKG_REV:=164
+PKG_VERSION:=1.4.$(PKG_REV)
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://old.openzwave.com/downloads
+PKG_HASH:=4ecf39787aaf278c203764069b581dbc26094ce57cafeab4a0c1f012d2c0ac69
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/openzwave/default
+ URL:=http://openzwave.com
+ MAINTAINER:=Stijn Tintel <stijn@linux-ipv6.be>
+ DEPENDS:=+libpthread +libstdcpp
+endef
+
+define Package/openzwave/description
+ Open-ZWave is a library that interfaces with selected Z-Wave PC controllers
+endef
+
+define Package/libopenzwave
+$(call Package/openzwave/default)
+ SECTION:=Libs
+ CATEGORY:=Libraries
+ TITLE:=Open-ZWave Library
+endef
+
+define Package/openzwave
+$(call Package/openzwave/default)
+ SECTION:=Utils
+ CATEGORY:=Utilities
+ TITLE:=Open-ZWave MinOZW test utility
+ DEPENDS:=+libopenzwave +openzwave-config
+endef
+
+define Package/openzwave-config
+$(call Package/openzwave/default)
+ SECTION:=Utils
+ CATEGORY:=Utilities
+ TITLE:=Open-ZWave Device Configs
+endef
+
+MAKE_FLAGS += \
+ LD="$(TARGET_CROSS)g++" \
+ PREFIX=$(CONFIGURE_PREFIX) \
+ instlibdir=/usr/lib \
+ pkgconfigdir=/usr/lib/pkgconfig \
+ sysconfdir=/etc/openzwave
+
+define Build/Prepare
+ $(call Build/Prepare/Default)
+ rm $(PKG_BUILD_DIR)/cpp/src/platform/HidController.*
+ sed -i -e '/hidapi/d;/HidController/d' $(PKG_BUILD_DIR)/distfiles.mk
+endef
+
+define Package/libopenzwave/install
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenzwave.so* $(1)/usr/lib/
+endef
+
+define Package/openzwave/install
+ $(INSTALL_DIR) $(1)/usr/bin
+ $(CP) $(PKG_INSTALL_DIR)/usr/bin/MinOZW $(1)/usr/bin/
+endef
+
+define Package/openzwave-config/install
+ $(INSTALL_DIR) $(1)/etc/
+ $(CP) $(PKG_INSTALL_DIR)/etc/openzwave $(1)/etc/
+endef
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(1)/usr/include
+ $(CP) $(PKG_INSTALL_DIR)/usr/include/openzwave $(1)/usr/include/
+ $(INSTALL_DIR) $(1)/usr/lib
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/libopenzwave.* $(1)/usr/lib/
+ $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+ $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libopenzwave.pc $(1)/usr/lib/pkgconfig/
+endef
+
+$(eval $(call BuildPackage,libopenzwave))
+$(eval $(call BuildPackage,openzwave))
+$(eval $(call BuildPackage,openzwave-config))
--- /dev/null
+From eab45f0959ccb1deb662c6f8c036651088e2e8d6 Mon Sep 17 00:00:00 2001
+From: Stijn Tintel <stijn@linux-ipv6.be>
+Date: Fri, 17 Feb 2017 05:42:25 +0100
+Subject: [PATCH] unix: fix compilation against musl libc (#1127)
+
+POSIX.1-2001 requires sys/select.h for select() and friends.
+Compile-tested on glibc and musl, runtime tested on musl.
+
+Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
+---
+ cpp/src/platform/unix/SerialControllerImpl.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/cpp/src/platform/unix/SerialControllerImpl.cpp b/cpp/src/platform/unix/SerialControllerImpl.cpp
+index d95f848..b52b74f 100644
+--- a/cpp/src/platform/unix/SerialControllerImpl.cpp
++++ b/cpp/src/platform/unix/SerialControllerImpl.cpp
+@@ -25,6 +25,7 @@
+ // along with OpenZWave. If not, see <http://www.gnu.org/licenses/>.
+ //
+ //-----------------------------------------------------------------------------
++#include <sys/select.h>
+ #include <unistd.h>
+ #include <pthread.h>
+ #include "Defs.h"
+--
+2.10.2
+
--- /dev/null
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -15,7 +15,7 @@
+ # what flags we will use for compiling in debug mode
+ DEBUG_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-inline -Wno-format -Werror -Wno-error=sequence-point -Wno-sequence-point -ggdb -DDEBUG -fPIC -DSYSCONFDIR="\"$(PREFIX)/etc/openzwave/\""
+ # what flags we will use for compiling in release mode
+-RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Werror -Wno-format -Wno-error=sequence-point -Wno-sequence-point -O3 -DNDEBUG -fPIC -DSYSCONFDIR="\"$(PREFIX)/etc/openzwave/\""
++RELEASE_CFLAGS := -Wall -Wno-unknown-pragmas -Wno-error=sequence-point -Wno-sequence-point -DNDEBUG -fPIC -DSYSCONFDIR="\"/etc/openzwave/\""
+ #what flags we will use for linking in debug mode
+ DEBUG_LDFLAGS := -g
+
+@@ -139,7 +139,7 @@ $(LIBDIR)/libopenzwave.a: $(patsubst %.c
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(indep)) \
+ $(OBJDIR)/vers.o
+ @echo "Linking Static Library"
+- @$(AR) $@ $+
++ @$(AR) q $@ $+
+ @$(RANLIB) $@
+
+ $(LIBDIR)/$(SHARED_LIB_NAME): $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+@@ -161,7 +161,7 @@ $(top_builddir)/libopenzwave.pc: $(top_s
+ -e 's|[@]exec_prefix@|$(PREFIX)/bin|g' \
+ -e 's|[@]libdir@|$(instlibdir)|g' \
+ -e 's|[@]includedir@|$(PREFIX)/include/openzwave/|g' \
+- -e 's|[@]sysconfdir@|$(PREFIX)/etc/openzwave/|g' \
++ -e 's|[@]sysconfdir@|/etc/openzwave/|g' \
+ -e 's|[@]gitversion@|$(GITVERSION)|g' \
+ -e 's|[@]docdir@|$(docdir)/|g' \
+ -e 's|[@]VERSION@|$(VERSION)|g' \
--- /dev/null
+--- a/cpp/src/Driver.cpp
++++ b/cpp/src/Driver.cpp
+@@ -37,11 +37,6 @@
+ #include "platform/Event.h"
+ #include "platform/Mutex.h"
+ #include "platform/SerialController.h"
+-#ifdef WINRT
+-#include "platform/winRT/HidControllerWinRT.h"
+-#else
+-#include "platform/HidController.h"
+-#endif
+ #include "platform/Thread.h"
+ #include "platform/Log.h"
+ #include "platform/TimeStamp.h"
+@@ -223,14 +218,7 @@ m_nonceReportSentAttempt( 0 )
+
+ initNetworkKeys(false);
+
+- if( ControllerInterface_Hid == _interface )
+- {
+- m_controller = new HidController();
+- }
+- else
+- {
+- m_controller = new SerialController();
+- }
++ m_controller = new SerialController();
+ m_controller->SetSignalThreshold( 1 );
+
+ Options::Get()->GetOptionAsBool( "NotifyTransactions", &m_notifytransactions );
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -66,16 +66,7 @@ CFLAGS += $(CPPFLAGS)
+ #where to put the temporary library
+ LIBDIR ?= $(top_builddir)
+
+-INCLUDES := -I $(top_srcdir)/cpp/src -I $(top_srcdir)/cpp/tinyxml/ -I $(top_srcdir)/cpp/hidapi/hidapi/
+-
+-ifeq ($(UNAME),Darwin)
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/mac
+-else ifeq ($(UNAME),FreeBSD)
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/libusb
+-else
+-SOURCES_HIDAPI =$(top_srcdir)/cpp/hidapi/linux
+-endif
+-
++INCLUDES := -I $(top_srcdir)/cpp/src -I $(top_srcdir)/cpp/tinyxml/
+
+ SOURCES := $(top_srcdir)/cpp/src $(top_srcdir)/cpp/src/command_classes $(top_srcdir)/cpp/tinyxml \
+ $(top_srcdir)/cpp/src/value_classes $(top_srcdir)/cpp/src/platform $(top_srcdir)/cpp/src/platform/unix $(SOURCES_HIDAPI) $(top_srcdir)/cpp/src/aes/
+@@ -85,14 +76,6 @@ VPATH = $(top_srcdir)/cpp/src:$(top_srcd
+
+ tinyxml := $(notdir $(wildcard $(top_srcdir)/cpp/tinyxml/*.cpp))
+
+-ifeq ($(UNAME),Darwin)
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/mac/*.c))
+-else ifeq ($(UNAME),FreeBSD)
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/libusb/*.c))
+-else
+-hidapi := $(notdir $(wildcard $(top_srcdir)/cpp/hidapi/linux/*.c)) # we do not want the libusb version
+-endif
+-
+ cclasses := $(notdir $(wildcard $(top_srcdir)/cpp/src/command_classes/*.cpp))
+ vclasses := $(notdir $(wildcard $(top_srcdir)/cpp/src/value_classes/*.cpp))
+ pform := $(notdir $(wildcard $(top_srcdir)/cpp/src/platform/*.cpp)) \
+@@ -111,7 +94,6 @@ printversion:
+
+
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(tinyxml))
+--include $(patsubst %.c,$(DEPDIR)/%.d,$(hidapi))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(cclasses))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(vclasses))
+ -include $(patsubst %.cpp,$(DEPDIR)/%.d,$(pform))
+@@ -131,7 +113,6 @@ $(top_srcdir)/cpp/src/vers.cpp:
+ #$(OBJDIR)/vers.o: $(top_builddir)/vers.cpp
+
+ $(LIBDIR)/libopenzwave.a: $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+- $(patsubst %.c,$(OBJDIR)/%.o,$(hidapi)) \
+ $(patsubst %.c,$(OBJDIR)/%.o,$(aes)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(cclasses)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(vclasses)) \
+@@ -143,7 +124,6 @@ $(LIBDIR)/libopenzwave.a: $(patsubst %.c
+ @$(RANLIB) $@
+
+ $(LIBDIR)/$(SHARED_LIB_NAME): $(patsubst %.cpp,$(OBJDIR)/%.o,$(tinyxml)) \
+- $(patsubst %.c,$(OBJDIR)/%.o,$(hidapi)) \
+ $(patsubst %.c,$(OBJDIR)/%.o,$(aes)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(cclasses)) \
+ $(patsubst %.cpp,$(OBJDIR)/%.o,$(vclasses)) \
--- /dev/null
+--- a/cpp/src/platform/unix/SerialControllerImpl.cpp
++++ b/cpp/src/platform/unix/SerialControllerImpl.cpp
+@@ -34,10 +34,6 @@
+ #include "SerialControllerImpl.h"
+ #include "platform/Log.h"
+
+-#ifdef __linux__
+-#include <libudev.h>
+-#endif
+-
+ using namespace OpenZWave;
+
+ //-----------------------------------------------------------------------------
+--- a/cpp/build/Makefile
++++ b/cpp/build/Makefile
+@@ -59,7 +59,7 @@ endif
+
+ else
+ LDFLAGS += -shared -Wl,-soname,libopenzwave.so.$(VERSION)
+-LIBS += -ludev
++LIBS +=
+ endif
+ CFLAGS += $(CPPFLAGS)
+
# templates
#
-define Package/$(PKG_NAME)/Default
+define Package/owfs/Default
TITLE:=OWFS (1-Wire File System)
URL:=http://owfs.sourceforge.net/
SECTION:=net
SUBMENU:=Filesystem
endef
-define Package/$(PKG_NAME)/Default/description
+define Package/owfs/Default/description
OWFS is a suite of programs that designed to make the 1-wire bus and its
devices easily accessible. The underlying principle is to create a virtual
filesystem, with the unique ID being the directory, and the individual
endef
define Package/libow/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS library.
endef
endef
define Package/libow-capi/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS C-API library.
endef
endef
define Package/owshell/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS shell utilities.
endef
endef
define Package/owfs/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS fuse filesystem.
endef
endef
define Package/owhttpd/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS http server.
endef
endef
define Package/owftpd/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS ftp server.
endef
endef
define Package/owserver/description
- $(call Package/$(PKG_NAME)/Default/description)
+ $(call Package/owfs/Default/description)
This package contains the OWFS network server.
endef
include $(TOPDIR)/rules.mk
PKG_NAME:=screen
-PKG_VERSION:=4.3.1
+PKG_VERSION:=4.5.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_HASH:=97db2114dd963b016cd4ded34831955dcbe3251e5eee45ac2606e67e9f097b2d
PKG_SOURCE_URL:=@GNU/screen
-PKG_MD5SUM:=5bb3b0ff2674e29378c31ad3411170ad
PKG_LICENSE:=GPL-3.0+
PKG_LICENSE_FILES:=
include $(TOPDIR)/rules.mk
PKG_NAME:=zoneinfo
-PKG_VERSION:=2016j
-PKG_VERSION_CODE:=2016j
+PKG_VERSION:=2017a
+PKG_VERSION_CODE:=2017a
PKG_RELEASE:=1
#As i couldn't find real license used "Public Domain"
PKG_SOURCE:=tzdata$(PKG_VERSION).tar.gz
PKG_SOURCE_CODE:=tzcode$(PKG_VERSION_CODE).tar.gz
PKG_SOURCE_URL:=http://www.iana.org/time-zones/repository/releases
-PKG_MD5SUM:=db361d005ac8b30a2d18c5ca38d3e8ab
+PKG_MD5SUM:=cb8274cd175f8a4d9d1b89895df876dc
include $(INCLUDE_DIR)/package.mk
define Download/tzcode
FILE=$(PKG_SOURCE_CODE)
URL=$(PKG_SOURCE_URL)
- MD5SUM:=0684b98eb184fab250b6ca946862078d
+ MD5SUM:=eef0bfac7a52dce6989a7d8b40d86fe0
endef
$(eval $(call Download,tzcode))