|
@@ -10,46 +10,89 @@
|
|
|
|
|
|
#domain keyfile certfile cafile fullchain
|
|
#domain keyfile certfile cafile fullchain
|
|
strongswan_deploy() {
|
|
strongswan_deploy() {
|
|
- _cdomain="$1"
|
|
|
|
- _ckey="$2"
|
|
|
|
- _ccert="$3"
|
|
|
|
- _cca="$4"
|
|
|
|
- _cfullchain="$5"
|
|
|
|
-
|
|
|
|
|
|
+ _cdomain="${1}"
|
|
|
|
+ _ckey="${2}"
|
|
|
|
+ _ccert="${3}"
|
|
|
|
+ _cca="${4}"
|
|
|
|
+ _cfullchain="${5}"
|
|
_info "Using strongswan"
|
|
_info "Using strongswan"
|
|
-
|
|
|
|
- if [ -x /usr/sbin/ipsec ]; then
|
|
|
|
- _ipsec=/usr/sbin/ipsec
|
|
|
|
- elif [ -x /usr/sbin/strongswan ]; then
|
|
|
|
- _ipsec=/usr/sbin/strongswan
|
|
|
|
- elif [ -x /usr/local/sbin/ipsec ]; then
|
|
|
|
- _ipsec=/usr/local/sbin/ipsec
|
|
|
|
- else
|
|
|
|
|
|
+ if _exists ipsec; then
|
|
|
|
+ _ipsec=ipsec
|
|
|
|
+ elif _exists strongswan; then
|
|
|
|
+ _ipsec=strongswan
|
|
|
|
+ fi
|
|
|
|
+ if _exists swanctl; then
|
|
|
|
+ _swanctl=swanctl
|
|
|
|
+ fi
|
|
|
|
+ # For legacy stroke mode
|
|
|
|
+ if [ -n "${_ipsec}" ]; then
|
|
|
|
+ _info "${_ipsec} command detected"
|
|
|
|
+ _confdir=$(${_ipsec} --confdir)
|
|
|
|
+ if [ -z "${_confdir}" ]; then
|
|
|
|
+ _err "no strongswan --confdir is detected"
|
|
|
|
+ return 1
|
|
|
|
+ fi
|
|
|
|
+ _info _confdir "${_confdir}"
|
|
|
|
+ __deploy_cert "$@" "stroke" "${_confdir}"
|
|
|
|
+ ${_ipsec} reload
|
|
|
|
+ fi
|
|
|
|
+ # For modern vici mode
|
|
|
|
+ if [ -n "${_swanctl}" ]; then
|
|
|
|
+ _info "${_swanctl} command detected"
|
|
|
|
+ for _dir in /usr/local/etc/swanctl /etc/swanctl /etc/strongswan/swanctl; do
|
|
|
|
+ if [ -d ${_dir} ]; then
|
|
|
|
+ _confdir=${_dir}
|
|
|
|
+ _info _confdir "${_confdir}"
|
|
|
|
+ break
|
|
|
|
+ fi
|
|
|
|
+ done
|
|
|
|
+ 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 strongswan or ipsec command is detected"
|
|
|
|
+ _err "no swanctl is detected"
|
|
return 1
|
|
return 1
|
|
fi
|
|
fi
|
|
|
|
+}
|
|
|
|
|
|
- _info _ipsec "$_ipsec"
|
|
|
|
|
|
+#################### Private functions below ##################################
|
|
|
|
|
|
- _confdir=$($_ipsec --confdir)
|
|
|
|
- if [ $? -ne 0 ] || [ -z "$_confdir" ]; then
|
|
|
|
- _err "no strongswan --confdir is detected"
|
|
|
|
|
|
+__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
|
|
return 1
|
|
fi
|
|
fi
|
|
-
|
|
|
|
- _info _confdir "$_confdir"
|
|
|
|
-
|
|
|
|
- _debug _cdomain "$_cdomain"
|
|
|
|
- _debug _ckey "$_ckey"
|
|
|
|
- _debug _ccert "$_ccert"
|
|
|
|
- _debug _cca "$_cca"
|
|
|
|
- _debug _cfullchain "$_cfullchain"
|
|
|
|
-
|
|
|
|
- cat "$_ckey" >"${_confdir}/ipsec.d/private/$(basename "$_ckey")"
|
|
|
|
- cat "$_ccert" >"${_confdir}/ipsec.d/certs/$(basename "$_ccert")"
|
|
|
|
- cat "$_cca" >"${_confdir}/ipsec.d/cacerts/$(basename "$_cca")"
|
|
|
|
- cat "$_cfullchain" >"${_confdir}/ipsec.d/cacerts/$(basename "$_cfullchain")"
|
|
|
|
-
|
|
|
|
- $_ipsec reload
|
|
|
|
-
|
|
|
|
|
|
+ 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
|
|
}
|
|
}
|