Browse Source

ffho-autoupdater-wifi-fallback: provide wifi-fallback state for respondd

Karsten Böddeker 8 years ago
parent
commit
a939486273

+ 6 - 0
ffho/ffho-autoupdater-wifi-fallback/Makefile

@@ -2,8 +2,10 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=ffho-autoupdater-wifi-fallback
 PKG_VERSION:=2
+PKG_RELEASE:=$(GLUON_VERSION).$(GLUON_SITE_CODE)-$(GLUON_RELEASE).$(GLUON_CONFIG_VERSION)
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+PKG_BUILD_DEPENDS := respondd
 
 include $(GLUONDIR)/include/package.mk
 
@@ -18,6 +20,7 @@ endef
 
 define Build/Prepare
 	mkdir -p $(PKG_BUILD_DIR)
+	$(CP) ./src/* $(PKG_BUILD_DIR)/
 endef
 
 define Build/Configure
@@ -28,6 +31,9 @@ endef
 
 define Package/ffho-autoupdater-wifi-fallback/install
 	$(CP) ./files/* $(1)/
+
+	$(INSTALL_DIR) $(1)/lib/gluon/respondd
+	$(CP) $(PKG_BUILD_DIR)/respondd.so $(1)/lib/gluon/respondd/autoupdater-wifi-fallback.so
 endef
 
 $(eval $(call BuildPackage,ffho-autoupdater-wifi-fallback))

+ 6 - 0
ffho/ffho-autoupdater-wifi-fallback/src/Makefile

@@ -0,0 +1,6 @@
+all: respondd.so
+
+CFLAGS += -Wall
+
+respondd.so: respondd.c
+	$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -shared -fPIC -D_GNU_SOURCE -o $@ $^ $(LDLIBS) -lgluonutil -luci

+ 78 - 0
ffho/ffho-autoupdater-wifi-fallback/src/respondd.c

@@ -0,0 +1,78 @@
+/*
+  Copyright (c) 2016, Matthias Schiffer <mschiffer@universe-factory.net>
+  Copyright (c) 2016, Karsten Böddeker <freifunk@kb-light.de>
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+  modification, are permitted provided that the following conditions are met:
+
+    1. Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+    2. Redistributions in binary form must reproduce the above copyright notice,
+       this list of conditions and the following disclaimer in the documentation
+       and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#include <respondd.h>
+
+#include <json-c/json.h>
+#include <libgluonutil.h>
+
+#include <uci.h>
+
+#include <string.h>
+
+
+static struct json_object * get_autoupdater_wifi_fallback(void) {
+	struct uci_context *ctx = uci_alloc_context();
+	ctx->flags &= ~UCI_FLAG_STRICT;
+
+	struct uci_package *p;
+	if (uci_load(ctx, "autoupdater-wifi-fallback", &p))
+		goto error;
+
+	struct uci_section *s = uci_lookup_section(ctx, p, "settings");
+	if (!s)
+		goto error;
+
+	struct json_object *ret = json_object_new_object();
+
+	const char *enabled = uci_lookup_option_string(ctx, s, "enabled");
+	json_object_object_add(ret, "wifi-fallback", json_object_new_boolean(enabled && !strcmp(enabled, "1")));
+
+	uci_free_context(ctx);
+
+	return ret;
+
+ error:
+	uci_free_context(ctx);
+	return NULL;
+}
+
+static struct json_object * respondd_provider_nodeinfo(void) {
+	struct json_object *ret = json_object_new_object();
+
+	struct json_object *software = json_object_new_object();
+	json_object_object_add(software, "autoupdater", get_autoupdater_wifi_fallback());
+	json_object_object_add(ret, "software", software);
+
+	return ret;
+}
+
+
+const struct respondd_provider_info respondd_providers[] = {
+	{"nodeinfo", respondd_provider_nodeinfo},
+	{}
+};