port checking tweaks
This commit is contained in:
parent
7a96c86d09
commit
7f2d626012
|
@ -10,50 +10,55 @@ check_root() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
##
|
||||||
|
## Check whether a connection to HOSTNAME ($1) on PORT ($2) is possible
|
||||||
|
##
|
||||||
|
connect_to_port () {
|
||||||
|
HOST="$1"
|
||||||
|
PORT="$2"
|
||||||
|
VERIFY=`date +%s | sha256sum | base64 | head -c 20`
|
||||||
|
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
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
curl --proto =http -s localhost:$PORT >/dev/null 2>&1
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
##
|
|
||||||
## Does the current IP match the domain name?
|
|
||||||
##
|
|
||||||
check_IP_match () {
|
check_IP_match () {
|
||||||
|
HOST="$1"
|
||||||
echo
|
echo
|
||||||
echo Checking your domain name . . .
|
echo Checking your domain name . . .
|
||||||
sleep 1
|
if connect_to_port $HOST 443
|
||||||
local IFACE=none
|
|
||||||
local IFCONFIG=`which ifconfig`
|
|
||||||
/sbin/route |grep default > /tmp/route$PPID
|
|
||||||
|
|
||||||
if grep default /tmp/route$PPID > /dev/null
|
|
||||||
then
|
then
|
||||||
local IFACE=`cut -c 73-100 /tmp/route$PPID |head -1`
|
|
||||||
else
|
|
||||||
echo WARNING: Cannot check your IP number.
|
|
||||||
fi
|
|
||||||
local IP=`$IFCONFIG $IFACE|grep "inet addr:" |cut -d":" -f 2|cut -d" " -f1|head -1`
|
|
||||||
local RESOLVED_IP=`dig +short $1`
|
|
||||||
|
|
||||||
IP_LOOKS_GOOD=0
|
|
||||||
if [[ ! -z $RESOLVED_IP ]]
|
|
||||||
then
|
|
||||||
if [ "$IP" == "$RESOLVED_IP" ]
|
|
||||||
then
|
|
||||||
echo $1 resolves to $IP. Looks good!
|
|
||||||
echo
|
|
||||||
local IP_LOOKS_GOOD=1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ $IP_LOOKS_GOOD == 0 ]
|
|
||||||
then
|
|
||||||
echo "-----------------------------------------"
|
|
||||||
echo WARNING:: $1 does not appear to resolve to $IP.
|
|
||||||
echo ""
|
|
||||||
echo LET\'S ENCRYPT cannot work if their servers cannot access your host by name.
|
|
||||||
echo Unless you think you know why this naive check failed, DO NOT USE Let\'s Encrypt.
|
|
||||||
echo "(A typical reason for failure is an AWS server with an elastic IP.)"
|
|
||||||
echo
|
echo
|
||||||
echo You should probably answer \"n\" at the next prompt and disable Let\'s Encrypt.
|
echo "Connection to $HOST succeeded."
|
||||||
echo "-----------------------------------------"
|
else
|
||||||
|
echo WARNING:: This server does not appear to be accessible at $HOST:443.
|
||||||
|
echo
|
||||||
|
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.
|
||||||
|
echo Check your networking configuration to see that connections to port 443 are allowed.
|
||||||
|
else
|
||||||
|
echo "A connection to http://$HOST (port 80) also fails."
|
||||||
|
echo
|
||||||
|
echo This suggests that $HOST resolves to the wrong IP address
|
||||||
|
echo or that traffic is not being routed to your server.
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
echo Google: \"open ports YOUR CLOUD SERVICE\" for information for resolving this problem.
|
||||||
|
echo
|
||||||
|
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.
|
||||||
|
sleep 3
|
||||||
fi
|
fi
|
||||||
sleep 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
##
|
##
|
||||||
|
@ -117,6 +122,7 @@ check_disk_and_memory() {
|
||||||
|
|
||||||
if [ "$avail_mem" -le 2 ]; then
|
if [ "$avail_mem" -le 2 ]; then
|
||||||
total_swap=`free -g --si | awk ' /Swap:/ {print $2} '`
|
total_swap=`free -g --si | awk ' /Swap:/ {print $2} '`
|
||||||
|
|
||||||
if [ "$total_swap" -lt 2 ]; then
|
if [ "$total_swap" -lt 2 ]; then
|
||||||
echo "WARNING: Discourse requires at least 2GB of swap when running with 2GB of RAM"
|
echo "WARNING: Discourse requires at least 2GB of swap when running with 2GB of RAM"
|
||||||
echo "or less. This system does not appear to have sufficient swap space."
|
echo "or less. This system does not appear to have sufficient swap space."
|
||||||
|
@ -124,7 +130,8 @@ check_disk_and_memory() {
|
||||||
echo "Without sufficient swap space, your site may not work properly, and future"
|
echo "Without sufficient swap space, your site may not work properly, and future"
|
||||||
echo "upgrades of Discourse may not complete successfully."
|
echo "upgrades of Discourse may not complete successfully."
|
||||||
echo
|
echo
|
||||||
read -p "ENTER to create a 2GB swapfile now, or Ctrl+C to exit"
|
echo "Ctrl+C to exit or wait 5 seconds to have a 2GB swapfile created."
|
||||||
|
sleep 5
|
||||||
|
|
||||||
##
|
##
|
||||||
## derived from https://meta.discourse.org/t/13880
|
## derived from https://meta.discourse.org/t/13880
|
||||||
|
@ -221,6 +228,7 @@ scale_ram_and_cpu() {
|
||||||
rm $changelog
|
rm $changelog
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo $config_file memory parameters updated.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -533,6 +541,7 @@ ask_user_for_config() {
|
||||||
echo -e "\nConfiguration file at $config_file updated successfully!\n"
|
echo -e "\nConfiguration file at $config_file updated successfully!\n"
|
||||||
else
|
else
|
||||||
echo -e "\nUnfortunately, there was an error changing $config_file\n"
|
echo -e "\nUnfortunately, there was an error changing $config_file\n"
|
||||||
|
echo -d "This may happen if you have made unexpected changes."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -593,23 +602,27 @@ changelog=/tmp/changelog
|
||||||
check_root
|
check_root
|
||||||
check_and_install_docker
|
check_and_install_docker
|
||||||
check_disk_and_memory
|
check_disk_and_memory
|
||||||
check_ports
|
|
||||||
|
|
||||||
##
|
##
|
||||||
## make a copy of the simple standalone config file
|
## make a copy of the simple standalone config file
|
||||||
##
|
##
|
||||||
if [ -a $config_file ]
|
if [ -a $config_file ]
|
||||||
then
|
then
|
||||||
echo "The configuration file $config_file already exists!"
|
echo "The configuration file $config_file already exists."
|
||||||
echo
|
echo
|
||||||
echo ". . . reconfiguring . . ."
|
echo ". . . reconfiguring . . ."
|
||||||
echo
|
echo
|
||||||
|
echo
|
||||||
DATE=`date +"%Y-%m-%d-%H%M%S"`
|
DATE=`date +"%Y-%m-%d-%H%M%S"`
|
||||||
BACKUP=$app_name.yml.$DATE.bak
|
BACKUP=$app_name.yml.$DATE.bak
|
||||||
echo Saving old file as $BACKUP
|
echo Saving old file as $BACKUP
|
||||||
cp $config_file containers/$BACKUP
|
cp $config_file containers/$BACKUP
|
||||||
|
echo "Stopping existing container in 5 seconds or Control-C to cancel."
|
||||||
|
sleep 5
|
||||||
|
./launcher stop app
|
||||||
echo
|
echo
|
||||||
else
|
else
|
||||||
|
check_ports # don't need to check ports if Discourse was already installed
|
||||||
cp $template_path $config_file
|
cp $template_path $config_file
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -621,5 +634,6 @@ validate_config
|
||||||
## if we reach this point without exiting, OK to proceed
|
## if we reach this point without exiting, OK to proceed
|
||||||
## rebuild won't fail if there's nothing to rebuild and does the restart
|
## rebuild won't fail if there's nothing to rebuild and does the restart
|
||||||
##
|
##
|
||||||
|
echo "Updates successful. Rebuilding in 5 seconds."
|
||||||
sleep 5 # Just a chance to ^C in case they were too fast on the draw
|
sleep 5 # Just a chance to ^C in case they were too fast on the draw
|
||||||
time ./launcher rebuild $app_name
|
time ./launcher rebuild $app_name
|
||||||
|
|
Loading…
Reference in New Issue