From 2ae2fffaedf685ec9e320f953ae3ff5ab82565be Mon Sep 17 00:00:00 2001 From: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> Date: Fri, 6 Apr 2012 06:51:20 +0000 Subject: [PATCH] packages/minidlna: add uci configuration support git-svn-id: svn://svn.openwrt.org/openwrt/packages@31211 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- multimedia/minidlna/Makefile | 4 +- multimedia/minidlna/files/minidlna.config | 17 ++++ multimedia/minidlna/files/minidlna.init | 77 ++++++++++++++++++- .../patches/040-configuration-tweak.patch | 24 ------ 4 files changed, 95 insertions(+), 27 deletions(-) create mode 100644 multimedia/minidlna/files/minidlna.config delete mode 100644 multimedia/minidlna/patches/040-configuration-tweak.patch diff --git a/multimedia/minidlna/Makefile b/multimedia/minidlna/Makefile index abf4813d5..152b6bed9 100644 --- a/multimedia/minidlna/Makefile +++ b/multimedia/minidlna/Makefile @@ -75,12 +75,12 @@ MAKE_VARS +=\ define Package/minidlna/install - $(INSTALL_DIR) $(1)/etc - $(INSTALL_DATA) $(PKG_BUILD_DIR)/minidlna.conf $(1)/etc/ $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/minidlna $(1)/usr/bin/ $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/minidlna.init $(1)/etc/init.d/minidlna + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_BIN) ./files/minidlna.config $(1)/etc/config/minidlna endef $(eval $(call BuildPackage,minidlna)) diff --git a/multimedia/minidlna/files/minidlna.config b/multimedia/minidlna/files/minidlna.config new file mode 100644 index 000000000..459be3e8e --- /dev/null +++ b/multimedia/minidlna/files/minidlna.config @@ -0,0 +1,17 @@ +config minidlna config + option 'enabled' '0' + 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 inotify '1' + option enable_tivo '0' + option strict_dlna '0' + option presentation_url '' + option notify_interval '900' + option serial '12345678' + option model_number '1' + option root_container '.' + list media_dir '/mnt' + option album_art_names 'Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg' diff --git a/multimedia/minidlna/files/minidlna.init b/multimedia/minidlna/files/minidlna.init index 64f9d3220..5d7bc6dd7 100644 --- a/multimedia/minidlna/files/minidlna.init +++ b/multimedia/minidlna/files/minidlna.init @@ -5,10 +5,85 @@ START=50 SERVICE_USE_PID=1 +MINIDLNA_CONFIG_FILE="/tmp/minidlna.conf" + +minidlna_cfg_append() { + echo "$1" >> "$MINIDLNA_CONFIG_FILE" +} + +minidlna_cfg_addbool() { + local cfg="$1" + local key="$2" + local def="$3" + local val + + config_get_bool val "$cfg" "$key" "$def" + [ "$val" -gt 0 ] && val="yes" || val="no" + minidlna_cfg_append "$key=$val" +} + +minidlna_cfg_addstr() { + local cfg="$1" + local key="$2" + local def="$3" + local val + + config_get val "$cfg" "$key" "$def" + [ -n "$val" ] && minidlna_cfg_append "$key=$val" +} + +minidlna_cfg_add_media_dir() { + local val=$1 + + minidlna_cfg_append "media_dir=$val" +} + +minidlna_create_config() { + local cfg=$1 + local port + local interface + + config_get port $cfg port + config_get interface $cfg interface + + [ -z "$interface" -o -t "$port" ] && return 1 + + 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_addbool $cfg inotify '1' + minidlna_cfg_addbool $cfg enable_tivo '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 +} + start() { + local enabled + + config_load 'minidlna' + config_get_bool enabled config 'enabled' '0' + + [ "$enabled" -gt 0 ] || return 1 + + minidlna_create_config config || return 1 + mkdir -m 0755 -p /var/log mkdir -m 0755 -p /var/run/minidlna - service_start /usr/bin/minidlna + service_start /usr/bin/minidlna -f "$MINIDLNA_CONFIG_FILE" } stop() { diff --git a/multimedia/minidlna/patches/040-configuration-tweak.patch b/multimedia/minidlna/patches/040-configuration-tweak.patch deleted file mode 100644 index 2a6861016..000000000 --- a/multimedia/minidlna/patches/040-configuration-tweak.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- a/minidlna.conf -+++ b/minidlna.conf -@@ -2,7 +2,7 @@ - port=8200 - - # network interfaces to serve, comma delimited --#network_interface=eth0 -+network_interface=br-lan - - # set this to the directory you want scanned. - # * if have multiple directories, you can have multiple media_dir= lines -@@ -11,10 +11,10 @@ port=8200 - # + "A" for audio (eg. media_dir=A,/home/jmaggard/Music) - # + "V" for video (eg. media_dir=V,/home/jmaggard/Videos) - # + "P" for images (eg. media_dir=P,/home/jmaggard/Pictures) --media_dir=/opt -+media_dir=/mnt - - # set this if you want to customize the name that shows up on your clients --#friendly_name=My DLNA Server -+friendly_name=My DLNA Server - - # set this if you would like to specify the directory where you want MiniDLNA to store its database and album art cache - #db_dir=/var/cache/minidlna