48 lines
1.2 KiB
Bash
Executable File
48 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# letsencrypt-tools
|
|
# https://git.stack-source.com/msb/letsencrypt-tools
|
|
# Copyright (c) 2022 Matthew Saunders Brown <matthewsaundersbrown@gmail.com>
|
|
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
|
#
|
|
# must be root
|
|
if [ "$USER" != "root" ]; then
|
|
exec sudo -u root $0 $@
|
|
fi
|
|
|
|
help()
|
|
{
|
|
thisfilename=$(basename -- "$0")
|
|
echo "Bulk installs Let's Encrypt certificates."
|
|
echo ""
|
|
echo "Usage: $thisfilename [OPTIONS]"
|
|
echo ""
|
|
echo " -h Print this help."
|
|
echo
|
|
echo " Checks /srv/www/ for all virtualhosts and"
|
|
echo " runs letsencrypt-certonly.sh for any site"
|
|
echo " that doesn't already have a cert installed."
|
|
exit
|
|
}
|
|
|
|
|
|
# check for help
|
|
if [ -n "$1" ]; then
|
|
help
|
|
fi
|
|
|
|
readarray -t virtualhosts < <(ls -1 /srv/www/|grep -v ^html$)
|
|
|
|
for virtualhost in "${virtualhosts[@]}"; do
|
|
|
|
# basic but good enough domain name regex validation
|
|
if [[ $virtualhost =~ ^(([a-zA-Z0-9](-?[a-zA-Z0-9])*)\.)+[a-zA-Z]{2,}$ ]] ; then
|
|
if [ ! -f /etc/letsencrypt/renewal/$virtualhost.conf ]; then
|
|
echo "/usr/local/bin/letsencrypt-certonly.sh -d $virtualhost"
|
|
fi
|
|
fi
|
|
|
|
# add code here to enable apache config
|
|
|
|
done
|