Skip to content

Commit 2174b17

Browse files
committed
dietpi-software: Snapcast: enable for RISC-V and unattended installs
1 parent 7dbdb17 commit 2174b17

File tree

1 file changed

+71
-79
lines changed

1 file changed

+71
-79
lines changed

dietpi/dietpi-software

Lines changed: 71 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -562,18 +562,13 @@ Available commands:
562562
aSOFTWARE_CATX[$software_id]=2
563563
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-server'
564564
aSOFTWARE_DEPS[$software_id]='5'
565-
# - RISC-V: https://github.com/badaix/snapcast/releases
566-
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
567565
#------------------
568566
software_id=192
569567
aSOFTWARE_NAME[$software_id]='Snapcast Client'
570568
aSOFTWARE_DESC[$software_id]='Multiroom audio client'
571569
aSOFTWARE_CATX[$software_id]=2
572570
aSOFTWARE_DOCS[$software_id]='https://dietpi.com/docs/software/media/#snapcast-client'
573571
aSOFTWARE_DEPS[$software_id]='5'
574-
aSOFTWARE_INTERACTIVE[$software_id]=1
575-
# - RISC-V: https://github.com/badaix/snapcast/releases
576-
aSOFTWARE_AVAIL_G_HW_ARCH[$software_id,11]=0
577572
#------------------
578573
software_id=199
579574
aSOFTWARE_NAME[$software_id]='Spotifyd'
@@ -2807,6 +2802,77 @@ _EOF_
28072802
aDEPS=()
28082803
fi
28092804

