diff --git a/extras/vpnsetup-debian-7-workaround.sh b/extras/vpnsetup-debian-7-workaround.sh index 3f315ca..ab6ffa8 100644 --- a/extras/vpnsetup-debian-7-workaround.sh +++ b/extras/vpnsetup-debian-7-workaround.sh @@ -22,26 +22,23 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -echoerr() { echo "$@" 1>&2; } +exiterr() { echo "Error: ${1}" >&2; exit 1; } if [ "$(sed 's/\..*//' /etc/debian_version 2>/dev/null)" != "7" ]; then - echoerr "This script only supports Debian 7 (Wheezy)." - exit 1 + exiterr "This script only supports Debian 7 (Wheezy)." fi if [ "$(uname -m)" != "x86_64" ]; then - echoerr "This script only supports 64-bit Debian 7." - exit 1 + exiterr "This script only supports 64-bit Debian 7." fi if [ "$(id -u)" != 0 ]; then - echoerr "Script must be run as root. Try 'sudo sh $0'" - exit 1 + exiterr "Script must be run as root. Try 'sudo sh $0'" fi # Create and change to working dir mkdir -p /opt/src -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." # Update package index and install wget export DEBIAN_FRONTEND=noninteractive @@ -71,8 +68,6 @@ if [ -s "$deb1" ] && [ -s "$deb2" ] && [ -s "$deb3" ] && [ -s "$deb4" ] && [ -s echo 'Completed! If no error, you may now proceed to run the VPN setup script.' exit 0 else - echoerr - echoerr 'Could not download libnss/libnspr package(s). Aborting.' /bin/rm -f "$deb1" "$deb2" "$deb3" "$deb4" "$deb5" - exit 1 + exiterr 'Could not download libnss/libnspr package(s).' fi diff --git a/extras/vpnupgrade_Libreswan.sh b/extras/vpnupgrade_Libreswan.sh index 15e427e..82094ec 100644 --- a/extras/vpnupgrade_Libreswan.sh +++ b/extras/vpnupgrade_Libreswan.sh @@ -17,33 +17,28 @@ swan_ver=3.17 export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -echoerr() { echo "$@" 1>&2; } +exiterr() { echo "Error: ${1}" >&2; exit 1; } os_type="$(lsb_release -si 2>/dev/null)" if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then - echoerr "This script only supports Ubuntu/Debian." - exit 1 + exiterr "This script only supports Ubuntu/Debian." fi if [ -f /proc/user_beancounters ]; then - echoerr "This script does not support OpenVZ VPS." - exit 1 + exiterr "This script does not support OpenVZ VPS." fi if [ "$(id -u)" != 0 ]; then - echoerr "Script must be run as root. Try 'sudo sh $0'" - exit 1 + exiterr "Script must be run as root. Try 'sudo sh $0'" fi if [ -z "$swan_ver" ]; then - echoerr "Libreswan version 'swan_ver' not specified. Aborting." - exit 1 + exiterr "Libreswan version 'swan_ver' not specified." fi /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan" if [ "$?" != "0" ]; then - echoerr "This script requires Libreswan already installed. Aborting." - exit 1 + exiterr "This script requires Libreswan already installed." fi /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan $swan_ver" @@ -100,7 +95,7 @@ esac # Create and change to working dir mkdir -p /opt/src -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." # Update package index and install Wget export DEBIAN_FRONTEND=noninteractive @@ -119,10 +114,10 @@ swan_file="libreswan-${swan_ver}.tar.gz" swan_url1="https://download.libreswan.org/$swan_file" swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz" wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2" -[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot download Libreswan source." /bin/rm -rf "/opt/src/libreswan-$swan_ver" tar xzf "$swan_file" && /bin/rm -f "$swan_file" -cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; } +cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir." echo "WERROR_CFLAGS =" > Makefile.inc.local if [ "$(packaging/utils/lswan_detect.sh init)" = "systemd" ]; then apt-get -yq install libsystemd-dev @@ -130,10 +125,10 @@ fi make -s programs && make -s install # Verify the install and clean up -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." /bin/rm -rf "/opt/src/libreswan-$swan_ver" /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver" -[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build." # Restart IPsec service service ipsec restart diff --git a/extras/vpnupgrade_Libreswan_centos.sh b/extras/vpnupgrade_Libreswan_centos.sh index ef85a93..3d38ad1 100644 --- a/extras/vpnupgrade_Libreswan_centos.sh +++ b/extras/vpnupgrade_Libreswan_centos.sh @@ -17,37 +17,31 @@ swan_ver=3.17 export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -echoerr() { echo "$@" 1>&2; } +exiterr() { echo "Error: ${1}" >&2; exit 1; } if [ ! -f /etc/redhat-release ]; then - echoerr "This script only supports CentOS/RHEL." - exit 1 + exiterr "This script only supports CentOS/RHEL." fi if ! grep -qs -e "release 6" -e "release 7" /etc/redhat-release; then - echoerr "This script only supports CentOS/RHEL 6 and 7." - exit 1 + exiterr "This script only supports CentOS/RHEL 6 and 7." fi if [ -f /proc/user_beancounters ]; then - echoerr "This script does not support OpenVZ VPS." - exit 1 + exiterr "This script does not support OpenVZ VPS." fi if [ "$(id -u)" != 0 ]; then - echoerr "Script must be run as root. Try 'sudo sh $0'" - exit 1 + exiterr "Script must be run as root. Try 'sudo sh $0'" fi if [ -z "$swan_ver" ]; then - echoerr "Libreswan version 'swan_ver' not specified. Aborting." - exit 1 + exiterr "Libreswan version 'swan_ver' not specified." fi /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan" if [ "$?" != "0" ]; then - echoerr "This script requires Libreswan already installed. Aborting." - exit 1 + exiterr "This script requires Libreswan already installed." fi /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "Libreswan $swan_ver" @@ -95,7 +89,7 @@ esac # Create and change to working dir mkdir -p /opt/src -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." # Install Wget yum -y install wget @@ -103,7 +97,7 @@ yum -y install wget # Add the EPEL repository yum -y install epel-release yum list installed epel-release >/dev/null 2>&1 -[ "$?" != "0" ] && { echoerr "Cannot add EPEL repository. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot add EPEL repository." # Install necessary packages yum -y install nss-devel nspr-devel pkgconfig pam-devel \ @@ -124,18 +118,18 @@ swan_file="libreswan-${swan_ver}.tar.gz" swan_url1="https://download.libreswan.org/$swan_file" swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz" wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2" -[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot download Libreswan source." /bin/rm -rf "/opt/src/libreswan-$swan_ver" tar xzf "$swan_file" && /bin/rm -f "$swan_file" -cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; } +cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir." echo "WERROR_CFLAGS =" > Makefile.inc.local make -s programs && make -s install # Verify the install and clean up -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." /bin/rm -rf "/opt/src/libreswan-$swan_ver" /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver" -[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build." # Restore SELinux contexts restorecon /etc/ipsec.d/*db 2>/dev/null diff --git a/vpnsetup.sh b/vpnsetup.sh index 82279c1..da74ec4 100755 --- a/vpnsetup.sh +++ b/vpnsetup.sh @@ -33,28 +33,25 @@ YOUR_PASSWORD='' export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -echoerr() { echo "$@" 1>&2; } +exiterr() { echo "Error: ${1}" >&2; exit 1; } os_type="$(lsb_release -si 2>/dev/null)" if [ "$os_type" != "Ubuntu" ] && [ "$os_type" != "Debian" ]; then - echoerr "This script only supports Ubuntu/Debian." - exit 1 + exiterr "This script only supports Ubuntu/Debian." fi if [ -f /proc/user_beancounters ]; then - echoerr "This script does not support OpenVZ VPS." - exit 1 + exiterr "This script does not support OpenVZ VPS." fi if [ "$(id -u)" != 0 ]; then - echoerr "Script must be run as root. Try 'sudo sh $0'" - exit 1 + exiterr "Script must be run as root. Try 'sudo sh $0'" fi eth0_state=$(cat /sys/class/net/eth0/operstate 2>/dev/null) if [ -z "$eth0_state" ] || [ "$eth0_state" = "down" ]; then cat 1>&2 <<'EOF' -Network interface 'eth0' is not available. Aborting. +Error: Network interface 'eth0' is not available. Run 'cat /proc/net/dev' to find the active network interface, then use it to replace ALL 'eth0' and 'eth+' in this script. @@ -75,8 +72,7 @@ if [ -z "$VPN_IPSEC_PSK" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ]; then fi if [ -z "$VPN_IPSEC_PSK" ] || [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then - echoerr "All VPN credentials must be specified. Edit the script and re-enter them." - exit 1 + exiterr "All VPN credentials must be specified. Edit the script and re-enter them." fi if [ "$(sed 's/\..*//' /etc/debian_version 2>/dev/null)" = "7" ]; then @@ -98,7 +94,7 @@ EOF # Create and change to working dir mkdir -p /opt/src -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." # Update package index export DEBIAN_FRONTEND=noninteractive @@ -136,12 +132,10 @@ PRIVATE_IP=${VPN_PRIVATE_IP:-''} # Check IPs for correct format IP_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" if ! printf %s "$PUBLIC_IP" | grep -Eq "$IP_REGEX"; then - echoerr "Cannot find valid public IP. Edit the script and manually enter IPs." - exit 1 + exiterr "Cannot find valid public IP. Edit the script and manually enter IPs." fi if ! printf %s "$PRIVATE_IP" | grep -Eq "$IP_REGEX"; then - echoerr "Cannot find valid private IP. Edit the script and manually enter IPs." - exit 1 + exiterr "Cannot find valid private IP. Edit the script and manually enter IPs." fi # Install necessary packages @@ -161,10 +155,10 @@ swan_file="libreswan-${swan_ver}.tar.gz" swan_url1="https://download.libreswan.org/$swan_file" swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz" wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2" -[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot download Libreswan source." /bin/rm -rf "/opt/src/libreswan-$swan_ver" tar xzf "$swan_file" && /bin/rm -f "$swan_file" -cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; } +cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir." echo "WERROR_CFLAGS =" > Makefile.inc.local if [ "$(packaging/utils/lswan_detect.sh init)" = "systemd" ]; then apt-get -yq install libsystemd-dev @@ -172,10 +166,10 @@ fi make -s programs && make -s install # Verify the install and clean up -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." /bin/rm -rf "/opt/src/libreswan-$swan_ver" /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver" -[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build." # Create IPsec (Libreswan) config sys_dt="$(date +%Y-%m-%d-%H:%M:%S)" diff --git a/vpnsetup_centos.sh b/vpnsetup_centos.sh index e2d7882..99feb62 100755 --- a/vpnsetup_centos.sh +++ b/vpnsetup_centos.sh @@ -33,32 +33,28 @@ YOUR_PASSWORD='' export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" -echoerr() { echo "$@" 1>&2; } +exiterr() { echo "Error: ${1}" >&2; exit 1; } if [ ! -f /etc/redhat-release ]; then - echoerr "This script only supports CentOS/RHEL." - exit 1 + exiterr "This script only supports CentOS/RHEL." fi if ! grep -qs -e "release 6" -e "release 7" /etc/redhat-release; then - echoerr "This script only supports CentOS/RHEL 6 and 7." - exit 1 + exiterr "This script only supports CentOS/RHEL 6 and 7." fi if [ -f /proc/user_beancounters ]; then - echoerr "This script does not support OpenVZ VPS." - exit 1 + exiterr "This script does not support OpenVZ VPS." fi if [ "$(id -u)" != 0 ]; then - echoerr "Script must be run as root. Try 'sudo sh $0'" - exit 1 + exiterr "Script must be run as root. Try 'sudo sh $0'" fi eth0_state=$(cat /sys/class/net/eth0/operstate 2>/dev/null) if [ -z "$eth0_state" ] || [ "$eth0_state" = "down" ]; then cat 1>&2 <<'EOF' -Network interface 'eth0' is not available. Aborting. +Error: Network interface 'eth0' is not available. Run 'cat /proc/net/dev' to find the active network interface, then use it to replace ALL 'eth0' and 'eth+' in this script. @@ -79,8 +75,7 @@ if [ -z "$VPN_IPSEC_PSK" ] && [ -z "$VPN_USER" ] && [ -z "$VPN_PASSWORD" ]; then fi if [ -z "$VPN_IPSEC_PSK" ] || [ -z "$VPN_USER" ] || [ -z "$VPN_PASSWORD" ]; then - echoerr "All VPN credentials must be specified. Edit the script and re-enter them." - exit 1 + exiterr "All VPN credentials must be specified. Edit the script and re-enter them." fi cat <<'EOF' @@ -90,7 +85,7 @@ EOF # Create and change to working dir mkdir -p /opt/src -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." # Make sure basic commands exist yum -y install wget bind-utils openssl @@ -124,18 +119,16 @@ PRIVATE_IP=${VPN_PRIVATE_IP:-''} # Check IPs for correct format IP_REGEX="^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" if ! printf %s "$PUBLIC_IP" | grep -Eq "$IP_REGEX"; then - echoerr "Cannot find valid public IP. Edit the script and manually enter IPs." - exit 1 + exiterr "Cannot find valid public IP. Edit the script and manually enter IPs." fi if ! printf %s "$PRIVATE_IP" | grep -Eq "$IP_REGEX"; then - echoerr "Cannot find valid private IP. Edit the script and manually enter IPs." - exit 1 + exiterr "Cannot find valid private IP. Edit the script and manually enter IPs." fi # Add the EPEL repository yum -y install epel-release yum list installed epel-release >/dev/null 2>&1 -[ "$?" != "0" ] && { echoerr "Cannot add EPEL repository. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot add EPEL repository." # Install necessary packages yum -y install nss-devel nspr-devel pkgconfig pam-devel \ @@ -161,18 +154,18 @@ swan_file="libreswan-${swan_ver}.tar.gz" swan_url1="https://download.libreswan.org/$swan_file" swan_url2="https://github.com/libreswan/libreswan/archive/v${swan_ver}.tar.gz" wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url1" || wget -t 3 -T 30 -nv -O "$swan_file" "$swan_url2" -[ "$?" != "0" ] && { echoerr "Cannot download Libreswan source. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Cannot download Libreswan source." /bin/rm -rf "/opt/src/libreswan-$swan_ver" tar xzf "$swan_file" && /bin/rm -f "$swan_file" -cd "libreswan-$swan_ver" || { echoerr "Cannot enter Libreswan source dir. Aborting."; exit 1; } +cd "libreswan-$swan_ver" || exiterr "Cannot enter Libreswan source dir." echo "WERROR_CFLAGS =" > Makefile.inc.local make -s programs && make -s install # Verify the install and clean up -cd /opt/src || exit 1 +cd /opt/src || exiterr "Cannot enter /opt/src." /bin/rm -rf "/opt/src/libreswan-$swan_ver" /usr/local/sbin/ipsec --version 2>/dev/null | grep -qs "$swan_ver" -[ "$?" != "0" ] && { echoerr; echoerr "Libreswan $swan_ver failed to build. Aborting."; exit 1; } +[ "$?" != "0" ] && exiterr "Libreswan $swan_ver failed to build." # Create IPsec (Libreswan) config sys_dt="$(date +%Y-%m-%d-%H:%M:%S)"