Fix remote transmission configuration in update mode
This commit addresses an issue where the remote Transmission settings weren't properly applied when running in update mode: 1. Add prompt for remote Transmission details in update mode 2. Add code to modify the config.json file directly with the user's remote Transmission settings 3. Set default CONFIG_DIR and USER variables early in the script 4. Add detailed configuration dialog including: - Remote host and port - Username and password - RPC path - Directory mapping between remote and local paths This ensures that users selecting remote Transmission mode will always be prompted for the connection details, even when updating an existing installation.
This commit is contained in:
parent
1c16243a2d
commit
8af47ed35c
@ -105,14 +105,126 @@ trap 'cleanup_on_error "$BASH_COMMAND"' ERR
|
|||||||
# Execute the installation steps in sequence
|
# Execute the installation steps in sequence
|
||||||
log "INFO" "Starting installation process..."
|
log "INFO" "Starting installation process..."
|
||||||
|
|
||||||
# Set default for TRANSMISSION_REMOTE
|
# Set defaults for key variables
|
||||||
export TRANSMISSION_REMOTE=false
|
export TRANSMISSION_REMOTE=false
|
||||||
|
export CONFIG_DIR=${CONFIG_DIR:-"/etc/transmission-rss-manager"}
|
||||||
|
export USER=${USER:-$(logname || echo $SUDO_USER)}
|
||||||
|
|
||||||
if [ "$IS_UPDATE" = true ]; then
|
if [ "$IS_UPDATE" = true ]; then
|
||||||
log "INFO" "Running in update mode - preserving existing configuration..."
|
log "INFO" "Running in update mode - preserving existing configuration..."
|
||||||
|
|
||||||
# When updating, we only need to update core files and dependencies
|
# First, let's directly ask about Transmission
|
||||||
# Configuration should be preserved
|
# This is a direct approach that bypasses any potential sourcing issues
|
||||||
|
log "INFO" "Configuring Transmission connection..."
|
||||||
|
echo -e "${BOLD}Transmission Configuration:${NC}"
|
||||||
|
echo -e "Configure connection to your Transmission client:"
|
||||||
|
echo
|
||||||
|
|
||||||
|
read -p "Is Transmission running on a remote server? (y/n) [n]: " input_remote
|
||||||
|
if [[ $input_remote =~ ^[Yy]$ ]]; then
|
||||||
|
export TRANSMISSION_REMOTE=true
|
||||||
|
log "INFO" "Remote Transmission selected."
|
||||||
|
|
||||||
|
# Update the config file directly to set remote mode
|
||||||
|
if [ -f "$CONFIG_DIR/config.json" ]; then
|
||||||
|
log "INFO" "Updating configuration file for remote Transmission..."
|
||||||
|
# Get and validate hostname
|
||||||
|
read -p "Remote Transmission host [localhost]: " input_trans_host
|
||||||
|
TRANSMISSION_HOST=${input_trans_host:-"localhost"}
|
||||||
|
|
||||||
|
# Get and validate port
|
||||||
|
read -p "Remote Transmission port [9091]: " input_trans_port
|
||||||
|
TRANSMISSION_PORT=${input_trans_port:-9091}
|
||||||
|
|
||||||
|
# Get credentials
|
||||||
|
read -p "Remote Transmission username []: " input_trans_user
|
||||||
|
TRANSMISSION_USER=${input_trans_user:-""}
|
||||||
|
|
||||||
|
# Use read -s for password to avoid showing it on screen
|
||||||
|
read -s -p "Remote Transmission password []: " input_trans_pass
|
||||||
|
echo # Add a newline after the password input
|
||||||
|
TRANSMISSION_PASS=${input_trans_pass:-""}
|
||||||
|
|
||||||
|
read -p "Remote Transmission RPC path [/transmission/rpc]: " input_trans_path
|
||||||
|
TRANSMISSION_RPC_PATH=${input_trans_path:-"/transmission/rpc"}
|
||||||
|
|
||||||
|
# Configure directory mapping for remote setup
|
||||||
|
echo
|
||||||
|
echo -e "${YELLOW}Directory Mapping Configuration${NC}"
|
||||||
|
echo -e "When using a remote Transmission server, you need to map paths between servers."
|
||||||
|
echo -e "For each directory on the remote server, specify the corresponding local directory."
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Get remote download directory
|
||||||
|
read -p "Remote Transmission download directory [/var/lib/transmission-daemon/downloads]: " REMOTE_DOWNLOAD_DIR
|
||||||
|
REMOTE_DOWNLOAD_DIR=${REMOTE_DOWNLOAD_DIR:-"/var/lib/transmission-daemon/downloads"}
|
||||||
|
|
||||||
|
# Get local directory that corresponds to remote download directory
|
||||||
|
read -p "Local directory that corresponds to the remote download directory [/mnt/transmission-downloads]: " LOCAL_DOWNLOAD_DIR
|
||||||
|
LOCAL_DOWNLOAD_DIR=${LOCAL_DOWNLOAD_DIR:-"/mnt/transmission-downloads"}
|
||||||
|
|
||||||
|
# Create mapping JSON
|
||||||
|
TRANSMISSION_DIR_MAPPING=$(cat <<EOF
|
||||||
|
{
|
||||||
|
"$REMOTE_DOWNLOAD_DIR": "$LOCAL_DOWNLOAD_DIR"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
# Create the local directory
|
||||||
|
mkdir -p "$LOCAL_DOWNLOAD_DIR"
|
||||||
|
chown -R $USER:$USER "$LOCAL_DOWNLOAD_DIR"
|
||||||
|
|
||||||
|
# Update the config file with the new remote settings
|
||||||
|
log "INFO" "Updating configuration file with remote Transmission settings..."
|
||||||
|
|
||||||
|
# Backup the original config file
|
||||||
|
cp "$CONFIG_DIR/config.json" "$CONFIG_DIR/config.json.bak.$(date +%Y%m%d%H%M%S)"
|
||||||
|
|
||||||
|
# Update the isRemote setting
|
||||||
|
sed -i 's/"isRemote": false/"isRemote": true/' "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the host setting
|
||||||
|
sed -i "s/\"host\": \"[^\"]*\"/\"host\": \"$TRANSMISSION_HOST\"/" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the port setting
|
||||||
|
sed -i "s/\"port\": [0-9]*/\"port\": $TRANSMISSION_PORT/" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the username setting
|
||||||
|
sed -i "s/\"username\": \"[^\"]*\"/\"username\": \"$TRANSMISSION_USER\"/" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the password setting
|
||||||
|
sed -i "s/\"password\": \"[^\"]*\"/\"password\": \"$TRANSMISSION_PASS\"/" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the RPC path setting
|
||||||
|
sed -i "s|\"path\": \"[^\"]*\"|\"path\": \"$TRANSMISSION_RPC_PATH\"|" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the directory mapping
|
||||||
|
# Use a more complex approach since it's a JSON object
|
||||||
|
# This is a simplification and might need improvement for complex JSON handling
|
||||||
|
sed -i "/\"directoryMapping\":/c\\ \"directoryMapping\": $TRANSMISSION_DIR_MAPPING" "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
log "INFO" "Configuration updated for remote Transmission."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
export TRANSMISSION_REMOTE=false
|
||||||
|
log "INFO" "Local Transmission selected."
|
||||||
|
|
||||||
|
# Update the config file directly to set local mode
|
||||||
|
if [ -f "$CONFIG_DIR/config.json" ]; then
|
||||||
|
log "INFO" "Updating configuration file for local Transmission..."
|
||||||
|
# Backup the original config file
|
||||||
|
cp "$CONFIG_DIR/config.json" "$CONFIG_DIR/config.json.bak.$(date +%Y%m%d%H%M%S)"
|
||||||
|
|
||||||
|
# Update the isRemote setting
|
||||||
|
sed -i 's/"isRemote": true/"isRemote": false/' "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
# Update the host setting
|
||||||
|
sed -i 's/"host": "[^"]*"/"host": "localhost"/' "$CONFIG_DIR/config.json"
|
||||||
|
|
||||||
|
log "INFO" "Configuration updated for local Transmission."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Step 1: Check dependencies (but don't reconfigure)
|
# Step 1: Check dependencies (but don't reconfigure)
|
||||||
log "INFO" "Checking dependencies..."
|
log "INFO" "Checking dependencies..."
|
||||||
|
Loading…
x
Reference in New Issue
Block a user