rm -f /tmp/vpn-mk-client-cert.log
exec 2>/tmp/vpn-mk-client-cert.log
+
+if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
+shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4
+set -eE -o pipefail
+trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?. PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
+
date >&2
+set -x
name=$1
common_name=$2
-echo common_name=$common_name >&2
-
server_dir=/etc/openvpn
if [[ -e /etc/openvpn/server ]]; then
server_dir=/etc/openvpn/server
### end section roughly copied from vpn-server-setup
if [[ ! -e $cafile ]]; then
- echo error: no cafile found at $cafile >/tmp/errors
+ echo error: no cafile found at $cafile >&2
exit 1
fi
-c CLIENT_HOST Default is localhost. Else we ssh to root@CLIENT_HOST.
-n CONFIG_NAME default is client
+-o SERVER_CONFIG_NAME Default is CONFIG_NAME
-s SCRIPT_PATH Use custom up/down script at SCRIPT_PATH. copied to same path
on client, if client is not localhost.
script=/etc/openvpn/update-resolv-conf
client_host=$CLIENT_HOST
-temp=$(getopt -l help hb:c:n:s: "$@") || usage 1
+temp=$(getopt -l help hb:c:n:o:s: "$@") || usage 1
eval set -- "$temp"
while true; do
case $1 in
-b) common_name="$2"; shift 2 ;;
-c) client_host=$2; shell="ssh root@$client_host"; shift 2 ;;
-n) name="$2"; shift 2 ;;
+ -o) server_name="$2"; shift 2 ;;
-s) custom_script=true; script="$2"; shift 2 ;;
-h|--help) usage ;;
--) shift; break ;;
esac
done
+if [[ ! $server_name ]]; then
+ server_name="$name"
+fi
+
if [[ ! $common_name ]]; then
if [[ $client_host ]]; then
common_name=$client_host
# bash or else we get motd spam. note sleep 2, sleep 1 failed.
$shell '[[ -e /etc/openvpn ]] || apt install openvpn'
-if ! ssh root@$host bash -s -- $name $common_name < client-cert-helper \
+if ! ssh root@$host bash -s -- $server_name $common_name < client-cert-helper \
| $shell 'id -u | grep -xF 0 || s=sudo; $s tar xzv -C /etc/openvpn/client'; then
echo ssh root@$host cat /tmp/vpn-mk-client-cert.log:
ssh root@$host cat /tmp/vpn-mk-client-cert.log
+ echo EOF for root@$host:/tmp/vpn-mk-client-cert.log
exit 1
fi