mirror of
https://github.com/elisspace/rtinst.git
synced 2026-08-29 15:44:06 +00:00
111 lines
3.4 KiB
Bash
Executable File
111 lines
3.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#########################################################################################
|
|
#
|
|
# Copyright (c) 2015 arakasi72 (https://github.com/arakasi72)
|
|
#
|
|
# --> Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
|
#
|
|
#########################################################################################
|
|
|
|
|
|
headless=0
|
|
osname=$(lsb_release -si)
|
|
[ -z $logfile ] && logfile="/dev/null"
|
|
if [ -z $serverip ]; then
|
|
headless=1
|
|
fi
|
|
|
|
#check it is being run as root
|
|
if [ "$(id -u)" != "0" ]; then
|
|
echo "Must be run from root or using sudo" && exit 1
|
|
fi
|
|
|
|
if [ $headless = 1 ]; then
|
|
serveripa=$(ip route get 8.8.8.8 | awk 'NR==1 {print $7}')
|
|
serveripb=$(wget -qO- ipecho.net/plain)
|
|
if [ "$serveripa" = "$serveripb" ]; then
|
|
serverip=$serveripa
|
|
else
|
|
echo "Select the IP address to use:"
|
|
echo "1.) "$serveripa
|
|
echo "2.) "$serveripb
|
|
|
|
while true
|
|
do
|
|
read answer
|
|
case $answer in [1] ) serverip=$serveripa && break ;;
|
|
[2] ) serverip=$serveripb && break ;;
|
|
* ) echo "Enter 1 or 2";;
|
|
esac
|
|
done
|
|
fi
|
|
serverdn=$(perl -MSocket -le "print((gethostbyaddr(inet_aton('$serverip'), AF_INET))[0])")
|
|
fi
|
|
|
|
echo "IP: $serverip"
|
|
echo "DN: $serverdn"
|
|
|
|
if [ -z $serverdn ]; then
|
|
echo "Unable to determine domain name cannot setup Lets Encypt"
|
|
exit 1
|
|
fi
|
|
|
|
#Installing Certbot
|
|
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
|
|
echo "Installing certbot"
|
|
|
|
if [ "$osname" = "Ubuntu" ]; then
|
|
apt-get -q update >> $logfile 2>&1
|
|
add-apt-repository -y universe >> $logfile 2>&1
|
|
add-apt-repository -y ppa:certbot/certbot >> $logfile 2>&1
|
|
apt-get -q update >> $logfile 2>&1
|
|
apt-get install -y certbot python-certbot-nginx >> $logfile 2>&1
|
|
else
|
|
deb_name=$(lsb_release --codename --short)
|
|
grep "^deb http\:\/\/deb\.debian\.org\/debian $deb_name-backports main" /etc/apt/sources.list > /dev/null || echo "deb http://deb.debian.org/debian $deb_name-backports main" >> /etc/apt/sources.list
|
|
apt-get -q update >> $logfile 2>&1
|
|
apt-get install -y certbot python-certbot-nginx -t $deb_name-backports >> $logfile 2>&1
|
|
fi
|
|
else
|
|
echo "certbot already installed"
|
|
fi
|
|
|
|
if [ $(dpkg-query -W -f='${Status}' "certbot" 2>/dev/null | grep -c "ok installed") = 0 ]; then
|
|
echo "Install Failed"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
#Generating Certificates
|
|
certbot -q --nginx --register-unsafely-without-email --agree-tos certonly -d $serverdn >> $logfile 2>&1
|
|
|
|
if [ $? = 1 ]; then
|
|
echo "unable to generate certificates"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Certificates Generated"
|
|
|
|
if [ $headless = 0 ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -d "/etc/letsencrypt/live/$serverdn" ]; then
|
|
echo "Replacing certificates in nginx and vsftpd"
|
|
|
|
sed -i "/^\(\s\|#\)*server_name/ c\ server_name $serverdn;" /etc/nginx/sites-available/default
|
|
sed -i "/ssl_certificate / c\ ssl_certificate /etc/letsencrypt/live/$serverdn/fullchain.pem;" /etc/nginx/sites-available/default
|
|
sed -i "/ssl_certificate_key / c\ ssl_certificate_key /etc/letsencrypt/live/$serverdn/privkey.pem;" /etc/nginx/sites-available/default
|
|
|
|
service nginx restart
|
|
|
|
sed -i "/^\(\s\|#\)*rsa_cert_file/ c\rsa_cert_file=/etc/letsencrypt/live/$serverdn/fullchain.pem" /etc/vsftpd.conf
|
|
sed -i "/^\(\s\|#\)*rsa_private_key_file/ c\rsa_private_key_file=/etc/letsencrypt/live/$serverdn/privkey.pem" /etc/vsftpd.conf
|
|
|
|
service vsftpd restart
|
|
fi
|
|
|
|
|
|
|