#!/bin/bash

# Kpitaine Tooling 
# Synchronisation de fichiers avec le Kpitaine Drive via le protocole sFTP
# 
# @author it@kpitaine.com
# Pour toute question, consulter la FAQ sur le rubrique dédiée 
# 
# @see https://faq.kpitaine.com/sources-de-données/kpitaine-drive/synchronisation-kpitaine-drive
#
# 


############ CONFIGURATION ##############

# Login 
# Nom d'utilisateur fourni par Kpitaine pour se connecter au serveur sFTP
SERVER_USERNAME=

# Certificat 
# Chemin complet du certificat RSA privé utilisé pour ce connecter au serveur sFTP
# Le certificat public correspondant doit avoir été envoyé à l'équipe KPITAINE
SERVER_CERTFILE=~/.ssh/id_rsa


# Positionner ici le chemin local à synchroniser avec le serveur Kpitaine
SRC_PATH=$HOME/public

# Positionner ici le sous répertoire du KPITAINE DRIVE. 
# Laisser / si vous voulez synchroniser l'ensemble du Kpitaine Drive
DEST_PATH=/

# Mode silencieux (pour limiter la verbosité de la sortie)
QUIET=false

############ FIN DE LA CONFIGURATION SPÉCIFIQUE ##############

## SERVEUR KPITAINE 
SERVER_HOST=ftp.kpitaine.com
SERVER_PORT=9020



### Vérification des dépendances
command -v apt-get > /dev/null
if [[ $? == 0 ]] ; then 
	debian=true
else 
	debian=false
fi


command -v scp > /dev/null
if [[ $? != 0 ]] ; then 
	if $debian ; then
		echo "Installation du client scp"
		apt-get install openssh-client
	else 
		echo "La commande scp est requise pour ce script."
		echo "Veuillez l'installer avec votre gestionnaire de paquet"
		echo "  Exemple : "
		echo "    - apt-get install openssh-client"
		echo "    - yum install openssh-client"
		exit 1
	fi
fi

if [[ ! -d $SRC_PATH ]] ; then
	echo "Le chemin '$SRC_PATH' spécifié est introuvable" 2>
	exit 2
fi

if [[ $SERVER_CERTFILE == "" ]] ; then
	echo "Il n'y a aucun certificat spécifié pour l'authentification"
	echo "Merci de vérifier votre configuration"
	exit 3
elif [[ ! -f $SERVER_CERTFILE ]] ; then
	echo "Le certificat '$SERVER_CERTFILE' est introuvable"
	exit 3
fi
if ! $QUIET  ; then
	echo ""
	echo "     | |/ /| _ \|_ _||_   _|/_\  |_ _|| \| || __| "
	echo "     | ' < |  _/ | |   | | / _ \  | | | .\` || _| " 
	echo "     |_|\_\|_|  |___|  |_|/_/ \_\|___||_|\_||___| "
	echo
	echo "                   ###################"
	echo "                   KPITAINE DRIVE SYNC "
	echo "                   ###################"
	echo
fi
# Copie des fichiers
fileCount=$(find $SRC_PATH/* -type f |wc -l)
if $QUIET ; then
	q="-q "
else 
	echo "Connexion au serveur sFTP de KPITAINE..."
	echo "  $SERVER_USERNAME@$SERVER_HOST:$SERVER_PORT"
	echo "Copie de $fileCount fichier(s)..."
fi

scp -r \
	-P $SERVER_PORT \
	-p \
	-o ConnectTimeout=5 \
	-o StrictHostKeyChecking=no \
	-o PasswordAuthentication=no \
	-i $SERVER_CERTFILE \
	-o HostKeyAlgorithms=+ssh-rsa \
	-B $q \
	$SRC_PATH/* $SERVER_USERNAME@$SERVER_HOST:$DEST_PATH

if [[ $? -eq 0 ]] ; then
	if $QUIET ; then
		echo $fileCount
	else 
		echo "$fileCount files copied successfully to server"
	fi
	exit 0
else 
	echo "Erreur">&2
	echo "   Impossible de réaliser la synchronisation avec le serveur Kpitaine" >&2
	echo "   Merci de vérifier votre configuration" >&2
	echo
	echo "   Documentation: https://faq.kpitaine.com/sources-de-données/kpitaine-drive/synchronisation-kpitaine-drive"
    echo "   Vous pouvez contacter l'équipe Kpitaine à https://support.kpitaine.com"
	exit 4
fi




