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