minidlna: restore service triggers
[feed/packages.git] / multimedia / minidlna / files / minidlna.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2010 OpenWrt.org
3
4 START=81
5
6 PROG=/usr/sbin/minidlnad
7 USE_PROCD=1
8
9 MINIDLNA_CONFIG_FILE="/var/etc/minidlna.conf"
10
11 minidlna_cfg_addbool() {
12 local cfg="$1"
13 local key="$2"
14 local def="$3"
15 local val
16
17 config_get_bool val "$cfg" "$key" "$def"
18 [ "$val" -gt 0 ] && val="yes" || val="no"
19 echo "$key=$val"
20 }
21
22 minidlna_cfg_addstr() {
23 local cfg="$1"
24 local key="$2"
25 local def="$3"
26 local val
27
28 config_get val "$cfg" "$key" "$def"
29 [ -n "$val" ] && echo "$key=$val"
30 }
31
32 minidlna_cfg_add_media_dir() {
33 local val=$1
34 echo "media_dir=$val"
35 }
36
37 minidlna_create_config() {
38 local cfg=$1
39 local port
40 local interface
41
42 config_get port "$cfg" port
43 config_get interface "$cfg" interface
44
45 { [ -z "$interface" ] || [ -t "$port" ]; } && return 1
46
47 mkdir -p /var/etc
48 echo "# this file is generated automatically, don't edit"
49
50 echo "port=$port"
51 echo "network_interface=$interface"
52
53 minidlna_cfg_addstr "$cfg" friendly_name
54 minidlna_cfg_addstr "$cfg" user
55 minidlna_cfg_addstr "$cfg" db_dir
56 minidlna_cfg_addstr "$cfg" log_level 'error'
57 minidlna_cfg_addbool "$cfg" inotify '1'
58 minidlna_cfg_addbool "$cfg" enable_tivo '0'
59 minidlna_cfg_addbool "$cfg" wide_links '0'
60 minidlna_cfg_addbool "$cfg" strict_dlna '0'
61 minidlna_cfg_addstr "$cfg" album_art_names
62 minidlna_cfg_addstr "$cfg" presentation_url
63 minidlna_cfg_addstr "$cfg" notify_interval '900'
64 minidlna_cfg_addstr "$cfg" serial '12345678'
65 minidlna_cfg_addstr "$cfg" model_number '1'
66 minidlna_cfg_addstr "$cfg" minissdpsocket
67 minidlna_cfg_addstr "$cfg" root_container '.'
68 minidlna_cfg_addstr "$cfg" uuid '019f9a56-ff60-44c0-9edc-eae88d09fa05'
69 config_list_foreach "$cfg" "media_dir" minidlna_cfg_add_media_dir
70
71 return 0
72 } > "$MINIDLNA_CONFIG_FILE"
73
74 start_service() {
75 local enabled
76 local db_dir
77 local user
78 local val
79
80 config_load 'minidlna'
81 config_get_bool enabled config 'enabled' '0'
82
83 [ "$enabled" -gt 0 ] || return 1
84
85 config_get val "config" uuid
86 [ "$val" = '' ] && uci set minidlna.config.uuid="$(cat /proc/sys/kernel/random/uuid)" && uci commit minidlna
87
88 minidlna_create_config config || return 1
89
90 config_get db_dir config 'db_dir' '/var/run/minidlna'
91 config_get user config 'user' 'minidlna'
92
93 [ -d "$db_dir" ] || {
94 mkdir -m 755 -p "$db_dir"
95 chown -R "$user":"$user" "$db_dir"
96 }
97
98 procd_open_instance
99 procd_set_param command "$PROG"
100 procd_append_param command -S -f "$MINIDLNA_CONFIG_FILE"
101 procd_set_param stdout 1
102 procd_set_param stderr 1
103 procd_set_param respawn
104 procd_close_instance
105 }
106
107 service_triggers() {
108 procd_add_reload_trigger "minidlna"
109 }