Merge pull request #6094 from sergiustheblack/feature/swanctl
StrongSwan deploy hook: swanctl supportpull/6096/head
						commit
						30e89c3cdc
					
				|  | @ -10,46 +10,89 @@ | ||||||
| 
 | 
 | ||||||
| #domain keyfile certfile cafile fullchain | #domain keyfile certfile cafile fullchain | ||||||
| strongswan_deploy() { | strongswan_deploy() { | ||||||
|   _cdomain="$1" |   _cdomain="${1}" | ||||||
|   _ckey="$2" |   _ckey="${2}" | ||||||
|   _ccert="$3" |   _ccert="${3}" | ||||||
|   _cca="$4" |   _cca="${4}" | ||||||
|   _cfullchain="$5" |   _cfullchain="${5}" | ||||||
| 
 |  | ||||||
|   _info "Using strongswan" |   _info "Using strongswan" | ||||||
| 
 |   if _exists ipsec; then | ||||||
|   if [ -x /usr/sbin/ipsec ]; then |     _ipsec=ipsec | ||||||
|     _ipsec=/usr/sbin/ipsec |   elif _exists strongswan; then | ||||||
|   elif [ -x /usr/sbin/strongswan ]; then |     _ipsec=strongswan | ||||||
|     _ipsec=/usr/sbin/strongswan |  | ||||||
|   elif [ -x /usr/local/sbin/ipsec ]; then |  | ||||||
|     _ipsec=/usr/local/sbin/ipsec |  | ||||||
|   else |  | ||||||
|     _err "no strongswan or ipsec command is detected" |  | ||||||
|     return 1 |  | ||||||
|   fi |   fi | ||||||
| 
 |   if _exists swanctl; then | ||||||
|   _info _ipsec "$_ipsec" |     _swanctl=swanctl | ||||||
| 
 |   fi | ||||||
|   _confdir=$($_ipsec --confdir) |   # For legacy stroke mode | ||||||
|   if [ $? -ne 0 ] || [ -z "$_confdir" ]; then |   if [ -n "${_ipsec}" ]; then | ||||||
|  |     _info "${_ipsec} command detected" | ||||||
|  |     _confdir=$(${_ipsec} --confdir) | ||||||
|  |     if [ -z "${_confdir}" ]; then | ||||||
|       _err "no strongswan --confdir is detected" |       _err "no strongswan --confdir is detected" | ||||||
|       return 1 |       return 1 | ||||||
|     fi |     fi | ||||||
| 
 |     _info _confdir "${_confdir}" | ||||||
|   _info _confdir "$_confdir" |     __deploy_cert "$@" "stroke" "${_confdir}" | ||||||
| 
 |     ${_ipsec} reload | ||||||
|   _debug _cdomain "$_cdomain" |   fi | ||||||
|   _debug _ckey "$_ckey" |   # For modern vici mode | ||||||
|   _debug _ccert "$_ccert" |   if [ -n "${_swanctl}" ]; then | ||||||
|   _debug _cca "$_cca" |     _info "${_swanctl} command detected" | ||||||
|   _debug _cfullchain "$_cfullchain" |     for _dir in /usr/local/etc/swanctl /etc/swanctl /etc/strongswan/swanctl; do | ||||||
| 
 |       if [ -d ${_dir} ]; then | ||||||
|   cat "$_ckey" >"${_confdir}/ipsec.d/private/$(basename "$_ckey")" |         _confdir=${_dir} | ||||||
|   cat "$_ccert" >"${_confdir}/ipsec.d/certs/$(basename "$_ccert")" |         _info _confdir "${_confdir}" | ||||||
|   cat "$_cca" >"${_confdir}/ipsec.d/cacerts/$(basename "$_cca")" |         break | ||||||
|   cat "$_cfullchain" >"${_confdir}/ipsec.d/cacerts/$(basename "$_cfullchain")" |       fi | ||||||
| 
 |     done | ||||||
|   $_ipsec reload |     if [ -z "${_confdir}" ]; then | ||||||
| 
 |       _err "no swanctl config dir is found" | ||||||
|  |       return 1 | ||||||
|  |     fi | ||||||
|  |     __deploy_cert "$@" "vici" "${_confdir}" | ||||||
|  |     ${_swanctl} --load-creds | ||||||
|  |   fi | ||||||
|  |   if [ -z "${_swanctl}" ] && [ -z "${_ipsec}" ]; then | ||||||
|  |     _err "no strongswan or ipsec command is detected" | ||||||
|  |     _err "no swanctl is detected" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | ####################  Private functions below ################################## | ||||||
|  | 
 | ||||||
|  | __deploy_cert() { | ||||||
|  |   _cdomain="${1}" | ||||||
|  |   _ckey="${2}" | ||||||
|  |   _ccert="${3}" | ||||||
|  |   _cca="${4}" | ||||||
|  |   _cfullchain="${5}" | ||||||
|  |   _swan_mode="${6}" | ||||||
|  |   _confdir="${7}" | ||||||
|  |   _debug _cdomain "${_cdomain}" | ||||||
|  |   _debug _ckey "${_ckey}" | ||||||
|  |   _debug _ccert "${_ccert}" | ||||||
|  |   _debug _cca "${_cca}" | ||||||
|  |   _debug _cfullchain "${_cfullchain}" | ||||||
|  |   _debug _swan_mode "${_swan_mode}" | ||||||
|  |   _debug _confdir "${_confdir}" | ||||||
|  |   if [ "${_swan_mode}" = "vici" ]; then | ||||||
|  |     _dir_private="private" | ||||||
|  |     _dir_cert="x509" | ||||||
|  |     _dir_ca="x509ca" | ||||||
|  |   elif [ "${_swan_mode}" = "stroke" ]; then | ||||||
|  |     _dir_private="ipsec.d/private" | ||||||
|  |     _dir_cert="ipsec.d/certs" | ||||||
|  |     _dir_ca="ipsec.d/cacerts" | ||||||
|  |   else | ||||||
|  |     _err "unknown StrongSwan mode ${_swan_mode}" | ||||||
|  |     return 1 | ||||||
|  |   fi | ||||||
|  |   cat "${_ckey}" >"${_confdir}/${_dir_private}/$(basename "${_ckey}")" | ||||||
|  |   cat "${_ccert}" >"${_confdir}/${_dir_cert}/$(basename "${_ccert}")" | ||||||
|  |   cat "${_cca}" >"${_confdir}/${_dir_ca}/$(basename "${_cca}")" | ||||||
|  |   if [ "${_swan_mode}" = "stroke" ]; then | ||||||
|  |     cat "${_cfullchain}" >"${_confdir}/${_dir_ca}/$(basename "${_cfullchain}")" | ||||||
|  |   fi | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 neil
						neil