From c820e508716277984fedaa9a0be16b1b67cfde38 Mon Sep 17 00:00:00 2001 From: Roger Gonzalez Date: Mon, 30 Dec 2024 18:21:03 -0300 Subject: [PATCH] Refactor VPN configuration input, handle special cases --- docs.org | 61 ++++++++++++++++++++++++++++++++---------------------- install.sh | 61 ++++++++++++++++++++++++++++++++---------------------- 2 files changed, 72 insertions(+), 50 deletions(-) diff --git a/docs.org b/docs.org index b657ce9..f779be3 100644 --- a/docs.org +++ b/docs.org @@ -269,36 +269,47 @@ configure_vpn() { log_info "Please check $vpn_service's documentation for specific configuration:" log_info "https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/${vpn_service// /-}.md" - log_warning "If you are using ProtonVPN, remember to suffix '+pmp' to your username" echo read -p "VPN username (without spaces): " vpn_user [ -z "$vpn_user" ] && log_error "VPN username cannot be empty" - # Use hidden input for password - unset vpn_password - charcount=0 - prompt="VPN password (if using mullvad, enter username again): " - while IFS= read -p "$prompt" -r -s -n 1 char; do - if [[ $char == $'\0' ]]; then - break - fi - if [[ $char == $'\177' ]]; then - if [ $charcount -gt 0 ]; then - charcount=$((charcount-1)) - prompt=$'\b \b' - vpn_password="${vpn_password%?}" - else - prompt='' - fi - else - charcount=$((charcount+1)) - prompt='*' - vpn_password+="$char" - fi - done - echo + # Handle special cases for VPN providers + if [ "$vpn_service" = "protonvpn" ] && [[ ! "$vpn_user" =~ \+pmp$ ]]; then + vpn_user="${vpn_user}+pmp" + log_info "Added +pmp suffix to username for ProtonVPN port forwarding" + fi - [ -z "$vpn_password" ] && log_error "VPN password cannot be empty" + # Handle password input based on VPN service + if [ "$vpn_service" = "mullvad" ]; then + vpn_password="$vpn_user" + log_info "Using Mullvad username as password" + else + # Use hidden input for password + unset vpn_password + charcount=0 + prompt="VPN password: " + while IFS= read -p "$prompt" -r -s -n 1 char; do + if [[ $char == $'\0' ]]; then + break + fi + if [[ $char == $'\177' ]]; then + if [ $charcount -gt 0 ]; then + charcount=$((charcount-1)) + prompt=$'\b \b' + vpn_password="${vpn_password%?}" + else + prompt='' + fi + else + charcount=$((charcount+1)) + prompt='*' + vpn_password+="$char" + fi + done + echo + + [ -z "$vpn_password" ] && log_error "VPN password cannot be empty" + fi # Export for use in other functions export vpn_service vpn_user vpn_password setup_vpn diff --git a/install.sh b/install.sh index c9602bf..c693b6e 100644 --- a/install.sh +++ b/install.sh @@ -202,36 +202,47 @@ configure_vpn() { log_info "Please check $vpn_service's documentation for specific configuration:" log_info "https://github.com/qdm12/gluetun-wiki/blob/main/setup/providers/${vpn_service// /-}.md" - log_warning "If you are using ProtonVPN, remember to suffix '+pmp' to your username" echo read -p "VPN username (without spaces): " vpn_user [ -z "$vpn_user" ] && log_error "VPN username cannot be empty" - # Use hidden input for password - unset vpn_password - charcount=0 - prompt="VPN password (if using mullvad, enter username again): " - while IFS= read -p "$prompt" -r -s -n 1 char; do - if [[ $char == $'\0' ]]; then - break - fi - if [[ $char == $'\177' ]]; then - if [ $charcount -gt 0 ]; then - charcount=$((charcount-1)) - prompt=$'\b \b' - vpn_password="${vpn_password%?}" - else - prompt='' - fi - else - charcount=$((charcount+1)) - prompt='*' - vpn_password+="$char" - fi - done - echo + # Handle special cases for VPN providers + if [ "$vpn_service" = "protonvpn" ] && [[ ! "$vpn_user" =~ \+pmp$ ]]; then + vpn_user="${vpn_user}+pmp" + log_info "Added +pmp suffix to username for ProtonVPN port forwarding" + fi - [ -z "$vpn_password" ] && log_error "VPN password cannot be empty" + # Handle password input based on VPN service + if [ "$vpn_service" = "mullvad" ]; then + vpn_password="$vpn_user" + log_info "Using Mullvad username as password" + else + # Use hidden input for password + unset vpn_password + charcount=0 + prompt="VPN password: " + while IFS= read -p "$prompt" -r -s -n 1 char; do + if [[ $char == $'\0' ]]; then + break + fi + if [[ $char == $'\177' ]]; then + if [ $charcount -gt 0 ]; then + charcount=$((charcount-1)) + prompt=$'\b \b' + vpn_password="${vpn_password%?}" + else + prompt='' + fi + else + charcount=$((charcount+1)) + prompt='*' + vpn_password+="$char" + fi + done + echo + + [ -z "$vpn_password" ] && log_error "VPN password cannot be empty" + fi # Export for use in other functions export vpn_service vpn_user vpn_password setup_vpn