#!/bin/bash ####################################################################################################################### # Этот скрипт устанавливает/обновляет SSL сертификат от Let’s Encrypt # # Ничего изменять в этом файле не надо (если конечно вы не отдаете отчет своим действиям) # Параметры подключения и прочие конфигурации прописываются в конфигурационном файле. # Если конфигурационного файла нет, то при запуске будет создан шаблон конфигурационного файла # # Автор: SvC # Версия: 1.4.2.8 от 11.01.2021 # ####################################################################################################################### IFS_old=$IFS IFS="" # я не знаю что это за магический костыль, но благодаря ему перестали съедаться переносы строк true_script_name='le_ssl_renew' script_name=`basename $0` settings_path=`dirname $0` settings_name=$script_name.conf settings_fullname=$settings_path/$settings_name script_fullname=$settings_path/$script_name # проверка на наличие файла конфигурации if [ -e $settings_fullname ]; then settings_out=`/bin/cat $settings_fullname` check_update=`echo $settings_out | grep -P 'check_update' | cut -d '#' -f 1 | cut -d '=' -f 2 | awk '{$1=$1;print}'` script_token=`echo $settings_out | grep -P 'script_token' | cut -d '#' -f 1 | cut -d '=' -f 2 | awk '{$1=$1;print}'` domain=`echo $settings_out | grep -P 'domain' | cut -d '#' -f 1 | cut -d '=' -f 2 | awk '{$1=$1;print}'` path_to_le=`echo $settings_out | grep -P 'path_to_le' | cut -d '#' -f 1 | cut -d '=' -f 2 | awk '{$1=$1;print}'` # проверка обновлений if [ "$check_update" == "true" ]; then current_ver=`cat $script_fullname | grep -P '# Версия:' | head -1 | awk '{print $3}'` update_url="ss.svcserv.ru/update.php?script_name=$true_script_name¤t_ver=$current_ver&script_token=$script_token" update_ver=`/bin/curl -sL $update_url` if ((`echo $update_ver | cut -d '.' -f 4` > `echo $current_ver | cut -d '.' -f 4`)); then echo -e "\e[01;33mДоступно обновление ($current_ver -> $update_ver)\e[0m" echo 'Чтобы скачать напишите:' echo '' if [ "$script_name" == "$true_script_name" ]; then echo -e " rm $true_script_name && wget http://ss.svcserv.ru/$true_script_name && chmod ugo+x $true_script_name\e[0m" else echo -e " rm $script_name && wget http://ss.svcserv.ru/$true_script_name && chmod ugo+x $true_script_name && mv $true_script_name $script_name\e[0m" fi echo '' fi fi ####################################################################################################################### # тело скрипта current_path=$(pwd) site_name=`basename $current_path` # содание ssl хоста через летсенкрипт $path_to_le/certbot-auto --authenticator webroot --webroot-path $current_path/htdocs --installer apache -d $site_name.$domain # конец тела скрипта ####################################################################################################################### # если конфигурационного файла нет else script_token=`< /dev/urandom tr -dc A-Za-z0-9 | head -c32` echo "" echo "Файл $settings_name отсутствует" echo "Cоздан шаблон файла, заполните его и запустите команду заново" echo "# это файл настроек для скрипта $settings_name # скрипт и файл настроек должны иметь одинаковое имя, если вы переименовываете скрипт, то файл настроек должен быть так же переименован check_update=true # проверять ли обновления скрипта script_token=$script_token # токен позволяющий однозначно идентифицировать скрипт domain=svcserv.ru # домен второго уровня сайта (используется в конфиге виртуального хоста apache) path_to_le=/home/svc/letsencrypt # путь до Let’s Encrypt " > $settings_fullname fi