#!/usr/bin/with-contenv bashio # shellcheck shell=bash rm -rf /etc/cont-init.d/20-config || true declare CONFIG declare incomplete_bool declare download_dir declare incomplete_dir declare USER declare PASS declare WHITELIST declare HOST_WHITELIST CONFIGDIR="/config/transmission" ############### # PERMISSIONS # ############### #Default folders echo "Updating folders" mkdir -p /config/transmission || true chown -R abc:abc /config/transmission || true if ! bashio::fs.file_exists "$CONFIGDIR/settings.json"; then echo "Creating default config" cp "/defaults/settings.json" "$CONFIGDIR/settings.json" fi ################# # CONFIGURATION # ################# # Alternate UI ############## if bashio::config.has_value 'customUI'; then CUSTOMUI=$(bashio::config 'customUI') [ $CUSTOMUI != "standard" ] && sed -i "1a export TRANSMISSION_WEB_HOME=\"/$CUSTOMUI/\"" /etc/services.d/transmission/run # Enable transmission-web-control return to default UI if [ ! -f "/transmission-web-control/index.original.html" ]; then ln -s /usr/share/transmission/web/style /transmission-web-control ln -s /usr/share/transmission/web/images /transmission-web-control ln -s /usr/share/transmission/web/javascript /transmission-web-control ln -s /usr/share/transmission/web/index.html /transmission-web-control/index.original.html fi fi bashio::log.info "UI selected : $CUSTOMUI" # INCOMPLETE DIR ################ echo "Creating config" download_dir=$(bashio::config 'download_dir') incomplete_dir=$(bashio::config 'incomplete_dir') CONFIG=$(<$CONFIGDIR/settings.json) # Permissions echo "Updating permissions" mkdir -p $download_dir chown abc:abc $download_dir # if incomplete dir > 2, to allow both null and '', set it as existing if [ ${#incomplete_dir} -ge 2 ]; then echo "Incomplete dir set: $incomplete_dir" CONFIG=$(bashio::jq "${CONFIG}" ".\"incomplete-dir-enabled\"=true") mkdir -p $incomplete_dir chown abc:abc $incomplete_dir else echo "Incomplete dir disabled" CONFIG=$(bashio::jq "${CONFIG}" ".\"incomplete-dir-enabled\"=false") fi # Defaults CONFIG=$(bashio::jq "${CONFIG}" ".\"incomplete-dir\"=\"${incomplete_dir}\"") CONFIG=$(bashio::jq "${CONFIG}" ".\"download-dir\"=\"${download_dir}\"") CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-host-whitelist-enabled\"=false") CONFIG=$(bashio::jq "${CONFIG}" ".\"bind-address-ipv4\"=\"0.0.0.0\"") echo "${CONFIG}" >$CONFIGDIR/settings.json && jq . -S $CONFIGDIR/settings.json | cat >temp.json && mv temp.json $CONFIGDIR/settings.json # USER and PASS ############### CONFIG=$(<$CONFIGDIR/settings.json) USER=$(bashio::config 'user') PASS=$(bashio::config 'pass') if bashio::config.has_value 'user'; then BOOLEAN=true bashio::log.info "User & Pass set, authentification will be with user : $USER and pass : $PASS" else BOOLEAN=false bashio::log.warning "User & Pass not set, no authentification required" fi CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-authentication-required\"=${BOOLEAN}") CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-username\"=\"${USER}\"") CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-password\"=\"${PASS}\"") echo "${CONFIG}" >$CONFIGDIR/settings.json && jq . -S $CONFIGDIR/settings.json | cat >temp.json && mv temp.json $CONFIGDIR/settings.json # WHITELIST ########### CONFIG=$(<$CONFIGDIR/settings.json) WHITELIST=$(bashio::config 'whitelist') if bashio::config.has_value 'whitelist'; then BOOLEAN=true bashio::log.info "Whitelist set, no authentification from IP $WHITELIST" else BOOLEAN=false sed -i "2 i\"rpc-whitelist-enabled\": false," $CONFIGDIR/settings.json fi CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-whitelist-enabled\"=${BOOLEAN}") CONFIG=$(bashio::jq "${CONFIG}" ".\"rpc-whitelist\"=\"$WHITELIST\"") echo "${CONFIG}" >$CONFIGDIR/settings.json && jq . -S $CONFIGDIR/settings.json | cat >temp.json && mv temp.json $CONFIGDIR/settings.json