diff --git a/lego_wrapper.sh b/lego_wrapper.sh index 848e572..7d4b901 100644 --- a/lego_wrapper.sh +++ b/lego_wrapper.sh @@ -6,10 +6,10 @@ #revoked certificate names would be removed from existing list of issued certificates - done #cron jobs would be created for renew function - done #add auto update for lego tool - (also to cron) - done, not using cron making manual from menu +#add install for webserver type either apache/nginx - done -#add install for webserver type either apache/nginx - pending - -#auto create default config file for created domains (man i really wish i can do this. lol) +#auto create default config file for created domains (man i really wish i can do this. lol) - pfff - I definitely will - pending +#RSYNC to different servers when renewed (either through sshkey or password think sshkey would be nicer) - pending #Export to be based on user preference #Enviromental Variables for certificate paths, this is to make sure certificates are always issued in same path @@ -17,6 +17,7 @@ #Can be run without root - root only needed to install dependencies from apt/yum #should be folder that doesn't need root permission + #Use case - namecheap (environment variable depends on dns provider) #check out https://go-acme.github.io/lego/dns/index.html for dns provider variables @@ -33,16 +34,23 @@ install_as_sudo() { set_env_variables() { #envs for lego export CERT_PATH=/etc/acme - export CONTACT_MAIL=xxxxxxxxxxxxxxxxxxxxxxxx - export DNS_PROVIDER=namecheap - export NAMECHEAP_API_USER=xxxxxxxxxxxxxxxxxxxxxxxx - export NAMECHEAP_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxx + export CONTACT_MAIL=info@theonasanyas.com + export DNS_PROVIDER=cloudflare - #envs for path + #namecheap envs for lego + #export NAMECHEAP_API_USER=xxxxxxxxxxxxxxxxxxxxxxxx + #export NAMECHEAP_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxx + + #cloudflare envs for lego + export CLOUDFLARE_EMAIL=xxxxxxxxxxxxxxxxxxxxxxxx@xxxx.xxx + export CLOUDFLARE_DNS_API_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxx + + #envs for path - (i'm doing this to avoid lego being run without using this script) export LEGO_PATH=$CERT_PATH export GOPATH=$HOME/.go export GO_HOME=/usr/local/go export PATH=$PATH:$GO_HOME/bin:$GOPATH/bin + } check_dependencies() { @@ -176,7 +184,7 @@ install_web_server() { exit 0 ;; "apache") - eval "echo $SUDO_PASS | sudo -S $install_cmd install apach2e* -y" + eval "echo $SUDO_PASS | sudo -S $install_cmd install apache2* -y" echo_message exit 0 ;; @@ -195,11 +203,24 @@ echo_message(){ printf "\n\n\n" echo "run below command as admin if SELINUX is enabled to allow network connections" echo "setsebool httpd_can_network_connect 1" + echo "setsebool -P haproxy_connect_any=1" echo "Install firewall (firewall-cmd or ufw) for additional security" } update_lego() { + + ###to be used to store output from crontab renewals + LOG_PATH="$CERT_PATH/log" + DATE=$(date +%F-%H%M) + LOG_FILE="$LOG_PATH/lego-update-$DATE.log" + if [ ! -d $LOG_PATH ]; then + mkdir -p $LOG_PATH + fi + + echo " " + eval " lego -v" + echo " " export GO111MODULE=on eval "go install github.com/go-acme/lego/v4/cmd/lego@latest" 2>&1 | tee -a $LOG_FILE } @@ -274,12 +295,11 @@ autorenew() { ###to be used to store output from crontab renewals LOG_PATH="$CERT_PATH/log" DATE=$(date +%F-%H%M) - LOG_FILE="$LOG_PATH/acme-$DATE" + LOG_FILE="$LOG_PATH/acme-$DATE.log" if [ ! -d $LOG_PATH ]; then - mkdir -p $PATH + mkdir -p $LOG_PATH fi - for files in $(find $LEGO_PATH/certificates/*.json -type f); do IFS=$'\n' for file in $files; do @@ -295,10 +315,10 @@ autorenew() { functionlist() { PS3="Select Option to enter option or and key to exit: " - options=("run" "revoke" "renew" "list" "update lego" "install webserver") + options=("issue" "revoke" "renew" "list" "update lego" "install webserver") select option in "${options[@]}"; do case $option in - "run") + "issue") run ;; "revoke") @@ -327,7 +347,7 @@ functionlist() { functionvar() { case $1 in - "run") + "issue") run ;; "revoke") @@ -360,4 +380,4 @@ if [ -z "$1" ]; then else functionvar $1 exit 0 -fi \ No newline at end of file +f3 \ No newline at end of file