mirror of
https://github.com/RetroPie/RetroPie-Setup.git
synced 2025-04-02 10:51:41 -04:00
107 lines
3.1 KiB
Bash
107 lines
3.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# This file is part of The RetroPie Project
|
|
#
|
|
# The RetroPie Project is the legal property of its developers, whose names are
|
|
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
|
|
#
|
|
# See the LICENSE.md file at the top-level directory of this distribution and
|
|
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
|
|
#
|
|
|
|
rp_module_id="samba"
|
|
rp_module_desc="Configure Samba ROM Shares"
|
|
rp_module_section="config"
|
|
|
|
function depends_samba() {
|
|
DEBIAN_FRONTEND=noninteractive getDepends samba
|
|
}
|
|
|
|
function remove_share_samba() {
|
|
local name="$1"
|
|
[[ -z "$name" || ! -f /etc/samba/smb.conf ]] && return
|
|
sed -i "/^\[$name\]/,/^force user/d" /etc/samba/smb.conf
|
|
}
|
|
|
|
function add_share_samba() {
|
|
local name="$1"
|
|
local path="$2"
|
|
[[ -z "name" || -z "$path" ]] && return
|
|
remove_share_samba "$name"
|
|
cat >>/etc/samba/smb.conf <<_EOF_
|
|
[$1]
|
|
comment = $name
|
|
path = "$path"
|
|
writeable = yes
|
|
guest ok = yes
|
|
create mask = 0644
|
|
directory mask = 0755
|
|
force user = $__user
|
|
_EOF_
|
|
}
|
|
|
|
function restart_samba() {
|
|
systemctl -q is-active smbd.service && systemctl -q reload-or-restart smbd.service
|
|
}
|
|
|
|
function install_shares_samba() {
|
|
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
|
|
add_share_samba "roms" "$romdir"
|
|
add_share_samba "bios" "$home/RetroPie/BIOS"
|
|
add_share_samba "configs" "$configdir"
|
|
add_share_samba "splashscreens" "$datadir/splashscreens"
|
|
|
|
# Add `wsdd` so that RetroPie is easily discovered by Windows clients
|
|
# Only available on Debian 12/Ubuntu 22.04 and later
|
|
if apt-cache -qq madison wsdd; then
|
|
aptInstall wsdd
|
|
fi
|
|
restart_samba
|
|
}
|
|
|
|
function remove_shares_samba() {
|
|
local name
|
|
for name in roms bios configs splashscreens; do
|
|
remove_share_samba "$name"
|
|
done
|
|
restart_samba
|
|
}
|
|
|
|
function gui_samba() {
|
|
while true; do
|
|
local cmd=(dialog --backtitle "$__backtitle" --menu "Choose an option" 22 76 16)
|
|
local options=(
|
|
1 "Install RetroPie Samba shares"
|
|
2 "Remove RetroPie Samba shares"
|
|
3 "Manually edit /etc/samba/smb.conf"
|
|
4 "Restart Samba service"
|
|
5 "Remove Samba + configuration"
|
|
)
|
|
local choice=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty)
|
|
if [[ -n "$choice" ]]; then
|
|
case "$choice" in
|
|
1)
|
|
rp_callModule "$md_id" depends
|
|
rp_callModule "$md_id" install_shares
|
|
printMsgs "dialog" "Installed and enabled shares"
|
|
;;
|
|
2)
|
|
rp_callModule "$md_id" remove_shares
|
|
printMsgs "dialog" "Removed shares"
|
|
;;
|
|
3)
|
|
editFile /etc/samba/smb.conf
|
|
;;
|
|
4)
|
|
rp_callModule "$md_id" restart
|
|
;;
|
|
5)
|
|
rp_callModule "$md_id" depends remove
|
|
printMsgs "dialog" "Removed Samba service"
|
|
;;
|
|
esac
|
|
else
|
|
break
|
|
fi
|
|
done
|
|
}
|