Merge pull request 'added cloudflare DNS provider' (#5) from patch-1.3 into main

Reviewed-on: #5
This commit was merged in pull request #5.
This commit is contained in:
2025-11-14 20:32:39 +00:00
+36 -16
View File
@@ -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
f3