alfred: add alfred 2013.3.0 to feed
authorSimon Wunderlich <siwu@hrz.tu-chemnitz.de>
Mon, 19 Aug 2013 21:17:18 +0000 (23:17 +0200)
committerSimon Wunderlich <siwu@hrz.tu-chemnitz.de>
Mon, 19 Aug 2013 21:17:47 +0000 (23:17 +0200)
Add A.L.F.R.E.D - Almighty Lightweight Fact Remote Exchange Daemon
to the OpenWRT routing feed. This package contains the latest stable
release of alfred which has been recently published by the
open-mesh.org community. A description follows below.

alfred is a user space daemon for distributing arbitrary local
information over the mesh/network in a decentralized fashion. This data
can be anything which appears to be useful - originally designed to
replace the batman-adv visualization (vis), you may distribute
hostnames, phone books, administration information, DNS information,
the local weather forecast ...

alfred runs as daemon in the background of the system. A user may insert
information by using the alfred binary on the command line, or use
special programs to communicate with alfred (done via unix sockets).
alfred then takes care of distributing the local information to other
alfred servers on other nodes. This is done via IPv6 link-local
multicast, and does not require any configuration. A user can request
data from alfred, and will receive the information available from all
alfred servers in the network.

Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
alfred/Config.in [new file with mode: 0644]
alfred/Makefile [new file with mode: 0644]
alfred/files/alfred.config [new file with mode: 0644]
alfred/files/alfred.init [new file with mode: 0755]

diff --git a/alfred/Config.in b/alfred/Config.in
new file mode 100644 (file)
index 0000000..fd664ca
--- /dev/null
@@ -0,0 +1,7 @@
+
+config PACKAGE_ALFRED_VIS
+       bool "enable vis server for alfred"
+       depends on PACKAGE_alfred
+       default y
+
+
diff --git a/alfred/Makefile b/alfred/Makefile
new file mode 100644 (file)
index 0000000..db9c71f
--- /dev/null
@@ -0,0 +1,79 @@
+#
+# Copyright (C) 2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+#
+# The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
+#
+PKG_NAME:=alfred
+PKG_VERSION:=2013.3.0
+PKG_RELEASE:=0
+PKG_MD5SUM:=018ef6262cdd11e900af31d71a864b13
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://downloads.open-mesh.org/batman/releases/batman-adv-$(PKG_VERSION)
+
+include $(INCLUDE_DIR)/package.mk
+
+init-y := alfred
+
+define Package/alfred
+  URL:=http://www.open-mesh.org/
+  SECTION:=net
+  CATEGORY:=Network
+  TITLE:=A.L.F.R.E.D. - Almighty Lightweight Fact Remote Exchange Daemon
+  DEPENDS:= +libc +IPV6:kmod-ipv6 +librt
+endef
+
+define Package/alfred/description
+alfred is a user space daemon for distributing arbitrary local information over
+the mesh/network in a decentralized fashion. This data can be anything which
+appears to be useful - originally designed to replace the batman-adv
+visualization (vis), you may distribute hostnames, phone books, administration
+information, DNS information, the local weather forecast ...
+
+alfred runs as daemon in the background of the system. A user may insert
+information by using the alfred binary on the command line, or use special
+programs to communicate with alfred (done via unix sockets). alfred then takes
+care of distributing the local information to other alfred servers on other
+nodes. This is done via IPv6 link-local multicast, and does not require any
+configuration. A user can request data from alfred, and will receive the
+information available from all alfred servers in the network.
+endef
+
+define Package/alfred/conffiles
+/etc/config/alfred
+endef
+
+define Package/alfred/config
+       source "$(SOURCE)/Config.in"
+endef
+
+MAKE_ALFRED_FLAGS=\
+       CONFIG_ALFRED_VIS=$(if $(CONFIG_PACKAGE_ALFRED_VIS),y,n)
+
+TARGET_CFLAGS  += -ffunction-sections -fdata-sections -flto
+TARGET_LDFLAGS += -Wl,--gc-sections -fuse-linker-plugin
+
+define Build/Compile
+       CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
+       LDFLAGS="$(TARGET_LDFLAGS)" \
+       $(MAKE) -C $(PKG_BUILD_DIR) $(MAKE_FLAGS) $(MAKE_ALFRED_FLAGS) all
+endef
+
+define Package/alfred/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       cp -fpR  $(PKG_BUILD_DIR)/alfred $(1)/usr/sbin/
+       [ "x$(CONFIG_PACKAGE_ALFRED_VIS)" == "xy" ] && cp -fpR  $(PKG_BUILD_DIR)/vis/vis $(1)/usr/sbin/ ; true
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/alfred.init $(1)/etc/init.d/alfred
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_DATA) ./files/alfred.config $(1)/etc/config/alfred
+endef
+
+$(eval $(call BuildPackage,alfred))
diff --git a/alfred/files/alfred.config b/alfred/files/alfred.config
new file mode 100644 (file)
index 0000000..b8fa9b2
--- /dev/null
@@ -0,0 +1,7 @@
+config 'alfred' 'alfred'
+       option interface 'br-lan'
+       option mode 'master'
+       option batmanif 'bat0'
+       option start_vis '1'
+# REMOVE THIS LINE TO ENABLE ALFRED
+       option disabled '1'
diff --git a/alfred/files/alfred.init b/alfred/files/alfred.init
new file mode 100755 (executable)
index 0000000..56818d8
--- /dev/null
@@ -0,0 +1,81 @@
+#!/bin/sh /etc/rc.common
+
+#
+# Copyright (C) 2013 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+START=99
+STOP=99
+alfred_args=""
+vis_args=""
+pid_file_alfred="/var/run/alfred.pid"
+pid_file_vis="/var/run/vis.pid"
+enable=0
+vis_enable=0
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+alfred_start()
+{
+       local args=""
+       local section="$1"
+       local disabled interface mode batmanif
+
+       # check if section is disabled
+       config_get_bool disabled "$section" disabled 0
+       [ $disabled = 0 ] || return 1
+
+       args=""
+
+       config_get interface "$section" interface
+       append args "-i $interface"
+
+       config_get mode "$section" mode
+       [ "$mode" = "master" ] && append args "-m"
+
+       config_get batmanif "$section" batmanif
+       append args "-b $batmanif"
+
+       append alfred_args "$args"
+       enable=1
+
+        config_get_bool start_vis "$section" start_vis 0
+        if [ "$start_vis" = 1 ] && [ -x /usr/sbin/vis ]; then
+                vis_enable=1
+                append vis_args "-i $batmanif -s"
+        fi
+
+       return 0
+}
+
+start()
+{
+       config_load "alfred"
+       config_foreach alfred_start alfred
+
+       if [ "$enable" = "0" ]; then
+               exit 0
+       fi
+       echo "${initscript}: starting alfred"
+       SERVICE_PID_FILE="$pid_file_alfred"
+       service_start /usr/sbin/alfred ${alfred_args}
+
+        if [ "$vis_enable" = "0" ]; then
+                exit 0
+        fi
+        echo "${initscript}: starting vis"
+       SERVICE_PID_FILE="$pid_file_vis"
+        service_start /usr/sbin/vis ${vis_args}
+}
+
+stop()
+{
+       SERVICE_PID_FILE="$pid_file_alfred"
+       service_stop /usr/sbin/alfred
+       SERVICE_PID_FILE="$pid_file_vis"
+       [ -x /usr/sbin/vis ] && service_stop /usr/sbin/vis
+
+}