2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								#!/usr/bin/env bash
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# shellcheck shell=bash  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								##@Version           :  202407241259-git  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Author           :  Jason Hempstead  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Contact          :  git-admin@casjaysdev.pro  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@License          :  LICENSE.md  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@ReadME           :  docker-entrypoint --help  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Copyright        :  Copyright: (c) 2023 Jason Hempstead, Casjays Developments  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Created          :  Sunday, Sep 03, 2023 01:40 EDT  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@File             :  docker-entrypoint  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Description      :  functions for my docker containers  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Changelog        :  newScript  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@TODO             :  Refactor code  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Other            :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Resource         :  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Terminal App     :  no  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@sudo/root        :  no  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# @@Template         :  functions/docker-entrypoint  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# shellcheck disable=SC1001,SC1003,SC2001,SC2003,SC2016,SC2031,SC2120,SC2155,SC2199,SC2317,SC2329  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# setup debugging - https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[  -f "/config/.debug"  ]  &&  [  -z " $DEBUGGER_OPTIONS "  ]  &&  export  DEBUGGER_OPTIONS = " $( <"/config/.debug" ) "  ||  DEBUGGER_OPTIONS = " ${ DEBUGGER_OPTIONS :- } "  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  [  " $DEBUGGER "  =  "on"  ]  ||  [  -f "/config/.debug"  ] ;  }  &&  echo  "Enabling debugging"  &&  set  -xo pipefail -x$DEBUGGER_OPTIONS  &&  export  DEBUGGER = "on"  ||  set  -o pipefail 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__remove_extra_spaces( )  {  sed 's/\( \)*/\1/g;s|^ ||g' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__printf_space( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  pad = $( printf  '%0.1s'  " " { 1..60} ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  padlength = $1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  string1 = " $2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  string2 = " $3 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  message
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									message += " $( printf  '%s'  " $string1 " )   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									message += " $( printf  '%*.*s'  0  $(( padlength -  ${# string1 }  -  ${# string2 } ))  " $pad " )   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									message += " $( printf  '%s\n'  " $string2 " )   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									printf  '%s\n'  " $message " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__rm( )  {  [  -n " $1 "  ]  &&  [  -e " $1 "  ]  &&  rm -Rf " ${ 1 : ? } " ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__grep_test( )  {  grep -sh " $1 "  " $2 "  |  grep -qwF " ${ 3 :- $1 } "  ||  return  1;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__netstat( )  {  [  -f " $( type  -P netstat) "  ]  &&  netstat " $@ "  ||  return  10;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__cd( )  {  {  [  -d " $1 "  ]  ||  mkdir -p " $1 " ;  }  &&  builtin  cd  " $1 "  ||  return  1;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__is_in_file( )  {  [  -e " $2 "  ]  &&  grep -Rsq " $1 "  " $2 "  &&  return  0  ||  return  1;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__curl( )  {  curl -q -sfI --max-time 3  -k -o /dev/null " $@ "  & >/dev/null ||  return  10;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__find( )  {  find " $1 "  -mindepth 1  -type ${ 2 :- f ,d }  2>/dev/null |  grep '.'  ||  return  10;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__pcheck( )  {  [  -n " $( which pgrep 2>/dev/null) "  ]  &&  pgrep -x " $1 "  & >/dev/null ||  return  10;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__file_exists_with_content( )  {  [  -n " $1 "  ]  &&  [  -f " $1 "  ]  &&  [  -s " $1 "  ]  &&  return  0  ||  return  2;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__sed( )  {  sed -i 's|' $1 '|' $2 '|g'  " $3 "  & >/dev/null ||  sed -i " s| $1 | $2 |g "  " $3 "  & >/dev/null ||  return  1;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__ps( )  {  [  -f " $( type  -P ps) "  ]  &&  ps " $@ "  2>/dev/null |  sed 's|:||g'  |  grep -Fw "   ${ 1 :- $SERVICE_NAME } $"  ||  return  10;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__is_dir_empty( )  {  if  [  -n " $1 "  ] ;  then  [  " $( ls -A " $1 "  2>/dev/null |  wc -l) "  -eq 0  ]  &&  return  0  ||  return  1;  else  return  1;  fi ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__get_ip6( )  {  ip a 2>/dev/null |  grep -w 'inet6'  |  awk '{print $2}'  |  grep -vE '^::1|^fe'  |  sed 's|/.*||g'  |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__get_ip4( )  {  ip a 2>/dev/null |  grep -w 'inet'  |  awk '{print $2}'  |  grep -vE '^127.0.0'  |  sed 's|/.*||g'  |  head -n1 |  grep '.'  ||  echo  '127.0.0.1' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__pgrep( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  count = 3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  srvc = " ${ 1 :- SERVICE_NAME } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  [  $count  -ge 0  ] ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										# Use exact process name matching, not full command line search 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pgrep -x " $srvc "  >/dev/null 2>& 1  &&  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sleep 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										count = $(( count -  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  10 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_file_relative( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -e " $1 "  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find " $1 " /* -not -path '*env/*'  -not -path '.git*'  -type f 2>/dev/null |  sed 's|' $1 '/||g'  |  sort -u |  grep -v '^$'  |  grep '.'  ||  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_directory_relative( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d " $1 "  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find " $1 " /* -not -path '*env/*'  -not -path '.git*'  -type d 2>/dev/null |  sed 's|' $1 '/||g'  |  sort -u |  grep -v '^$'  |  grep '.'  ||  false 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__pid_exists( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  result = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result = " $( ps -ax --no-header 2>/dev/null |  sed 's/^[[:space:]]*//g'  |  awk -F' '  '{print $1}'  |  sed 's|:||g'  |  grep '[0-9]'  |  sort -uV |  grep " ^ $1 $"  2>/dev/null ||  echo  '' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $result "  ]  &&  return  0  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__is_running( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  result = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result = " $( ps -eo args --no-header 2>/dev/null |  awk '{print $1,$2,$3}'  |  sed 's|:||g'  |  sort -u |  grep -vE 'grep|COMMAND|awk|tee|ps|sed|sort|tail'  |  grep " $1 "  |  grep " ${ 2 :- ^ } "  2>/dev/null ||  echo  '' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $result "  ]  &&  return  0  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__get_pid( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  result = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									result = " $( ps -ax --no-header 2>/dev/null |  sed 's/^[[:space:]]*//g;s|;||g;s|:||g'  |  awk '{print $1,$5}'  |  sed 's|:||g'  |  grep " $1 $"  |  grep -v 'grep'  |  awk -F' '  '{print $1}'  |  grep '[0-9]'  |  sort -uV |  head -n1 |  grep '.'  2>/dev/null ||  echo  '' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $result "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " $result " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__format_variables( )  {  printf  '%s\n'  " ${ @//,/  } "  |  tr ' '  '\n'  |  sort -RVu |  grep -v '^$'  |  tr '\n'  ' '  |  __clean_variables |  grep '.'  ||  return  0;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__clean_variables( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  var = " $* " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " ${ var # " ${ var %%[![ : space : ]]* } " } "  # remove leading whitespace characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " ${ var % " ${ var ##*[![ : space : ]] } " } "  # remove trailing whitespace characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " $( printf  '%s\n'  " $var "  |  sed 's/\( \)*/\1/g;s|^ ||g' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									printf  '%s'  " $var "  |  grep -v '^$' 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__no_exit( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  monitor_interval = " ${ SERVICE_MONITOR_INTERVAL :- 60 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  failure_threshold = " ${ SERVICE_FAILURE_THRESHOLD :- 3 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  monitor_services = " ${ SERVICES_LIST :- tini } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  failed_services = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  failure_count = 0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  -f "/run/no_exit.pid"  ]  &&  return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									exec  bash -c " 
 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    trap  'echo \"Container shutdown requested\"; rm -f /run/no_exit.pid /run/*.pid; exit 0'  TERM INT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    echo  \$ \$  > /run/no_exit.pid
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    while  true;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      if  [  -n \" $monitor_services \"  ]  &&  [  \" $monitor_services \"  !=  \" tini\"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        for  service in \$ ( echo  \" $monitor_services \"  |  tr ','  ' ' ) ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          if  [  \" \$ service\"  !=  \" tini\"  ]  &&  ! pgrep -x \" \$ service\"  >/dev/null 2>& 1;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            echo  \" ⚠️ Service \$ service is not running\"  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            failed_services = \" \$ failed_services \$ service\" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            failure_count = \$ ( ( failure_count + 1) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  [  \$ failure_count -ge $failure_threshold  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  \" ❌ Too many service failures ( \$ failure_count) , exiting container\"  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          exit  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  [  -n \" \$ failed_services\"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          echo  \" ⚠️ Failed services:\$ failed_services\"  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								          failed_services = \" \" 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								      fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								      sleep $monitor_interval 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    done  & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    wait 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  " 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__trim( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  var = " ${ *//;/  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " ${ var # " ${ var %%[![ : space : ]]* } " } "  # remove leading whitespace characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " ${ var % " ${ var ##*[![ : space : ]] } " } "  # remove trailing whitespace characters 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var = " $( echo  " $var "  |  __remove_extra_spaces |  sed " s| |; |g;s|; $| |g "  |  __remove_extra_spaces) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									printf  '%s'  " $var "  |  sed 's|;||g'  |  grep -v '^$' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__banner( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  message = " $* " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  total_width = 80 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  content_width = $(( total_width -  14 ))  # Account for "# - - - " and " - - - #" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									printf  '# - - - %-*s - - - #\n'  " $content_width "  " $message " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__service_banner( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  icon = " ${ 1 :- 🔧 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  message = " ${ 2 :- Processing } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  service = " ${ 3 :- service } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  full_message = " $message   $service " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  total_width = 80 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  content_width = $(( total_width -  14 ))                 # Account for "# - - - " and " - - - #" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  icon_width = 2                                        # Most emojis are 2 chars wide 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  text_width = $(( content_width -  icon_width *  2  -  2 ))  # Account for both icons and spaces 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									printf  '# - - - %s %-*s %s - - - #\n'  " $icon "  " $text_width "  " $full_message "  " $icon " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__find_php_bin( )  {  find -L '/usr' /*bin -maxdepth 4  -name 'php-fpm*'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_php_ini( )  {  find -L '/etc'  -maxdepth 4  -name 'php.ini'  2>/dev/null |  head -n1 |  sed 's|/php.ini||g'  |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__find_nginx_conf( )  {  find -L '/etc'  -maxdepth 4  -name 'nginx.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_caddy_conf( )  {  find -L '/etc'  -maxdepth 4  -type f -iname 'caddy.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_lighttpd_conf( )  {  find -L '/etc'  -maxdepth 4  -type f -iname 'lighttpd.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_cherokee_conf( )  {  find -L '/etc'  -maxdepth 4  -type f -iname 'cherokee.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_httpd_conf( )  {  find -L '/etc'  -maxdepth 4  -type f -iname 'httpd.conf'  -o -iname 'apache2.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__find_mysql_conf( )  {  find -L '/etc'  -maxdepth 4  -type f -name 'my.cnf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_pgsql_conf( )  {  find -L '/var/lib'  '/etc'  -maxdepth 8  -type f -name 'postgresql.conf'  2>/dev/null |  head -n1 |  grep '.'  ||  echo  '' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__find_couchdb_conf( )  {  return ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__find_mongodb_conf( )  {  return ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__random_password( )  {  cat "/dev/urandom"  |  tr -dc '0-9a-zA-Z'  |  head -c${ 1 :- 16 }  &&  echo  "" ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__init_working_dir( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  service_name = " $SERVICE_NAME "                            # get service name 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  workdir = " $( eval  echo  " ${ WORK_DIR :- } " ) "                  # expand variables 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  home = " $( eval  echo  " ${ workdir // \/ root / \/ tmp \/ docker } " ) "  # expand variables 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# set working directories 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $home "  =  " $workdir "  ]  &&  workdir = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $home "  =  "/root"  ]  &&  home = " /tmp/ $service_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -z " $home "  ]  &&  home = " ${ workdir :- /tmp/ $service_name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Change to working directory 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $WORK_DIR "  ]  &&  [  -n " $EXEC_CMD_BIN "  ]  &&  workdir = " $WORK_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -z " $WORK_DIR "  ]  &&  [  " $HOME "  =  "/root"  ]  &&  [  " $RUNAS_USER "  !=  "root"  ]  &&  [  " $PWD "  !=  "/tmp"  ]  &&  home = " ${ workdir :- $home } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -z " $WORK_DIR "  ]  &&  [  " $HOME "  =  "/root"  ]  &&  [  " $SERVICE_USER "  !=  "root"  ]  &&  [  " $PWD "  !=  "/tmp"  ]  &&  home = " ${ workdir :- $home } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# create needed directories 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $home "  ]  &&  {  [  -d " $home "  ]  ||  mkdir -p " $home " ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $workdir "  ]  &&  {  [  -d " $workdir "  ]  ||  mkdir -p " $workdir " ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $SERVICE_USER "  =  "root"  ]  ||  [  -d " $home "  ]  &&  chmod -f 777  " $home " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $SERVICE_USER "  =  "root"  ]  ||  [  -d " $workdir "  ]  &&  chmod -f 777  " $workdir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# - - - - - - - - - - - - - - - - - - - - - - - - - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# cd to dir 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__cd " ${ workdir :- $home } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# - - - - - - - - - - - - - - - - - - - - - - - - - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " Setting the working directory to:  $PWD " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# - - - - - - - - - - - - - - - - - - - - - - - - - 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  WORK_DIR = " $workdir "  HOME = " $home " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__exec_service( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  count = 6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " Starting  $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									eval  " $@ "  2>>/dev/stderr >>/data/logs/start.log & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  [  $count  -ne 0  ] ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sleep 3 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__pgrep $1  &&  touch " /run/init.d/ $1 .pid "  &&  break  ||  count = $(( count -  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__update_ssl_certs( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  -f "/config/env/ssl.sh"  ]  &&  . "/config/env/ssl.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -f " $SSL_CERT "  ]  &&  [  -f " $SSL_KEY "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mkdir -p /etc/ssl
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f " $SSL_CA "  ]  &&  cp -Rf " $SSL_CA "  " /etc/ssl/ $SSL_CA " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f " $SSL_KEY "  ]  &&  cp -Rf " $SSL_KEY "  " /etc/ssl/ $SSL_KEY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f " $SSL_CERT "  ]  &&  cp -Rf " $SSL_CERT "  " /etc/ssl/ $SSL_CERT " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__certbot( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  -n " $( type  -P 'certbot' ) "  ]  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  options = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  statusCode = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  domain_list = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  certbot_key_opts = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  ADD_CERTBOT_DOMAINS = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  CERTBOT_DOMAINS = " ${ CERTBOT_DOMAINS :- $HOSTNAME } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  CERT_BOT_MAIL = " ${ CERT_BOT_MAIL :- ssl -admin@ $CERTBOT_DOMAINS } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  certbot_key_opts = " --key-path  $SSL_KEY  --fullchain-path  $SSL_CERT " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mkdir -p "/config/letsencrypt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__symlink "/etc/letsencrypt"  "/config/letsencrypt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									is_renewal = " $( find /etc/letsencrypt/renewal -type f 2>/dev/null ||  false ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f "/config/env/ssl.sh"  ]  &&  . "/config/env/ssl.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f "/config/certbot/env.sh"  ]  &&  . "/config/certbot/env.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $SSL_KEY "  ]  &&  {  mkdir -p " $( dirname " $SSL_KEY " ) "  ||  true;  }  ||  {  echo  " The variable  $SSL_KEY  is not set "  >& 2  &&  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $SSL_CERT "  ]  &&  {  mkdir -p " $( dirname " $SSL_CERT " ) "  ||  true;  }  ||  {  echo  " The variable  $SSL_CERT  is not set "  >& 2  &&  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									domain_list = " $CERTBOT_DOMAINS  www. $CERTBOT_DOMAINS  mail. $CERTBOT_DOMAINS " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									domain_list = " $( echo  " $domain_list "  |  tr ' '  '\n'  |  sort -u |  tr '\n'  ' ' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $CERT_BOT_ENABLED "  =  "true"  ]  ||  {  export  CERT_BOT_ENABLED = ""  &&  return  10;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $CERT_BOT_MAIL "  ]  ||  {  echo  "The variable CERT_BOT_MAIL is not set"  >& 2  &&  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $CERTBOT_DOMAINS "  ]  ||  {  echo  "The variable CERTBOT_DOMAINS is not set"  >& 2  &&  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  domain in $CERTBOT_DOMAINS ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $domain "  ]  &&  ADD_CERTBOT_DOMAINS += " -d  $domain   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $is_renewal "  ]  &&  options = "renew"  ADD_CERTBOT_DOMAINS = ""  ||  options = "certonly" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									certbot_key_opts = " $certbot_key_opts   $ADD_CERTBOT_DOMAINS " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -f "/config/certbot/setup.sh"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eval  "/config/certbot/setup.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -f "/etc/named/certbot.sh"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eval  "/etc/named/certbot.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -f "/config/certbot/dns.conf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  certbot $options  -n --dry-run --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/certbot/dns.conf $certbot_key_opts ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											certbot $options  -n --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/certbot/dns.conf $certbot_key_opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -f "/config/certbot/certbot.conf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  certbot $options  -n --dry-run --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/certbot/certbot.conf $certbot_key_opts ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											certbot $options  -n --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/certbot/certbot.conf $certbot_key_opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -f "/config/named/certbot-update.conf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  certbot $options  -n --dry-run --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/named/certbot-update.conf $certbot_key_opts ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											certbot $options  -n --agree-tos --expand --dns-rfc2136 --dns-rfc2136-credentials /config/named/certbot-update.conf $certbot_key_opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										certbot_key_opts = " $certbot_key_opts  --webroot  ${ WWW_ROOT_DIR :- /usr/local/share/httpd/default } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $ADD_CERTBOT_DOMAINS "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											certbot $options  --agree-tos -m $CERT_BOT_MAIL  certonly --webroot " ${ WWW_ROOT_DIR :- /usr/local/share/httpd/default } "  $certbot_key_opts 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											statusCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											statusCode = 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  $statusCode  -eq 0  ]  &&  __update_ssl_certs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $statusCode 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__display_user_info( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  -n " $user_name "  ]  ||  [  -n " $user_pass "  ]  ||  [  -n " $root_user_name "  ]  ||  [  -n " $root_user_pass "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__banner "User info" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $user_name "  ]  &&  __printf_space "40"  "username:"  " $user_name "  &&  echo  " $user_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $user_pass "  ]  &&  __printf_space "40"  "password:"  " saved to  ${ USER_FILE_PREFIX } / ${ SERVICE_NAME } _pass "  &&  echo  " $user_pass " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $root_user_name "  ]  &&  __printf_space "40"  "root username:"  " $root_user_name "  &&  echo  " $root_user_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $root_user_pass "  ]  &&  __printf_space "40"  "root password:"  " saved to  ${ ROOT_FILE_PREFIX } / ${ SERVICE_NAME } _pass "  &&  echo  " $root_user_pass " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__banner "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__init_config_etc( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  copy = "no" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  name = " $( find " /etc/ $SERVICE_NAME "  -maxdepth 0  2>/dev/null |  head -n1) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  etc_dir = " ${ ETC_DIR :- /etc/ $name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  conf_dir = " ${ CONF_DIR :- /config/ $name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__is_dir_empty " $conf_dir "  &&  copy = yes
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $copy "  =  "yes"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -d " $etc_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mkdir -p " $conf_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__copy_templates " $etc_dir /. "  " $conf_dir / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										elif  [  -f " $etc_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__copy_templates " $etc_dir "  " $conf_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# - - - - - - - - - - - - - - - - - - - - - - - - - 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__create_ssl_cert( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  SSL_DIR = " ${ SSL_DIR :- /etc/ssl } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! __certbot certonly;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f "/config/env/ssl.sh"  ]  &&  . "/config/env/ssl.sh" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $SSL_DIR "  ]  ||  {  echo  "SSL_DIR is unset"  &&  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d " $SSL_DIR "  ]  ||  mkdir -p " $SSL_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $FORCE_SSL "  ]  ||  [  ! -f " $SSL_CERT "  ]  ||  [  ! -f " $SSL_KEY "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Setting Country to  $COUNTRY  and Setting State/Province to  $STATE  and Setting City to  $CITY " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Setting OU to  $UNIT  and Setting ORG to  $ORG  and Setting server to  $CN " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  "All variables can be overwritten by creating a /config/.ssl.env and setting the variables there" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Creating ssl key and certificate in  $SSL_DIR  and will be valid for  $(( VALID_FOR /  365 ))  year[s] " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											openssl req \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-new \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-newkey rsa:$RSA  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-days $VALID_FOR  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-nodes \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-x509 \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-subj " /C= ${ COUNTRY // / \\   } /ST= ${ STATE // / \\   } /L= ${ CITY // / \\   } /O= ${ ORG // / \\   } /OU= ${ UNIT // / \\   } /CN= ${ CN // / \\   } "  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-keyout " $SSL_KEY "  \
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												-out " $SSL_CERT " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -f " $SSL_CERT "  ]  &&  [  -f " $SSL_KEY "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__update_ssl_certs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_apache( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  etc_dir = ""  conf_dir = ""  conf_dir = ""  www_dir = ""  apache_bin = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									etc_dir = " /etc/ ${ 1 :- apache2 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									conf_dir = " /config/ ${ 1 :- apache2 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									www_dir = " ${ WWW_ROOT_DIR :- /data/htdocs } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apache_bin = " $( type  -P 'httpd'  ||  type  -P 'apache2' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_nginx( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  etc_dir = " /etc/ ${ 1 :- nginx } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  conf_dir = " /config/ ${ 1 :- nginx } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  www_dir = " ${ WWW_ROOT_DIR :- /data/htdocs } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  nginx_bin = " $( type  -P 'nginx' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_php( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  etc_dir = " /etc/ ${ 1 :- php } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  conf_dir = " /config/ ${ 1 :- php } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  php_bin = " ${ PHP_BIN_DIR :- $( __find_php_bin) } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_mysql( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  db_dir = "/data/db/mysql" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  etc_dir = " ${ home :- /etc/ ${ 1 :- mysql } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  db_user = " ${ SERVICE_USER :- mysql } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  conf_dir = " /config/ ${ 1 :- mysql } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_name = " ${ MARIADB_USER :- root } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_pass = " ${ MARIADB_PASSWORD :- $MARIADB_ROOT_PASSWORD } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_db = " ${ MARIADB_DATABASE } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  root_pass = " $MARIADB_ROOT_PASSWORD " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  mysqld_bin = " $( type  -P 'mysqld' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_mongodb( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  home = " ${ MONGODB_CONFIG_FILE :- $( __find_mongodb_conf) } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_name = " ${ INITDB_ROOT_USERNAME :- root } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_pass = " ${ MONGO_INITDB_ROOT_PASSWORD :- $_ROOT_PASSWORD } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_postgres( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  home = " ${ PGSQL_CONFIG_FILE :- $( __find_pgsql_conf) } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_name = " ${ POSTGRES_USER :- root } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_pass = " ${ POSTGRES_PASSWORD :- $POSTGRES_ROOT_PASSWORD } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__init_couchdb( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  home = " ${ COUCHDB_CONFIG_FILE :- $( __find_couchdb_conf) } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_name = " ${ COUCHDB_USER :- root } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  user_pass = " ${ COUCHDB_PASSWORD :- $SET_RANDOM_PASS } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Show available init functions  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__init_help( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									echo  ' 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__certbot
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__update_ssl_certs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__create_ssl_cert
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								'  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__run_once( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  " $CONFIG_DIR_INITIALIZED "  =  "false"  ]  ||  [  " $DATA_DIR_INITIALIZED "  =  "false"  ]  ||  [  ! -f "/config/.docker_has_run"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# run program ever n minutes  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__cron( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									trap  'retVal=$?;[ -f "/run/cron/$bin.run" ] && rm -Rf "/run/cron/$bin.run";[ -f "/run/cron/$bin.pid" ] && rm -Rf "/run/cron/$bin.pid";exit ${retVal:-0}'  SIGINT ERR EXIT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $1 "  =  "--pid"  ]  &&  pid = " $2 "  &&  shift  2  ||  pid = " $$ " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									test  -n " $1 "  &&  test  -z " ${ 1 //[0-9]/ } "  &&  interval = $(( $1  *  60 ))  &&  shift  1  ||  interval = "300" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  $#  -eq 0  ]  &&  echo  "Usage: cron [interval] [command]"  &&  exit  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  command = " $* " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  bin = " $( basename " ${ CRON_NAME :- $1 } " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/run/cron"  ]  ||  mkdir -p "/run/cron" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " $pid "  >" /run/cron/ $bin .pid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " $command "  >" /run/cron/ $bin .run " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  "Log is saved to /data/logs/cron.log" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  :;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eval  " $command " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										sleep $interval 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f " /run/cron/ $bin .run "  ]  ||  break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done  2>/dev/stderr >>"/data/logs/cron.log" 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__replace( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  search = " $1 "  replace = " $2 "  file = " ${ 3 :- $2 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -e " $file "  ]  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__sed " $search "  " $replace "  " $file "  ||  return  0 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__find_replace( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  search = " $1 "  replace = " $2 "  file = " ${ 3 :- $2 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -e " $file "  ]  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									find " $file "  -type f -not -path '.git*'  -exec sed -i " s| $search | $replace |g "  { }  \;  2>/dev/null
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# /config > /etc  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__copy_templates( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  from = " $1 "  to = " $2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									is_link = " $( ls -la " $dest "  2>/dev/null |  awk '{print $NF}' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $from "  !=  " $is_link "  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -e " $from "  ]  &&  __is_dir_empty " $to " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__file_copy " $from "  " $to " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# /config/file > /etc/file  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__symlink( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  from = " $1 "  to = " $2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -e " $to "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -e " $from "  ]  &&  __rm " $from " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ln -sf " $to "  " $from "  &&  echo  " Created symlink to  $from  >  $to " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__file_copy( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  from = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  dest = " $2 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									is_link = " $( ls -la " $dest "  2>/dev/null |  awk '{print $NF}' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $from "  !=  " $is_link "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $from "  ]  &&  [  -e " $from "  ]  &&  [  -n " $dest "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  -d " $from "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  cp -Rf " $from /. "  " $dest / "  & >/dev/null;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													printf  '%s\n'  " Copied:  $from  >  $dest " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													printf  '%s\n'  " Copy failed:  $from  <  $dest "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  cp -Rf " $from "  " $dest "  & >/dev/null;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													printf  '%s\n'  " Copied:  $from  >  $dest " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													printf  '%s\n'  " Copy failed:  $from  <  $dest "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											printf  '%s\n'  " $from  does not exist "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__generate_random_uids( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  set_random_uid = " $( seq 100  999  |  sort -R |  head -n 1) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  :;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  grep -shq " x:.*: $set_random_uid : "  "/etc/group"  &&  ! grep -shq " x: $set_random_uid :.*: "  "/etc/passwd" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											set_random_uid = $(( set_random_uid +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " $set_random_uid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__setup_directories( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									APPLICATION_DIRS = " ${ APPLICATION_DIRS //,/  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									APPLICATION_FILES = " ${ APPLICATION_FILES //,/  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_APPLICATION_DIRS = " ${ ADD_APPLICATION_DIRS //,/  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ADD_APPLICATION_FILES = " ${ ADD_APPLICATION_FILES //,/  } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $ENV_WWW_ROOT_DIR "  ]  &&  export  WWW_ROOT_DIR = " $ENV_WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Setup WWW_ROOT_DIR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $IS_WEB_SERVER "  =  "yes"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										APPLICATION_DIRS = " $APPLICATION_DIRS   $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__initialize_www_root
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										( echo  " Creating directory  $WWW_ROOT_DIR  with permissions 777 "  &&  mkdir -p " $WWW_ROOT_DIR "  &&  find " $WWW_ROOT_DIR "  -type d -exec chmod -f 777  { }  \; )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# Setup DATABASE_DIR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $IS_DATABASE_SERVICE "  =  "yes"  ]  ||  [  " $USES_DATABASE_SERVICE "  =  "yes"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										APPLICATION_DIRS = " $APPLICATION_DIRS   $DATABASE_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  __is_dir_empty " $DATABASE_DIR "  ||  [  ! -d " $DATABASE_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											( echo  " Creating directory  $DATABASE_DIR  with permissions 777 "  &&  mkdir -p " $DATABASE_DIR "  &&  chmod -f 777  " $DATABASE_DIR " )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# create default directories 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  filedirs in $ADD_APPLICATION_DIRS  $APPLICATION_DIRS ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $filedirs "  ]  &&  [  ! -d " $filedirs "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											( echo  " Creating directory  $filedirs  with permissions 777 "  &&  mkdir -p " $filedirs "  &&  chmod -f 777  " $filedirs " )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									# create default files 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  application_files in $ADD_APPLICATION_FILES  $APPLICATION_FILES ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $application_files "  ]  &&  [  ! -e " $application_files "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											( echo  " Creating file  $application_files  with permissions 777 "  &&  touch " $application_files "  &&  chmod -Rf 777  " $application_files " )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# set user on files/folders  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__fix_permissions( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									change_user = " ${ 1 :- ${ SERVICE_USER :- root } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									change_group = " ${ 2 :- ${ SERVICE_GROUP :- $change_user } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $RUNAS_USER "  ]  &&  [  " $RUNAS_USER "  !=  "root"  ]  &&  change_user = " $RUNAS_USER "  &&  change_group = " $change_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $change_user "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  grep -shq " ^ $change_user : "  "/etc/passwd" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  permissions in $ADD_APPLICATION_DIRS  $APPLICATION_DIRS ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $permissions "  ]  &&  [  -e " $permissions "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													( chown -Rf $change_user  " $permissions "  &&  echo  " changed ownership on  $permissions  to user: $change_user " )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $change_group "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  grep -shq " ^ $change_group : "  "/etc/group" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  permissions in $ADD_APPLICATION_DIRS  $APPLICATION_DIRS ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $permissions "  ]  &&  [  -e " $permissions "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													( chgrp -Rf $change_group  " $permissions "  &&  echo  " changed group ownership on  $permissions  to group  $change_group " )  2>/dev/stderr |  tee -p -a "/data/logs/init.txt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__get_gid( )  {  grep " ^ $1 : "  /etc/group |  awk -F ':'  '{print $3}'  ||  false;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__get_uid( )  {  grep " ^ $1 : "  /etc/passwd |  awk -F ':'  '{print $3}'  ||  false;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__check_for_uid( )  {  cat "/etc/passwd"  2>/dev/null |  awk -F ':'  '{print $3}'  |  sort -u |  grep -q " ^ $1 $"  ||  false;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__check_for_guid( )  {  cat "/etc/group"  2>/dev/null |  awk -F ':'  '{print $3}'  |  sort -u |  grep -q " ^ $1 $"  ||  false;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__check_for_user( )  {  cat "/etc/passwd"  2>/dev/null |  awk -F ':'  '{print $1}'  |  sort -u |  grep -q " ^ $1 $"  ||  false;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__check_for_group( )  {  cat "/etc/group"  2>/dev/null |  awk -F ':'  '{print $1}'  |  sort -u |  grep -q " ^ $1 $"  ||  false;  } 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# check if process is already running  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__proc_check( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cmd_bin = " $( type  -P " ${ 1 :- $EXEC_CMD_BIN } " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cmd_name = " $( basename " ${ cmd_bin :- $EXEC_CMD_NAME } " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  __pgrep " $cmd_bin "  ||  __pgrep " $cmd_name " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										SERVICE_IS_RUNNING = "yes" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										touch " $SERVICE_PID_FILE " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__set_user_group_id( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  exitStatus = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  set_user = " ${ 1 :- $SERVICE_USER } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  set_uid = " ${ 2 :- ${ SERVICE_UID :- 1000 } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  set_gid = " ${ 3 :- ${ SERVICE_GID :- 1000 } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  random_id = " $( __generate_random_uids) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_uid = " $( __get_uid " $set_user "  ||  echo  " $set_uid " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									set_gid = " $( __get_gid " $set_user "  ||  echo  " $set_gid " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									grep -shq " ^ $set_user : "  "/etc/passwd"  "/etc/group"  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $set_user "  ]  &&  [  " $set_user "  !=  "root"  ]  ||  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  grep -shq " ^ $set_user : "  "/etc/passwd"  "/etc/group" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  __check_for_guid " $set_gid " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											groupmod -g " ${ set_gid } "  $set_user  2>/dev/stderr |  tee -p -a "/data/logs/init.txt"  >/dev/null &&  chown -Rf " : $set_gid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  __check_for_uid " $set_uid " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											usermod -u " ${ set_uid } "  -g " ${ set_gid } "  $set_user  2>/dev/stderr |  tee -p -a "/data/logs/init.txt"  >/dev/null &&  chown -Rf $set_uid :$set_gid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  SERVICE_UID = " $set_uid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  SERVICE_GID = " $set_gid " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__create_service_user( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  exitStatus = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_user = " ${ 1 :- $SERVICE_USER } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_group = " ${ 2 :- ${ SERVICE_GROUP :- $create_user } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_home_dir = " ${ 3 :- $WORK_DIR } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_uid = " ${ 4 :- ${ SERVICE_UID :- $USER_UID } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_gid = " ${ 5 :- ${ SERVICE_GID :- $USER_GID } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  random_id = " $( __generate_random_uids) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  create_home_dir = " ${ create_home_dir :- /home/ $create_user } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									grep -shq " ^ $create_user : "  "/etc/passwd"  &&  grep -shq " ^ $create_group : "  "/etc/group"  &&  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $create_user "  =  "root"  ]  &&  [  " $create_group "  =  "root"  ]  &&  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $RUNAS_USER "  !=  "root"  ]  &&  [  " $RUNAS_USER "  !=  ""  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										create_user = " $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										create_group = " $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										create_uid = " ${ create_uid :- 1000 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										create_gid = " ${ create_gid :- 1000 } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									create_uid = " $( __get_uid " $create_user "  ||  echo  " $create_uid " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									create_gid = " $( __get_gid " $create_user "  ||  echo  " $create_gid " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $create_uid "  ]  &&  [  " $create_uid "  !=  "0"  ]  ||  create_uid = " $random_id " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $create_gid "  ]  &&  [  " $create_gid "  !=  "0"  ]  ||  create_gid = " $random_id " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									while  :;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  __check_for_uid " $create_uid "  &&  __check_for_guid " $create_gid " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											create_uid = $(( $random_id  +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											create_gid = " $create_uid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! __check_for_group " $create_group " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " creating system group  $create_group " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										groupadd --force --system -g $create_gid  $create_group  2>/dev/stderr |  tee -p -a "/data/logs/init.txt"  >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! __check_for_user " $create_user " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " creating system user  $create_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										useradd --system -u $create_uid  -g $create_group  -c " Account for  $create_user "  -d " $create_home_dir "  -s /bin/false $create_user  2>/dev/stderr |  tee -p -a "/data/logs/init.txt"  >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									grep -shq " $create_group "  "/etc/group"  ||  exitStatus = $(( exitStatus +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									grep -shq " $create_user "  "/etc/passwd"  ||  exitStatus = $(( exitCode +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  $exitStatus  -eq 0  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  WORK_DIR = " ${ create_home_dir :- } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $WORK_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  -d " $WORK_DIR "  ]  ||  mkdir -p " $WORK_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  -d "/etc/.skel"  ]  &&  cp -Rf /etc/.skel/. " $WORK_DIR / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -d "/etc/sudoers.d"  ]  &&  [  ! -f " /etc/sudoers.d/ $create_user "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " $create_user  ALL=(ALL)   NOPASSWD: ALL "  >" /etc/sudoers.d/ $create_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										elif  [  -f "/etc/sudoers"  ]  &&  ! grep -qs " $create_user "  "/etc/sudoers" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " $create_user  ALL=(ALL)   NOPASSWD: ALL "  >"/etc/sudoers" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_UID = " $create_uid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_GID = " $create_gid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_USER = " $create_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_GROUP = " $create_group " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  USER_UID = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  USER_GID = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_USER = root
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										export  SERVICE_GROUP = root
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exitStatus = 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $exitStatus 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__create_env_file( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  dir = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  envStatus = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  envFile = ( " ${ @ :- } " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  sample_file = "/usr/local/etc/docker/env/default.sample" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f " $sample_file "  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  create_env in "/usr/local/etc/docker/env/default.sh"  " ${ envFile [@] } " ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										dir = " $( dirname " $create_env " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d " $dir "  ]  ||  mkdir -p " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $create_env "  ]  &&  [  ! -f " $create_env "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cat <<EOF |  tee -p " $create_env "  >/dev/null
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								$( <" $sample_file " )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f " $create_env "  ]  ||  envStatus = $(( 1  +  envStatus)) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rm -f " $sample_file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $envStatus 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__exec_command( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  bin = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  arg = ( " $@ " ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  exitCode = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  cmdExec = " ${ arg :- } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  pre_exec = "--login -c" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  shell = " $( type  -P bash 2>/dev/null ||  type  -P dash 2>/dev/null ||  type  -P ash 2>/dev/null ||  type  -P sh 2>/dev/null) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bin = " $( echo  " ${ arg [*] } "  |  tr ' '  '\n'  |  grep -v '^$'  |  head -n1 |  sed 's| ||g'  ||  echo  'bash' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									prog = " $( type  -P " $bin "  2>/dev/null ||  echo  " $bin " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  type  -t $bin  >/dev/null 2>& 1;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " ${ exec_message :- Executing  command :   $cmdExec } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eval  $shell  $pre_exec  " $cmdExec "  ||  exitCode = 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exitCode = $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -f " $prog "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " $prog  is not executable " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exitCode = 98 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " $prog  does not exist " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exitCode = 99 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $exitCode 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Setup the server init scripts  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__start_init_scripts( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  " $1 "  =  " "  ]  &&  shift  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $DEBUGGER "  =  "on"  ]  &&  echo  "Enabling debugging"  &&  set  -o pipefail -x$DEBUGGER_OPTIONS  ||  set  -o pipefail
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  retPID = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  basename = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  init_pids = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  retstatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  critical_failures = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  init_dir = " ${ 1 :- /usr/local/etc/docker/init.d } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  init_count = " $( ls -A " $init_dir " /* 2>/dev/null |  grep -v '\.sample'  |  wc -l) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  exit_on_failure = " ${ EXIT_ON_SERVICE_FAILURE :- true } " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									# Clean stale PID files from previous runs 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  ! -f "/run/__start_init_scripts.pid"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  "🧹 Cleaning stale PID files from previous container run" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										rm -f /run/*.pid /run/init.d/*.pid 2>/dev/null ||  true 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									touch /run/__start_init_scripts.pid
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  " $init_count "  -eq 0  ]  ||  [  ! -d " $init_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mkdir -p "/data/logs/init" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										while  :;  do  echo  " Running:  $( date) "  >"/data/logs/init/keep_alive"  &&  sleep 3600;  done  & 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -d " $init_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  -f " $init_dir /service.sample "  ]  &&  __rm " $init_dir " /*.sample
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											chmod -Rf 755  " $init_dir " /*.sh
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											echo  "🚀 Starting container services initialization" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " 📂 Init directory:  $init_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " 📊 Services to start:  $init_count " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " 📋 Found  $init_count  service scripts to execute " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  "" 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for  init in " $init_dir " /*.sh;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -x " $init "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													name = " $( basename " $init " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													service = " $( printf  '%s'  " $name "  |  sed 's/^[^-]*-//;s|.sh$||g' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													__service_banner "🔧"  "Executing service script:"  " $( basename " $init " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													# Execute the init script and capture the exit code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  source  " $init " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														# Check if service was disabled first 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if  [  -n " $SERVICE_DISABLED "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															__service_banner "🚫"  " Service  $service  is disabled - "  "skipping" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															unset  SERVICE_DISABLED
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															sleep 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															# Check for service success indicators 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															local  expected_pid_file = " /run/init.d/ $service .pid " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															if  [  " $SERVICE_USES_PID "  =  "no"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																# Service doesn't use PID files - check if expected PID file exists or assume success 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																if  [  -f " $expected_pid_file "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	retPID = " $( cat " $expected_pid_file "  2>/dev/null ||  echo  "0" ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	__service_banner "✅"  " Service  $service  started successfully - "  "PID file" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	__service_banner "✅"  " Service  $service  started successfully - "  "no PID tracking" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																# Service uses PID tracking - verify actual running processes 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																set  +e # Temporarily disable exit on error 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																retPID = "" 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																# First, try to find actual running process with various name patterns 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																for  name_variant in " $service "  " ${ service } 84 "  " ${ service } d "  " $( echo  " $service "  |  sed 's/-//g' ) "  " $( echo  " $service "  |  tr -d '-' ) " ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	if  [  -z " $retPID "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		retPID = $( __get_pid " $name_variant "  2>/dev/null ||  echo  "" ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		[  -n " $retPID "  ]  &&  found_process = " $name_variant "  &&  break 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																done 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																set  -e # Re-enable exit on error 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
																if  [  -n " $retPID "  ]  &&  [  " $retPID "  !=  "0"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	# Found actual running process 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	__service_banner "✅"  " Service  $service  started successfully - "  " PID:  ${ retPID }  ( $found_process ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																elif  [  -f " $expected_pid_file "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	# No running process but PID file exists - verify PID is valid 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	file_pid = " $( cat " $expected_pid_file "  2>/dev/null ||  echo  "" ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	if  [  -n " $file_pid "  ]  &&  kill  -0 " $file_pid "  2>/dev/null;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		__service_banner "✅"  " Service  $service  started successfully - "  " PID:  $file_pid  (from file) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	elif  [  -n " $file_pid "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		initStatus = "1" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		critical_failures = $(( critical_failures +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		__service_banner "⚠️"  " Service  $service  has stale PID file - "  " process  $file_pid  not running " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																		__service_banner "✅"  " Service  $service  completed initialization - "  "no process tracking" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	# No process and no PID file - this is likely a configuration-only service 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	initStatus = "0" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																	__service_banner "✅"  " Service  $service  completed successfully - "  "configuration service" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
																fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
															fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														initStatus = "1" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														critical_failures = $(( critical_failures +  1 )) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														__service_banner "❌"  " Service  $service  failed to start - "  "check logs" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													echo  "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												retstatus = $(( retstatus +  initStatus)) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											# Summary 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  $critical_failures  -gt 0  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												echo  " ⚠️ Warning:  $critical_failures  service(s) failed to start " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  " $exit_on_failure "  =  "true"  ]  &&  [  $critical_failures  -ge 1  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													echo  "❌ Exiting due to critical service failures" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												echo  "✅ All services started successfully" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									printf  '%s\n'  " $SERVICE_NAME  started on  $( date) "  >"/data/logs/start.log" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $retstatus 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__setup_mta( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  -d "/etc/ssmtp"  ]  ||  [  -d "/etc/postfix"  ]  ||  return 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  ! -d "/config/ssmtp"  ]  ||  [  ! -d "/config/postfix"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  "Configuring smtp server" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  exitCode = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  relay_port = " ${ EMAIL_RELAY //* : / } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  relay_server = " ${ EMAIL_RELAY // : */ } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  local_hostname = " ${ FULL_DOMAIN_NAME :- } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  account_user = " ${ SERVER_ADMIN //@*/ } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  account_domain = " ${ EMAIL_DOMAIN //*@/ } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " $EMAIL_RELAY "  |  grep '[0-9][0-9]'  ||  relay_port = "465" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									################# sSMTP relay setup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $( type  -P 'ssmtp' ) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d "/config/ssmtp"  ]  ||  mkdir -p "/config/ssmtp" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f "/etc/ssmtp/ssmtp.conf"  ]  &&  __rm "/etc/ssmtp/ssmtp.conf" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										symlink_files = " $( __find_file_relative "/config/ssmtp" ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  ! -f "/config/ssmtp/ssmtp.conf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cat <<EOF |  tee -p "/config/ssmtp/ssmtp.conf"  >/dev/null
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ssmtp configuration.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								root = ${ account_user :- root } @${ account_domain :- $HOSTNAME }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								mailhub = ${ relay_server :- 172 .17.0.1 } :$relay_port  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								rewriteDomain = $local_hostname  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								hostname = $local_hostname  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TLS_CA_FILE = /etc/ssl/certs/ca-certificates.crt 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UseTLS = Yes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								UseSTARTTLS = No 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								AuthMethod = LOGIN 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								FromLineOverride = yes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#AuthUser=username  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								#AuthPass=password  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -f "/config/ssmtp/ssmtp.conf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  file in $symlink_files ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__symlink " /config/ssmtp/ $file "  " /etc/ssmtp/ $file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__initialize_replace_variables " /etc/ssmtp/ $file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  -f "/etc/ssmtp/revaliases"  ]  &&  [  ! -f "/config/ssmtp/revaliases"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mv -f "/etc/ssmtp/revaliases"  "/config/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__symlink "/config/ssmtp/revaliases"  "/etc/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__initialize_replace_variables "/etc/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												touch "/config/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__symlink "/config/ssmtp/revaliases"  "/etc/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__initialize_replace_variables "/etc/ssmtp/revaliases" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  "Done setting up ssmtp" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										################# postfix relay setup 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -n " $( type  -P 'postfix' ) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d "/etc/postfix"  ]  ||  mkdir -p "/etc/postfix" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d "/config/postfix"  ]  ||  mkdir -p "/config/postfix" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -f "/etc/postfix/main.cf"  ]  &&  __rm "/etc/postfix/main.cf" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										symlink_files = " $( __find_file_relative "/config/postfix" ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  ! -f "/config/postfix/main.cf"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cat <<EOF |  tee -p "/config/postfix/main.cf"  >/dev/null
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# postfix configuration.  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtpd_banner  =  \$ myhostname ESMTP email server 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								compatibility_level  =  2  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								inet_protocols  =  ipv4 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								inet_interfaces  =  all 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								mydestination  =  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								local_transport = error: local  delivery disabled 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								mynetworks  =  /etc/postfix/mynetworks 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								alias_maps  =  hash:/etc/postfix/aliases 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								alias_database  =  hash:/etc/postfix/aliases 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								transport_maps  =  hash:/etc/postfix/transport 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								virtual_alias_maps  =  hash:/etc/postfix/virtual 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								relay_domains  =  hash:/etc/postfix/mydomains, regexp:/etc/postfix/mydomains.pcre 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								tls_random_source  =  dev:/dev/urandom 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtp_use_tls  =  yes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtpd_use_tls  =  yes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtpd_tls_session_cache_database  =  btree:/etc/postfix/smtpd_scache 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtpd_tls_exclude_ciphers  =  aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								smtpd_relay_restrictions  =  permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								append_dot_mydomain  =  yes 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								myorigin  =  $local_hostname  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								myhostname  =  $local_hostname  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								relayhost  =  [ $relay_server ] :$relay_port  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								EOF
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -d "/config/postfix"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  f in $symlink_files ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__symlink " /config/postfix/ $f "  " /etc/postfix/ $f " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__initialize_replace_variables "/etc/postfix" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											touch "/config/postfix/aliases"  "/config/postfix/mynetworks"  "/config/postfix/transport" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											touch "/config/postfix/mydomains.pcre"  "/config/postfix/mydomains"  "/config/postfix/virtual" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											postmap "/config/aliases"  "/config/mynetworks"  "/config/transport"  & >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											postmap "/config/mydomains.pcre"  "/config/mydomains"  "/config/virtual"  & >/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -f "/etc/postfix/main.cf"  ]  &&  [  ! -f "/run/init.d/postfix.pid"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											SERVICES_LIST += "postfix " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  ! -f "/run/init.d/postfix.pid"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__exec_service postfix start
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  "Done setting up postfix" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f "/root/dead.letter"  ]  &&  __rm "/root/dead.letter" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  $exitCode 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__initialize_web_health( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  www_dir = " ${ 1 :- ${ WWW_ROOT_DIR :- /usr/local/share/httpd/default } } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -d " $www_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_CONTAINER_IP4"  " ${ REPLACE_CONTAINER_IP4 :- 127 .0.0.1 } "  "/usr/local/share/httpd" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_COPYRIGHT_FOOTER"  " ${ COPYRIGHT_FOOTER :- Copyright  1999 -  $( date +'%Y' ) } "  "/usr/local/share/httpd" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_LAST_UPDATED_ON_MESSAGE"  " ${ LAST_UPDATED_ON_MESSAGE :- $( date +'Last updated on: %Y-%m-%d at %H:%M:%S' ) } "  "/usr/local/share/httpd" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#  file_dir  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_replace_variables( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  set_dir = ""  get_dir = " $* " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  $#  -ne 0  ]  ||  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for  set_dir in $get_dir ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SSL_DIR"  " ${ SSL_DIR :- /etc/ssl } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_RANDOM_ID"  " $( __random_password 8) "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_TZ"  " ${ TZ :- ${ TIMEZONE :- America /New_York } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVER_PROTO"  " ${ SERVICE_PROTOCOL :- http } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVER_SITE_TITLE"  " ${ SERVER_SITE_TITLE :- CasjaysDev  - Docker Container } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_TMP_DIR"  " ${ TMP_DIR :- /tmp/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_RUN_DIR"  " ${ RUN_DIR :- /run/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_LOG_DIR"  " ${ LOG_DIR :- /data/logs/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_ETC_DIR"  " ${ ETC_DIR :- /etc/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATA_DIR"  " ${ DATA_DIR :- /data/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_CONFIG_DIR"  " ${ CONF_DIR :- /config/ $SERVICE_NAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_EMAIL_RELAY"  " ${ EMAIL_RELAY :- 172 .17.0.1 } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVER_ADMIN"  " ${ SERVER_ADMIN :- root @ ${ EMAIL_DOMAIN :- ${ FULL_DOMAIN_NAME :- $HOSTNAME } } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_APP_USER"  " ${ SERVICE_USER :- ${ RUNAS_USER :- root } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_WWW_USER"  " ${ SERVICE_USER :- ${ RUNAS_USER :- root } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_APP_GROUP"  " ${ SERVICE_GROUP :- ${ SERVICE_USER :- ${ RUNAS_USER :- root } } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_WWW_GROUP"  " ${ SERVICE_GROUP :- ${ SERVICE_USER :- ${ RUNAS_USER :- root } } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVICE_USER"  " ${ SERVICE_USER :- ${ RUNAS_USER :- root } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVICE_GROUP"  " ${ SERVICE_GROUP :- ${ RUNAS_USER :- root } } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_SERVER_ADMIN_URL"  " $SERVER_ADMIN_URL "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $VAR_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											mkdir -p " $VAR_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__find_replace "REPLACE_VAR_DIR"  " $VAR_DIR "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $SERVICE_PORT "  ]  &&  __find_replace "REPLACE_SERVER_PORT"  " ${ SERVICE_PORT :- 80 } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $HOSTNAME "  ]  &&  __find_replace "REPLACE_SERVER_NAME"  " ${ FULL_DOMAIN_NAME :- $HOSTNAME } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $CONTAINER_NAME "  ]  &&  __find_replace "REPLACE_SERVER_SOFTWARE"  " ${ CONTAINER_NAME :- docker } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -n " $WWW_ROOT_DIR "  ]  &&  __find_replace "REPLACE_SERVER_WWW_DIR"  " ${ WWW_ROOT_DIR :- /usr/local/share/httpd/default } "  " $set_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $WWW_ROOT_DIR "  ]  &&  [  " $set_dir "  !=  " $WWW_ROOT_DIR "  ]  &&  [  -d " $WWW_ROOT_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_CONTAINER_IP4"  " ${ REPLACE_CONTAINER_IP4 :- 127 .0.0.1 } "  " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_COPYRIGHT_FOOTER"  " ${ COPYRIGHT_FOOTER :- Copyright  1999 -  $( date +'%Y' ) } "  " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_LAST_UPDATED_ON_MESSAGE"  " ${ LAST_UPDATED_ON_MESSAGE :- $( date +'Last updated on: %Y-%m-%d at %H:%M:%S' ) } "  " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mkdir -p " ${ TMP_DIR :- /tmp/ $SERVICE_NAME } "  " ${ RUN_DIR :- /run/ $SERVICE_NAME } "  " ${ LOG_DIR :- /data/logs/ $SERVICE_NAME } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									chmod -f 777  " ${ TMP_DIR :- /tmp/ $SERVICE_NAME } "  " ${ RUN_DIR :- /run/ $SERVICE_NAME } "  " ${ LOG_DIR :- /data/logs/ $SERVICE_NAME } " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_database( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  " $IS_DATABASE_SERVICE "  =  "yes"  ]  ||  [  " $USES_DATABASE_SERVICE "  =  "yes"  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  dir = " ${ 1 :- $ETC_DIR } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  db_normal_user = " ${ DATABASE_USER_NORMAL :- $user_name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  db_normal_pass = " ${ DATABASE_PASS_NORMAL :- $user_pass } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  db_admin_user = " ${ DATABASE_USER_ROOT :- $root_user_name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  db_admin_pass = " ${ DATABASE_PASS_ROOT :- $root_user_pass } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_USER_NAME"  " $db_normal_user "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_USER_PASS"  " $db_normal_pass "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_USER"  " $db_normal_user "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_PASS"  " $db_normal_pass "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_ROOT_ADMIN"  " $db_admin_user "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_ROOT_PASS"  " $db_admin_pass "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_ROOT_USER"  " $db_admin_user "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_ROOT_PASS"  " $db_admin_pass "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_NAME"  " $DATABASE_NAME "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__find_replace "REPLACE_DATABASE_DIR"  " $DATABASE_DIR "  " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  echo  " $dir "  |  grep -q '^/etc' ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_USER_NAME"  " $db_normal_user "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_USER_PASS"  " $db_normal_pass "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_USER"  " $db_normal_user "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_PASS"  " $db_normal_pass "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_ROOT_ADMIN"  " $db_admin_user "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_ROOT_PASS"  " $db_admin_pass "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_ROOT_USER"  " $db_admin_user "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_ROOT_PASS"  " $db_admin_pass "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_NAME"  " $DATABASE_NAME "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__find_replace "REPLACE_DATABASE_DIR"  " $DATABASE_DIR "  "/etc" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_db_users( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  " $IS_DATABASE_SERVICE "  =  "yes"  ]  ||  [  " $USES_DATABASE_SERVICE "  =  "yes"  ]  ||  return  0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db_normal_user = " ${ DATABASE_USER_NORMAL :- $user_name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db_normal_pass = " ${ DATABASE_PASS_NORMAL :- $user_pass } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db_admin_user = " ${ DATABASE_USER_ROOT :- $root_user_name } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									db_admin_pass = " ${ DATABASE_PASS_ROOT :- $root_user_pass } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  DATABASE_USER_NORMAL = " $db_normal_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  DATABASE_PASS_NORMAL = " $db_normal_pass " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  DATABASE_USER_ROOT = " $db_admin_user " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  DATABASE_PASS_ROOT = " $db_admin_pass " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  db_normal_user db_normal_pass db_admin_user db_admin_pass
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_system_etc( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  conf_dir = " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  dir = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  file = ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  directories = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $conf_dir "  ]  &&  [  -e " $conf_dir "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										files = " $( find " $conf_dir " /* -not -path '*/env/*'  -type f 2>/dev/null |  sed 's|' /config/'||g'  |  sort -u |  grep -v '^$'  |  grep '.'  ||  false ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										directories = " $( find " $conf_dir " /* -not -path '*/env/*'  -type d 2>/dev/null |  sed 's|' /config/'||g'  |  sort -u |  grep -v '^$'  |  grep '.'  ||  false ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " Copying config files to system:  $conf_dir  > /etc/ ${ conf_dir // \/ config \/ / } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -n " $directories "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  d in $directories ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												dir = " /etc/ $d " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												echo  " Creating directory:  $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												mkdir -p " $dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  f in $files ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											etc_file = " /etc/ $f " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											conf_file = " /config/ $f " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  -f " $etc_file "  ]  &&  __rm " $etc_file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__symlink " $etc_file "  " $conf_file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											__initialize_replace_variables " $conf_file "  " $etc_file " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  -e " /data/ $f "  ]  &&  __initialize_replace_variables " /data/ $f " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_custom_bin_dir( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  SET_USR_BIN = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/data/bin"  ]  &&  SET_USR_BIN += " $( __find /data/bin f)   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/config/bin"  ]  &&  SET_USR_BIN += " $( __find /config/bin f)   " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $SET_USR_BIN "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " Setting up bin  $SET_USR_BIN  >  $LOCAL_BIN_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for  create_bin_template in $SET_USR_BIN ;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  -n " $create_bin_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												create_bin_name = " $( basename " $create_bin_template " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -e " $create_bin_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ln -sf " $create_bin_template "  " $LOCAL_BIN_DIR / $create_bin_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										unset  create_bin_template create_bin_name SET_USR_BIN
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_default_templates( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  -n " $DEFAULT_TEMPLATE_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  " $CONFIG_DIR_INITIALIZED "  =  "false"  ]  &&  [  -d "/config"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Copying default config files  $DEFAULT_TEMPLATE_DIR  > /config " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  create_config_template in " $DEFAULT_TEMPLATE_DIR " /*;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													create_template_name = " $( basename " $create_config_template " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  [  -d " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														mkdir -p " /config/ $create_template_name / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														__is_dir_empty " /config/ $create_template_name "  &&  cp -Rf " $create_config_template /. "  " /config/ $create_template_name / "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elif  [  -e " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														[  -e " /config/ $create_template_name "  ]  ||  cp -Rf " $create_config_template "  " /config/ $create_template_name "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											unset  create_config_template create_template_name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_config_dir( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  -n " $DEFAULT_CONF_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  " $CONFIG_DIR_INITIALIZED "  =  "false"  ]  &&  [  -d "/config"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Copying custom config files:  $DEFAULT_CONF_DIR  > /config " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  create_config_template in " $DEFAULT_CONF_DIR " /*;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												create_config_name = " $( basename " $create_config_template " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  [  -d " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														mkdir -p " /config/ $create_config_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														__is_dir_empty " /config/ $create_config_name "  &&  cp -Rf " $create_config_template /. "  " /config/ $create_config_name / "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elif  [  -e " $create_config_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														[  -e " /config/ $create_config_name "  ]  ||  cp -Rf " $create_config_template "  " /config/ $create_config_name "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											unset  create_config_template create_config_name
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_data_dir( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  -d "/data"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  " $DATA_DIR_INITIALIZED "  =  "false"  ]  &&  [  -n " $DEFAULT_DATA_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Copying data files  $DEFAULT_DATA_DIR  > /data " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for  create_data_template in " $DEFAULT_DATA_DIR " /*;  do 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												create_data_name = " $( basename " $create_data_template " ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $create_data_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if  [  -d " $create_data_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														mkdir -p " /data/ $create_data_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														__is_dir_empty " /data/ $create_data_name "  &&  cp -Rf " $create_data_template /. "  " /data/ $create_data_name / "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													elif  [  -e " $create_data_template "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														[  -e " /data/ $create_data_name "  ]  ||  cp -Rf " $create_data_template "  " /data/ $create_data_name "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											done 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											unset  create_template
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_www_root( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  WWW_INIT = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  WWW_TEMPLATE = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/usr/local/share/httpd/default"  ]  &&  WWW_TEMPLATE = "/usr/local/share/httpd/default" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $WWW_ROOT_DIR "  =  "/app"  ]  &&  WWW_INIT = " ${ WWW_INIT :- true } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  " $WWW_ROOT_DIR "  =  "/data/htdocs"  ]  &&  WWW_INIT = " ${ WWW_INIT :- true } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__is_dir_empty " $WWW_ROOT_DIR / "  &&  WWW_INIT = "true"  ||  WWW_INIT = "false" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  " $WWW_INIT "  =  "true"  ]  &&  [  -d " $WWW_TEMPLATE "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										cp -Rf " $DEFAULT_DATA_DIR /data/htdocs/. "  " $WWW_ROOT_DIR / "  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									__initialize_web_health " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__is_htdocs_mounted( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WWW_ROOT_DIR = " ${ WWW_ROOT_DIR :- /data/htdocs } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $ENV_WWW_ROOT_DIR "  ]  &&  WWW_ROOT_DIR = " $ENV_WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $IMPORT_FROM_GIT "  ]  &&  echo  " $IMPORT_FROM_GIT "  |  grep -qE 'https://|http://|git://|ssh://'  ||  unset  IMPORT_FROM_GIT
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -n " $IMPORT_FROM_GIT "  ]  &&  [  " $( command  -v "git"  2>/dev/null) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  __is_dir_empty " $WWW_ROOT_DIR " ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Importing project from  $IMPORT_FROM_GIT  to  $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											git clone -q " $IMPORT_FROM_GIT "  " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										elif  [  -d " $WWW_ROOT_DIR "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											echo  " Updating the project in  $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											git -C pull -q " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/app"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WWW_ROOT_DIR = "/app" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/data/htdocs/www"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WWW_ROOT_DIR = "/data/htdocs/www" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/data/htdocs/root"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WWW_ROOT_DIR = "/data/htdocs/root" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/data/htdocs"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WWW_ROOT_DIR = "/data/htdocs" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/data/wwwroot"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										WWW_ROOT_DIR = "/data/wwwroot" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d " $WWW_ROOT_DIR "  ]  ||  mkdir -p " $WWW_ROOT_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  WWW_ROOT_DIR = " ${ WWW_ROOT_DIR :- /usr/local/share/httpd/default } " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__initialize_ssl_certs( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									[  " $SSL_ENABLED "  =  "yes"  ]  &&  __certbot
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  -d "/config/letsencrypt"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mkdir -p "/etc/letsencrypt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__file_copy "/config/letsencrypt"  "/etc/letsencrypt/" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  -d "/etc/letsencrypt"  ]  &&  [  ! -d "/config/letsencrypt"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										mkdir -p "/config/letsencrypt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__file_copy "/etc/letsencrypt"  "/config/letsencrypt/" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[  -d " $SSL_DIR "  ]  ||  mkdir -p " $SSL_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  " $SSL_ENABLED "  =  "true"  ]  ||  [  " $SSL_ENABLED "  =  "yes"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  [  -f " $SSL_CERT "  ]  &&  [  -f " $SSL_KEY "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												SSL_ENABLED = "true" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if  [  -n " $SSL_CA "  ]  &&  [  -f " $SSL_CA "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													mkdir -p " $SSL_DIR /certs " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													cat " $SSL_CA "  >>"/etc/ssl/certs/ca-certificates.crt" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													cp -Rf "/."  " $SSL_DIR / " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[  -d " $SSL_DIR "  ]  ||  mkdir -p " $SSL_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												__create_ssl_cert
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									type  update-ca-certificates & >/dev/null &&  update-ca-certificates & >/dev/null
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								__start_php_dev_server( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  " $2 "  =  "yes"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  [  -d "/usr/local/share/httpd"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											find "/usr/local/share/httpd"  -type f -not -path '.git*'  -iname '*.php'  -exec sed -i 's|[<].*SERVER_ADDR.*[>]|' ${ CONTAINER_IP4_ADDRESS :- 127 .0.0.1 } '|g'  { }  \;  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											php -S 0.0.0.0:$PHP_DEV_SERVER_PORT  -t "/usr/local/share/httpd" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  ! echo  " $1 "  |  grep -q "^/usr/local/share/httpd" ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											find " $1 "  -type f -not -path '.git*'  -iname '*.php'  -exec sed -i 's|[<].*SERVER_ADDR.*[>]|' ${ CONTAINER_IP4_ADDRESS :- 127 .0.0.1 } '|g'  { }  \;  2>/dev/null
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											php -S 0.0.0.0:$PHP_DEV_SERVER_PORT  -t " $1 " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__check_service( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  " $1 "  =  "check"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										shift  $# 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__proc_check " $EXEC_CMD_NAME "  ||  __proc_check " $EXEC_CMD_BIN " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exit  $? 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								__switch_to_user( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  [  " $RUNAS_USER "  =  "root"  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  eval  " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  " $( builtin  type  -P gosu) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = " gosu  $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  $su_exec  " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  " $( builtin  type  -P runuser) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = " runuser -u  $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  $su_exec  " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  " $( builtin  type  -P sudo) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = " sudo -u  $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  $su_exec  " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									elif  [  " $( builtin  type  -P su) "  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = " su -s /bin/sh -  $RUNAS_USER " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  $su_exec  -c " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_exec = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										su_cmd( )  {  echo  " Can not switch to  $RUNAS_USER : attempting to run as root "  &&  eval  " $@ "  ||  return  1;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									export  su_exec
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# usage backup "days" "hours"  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								__backup( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									local  dirs = ""  backup_dir backup_name backup_exclude runTime cronTime maxDays
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									test  -n " $1 "  &&  test  -z " ${ 1 //[0-9]/ } "  &&  maxDays = " $1 "  &&  shift  1  ||  maxDays = "7" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									test  -n " $1 "  &&  test  -z " ${ 1 //[0-9]/ } "  &&  cronTime = " $1 "  &&  shift  1  ||  cronTime = "" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  exitCodeP = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  exitStatus = 0 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  pidFile = "/run/backup.pid" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									local  logDir = "/data/log/backups" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									maxDays = " ${ BACKUP_MAX_DAYS :- $maxDays } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cronTime = " ${ BACKUP_RUN_CRON :- $cronTime } " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									backup_dir = " $BACKUP_DIR / $( date +'%y/%m' ) " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									backup_name = " $( date +'%d_%H-%M' ) .tar.gz " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									backup_exclude = " /data/logs  $BACKUP_DIR   $BACK_EXCLUDE_DIR " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/data"  ]  &&  dirs += "/data " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d "/config"  ]  &&  dirs += "/config " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d " $logDir "  ]  ||  mkdir -p " $logDir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -d " $backup_dir "  ]  ||  mkdir -p " $backup_dir " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -z " $dirs "  ]  &&  echo  "BACKUP_DIR is unset"  >& 2  &&  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f " $pidFile "  ]  &&  echo  "A backup job is already running"  >& 2  &&  return  1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " $$ "  >" $pidFile " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									echo  " Starting backup in  $( date) "  >>" $logDir / $CONTAINER_NAME " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									tar --exclude $backup_exclude  cfvz " $backup_dir / $backup_name "  $dirs  2>/dev/stderr >>" $logDir / $CONTAINER_NAME "  ||  exitCodeP = 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  [  $exitCodeP  -eq 0  ] ;  then 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " Backup has completed and saved to:  $backup_dir / $backup_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										printf  '%s\n\n'  " Backup has completed on  $( date) "  >>" $logDir / $CONTAINER_NAME " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										__rm " ${ backup_dir : ? } / $backup_name " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										echo  " Backup has failed - log file saved to:  $logDir / $CONTAINER_NAME "  >& 2 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										printf  '%s\n\n'  " Backup has completed on  $( date) "  >>" $logDir / $CONTAINER_NAME " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										exitStatus = 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fi 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -f " $pidFile "  ]  &&  __rm " $pidFile " 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $maxDays "  ]  &&  find " $BACKUP_DIR " * -mtime +$maxDays  -exec rm -Rf { }  \;  >/dev/null 2>& 1 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[  -n " $cronTime "  ]  &&  runTime = $(( cronTime *  3600 ))  ||  return  $exitStatus 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									sleep $runTime  &&  __backup " $maxDays "  " $cronTime " 
							 
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# set variables from function calls  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  INIT_DATE = " ${ INIT_DATE :- $( date) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  START_SERVICES = " ${ START_SERVICES :- yes } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_MESSAGE = " ${ ENTRYPOINT_MESSAGE :- yes } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_FIRST_RUN = " ${ ENTRYPOINT_FIRST_RUN :- yes } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  DATA_DIR_INITIALIZED = " ${ DATA_DIR_INITIALIZED :- false } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  CONFIG_DIR_INITIALIZED = " ${ CONFIG_DIR_INITIALIZED :- false } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# System  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LANG = " ${ LANG :- C .UTF-8 } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LC_ALL = " ${ LANG :- C .UTF-8 } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  TZ = " ${ TZ :- ${ TIMEZONE :- America /New_York } } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  HOSTNAME = " ${ FULL_DOMAIN_NAME :- ${ SERVER_HOSTNAME :- $HOSTNAME } } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Default directories  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  SSL_DIR = " ${ SSL_DIR :- /config/ssl } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  SSL_CA = " ${ SSL_CERT :- /config/ssl/ca.crt } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  SSL_KEY = " ${ SSL_KEY :- /config/ssl/localhost.pem } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  SSL_CERT = " ${ SSL_CERT :- /config/ssl/localhost.crt } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LOCAL_BIN_DIR = " ${ LOCAL_BIN_DIR :- /usr/local/bin } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  DEFAULT_DATA_DIR = " ${ DEFAULT_DATA_DIR :- /usr/local/share/template-files/data } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  DEFAULT_CONF_DIR = " ${ DEFAULT_CONF_DIR :- /usr/local/share/template-files/config } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  DEFAULT_TEMPLATE_DIR = " ${ DEFAULT_TEMPLATE_DIR :- /usr/local/share/template-files/defaults } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Backup settings  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  BACKUP_MAX_DAYS = " ${ BACKUP_MAX_DAYS :- } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  BACKUP_RUN_CRON = " ${ BACKUP_RUN_CRON :- } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  BACKUP_DIR = " ${ BACKUP_DIR :- /data/backups } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								CONTAINER_IP4_ADDRESS = " ${ CONTAINER_IP4_ADDRESS :- $( __get_ip4) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CONTAINER_IP6_ADDRESS = " ${ CONTAINER_IP6_ADDRESS :- $( __get_ip6) } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# Additional  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  WORK_DIR = " ${ ENV_WORK_DIR :- $WORK_DIR } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  SET_RANDOM_PASS = " ${ SET_RANDOM_PASS :- $( __random_password 16) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  PHP_INI_DIR = " ${ PHP_INI_DIR :- $( __find_php_ini) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  PHP_BIN_DIR = " ${ PHP_BIN_DIR :- $( __find_php_bin) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  HTTPD_CONFIG_FILE = " ${ HTTPD_CONFIG_FILE :- $( __find_httpd_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  NGINX_CONFIG_FILE = " ${ NGINX_CONFIG_FILE :- $( __find_nginx_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  MYSQL_CONFIG_FILE = " ${ MYSQL_CONFIG_FILE :- $( __find_mysql_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  PGSQL_CONFIG_FILE = " ${ PGSQL_CONFIG_FILE :- $( __find_pgsql_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  LIGHTTPD_CONFIG_FILE = " ${ LIGHTTPD_CONFIG_FILE :- $( __find_lighttpd_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  MARIADB_CONFIG_FILE = " ${ MARIADB_CONFIG_FILE :- $( __find_mysql_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  POSTGRES_CONFIG_FILE = " ${ POSTGRES_CONFIG_FILE :- $( __find_pgsql_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  MONGODB_CONFIG_FILE = " ${ MONGODB_CONFIG_FILE :- $( __find_mongodb_conf) } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_PID_FILE = " ${ ENTRYPOINT_PID_FILE :- /run/init.d/entrypoint.pid } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_INIT_FILE = " ${ ENTRYPOINT_INIT_FILE :- /config/.entrypoint.done } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_DATA_INIT_FILE = " ${ ENTRYPOINT_DATA_INIT_FILE :- /data/.docker_has_run } "  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_CONFIG_INIT_FILE = " ${ ENTRYPOINT_CONFIG_INIT_FILE :- /config/.docker_has_run } "  
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-05 13:37:05 -04:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# is already Initialized  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[  -z " $DATA_DIR_INITIALIZED "  ]  &&  {  [  -f " $ENTRYPOINT_DATA_INIT_FILE "  ]  &&  DATA_DIR_INITIALIZED = "true"  ||  DATA_DIR_INITIALIZED = "false" ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[  -z " $CONFIG_DIR_INITIALIZED "  ]  &&  {  [  -f " $ENTRYPOINT_CONFIG_INIT_FILE "  ]  &&  CONFIG_DIR_INITIALIZED = "true"  ||  CONFIG_DIR_INITIALIZED = "false" ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								[  -z " $ENTRYPOINT_FIRST_RUN "  ]  &&  {  {  [  -f " $ENTRYPOINT_PID_FILE "  ]  ||  [  -f " $ENTRYPOINT_INIT_FILE "  ] ;  }  &&  ENTRYPOINT_FIRST_RUN = "no"  ||  ENTRYPOINT_FIRST_RUN = "true" ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_DATA_INIT_FILE DATA_DIR_INITIALIZED ENTRYPOINT_CONFIG_INIT_FILE CONFIG_DIR_INITIALIZED 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  ENTRYPOINT_PID_FILE ENTRYPOINT_INIT_FILE ENTRYPOINT_FIRST_RUN 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# export the functions  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								export  -f __get_pid __start_init_scripts __is_running __certbot __update_ssl_certs __create_ssl_cert 
						 
					
						
							
								
									
										
										
										
											2025-10-22 08:41:12 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# - - - - - - - - - - - - - - - - - - - - - - - - -  
						 
					
						
							
								
									
										
										
										
											2025-09-16 19:38:50 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# end of functions