minidlna: run as an unprivileged user
authorMaxim Storchak <m.storchak@gmail.com>
Tue, 26 Feb 2019 13:33:37 +0000 (15:33 +0200)
committerYousong Zhou <yszhou4tech@gmail.com>
Sun, 10 Mar 2019 14:48:25 +0000 (22:48 +0800)
- run as an unprivileged user by default
- move generated config to /var/run (/tmp/run in fact)
- disable service until it's configured: there is no way to reliably guess
  where files to be shared are located

Signed-off-by: Maxim Storchak <m.storchak@gmail.com>
multimedia/minidlna/Makefile
multimedia/minidlna/files/minidlna.config
multimedia/minidlna/files/minidlna.init

index fc80e56660e32594742a69dc7bd3e2e16ef0560d..a74ad2e43e2151ba435d1757a6190a89a690c71e 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=minidlna
 PKG_VERSION:=1.2.1
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE_URL:=@SF/minidlna
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
@@ -36,6 +36,7 @@ define Package/minidlna
   DEPENDS:= +libpthread +libexif +libjpeg +libsqlite3 +libffmpeg \
        +libid3tag +libflac +libvorbis +libuuid \
        $(ICONV_DEPENDS) $(INTL_DEPENDS)
+  USERID:=minidlna:minidlna
 endef
 
 define Package/minidlna/description
index 924a99ea9da59c1f5f248e4efd8300123f296ba1..756983567d5487a2d65ac7346de186dcfb27d708 100644 (file)
@@ -1,10 +1,11 @@
 config minidlna config
-       option 'enabled' '1'
+       option 'enabled' '0'
+       option user 'minidlna'
        option port '8200'
        option interface 'br-lan'
        option friendly_name 'OpenWrt DLNA Server'
        option db_dir '/var/run/minidlna'
-       option log_dir '/var/log'
+       option log_dir '/var/log/minidlna'
        option inotify '1'
        option enable_tivo '0'
        option wide_links '0'
index c894186d342cd440d812c8ec0d431ef54c0eae86..0cf3467a47ff54202d94ff30fb176b6464c6b295 100644 (file)
@@ -6,7 +6,7 @@ START=50
 SERVICE_USE_PID=1
 SERVICE_PID_FILE=/var/run/minidlna/minidlna.pid
 
-MINIDLNA_CONFIG_FILE="/tmp/minidlna.conf"
+MINIDLNA_CONFIG_FILE="/var/etc/minidlna.conf"
 
 minidlna_cfg_append() {
        echo "$1" >> "$MINIDLNA_CONFIG_FILE"
@@ -35,7 +35,6 @@ minidlna_cfg_addstr() {
 
 minidlna_cfg_add_media_dir() {
        local val=$1
-
        minidlna_cfg_append "media_dir=$val"
 }
 
@@ -44,31 +43,33 @@ minidlna_create_config() {
        local port
        local interface
 
-       config_get port $cfg port
-       config_get interface $cfg interface
+       config_get port "$cfg" port
+       config_get interface "$cfg" interface
 
        [ -z "$interface" -o -t "$port" ] && return 1
 
+       mkdir -p /var/etc
        echo "# this file is generated automatically, don't edit" > "$MINIDLNA_CONFIG_FILE"
 
        minidlna_cfg_append "port=$port"
        minidlna_cfg_append "network_interface=$interface"
 
-       minidlna_cfg_addstr $cfg friendly_name
-       minidlna_cfg_addstr $cfg db_dir
-       minidlna_cfg_addstr $cfg log_dir
-       minidlna_cfg_addstr $cfg log_level 'error'
-       minidlna_cfg_addbool $cfg inotify '1'
-       minidlna_cfg_addbool $cfg enable_tivo '0'
-       minidlna_cfg_addbool $cfg wide_links '0'
-       minidlna_cfg_addbool $cfg strict_dlna '0'
-       minidlna_cfg_addstr $cfg album_art_names
-       minidlna_cfg_addstr $cfg presentation_url
-       minidlna_cfg_addstr $cfg notify_interval '900'
-       minidlna_cfg_addstr $cfg serial '12345678'
-       minidlna_cfg_addstr $cfg model_number '1'
-       minidlna_cfg_addstr $cfg minissdpsocket
-       minidlna_cfg_addstr $cfg root_container '.'
+       minidlna_cfg_addstr "$cfg" friendly_name
+       minidlna_cfg_addstr "$cfg" user
+       minidlna_cfg_addstr "$cfg" db_dir
+       minidlna_cfg_addstr "$cfg" log_dir
+       minidlna_cfg_addstr "$cfg" log_level 'error'
+       minidlna_cfg_addbool "$cfg" inotify '1'
+       minidlna_cfg_addbool "$cfg" enable_tivo '0'
+       minidlna_cfg_addbool "$cfg" wide_links '0'
+       minidlna_cfg_addbool "$cfg" strict_dlna '0'
+       minidlna_cfg_addstr "$cfg" album_art_names
+       minidlna_cfg_addstr "$cfg" presentation_url
+       minidlna_cfg_addstr "$cfg" notify_interval '900'
+       minidlna_cfg_addstr "$cfg" serial '12345678'
+       minidlna_cfg_addstr "$cfg" model_number '1'
+       minidlna_cfg_addstr "$cfg" minissdpsocket
+       minidlna_cfg_addstr "$cfg" root_container '.'
        config_list_foreach "$cfg" "media_dir" minidlna_cfg_add_media_dir
 
        return 0
@@ -78,6 +79,7 @@ start() {
        local enabled
        local db_dir
        local log_dir
+       local user
 
        config_load 'minidlna'
        config_get_bool enabled config 'enabled' '0'
@@ -87,10 +89,12 @@ start() {
        minidlna_create_config config || return 1
        
        config_get db_dir config 'db_dir' '/var/run/minidlna'
-       config_get log_dir config 'log_dir' '/var/log'
+       config_get log_dir config 'log_dir' '/var/log/minidlna'
+       config_get user config 'user' 'root'
+
+       mkdir -m 0755 -p "$db_dir" "$log_dir"
+       chown -R "$user" "$db_dir" "$log_dir"
 
-       mkdir -m 0755 -p $db_dir
-       mkdir -m 0755 -p $log_dir
        service_start /usr/bin/minidlna -f "$MINIDLNA_CONFIG_FILE"
 }