Skip to content
Snippets Groups Projects
Select Git revision
  • 49aa2a3d692482c9191c69e3c27e99c718e6f500
  • experimental default protected
  • v2023.2.5-ffs
  • nrb/ex400-remove-wps
  • nrb/airmax-test
  • v2023.2.4-ffs
  • nrb/ar9344-reset-sequence
  • autinerd/experimental-openwrt-24.10
  • v2023.2.3-ffs
  • v2023.2.2-ffs
  • v2023.2-ffs
  • v2023.1-ffs
  • v2022.1.4-ffs
  • feature/addMikrotikwAP
  • v2022.1.3-ffs
  • v2021.1.2-ffs
  • v2022.1.1-ffs
  • master protected
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • experimental-2025-10-23
  • experimental-2025-10-23-base
  • experimental-2025-10-22
  • experimental-2025-10-22-base
  • experimental-2025-10-19
  • experimental-2025-10-19-base
  • experimental-2025-10-15
  • experimental-2025-10-15-base
  • experimental-2025-10-12
  • experimental-2025-10-12-base
  • experimental-2025-10-06
  • experimental-2025-10-06-base
  • experimental-2025-10-02
  • experimental-2025-10-02-base
  • experimental-2025-09-19
  • experimental-2025-09-19-base
  • experimental-2025-09-15
  • experimental-2025-09-15-base
  • experimental-2025-09-12
  • experimental-2025-09-12-base
41 results

respondd.c

Blame
  • user avatar
    Jan-Niklas Burfeind authored
    d7f869ad
    History
    respondd.c 1.38 KiB
    /* SPDX-FileCopyrightText: 2016, Matthias Schiffer <mschiffer@universe-factory.net> */
    /* SPDX-License-Identifier: BSD-2-Clause */
    
    
    #include <respondd.h>
    
    #include <json-c/json.h>
    #include <libgluonutil.h>
    
    #include <uci.h>
    
    #include <string.h>
    
    
    static struct json_object * get_autoupdater(void) {
    	struct uci_context *ctx = uci_alloc_context();
    	if (!ctx)
    		return NULL;
    	ctx->flags &= ~UCI_FLAG_STRICT;
    
    	struct uci_package *p;
    	if (uci_load(ctx, "autoupdater", &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();
    
    	json_object_object_add(ret, "branch", gluonutil_wrap_string(uci_lookup_option_string(ctx, s, "branch")));
    
    	const char *enabled = uci_lookup_option_string(ctx, s, "enabled");
    	json_object_object_add(ret, "enabled", 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());
    	json_object_object_add(ret, "software", software);
    
    	return ret;
    }
    
    
    const struct respondd_provider_info respondd_providers[] = {
    	{"nodeinfo", respondd_provider_nodeinfo},
    	{}
    };