diff --git a/gluon/gluon-announced/Makefile b/gluon/gluon-announced/Makefile index 1f802dc..41fc095 100644 --- a/gluon/gluon-announced/Makefile +++ b/gluon/gluon-announced/Makefile @@ -1,40 +1,34 @@ include $(TOPDIR)/rules.mk PKG_NAME:=gluon-announced -PKG_VERSION:=1 -PKG_RELEASE:=1 +PKG_VERSION:=2 +PKG_RELEASE:=2 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME) include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/cmake.mk define Package/gluon-announced SECTION:=gluon CATEGORY:=Gluon TITLE:=announced support - DEPENDS:=+gluon-announce + DEPENDS:=+liblua +gluon-announce endef define Package/gluon-announced/description Gluon community wifi mesh firmware framework: announced support endef -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) - $(CP) ./src/* $(PKG_BUILD_DIR)/ -endef - -define Build/Configure -endef - -define Build/Compile - CFLAGS="$(TARGET_CFLAGS)" CPPFLAGS="$(TARGET_CPPFLAGS)" $(MAKE) -C $(PKG_BUILD_DIR) $(TARGET_CONFIGURE_OPTS) -endef - define Package/gluon-announced/install $(CP) ./files/* $(1)/ $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/gluon-announced $(1)/usr/bin/ endef +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ +endef + $(eval $(call BuildPackage,gluon-announced)) diff --git a/gluon/gluon-announced/files/etc/hotplug.d/iface/10-gluon-announced b/gluon/gluon-announced/files/etc/hotplug.d/iface/10-gluon-announced index 4e8635b..706f911 100644 --- a/gluon/gluon-announced/files/etc/hotplug.d/iface/10-gluon-announced +++ b/gluon/gluon-announced/files/etc/hotplug.d/iface/10-gluon-announced @@ -21,7 +21,7 @@ restart_announced () { DEVS=$(cat $DEVLIST | while read dev iface;do echo -n " -i $dev";done) service_stop $DAEMON - service_start $DAEMON -g ff02:0:0:0:0:0:2:1001 -p 1001 -s '/lib/gluon/announce/collect.lua nodeinfo' $DEVS + service_start $DAEMON -g ff02:0:0:0:0:0:2:1001 -p 1001 $DEVS } case "$ACTION" in @@ -32,7 +32,7 @@ case "$ACTION" in DEVICE=$(ifname_to_dev $INTERFACE) MESH=$(cat /sys/class/net/$DEVICE/batman_adv/mesh_iface) - [ $MESH = "bat0" ] || exit 0 + [ $MESH = "bat0" -o $INTERFACE = "client" ] || exit 0 DEVS="$(cat $DEVLIST; echo $DEVICE $INTERFACE)" diff --git a/gluon/gluon-announced/files/lib/gluon/announced/helper.lua b/gluon/gluon-announced/files/lib/gluon/announced/helper.lua new file mode 100644 index 0000000..82e63cc --- /dev/null +++ b/gluon/gluon-announced/files/lib/gluon/announced/helper.lua @@ -0,0 +1,34 @@ +local announce = require 'gluon.announce' + +local json = require 'luci.json' +local ltn12 = require 'luci.ltn12' + +local announce_base = '/lib/gluon/announce/' + +local function collect(type) + return announce.collect_dir(announce_base .. type .. '.d') +end + +function request(query) + if query:match('^nodeinfo') then + return json.encode(collect('nodeinfo')) + end + + local m = query:match('^GET ([a-z ]+)') + if m then + local data = {} + + for q in m:gmatch('([a-z]+)') do + local ok, val = pcall(collect, q) + if ok then + data[q] = val + end + end + + if next(data) then + return deflate(json.encode(data)) + end + end + + return nil +end diff --git a/gluon/gluon-announced/src/CMakeLists.txt b/gluon/gluon-announced/src/CMakeLists.txt new file mode 100644 index 0000000..4c14f9e --- /dev/null +++ b/gluon/gluon-announced/src/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 2.6) + +INCLUDE(FindPkgConfig) + +pkg_check_modules(LUA REQUIRED lua>=5.1) + +PROJECT(gluon-announced C) + +ADD_DEFINITIONS(-Os -Wall --std=gnu99 -Wmissing-declarations) + +SET(SOURCES gluon-announced.c) + +ADD_DEFINITIONS(${LUA_CFLAGS}) +ADD_EXECUTABLE(gluon-announced ${SOURCES}) +TARGET_LINK_LIBRARIES(gluon-announced ${LUA_LIBRARIES} dl m) +INSTALL(TARGETS gluon-announced + RUNTIME DESTINATION bin +) diff --git a/gluon/gluon-announced/src/Makefile b/gluon/gluon-announced/src/Makefile deleted file mode 100644 index 73e7a9e..0000000 --- a/gluon/gluon-announced/src/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -all: gluon-announced - -gluon-announced: gluon-announced.c - -clean: - rm gluon-announced diff --git a/gluon/gluon-announced/src/gluon-announced.c b/gluon/gluon-announced/src/gluon-announced.c index 27de6ec..d5b693b 100644 --- a/gluon/gluon-announced/src/gluon-announced.c +++ b/gluon/gluon-announced/src/gluon-announced.c @@ -32,54 +32,36 @@ #include #include #include +#include +#include +#include +#include "miniz.c" + +#define HELPER "/lib/gluon/announced/helper.lua" void usage() { - puts("Usage: gluon-announced [-h] -g -p -i [-i ..] -s