packages/multimedia/minidlna/files/minidlna.init
Alberto Bursi 154f5b6806 minidlna: add static uuid in config
minidlna uses UUID to uniquely identify the media server
by default, if the "uuid" option is not specified in
its setting file it will try to autogenerate it by
reading MAC address.

This seems to fail on some devices resulting in random
UUID on reboot, and this causes confusion and issues as
for clients this is a new server and must be added to
the list.
In OpenWrt there are also devices where the system can't
read the true MAC address and it is therefore randomized
on reboot.

So, add a static UUID in the settings file.
Since each mindlna server should have a different UUID,
if the user has more than one OpenWrt device with
minidlna, he should change the UUID of the
additional devices.

Signed-off-by: Alberto Bursi <bobafetthotmail@gmail.com>
2019-12-13 11:12:31 +01:00

104 lines
2.4 KiB
Bash

#!/bin/sh /etc/rc.common
# Copyright (C) 2010 OpenWrt.org
START=50
SERVICE_USE_PID=1
SERVICE_PID_FILE=/var/run/minidlna/minidlna.pid
MINIDLNA_CONFIG_FILE="/var/etc/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
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" 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 '.'
minidlna_cfg_addstr "$cfg" uuid '019f9a56-ff60-44c0-9edc-eae88d09fa05'
config_list_foreach "$cfg" "media_dir" minidlna_cfg_add_media_dir
return 0
}
start() {
local enabled
local db_dir
local log_dir
local user
config_load 'minidlna'
config_get_bool enabled config 'enabled' '0'
[ "$enabled" -gt 0 ] || return 1
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/minidlna'
config_get user config 'user' 'root'
mkdir -m 0755 -p "$db_dir" "$log_dir"
chown -R "$user" "$db_dir" "$log_dir"
service_start /usr/bin/minidlna -f "$MINIDLNA_CONFIG_FILE"
}
stop() {
service_stop /usr/bin/minidlna
}