2805+
if To_Install 191 snapserver # Snapcast Server
2806+
then
2807+
# RISC-V/Trixie: Install from Debian repo: https://github.com/badaix/snapcast/releases
2808+
if (( $G_DISTRO > 7 ))
2809+
then
2810+
G_AGI snapserver
2811+
2812+
# Install and enable snapweb web UI, not included in Debian's snapserver package: https://github.com/MichaIng/DietPi/issues/7073
2813+
local fallback_url='https://github.com/badaix/snapweb/releases/download/v0.9.0/snapweb_0.9.0-1_all.deb'
2814+
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapweb/releases/latest' | mawk -F\" '/^ *"browser_download_url": ".*\/snapweb_[^"\/]*_all.deb"$/{print $4}')"
2815+
G_CONFIG_INJECT 'doc_root[[:blank:]=]' 'doc_root = /usr/share/snapweb' /etc/snapserver.conf '\[http\]'
2816+
2817+
# Fix /var/lib/snapserver permissions, just in case badaix's package was previously used, which uses the "snapserver" user, instead of "_snapserver"
2818+
[[ -d '/var/lib/snapserver' ]] && G_EXEC chown -R '_snapserver:_snapserver' /var/lib/snapserver
2819+
getent passwd snapserver > /dev/null && G_EXEC userdel snapserver
2820+
else
2821+
local arch=$(dpkg --print-architecture)
2822+
local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.31.0/snapserver_0.31.0-1_${arch}_$G_DISTRO_NAME.deb"
2823+
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapserver_[^\"\/]*_${arch}_$G_DISTRO_NAME.deb\"$/{print \$4}")"
2824+
2825+
# Fix /var/lib/snapserver permissions, just in case Debian's package was previously used, which uses the "_snapserver" user, instead of "snapserver"
2826+
[[ -d '/var/lib/snapserver' ]] && G_EXEC chown -R 'snapserver:snapserver' /var/lib/snapserver
2827+
getent passwd _snapserver > /dev/null && G_EXEC userdel _snapserver
2828+
fi
2829+
G_EXEC systemctl stop snapserver
2830+
2831+
# Disable JSON RPC by default if setting was never touched yet
2832+
G_EXEC sed --follow-symlinks -i '/^\[tcp\]/,/^\[/s/^#enabled = true$/enabled = false/' /etc/snapserver.conf
2833+
fi
2834+
2835+
if To_Install 192 snapclient # Snapcast Client
2836+
then
2837+
# RISC-V/Trixie: Install from Debian repo: https://github.com/badaix/snapcast/releases
2838+
if (( $G_DISTRO > 7 ))
2839+
then
2840+
G_AGI snapclient
2841+
else
2842+
local arch=$(dpkg --print-architecture)
2843+
local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.31.0/snapclient_0.31.0-1_${arch}_$G_DISTRO_NAME.deb"
2844+
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapclient_[^\"\/]*_${arch}_$G_DISTRO_NAME.deb\"$/{print \$4}")"
2845+
fi
2846+
G_EXEC systemctl stop snapclient
2847+
2848+
if ! grep -q '^[[:blank:]]*SNAPCLIENT_OPTS=.*["[:blank:]]-h[[:blank:]]' /etc/default/snapclient
2849+
then
2850+
# Ask for server, use local one by default if installed
2851+
dpkg-query -s 'snapserver' &> /dev/null && G_WHIP_DEFAULT_ITEM='127.0.0.1'
2852+
G_WHIP_NOCANCEL=1
2853+
G_WHIP_INPUTBOX 'Please enter the IP address or hostname of your Snapcast server to connect this client to:'
2854+
if [[ $G_WHIP_RETURNED_VALUE ]]
2855+
then
2856+
local snapcast_server_host=$G_WHIP_RETURNED_VALUE
2857+
2858+
G_WHIP_DEFAULT_ITEM=1704 G_WHIP_NOCANCEL=1 G_WHIP_INPUTBOX_REGEX='^[1-9][0-9]*$' G_WHIP_INPUTBOX_REGEX_TEXT='a valid port number'
2859+
G_WHIP_INPUTBOX 'Please enter the network port of your Snapcast server (default: 1704):'
2860+
local snapcast_server_port=$G_WHIP_RETURNED_VALUE
2861+
2862+
G_CONFIG_INJECT 'SNAPCLIENT_OPTS=' "SNAPCLIENT_OPTS=\"-h $snapcast_server_host -p $snapcast_server_port\"" /etc/default/snapclient
2863+
fi
2864+
fi
2865+
2866+
# If no Snapcast server was defined explicitly, e.g. on unattended install without having the server installed first, server and client use Avahi to find each other.
2867+
# The client throws endless errors if Avahi is not running, and endless messages until the server announced itself: https://github.com/badaix/snapcast/issues/647
2868+
# Hence Avahi-Daemon is added as fixed dependency for the server, and added for the client hereby if no server was explicitly defined. But is this as fallback only for unattended installs.
2869+
if ! grep -q '^[[:blank:]]*SNAPCLIENT_OPTS=.*["[:blank:]]-h[[:blank:]]' /etc/default/snapclient
2870+
then
2871+
G_DIETPI-NOTIFY 2 'Adding Avahi-Daemon as dependency for the Snapcast client to be able to auto-detect a server'
2872+
aSOFTWARE_INSTALL_STATE[152]=1
2873+
fi
2874+
fi
2875+
28102876
if To_Install 152 avahi-daemon # Avahi-Daemon
28112877
then
28122878
G_AGI avahi-daemon
@@ -11469,80 +11535,6 @@ _EOF_
1146911535
G_AGI domoticz
1147011536
fi
1147111537

