From 835eb29bc3fd1a8df8ddd8c2d44bb533139db8cd Mon Sep 17 00:00:00 2001 From: Charlie <49533775+csev1755@users.noreply.github.com> Date: Fri, 14 Mar 2025 09:23:05 -0500 Subject: [PATCH] Add onvif_simple_server daemon (#1752) --- .../onvif-simple-server/files/S96onvifserver | 59 +++++++++++++++++++ .../onvif-simple-server.mk | 2 + 2 files changed, 61 insertions(+) create mode 100755 general/package/onvif-simple-server/files/S96onvifserver diff --git a/general/package/onvif-simple-server/files/S96onvifserver b/general/package/onvif-simple-server/files/S96onvifserver new file mode 100755 index 00000000..a310c74c --- /dev/null +++ b/general/package/onvif-simple-server/files/S96onvifserver @@ -0,0 +1,59 @@ +#!/bin/sh + +ONVIF_CONFIG="/etc/onvif.conf" +HTTPD_CONFIG="/etc/httpd_onvif.conf" +WWW_PATH="/var/www" +ONVIF_PORT=$(awk -F= '/^port=/{print $2}' ${ONVIF_CONFIG}) +DAEMON="httpd" +PIDFILE="/var/run/httpd_onvif.pid" +DAEMON_ARGS="-p $ONVIF_PORT -h $WWW_PATH -c $HTTPD_CONFIG -f" + +start() { + echo -n "Starting ONVIF HTTPD server: " + + fw_version="OpenIPC $(grep "OPENIPC_VERSION" /etc/os-release | cut -d= -f2 | tr -d '"')" + network_interface=$(ip route | awk '/default/ {print $5}' | head -n1) + network_macaddr=$(cat /sys/class/net/${network_interface}/address | sed 's/://g') + soc=$(ipcinfo --chip-name) + + sed -i "s/^firmware_ver=.*/firmware_ver=$fw_version/" $ONVIF_CONFIG + sed -i "s/^hardware_id=.*/hardware_id=$soc/" $ONVIF_CONFIG + sed -i "s/^serial_num=.*/serial_num=$network_macaddr/" $ONVIF_CONFIG + sed -i "s/^ifs=.*/ifs=$network_interface/" $ONVIF_CONFIG + echo -e "A:*\n/cgi-bin*:*\n" > $HTTPD_CONFIG + + start-stop-daemon -b -m -S -q -p "$PIDFILE" -x "$DAEMON" -- $DAEMON_ARGS + if [ $? -eq 0 ]; then + echo "OK" + else + echo "FAIL" + fi +} + +stop() { + echo -n "Stopping ONVIF HTTPD server: " + start-stop-daemon -K -q -p "$PIDFILE" + if [ $? -eq 0 ]; then + rm -f "$PIDFILE" + echo "OK" + else + echo "FAIL" + fi +} + +case "$1" in + start|stop) + $1 + ;; + + restart) + stop + sleep 3 + start + ;; + + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 + ;; +esac diff --git a/general/package/onvif-simple-server/onvif-simple-server.mk b/general/package/onvif-simple-server/onvif-simple-server.mk index 6b365e7a..4891b140 100644 --- a/general/package/onvif-simple-server/onvif-simple-server.mk +++ b/general/package/onvif-simple-server/onvif-simple-server.mk @@ -21,6 +21,8 @@ define ONVIF_SIMPLE_SERVER_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 -t $(TARGET_DIR)/usr/sbin $(@D)/wsd_simple_server $(INSTALL) -m 0755 -d $(TARGET_DIR)/etc $(INSTALL) -m 0644 -t $(TARGET_DIR)/etc $(ONVIF_SIMPLE_SERVER_PKGDIR)/files/onvif.conf + $(INSTALL) -m 0755 -d $(TARGET_DIR)/etc/init.d + $(INSTALL) -m 0755 -t $(TARGET_DIR)/etc/init.d $(ONVIF_SIMPLE_SERVER_PKGDIR)/files/S96onvifserver $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/onvif/device_service_files $(INSTALL) -m 0644 -t $(TARGET_DIR)/var/www/onvif/device_service_files $(@D)/device_service_files/* $(INSTALL) -m 0755 -d $(TARGET_DIR)/var/www/onvif/generic_files