mirror of
https://github.com/hwdsl2/wireguard-install.git
synced 2024-06-13 06:24:02 +02:00
Improve reliability
- Wrap the script in a function to guard against partial download.
This commit is contained in:
parent
8b973fb110
commit
02e3ddd89d
|
@ -27,75 +27,6 @@
|
|||
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
# Detect Debian users running the script with "sh" instead of bash
|
||||
if readlink /proc/$$/exe | grep -q "dash"; then
|
||||
echo 'This installer needs to be run with "bash", not "sh".'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Discard stdin. Needed when running from an one-liner which includes a newline
|
||||
read -N 999999 -t 0.001
|
||||
|
||||
# Detect OpenVZ 6
|
||||
if [[ $(uname -r | cut -d "." -f 1) -eq 2 ]]; then
|
||||
echo "The system is running an old kernel, which is incompatible with this installer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect OS
|
||||
# $os_version variables aren't always in use, but are kept here for convenience
|
||||
if grep -qs "ubuntu" /etc/os-release; then
|
||||
os="ubuntu"
|
||||
os_version=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2 | tr -d '.')
|
||||
elif [[ -e /etc/debian_version ]]; then
|
||||
os="debian"
|
||||
os_version=$(grep -oE '[0-9]+' /etc/debian_version | head -1)
|
||||
elif [[ -e /etc/almalinux-release || -e /etc/rocky-release || -e /etc/centos-release ]]; then
|
||||
os="centos"
|
||||
os_version=$(grep -shoE '[0-9]+' /etc/almalinux-release /etc/rocky-release /etc/centos-release | head -1)
|
||||
elif [[ -e /etc/fedora-release ]]; then
|
||||
os="fedora"
|
||||
os_version=$(grep -oE '[0-9]+' /etc/fedora-release | head -1)
|
||||
else
|
||||
echo "This installer seems to be running on an unsupported distribution.
|
||||
Supported distros are Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS and Fedora."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "ubuntu" && "$os_version" -lt 1804 ]]; then
|
||||
echo "Ubuntu 18.04 or higher is required to use this installer.
|
||||
This version of Ubuntu is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "debian" && "$os_version" -lt 10 ]]; then
|
||||
echo "Debian 10 or higher is required to use this installer.
|
||||
This version of Debian is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "centos" && "$os_version" -lt 7 ]]; then
|
||||
echo "CentOS 7 or higher is required to use this installer.
|
||||
This version of CentOS is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect environments where $PATH does not include the sbin directories
|
||||
if ! grep -q sbin <<< "$PATH"; then
|
||||
echo '$PATH does not include sbin. Try using "su -" instead of "su".'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(id -u)" != 0 ]; then
|
||||
echo "This installer must be run as root. Try 'sudo bash $0'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if systemd-detect-virt -cq 2>/dev/null; then
|
||||
echo "This system is running inside a container, which is not supported by this installer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
check_ip() {
|
||||
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])$'
|
||||
printf '%s' "$1" | tr -d '\n' | grep -Eq "$IP_REGEX"
|
||||
|
@ -268,6 +199,77 @@ EOF
|
|||
chmod 600 "$export_dir$client".conf
|
||||
}
|
||||
|
||||
wgsetup() {
|
||||
|
||||
# Detect Debian users running the script with "sh" instead of bash
|
||||
if readlink /proc/$$/exe | grep -q "dash"; then
|
||||
echo 'This installer needs to be run with "bash", not "sh".'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Discard stdin. Needed when running from an one-liner which includes a newline
|
||||
read -N 999999 -t 0.001
|
||||
|
||||
# Detect OpenVZ 6
|
||||
if [[ $(uname -r | cut -d "." -f 1) -eq 2 ]]; then
|
||||
echo "The system is running an old kernel, which is incompatible with this installer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect OS
|
||||
# $os_version variables aren't always in use, but are kept here for convenience
|
||||
if grep -qs "ubuntu" /etc/os-release; then
|
||||
os="ubuntu"
|
||||
os_version=$(grep 'VERSION_ID' /etc/os-release | cut -d '"' -f 2 | tr -d '.')
|
||||
elif [[ -e /etc/debian_version ]]; then
|
||||
os="debian"
|
||||
os_version=$(grep -oE '[0-9]+' /etc/debian_version | head -1)
|
||||
elif [[ -e /etc/almalinux-release || -e /etc/rocky-release || -e /etc/centos-release ]]; then
|
||||
os="centos"
|
||||
os_version=$(grep -shoE '[0-9]+' /etc/almalinux-release /etc/rocky-release /etc/centos-release | head -1)
|
||||
elif [[ -e /etc/fedora-release ]]; then
|
||||
os="fedora"
|
||||
os_version=$(grep -oE '[0-9]+' /etc/fedora-release | head -1)
|
||||
else
|
||||
echo "This installer seems to be running on an unsupported distribution.
|
||||
Supported distros are Ubuntu, Debian, AlmaLinux, Rocky Linux, CentOS and Fedora."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "ubuntu" && "$os_version" -lt 1804 ]]; then
|
||||
echo "Ubuntu 18.04 or higher is required to use this installer.
|
||||
This version of Ubuntu is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "debian" && "$os_version" -lt 10 ]]; then
|
||||
echo "Debian 10 or higher is required to use this installer.
|
||||
This version of Debian is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$os" == "centos" && "$os_version" -lt 7 ]]; then
|
||||
echo "CentOS 7 or higher is required to use this installer.
|
||||
This version of CentOS is too old and unsupported."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Detect environments where $PATH does not include the sbin directories
|
||||
if ! grep -q sbin <<< "$PATH"; then
|
||||
echo '$PATH does not include sbin. Try using "su -" instead of "su".'
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$(id -u)" != 0 ]; then
|
||||
echo "This installer must be run as root. Try 'sudo bash $0'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if systemd-detect-virt -cq 2>/dev/null; then
|
||||
echo "This system is running inside a container, which is not supported by this installer."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -e /etc/wireguard/wg0.conf ]]; then
|
||||
if [ "$os" = "centos" ]; then
|
||||
if grep -qs "hwdsl2 VPN script" /etc/sysconfig/nftables.conf \
|
||||
|
@ -822,3 +824,9 @@ else
|
|||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
## Defer setup until we have the complete script
|
||||
wgsetup "$@"
|
||||
|
||||
exit 0
|
||||
|
|
Loading…
Reference in New Issue
Block a user