mirror of
https://github.com/OpenMANET/morse-feed.git
synced 2025-12-10 03:43:06 -06:00
dppd: add Morse Micro dpp daemon package and dependency
adds recipe for the Morse Micro dpp daemon and an updated version of libmicrohttpd as required by the package - replicating that from the OpenWrt upstream.
This commit is contained in:
parent
4cf54fa139
commit
c8fb813f41
95
libs/libmicrohttpd/Makefile
Normal file
95
libs/libmicrohttpd/Makefile
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2010-2014 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
|
||||||
|
|
||||||
|
# This package is just like the one in the package feed. Only newer version.
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=libmicrohttpd
|
||||||
|
PKG_VERSION:=0.9.76
|
||||||
|
PKG_RELEASE:=$(AUTORELEASE)
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
|
PKG_SOURCE_URL:=@GNU/libmicrohttpd
|
||||||
|
PKG_HASH:=f0b1547b5a42a6c0f724e8e1c1cb5ce9c4c35fb495e7d780b9930d35011ceb4c
|
||||||
|
|
||||||
|
PKG_MAINTAINER:=Alexander Couzens <lynxis@fe80.eu>
|
||||||
|
PKG_LICENSE:=LGPL-2.1-or-later
|
||||||
|
PKG_LICENSE_FILES:=COPYING
|
||||||
|
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/libmicrohttpd/default
|
||||||
|
SECTION:=libs
|
||||||
|
CATEGORY:=Libraries
|
||||||
|
TITLE:=GNU libmicrohttpd is a library that runs an HTTP server.
|
||||||
|
URL:=https://www.gnu.org/software/libmicrohttpd/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmicrohttpd-no-ssl
|
||||||
|
$(call Package/libmicrohttpd/default)
|
||||||
|
VARIANT:=nossl
|
||||||
|
DEFAULT_VARIANT:=1
|
||||||
|
PROVIDES:=libmicrohttpd
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmicrohttpd-ssl
|
||||||
|
$(call Package/libmicrohttpd/default)
|
||||||
|
TITLE+= with SSL support
|
||||||
|
VARIANT:=ssl
|
||||||
|
DEPENDS:=+libgcrypt +libgnutls +libgpg-error
|
||||||
|
PROVIDES:=libmicrohttpd
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmicrohttpd/description
|
||||||
|
GNU libmicrohttpd is a small C library that is supposed to make it easy
|
||||||
|
to run an HTTP server as part of another application.
|
||||||
|
endef
|
||||||
|
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--disable-curl \
|
||||||
|
--disable-rpath \
|
||||||
|
--disable-doc \
|
||||||
|
--disable-examples \
|
||||||
|
--disable-poll \
|
||||||
|
--enable-epoll \
|
||||||
|
--with-pic
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),ssl)
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--enable-https \
|
||||||
|
--with-gnutls
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS += \
|
||||||
|
--disable-https \
|
||||||
|
--without-gnutls
|
||||||
|
endif
|
||||||
|
|
||||||
|
define Build/InstallDev
|
||||||
|
$(INSTALL_DIR) $(1)/usr/include/
|
||||||
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/microhttpd.h $(1)/usr/include/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmicrohttpd.{so*,a,la} $(1)/usr/lib/
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig/
|
||||||
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libmicrohttpd.pc $(1)/usr/lib/pkgconfig/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmicrohttpd-no-ssl/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmicrohttpd.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/libmicrohttpd-ssl/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/lib/
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmicrohttpd.so* $(1)/usr/lib/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,libmicrohttpd-no-ssl))
|
||||||
|
$(eval $(call BuildPackage,libmicrohttpd-ssl))
|
||||||
79
utils/morse-dppd/Makefile
Normal file
79
utils/morse-dppd/Makefile
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
#
|
||||||
|
# Copyright (C) 2023 Morse Micro
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=morse-dppd
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_VERSION:=1.12.4
|
||||||
|
|
||||||
|
PKG_SOURCE_VERSION:=$(PKG_VERSION)
|
||||||
|
PKG_SOURCE_URL:=https://github.com/MorseMicro/dpp-daemon.git
|
||||||
|
PKG_MIRROR_HASH:=fd2011465ab94d22575189b943ca285d6be96ae7e0b5e204fb8d18d1277fbf6e
|
||||||
|
PKG_SOURCE_PROTO:=git
|
||||||
|
PKG_HASH:=dd8b39752a632f052ec6706661a93bb4e9d3a8f22a1bad5355ee71fe1996b680
|
||||||
|
|
||||||
|
MAKE_PATH:=daemon
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
# These Flags here are supposed to be inside the dppd's makefile.
|
||||||
|
# They are there, but, instead of "CFLAGS +=" they've used "CFLAGS ?="
|
||||||
|
# Which makes it impossible to just add the OpenWrt specific flags.
|
||||||
|
# so, We have to redefine all of them here and append them to OpenWrt CFLAGS.
|
||||||
|
TARGET_CFLAGS += \
|
||||||
|
-I$(PKG_BUILD_DIR)/$(MAKE_PATH) \
|
||||||
|
-I$(PKG_BUILD_DIR)/$(MAKE_PATH)/include \
|
||||||
|
-I$(PKG_BUILD_DIR)/$(MAKE_PATH)/backend/wpa_ctrl \
|
||||||
|
-I$(PKG_BUILD_DIR)/$(MAKE_PATH)/backend/wpa_ctrl/utils \
|
||||||
|
-I$(PKG_BUILD_DIR)/$(MAKE_PATH)/backend/wpa_ctrl/common \
|
||||||
|
-I$(STAGING_DIR)/usr/include/libnl3 \
|
||||||
|
-DHOSTAPD \
|
||||||
|
-DHOSTAPD_DUMP_STATE \
|
||||||
|
-DCONFIG_CTRL_IFACE_UNIX \
|
||||||
|
-DCONFIG_CTRL_IFACE \
|
||||||
|
-DCONFIG_RSN_PREAUTH \
|
||||||
|
-DCONFIG_DRIVER_HOSTAP \
|
||||||
|
-DCONFIG_DRIVER_NL80211 \
|
||||||
|
-DCONFIG_ERP \
|
||||||
|
-DEAP_SERVER_MD5 \
|
||||||
|
-DEAP_SERVER_TLS \
|
||||||
|
-DEAP_SERVER_PEAP \
|
||||||
|
-DEAP_SERVER_TTLS \
|
||||||
|
-DEAP_SERVER_MSCHAPV2 \
|
||||||
|
-DEAP_SERVER_GTC \
|
||||||
|
-DEAP_SERVER_IDENTITY \
|
||||||
|
-DEAP_SERVER \
|
||||||
|
-DPKCS12_FUNCS \
|
||||||
|
-DEAP_TLS_FUNCS \
|
||||||
|
-DTLS_DEFAULT_CIPHERS=\""DEFAULT:!EXP:!LOW"\" \
|
||||||
|
-DCONFIG_DES \
|
||||||
|
-DCONFIG_SHA256 \
|
||||||
|
-DCONFIG_IPV6 \
|
||||||
|
-DNEED_AP_MLME
|
||||||
|
|
||||||
|
define Package/morse-dppd
|
||||||
|
SECTION:=Utilities
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
TITLE:=MorseMicro 802.11ah DPP Daemon
|
||||||
|
MAINTAINER:=Morse Micro
|
||||||
|
DEPENDS:=dppd-creds +libnl +libnl-genl +libopenssl +libncurses +libmicrohttpd-ssl +avahi-utils
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/morse-dppd/description
|
||||||
|
MorseMicro 802.11ah Device Provisioning Protocol Daemon
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/morse-dppd/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin/
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/$(MAKE_PATH)/build/dppd $(1)/usr/bin/
|
||||||
|
$(INSTALL_BIN) ./files/etc/init.d/dppd $(1)/etc/init.d/
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,morse-dppd))
|
||||||
79
utils/morse-dppd/files/etc/init.d/dppd
Executable file
79
utils/morse-dppd/files/etc/init.d/dppd
Executable file
@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
|
||||||
|
START=90
|
||||||
|
STOP=01
|
||||||
|
USE_PROCD=1
|
||||||
|
SERVICE=dppd
|
||||||
|
|
||||||
|
find_morse_device() {
|
||||||
|
local device=$1
|
||||||
|
local type_morse
|
||||||
|
config_get type_morse $device type
|
||||||
|
|
||||||
|
if [ "$type_morse" == "morse" ]; then
|
||||||
|
morse_radio=$1
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
find_iface_ap_key() {
|
||||||
|
local iface=$1
|
||||||
|
local radio=$2
|
||||||
|
local dev_iface=
|
||||||
|
config_get dev_iface $iface device
|
||||||
|
|
||||||
|
[ "$dev_iface" != "$radio" ] && return;
|
||||||
|
|
||||||
|
local is_ap=
|
||||||
|
config_get is_ap $iface mode
|
||||||
|
|
||||||
|
[ "$is_ap" != "ap" ] && return;
|
||||||
|
|
||||||
|
local encryption=
|
||||||
|
config_get encryption $iface encryption
|
||||||
|
|
||||||
|
[ "$encryption" != "sae" ] && return;
|
||||||
|
|
||||||
|
config_get key $iface key
|
||||||
|
}
|
||||||
|
|
||||||
|
get_encryption_key() {
|
||||||
|
config_load wireless
|
||||||
|
config_foreach find_morse_device wifi-device
|
||||||
|
config_foreach find_iface_ap_key wifi-iface $morse_radio
|
||||||
|
}
|
||||||
|
|
||||||
|
start_dppd() {
|
||||||
|
procd_open_instance
|
||||||
|
procd_set_param command dppd --passphrase="$1"
|
||||||
|
procd_set_param stdout 1
|
||||||
|
procd_set_param stderr 1
|
||||||
|
procd_append_param command --http-secrets=/etc/dppd/auth_secrets.txt
|
||||||
|
procd_append_param command --tls-cert=/etc/dppd/server.pem --tls-key=/etc/dppd/server.key
|
||||||
|
procd_append_param command --configurator-key=/etc/dppd/key.pem --configurator-private-key=/etc/dppd/ppkey.pem
|
||||||
|
procd_append_param command daemon
|
||||||
|
procd_set_param limits as="15000000 15000000"
|
||||||
|
procd_set_param respawn 3600 5 50
|
||||||
|
procd_close_instance
|
||||||
|
}
|
||||||
|
|
||||||
|
start_service() {
|
||||||
|
get_encryption_key
|
||||||
|
if [ -z "$key" ]; then
|
||||||
|
logger -t $SERVICE -p daemon.crit "No AP on morse device with encryption as SAE"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
start_dppd $key
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
reload_service() {
|
||||||
|
stop
|
||||||
|
# Wait until hostapd stops (otherwise we reconnect to old hostapd with the wrong info,
|
||||||
|
# then lose the connection, then segfault when we find the new hostapd).
|
||||||
|
( sleep 5; start ) &
|
||||||
|
}
|
||||||
|
|
||||||
|
service_triggers() {
|
||||||
|
procd_add_reload_trigger wireless
|
||||||
|
}
|
||||||
13
utils/morse-dppd/patches/001-find-hostapd_s1g.patch
Normal file
13
utils/morse-dppd/patches/001-find-hostapd_s1g.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/daemon/dppd.c b/daemon/dppd.c
|
||||||
|
index a524bd2..3885bc4 100644
|
||||||
|
--- a/daemon/dppd.c
|
||||||
|
+++ b/daemon/dppd.c
|
||||||
|
@@ -122,7 +122,7 @@ find_ctrl_if_path()
|
||||||
|
{
|
||||||
|
while ((dir_data = readdir(root_dir)) != NULL)
|
||||||
|
{
|
||||||
|
- if (strstr(dir_data->d_name, "hostapd"))
|
||||||
|
+ if (strstr(dir_data->d_name, "hostapd_s1g"))
|
||||||
|
{
|
||||||
|
|
||||||
|
if (found)
|
||||||
Loading…
x
Reference in New Issue
Block a user