uhttpd: update to latest Git HEAD
authorJo-Philipp Wich <jo@mein.io>
Tue, 23 Nov 2021 18:30:30 +0000 (19:30 +0100)
committerJo-Philipp Wich <jo@mein.io>
Mon, 7 Feb 2022 10:44:36 +0000 (11:44 +0100)
2f8b136 main: fix leaking -p/-s argument values
881fd3b ucode: adjust to latest ucode api
8b2868e file: specify UTF-8 as charset for dirlists, add option to override
3a5bd84 main: add ucode options to help text
16aa142 examples: add ucode handler example
3ceccd0 ucode: add ucode plugin support
f0f1406 examples: add example Lua handler script
9e87095 listen: avoid invalid memory access

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
package/network/services/uhttpd/Makefile
package/network/services/uhttpd/files/uhttpd.config
package/network/services/uhttpd/files/uhttpd.init

index dce5aa87b8e07c925adb379f81538a8a1f04649d..616f92a0cb567d6946cab858faf6278cdd9f6727 100644 (file)
@@ -8,19 +8,19 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uhttpd
-PKG_RELEASE:=3
+PKG_RELEASE:=1
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
-PKG_SOURCE_DATE:=2021-03-21
-PKG_SOURCE_VERSION:=15346de8d3ba422002496526ee24c62a3601ab8c
-PKG_MIRROR_HASH:=819424d071ed7c8888f9ca66f679907831becc59a67dd4a5ec521d5fba0a3171
+PKG_SOURCE_DATE:=2022-02-07
+PKG_SOURCE_VERSION:=2f8b1360df25bab375ec60bbba2dce8dd796161c
+PKG_MIRROR_HASH:=fe9c57492e4da493e9955994d1af6cf0086305633fa8febef7ab6df10c4798fa
 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
 PKG_LICENSE:=ISC
 
 PKG_ASLR_PIE_REGULAR:=1
 PKG_BUILD_DEPENDS = ustream-ssl
-PKG_CONFIG_DEPENDS:= CONFIG_uhttpd_lua
+PKG_CONFIG_DEPENDS:= CONFIG_uhttpd_lua CONFIG_uhttpd_ucode
 
 include $(INCLUDE_DIR)/package.mk
 include $(INCLUDE_DIR)/cmake.mk
@@ -49,8 +49,20 @@ define Package/uhttpd/config
     depends on PACKAGE_uhttpd-mod-lua
     bool "Enable Integrated Lua interpreter"
        default y
+
+  config uhttpd_ucode
+    depends on PACKAGE_uhttpd-mod-ucode
+    bool "Enable Integrated ucode interpreter"
+       default y
 endef
 
+define Package/uhttpd/conffiles
+/etc/config/uhttpd
+/etc/uhttpd.crt
+/etc/uhttpd.key
+endef
+
+
 define Package/uhttpd-mod-lua
   $(Package/uhttpd/default)
   TITLE+= (Lua plugin)
@@ -73,12 +85,18 @@ define Package/uhttpd-mod-ubus/description
  session.* namespace and procedures.
 endef
 
-define Package/uhttpd/conffiles
-/etc/config/uhttpd
-/etc/uhttpd.crt
-/etc/uhttpd.key
+
+define Package/uhttpd-mod-ucode
+  $(Package/uhttpd/default)
+  TITLE+= (ucode plugin)
+  DEPENDS:=uhttpd +libucode
+endef
+
+define Package/uhttpd-mod-ucode/description
+ The ucode plugin adds a CGI-like ucode runtime interface to uHTTPd.
 endef
 
+
 ifneq ($(CONFIG_USE_GLIBC),)
   TARGET_CFLAGS += -D_DEFAULT_SOURCE
 endif
@@ -108,7 +126,13 @@ define Package/uhttpd-mod-ubus/install
        $(INSTALL_DATA) ./files/ubus.default $(1)/etc/uci-defaults/00_uhttpd_ubus
 endef
 
+define Package/uhttpd-mod-ucode/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd_ucode.so $(1)/usr/lib/
+endef
+
 
 $(eval $(call BuildPackage,uhttpd))
 $(eval $(call BuildPackage,uhttpd-mod-lua))
 $(eval $(call BuildPackage,uhttpd-mod-ubus))
+$(eval $(call BuildPackage,uhttpd-mod-ucode))
index 40ce67fd010f75c100a1573137fcd2faea241f4c..a9b8ff3d15d551da5c3f446d0b9e60e73d9af898 100644 (file)
@@ -57,6 +57,14 @@ config uhttpd main
        # matches have precedence over the CGI prefix.
        list lua_prefix         "/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua"
 
+       # List of prefix->ucode handler mappings.
+       # Any request to an URL beneath the prefix
+       # will be dispatched to the associated ucode
+       # handler script. Ucode support is disabled when
+       # no handler mappings are specified. Ucode prefix
+       # matches have precedence over the CGI prefix.
+#      list ucode_prefix               "/ucode/example=/usr/share/example.uc"
+
        # Specify the ubus-rpc prefix and socket path.
 #      option ubus_prefix      /ubus
 #      option ubus_socket      /var/run/ubus/ubus.sock
index 30fd7b4259d93f275177aba3af3e633df0b13832..8dbc23f59c1e0120d89ca8c5c84272e63ec4618f 100755 (executable)
@@ -91,6 +91,18 @@ append_lua_prefix() {
        fi
 }
 
+append_ucode_prefix() {
+       local v="$1"
+       local prefix="${v%%=*}"
+       local handler="${v#*=}"
+
+       if [ "$prefix" != "$handler" ] && [ -n "$prefix" ] && [ -f "$handler" ]; then
+               procd_append_param command -o "$prefix" -O "$handler"
+       else
+               echo "Skipping invalid ucode prefix \"$v\"" >&2
+       fi
+}
+
 start_instance()
 {
        UHTTPD_CERT=""
@@ -142,6 +154,9 @@ start_instance()
                append_arg "$cfg" ubus_socket "-U"
                append_bool "$cfg" ubus_cors "-X" 0
        }
+       [ -f /usr/lib/uhttpd_ucode.so ] && {
+               config_list_foreach "$cfg" ucode_prefix append_ucode_prefix
+       }
        append_arg "$cfg" script_timeout "-t"
        append_arg "$cfg" network_timeout "-T"
        append_arg "$cfg" http_keepalive "-k"