Make port check optional, add y/n prompt (#448)

This commit is contained in:
Ruben Homs 2019-10-24 02:40:36 +02:00 committed by Sam
parent 87fd7172af
commit b6379984c2
1 changed files with 51 additions and 34 deletions

View File

@ -18,30 +18,43 @@ check_root() {
connect_to_port () {
HOST="$1"
PORT="$2"
VERIFY=`date +%s | sha256sum | base64 | head -c 20`
VERIFY=$(date +%s | sha256sum | base64 | head -c 20)
if ! [ -x "$(command -v nc)" ]; then
echo "In order to check the connection to $HOST:$PORT we need to open a socket using netcat."
echo However netcat is not installed on your system. You can continue without this check
echo or abort the setup, install netcat and try again.
while true; do
read -p "Would you like to continue without this check? [yn] " yn
case $yn in
[Yy]*) return 2 ;;
[Nn]*) exit ;;
*) echo "Please answer y or n." ;;
esac
done
else
echo -e "HTTP/1.1 200 OK\n\n $VERIFY" | nc -w 4 -l -p $PORT >/dev/null 2>&1 &
if curl --proto =http -s $HOST:$PORT --connect-timeout 3 | grep $VERIFY >/dev/null 2>&1
then
if curl --proto =http -s $HOST:$PORT --connect-timeout 3 | grep $VERIFY >/dev/null 2>&1; then
return 0
else
curl --proto =http -s localhost:$PORT >/dev/null 2>&1
return 1
fi
fi
}
check_IP_match() {
HOST="$1"
echo
echo Checking your domain name . . .
if connect_to_port $HOST 443
then
echo
connect_to_port $HOST 443; ec=$?
case $ec in
0)
echo "Connection to $HOST succeeded."
else
echo WARNING:: This server does not appear to be accessible at $HOST:443.
;;
1)
echo "WARNING:: This server does not appear to be accessible at $HOST:443."
echo
if connect_to_port $HOST 80
then
if connect_to_port $HOST 80; then
echo A connection to port 80 succeeds, however.
echo This suggests that your DNS settings are correct,
echo but something is keeping traffic to port 443 from getting to your server.
@ -49,7 +62,7 @@ check_IP_match () {
else
echo "A connection to http://$HOST (port 80) also fails."
echo
echo This suggests that $HOST resolves to the wrong IP address
echo "This suggests that $HOST resolves to the wrong IP address"
echo or that traffic is not being routed to your server.
fi
echo
@ -58,9 +71,13 @@ check_IP_match () {
echo You should probably answer \"n\" at the next prompt and disable Let\'s Encrypt.
echo
echo This test might not work for all situations,
echo so if you can access Discourse at http://$HOST, you might try anyway.
echo "so if you can access Discourse at http://$HOST, you might try anyway."
sleep 3
fi
;;
2)
echo "Continuing without port check."
;;
esac
}
##