#!/bin/bash

set -eu

VDN_PATH=$(readlink -f $(dirname $(command -v vdn))/..)
. $VDN_PATH/bin/functions.sh
GUEST_OWNER=$USER

rewrite_connection() {
  if [[ $1 != *:* ]]; then
    connection="$1"
  else
    connection=${1%:*}
    local path=${1#*:}
    local user=${connection%@*}
    guest=${connection#*@}
    connection="${user}@localhost:${path}"
  fi
}

determine_redir_port() {
  local redirs="$TMPDIR/vdn-$guest-${GUEST_OWNER}-redirs"
  [[ ! -e $redirs ]] && error "Impossible de joindre $guest"
  sshRedirPort=$(awk -F ':' '$1 == "tcp" && $3 == "22" {print $2}' "$redirs")
  [[ -n $sshRedirPort ]] || error "Aucune redirection vers le port 22 du système $guest"
}

declare -a options=()
declare -a srcs=()
declare -a dest=()
guest=''
while [[ $# -ne 0 ]]; do
  if [[ $1 == -* ]]; then
    options+=("$1")
  elif [[ $# -ne 1 ]]; then
    rewrite_connection "$1"
    srcs+=("$connection")
  else
    rewrite_connection "$1"
    dest+=("$connection")
  fi
  shift
done

if [[ $guest ]]; then
  determine_redir_port
  rsync "${options[@]}" -e "ssh -g -p $sshRedirPort $SSH_OPTS -o StrictHostKeyChecking=no" "${srcs[@]}" "$dest"
else
  rsync "${options[@]}" "${srcs[@]}" "${dest[@]}"
fi