11472-
if To_Install 191 snapserver # Snapcast Server
11473-
then
11474-
# RISC-V/Trixie: Install from Debian repo: https://github.com/badaix/snapcast/releases
11475-
if (( $G_DISTRO > 7 ))
11476-
then
11477-
G_AGI snapserver
11478-
11479-
# Install and enable snapweb web UI, not included in Debian's snapserver package: https://github.com/MichaIng/DietPi/issues/7073
11480-
local fallback_url='https://github.com/badaix/snapweb/releases/download/v0.9.0/snapweb_0.9.0-1_all.deb'
11481-
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapweb/releases/latest' | mawk -F\" '/^ *"browser_download_url": ".*\/snapweb_[^"\/]*_all.deb"$/{print $4}')"
11482-
G_CONFIG_INJECT 'doc_root[[:blank:]=]' 'doc_root = /usr/share/snapweb' /etc/snapserver.conf '\[http\]'
11483-
11484-
# Fix /var/lib/snapserver permissions, just in case badaix's package was previously used, which uses the "snapserver" user, instead of "_snapserver"
11485-
[[ -d '/var/lib/snapserver' ]] && G_EXEC chown -R '_snapserver:_snapserver' /var/lib/snapserver
11486-
getent passwd snapserver > /dev/null && G_EXEC userdel snapserver
11487-
else
11488-
local arch=$(dpkg --print-architecture)
11489-
local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.31.0/snapserver_0.31.0-1_${arch}_$G_DISTRO_NAME.deb"
11490-
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapserver_[^\"\/]*_${arch}_$G_DISTRO_NAME.deb\"$/{print \$4}")"
11491-
11492-
# Fix /var/lib/snapserver permissions, just in case Debian's package was previously used, which uses the "_snapserver" user, instead of "snapserver"
11493-
[[ -d '/var/lib/snapserver' ]] && G_EXEC chown -R 'snapserver:snapserver' /var/lib/snapserver
11494-
getent passwd _snapserver > /dev/null && G_EXEC userdel _snapserver
11495-
fi
11496-
G_EXEC systemctl stop snapserver
11497-
11498-
# Disable JSON RPC by default if setting was never touched yet
11499-
G_EXEC sed --follow-symlinks -i '/^\[tcp\]/,/^\[/s/^#enabled = true$/enabled = false/' /etc/snapserver.conf
11500-
fi
11501-
11502-
if To_Install 192 snapclient # Snapcast Client
11503-
then
11504-
# RISC-V/Trixie: Install from Debian repo: https://github.com/badaix/snapcast/releases
11505-
if (( $G_DISTRO > 7 ))
11506-
then
11507-
G_AGI snapclient
11508-
else
11509-
local arch=$(dpkg --print-architecture)
11510-
local fallback_url="https://github.com/badaix/snapcast/releases/download/v0.31.0/snapclient_0.31.0-1_${arch}_$G_DISTRO_NAME.deb"
11511-
Download_Install "$(curl -sSfL 'https://api.github.com/repos/badaix/snapcast/releases/latest' | mawk -F\" "/^ *\"browser_download_url\": \".*\/snapclient_[^\"\/]*_${arch}_$G_DISTRO_NAME.deb\"$/{print \$4}")"
11512-
fi
11513-
G_EXEC systemctl stop snapclient
11514-
11515-
# Client IP needs to be added to allowed IP list
11516-
local snapcast_server_ip
11517-
local invalid_entry=
11518-
while :
11519-
do
11520-
if G_WHIP_INPUTBOX "${invalid_entry}Please enter the IPv4 address of your Snapcast server:" && [[ $G_WHIP_RETURNED_VALUE =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]
11521-
then
11522-
snapcast_server_ip=$G_WHIP_RETURNED_VALUE
11523-
break
11524-
else
11525-
invalid_entry='[ERROR] Please enter a valid IP address. Please retry...\n\n'
11526-
fi
11527-
done
11528-
11529-
local snapcast_server_port=1704
11530-
invalid_entry=
11531-
while :
11532-
do
11533-
G_WHIP_DEFAULT_ITEM=$snapcast_server_port
11534-
if G_WHIP_INPUTBOX "${invalid_text}Please enter the network port of your Snapcast server (default: 1704):" && disable_error=1 G_CHECK_VALIDINT "$G_WHIP_RETURNED_VALUE" 1
11535-
then
11536-
snapcast_server_port=$G_WHIP_RETURNED_VALUE
11537-
break
11538-
else
11539-
invalid_text='[ERROR] Please enter a valid port number. Please retry...\n\n'
11540-
fi
11541-
done
11542-
11543-
G_CONFIG_INJECT 'SNAPCLIENT_OPTS=' "SNAPCLIENT_OPTS=\"-h $snapcast_server_ip -p $snapcast_server_port\"" /etc/default/snapclient
11544-
fi
11545-
1154611538
if To_Install 202 # Rclone
1154711539
then
1154811540
# RISC-V: No upstream packages yet, hence use Debian repo

0 commit comments

Comments
 (0)