#!/bin/bash
set -e

SRC_FOLDER=/var/log/asterisk/cdr-custom
CDR_MASTER=Master.csv
CDR_PREFIX="cp-"
ASKPASS_SCRIPT=/tmp/cdr_upload_askpass.sh

die() {
	echo >&2 "$@"
	exit 1
}

usage() {
	[ $# -eq 0 ] || echo >&2 "$@"
	echo >&2 "Usage: $0 [options] username hostname"
	echo >&2 "       Options:"
	echo >&2 "          -h|--help"       This message.
	echo >&2 "          -P|--port        Destination port."
	echo >&2 "          -p|--pass        SSH password."
	echo >&2 "          -k|--key         SSH private key."
	echo >&2 "          -s|--src         Source folder."
	echo >&2 "          -d|--dst         Destination folder."
	exit 1
}

# Parse args
params=$(getopt -o 'hd:P:p:k:s:d:' --long 'help,,port:,pass:,key:,src:,dst:' -n "$0" -- "$@")
[ $? -eq 0 ] || usage "E: Illegal option"
eval set -- "$params"
unset params

while true; do
	case "$1" in
		'-h'|'--help')
			usage
		;;
		'-P'|'--port')
			DST_PORT=${2};
			shift 2
		;;
		'-p'|'--pass')
			SSH_PASSWORD=${2};
			shift 2
		;;
		'-k'|'--key')
			SSH_KEY=${2};
			shift 2
        ;;
		'-s'|'--src')
			SRC_FOLDER=${2};
			shift 2
		;;
		'-d'|'--dst')
			DST_FOLDER=${2};
			shift 2
		;;
		'--')
			shift
			break
		;;
		*)
			break
		;;
	esac
done

SSH_USERNAME="$1"
HOSTNAME="$2"

if [ -z "${SSH_USERNAME}" ]; then
	usage "E: Username is required"
fi

if [ -z "${HOSTNAME}" ]; then
	usage "E: Hostname or IP is required"
fi

# Exit if folder does not exist
if [ ! -d "${SRC_FOLDER}" ]; then
	exit 0
fi

# Rename Master.csv to cp-timestamp-Master.csv
if [ -f "${SRC_FOLDER}/${CDR_MASTER}" ]; then
	mv "${SRC_FOLDER}/${CDR_MASTER}" "${SRC_FOLDER}/${CDR_PREFIX}$(date  '+%s')-${CDR_MASTER}"
fi

# Set up rclone
RCLONE_OPTS="-q  --sftp-use-insecure-cipher --no-check-dest --ignore-checksum --sftp-host ${HOSTNAME} --sftp-user ${SSH_USERNAME} --include ${CDR_PREFIX}*-${CDR_MASTER}"

if [ ! -z "${SSH_PASSWORD}" ]; then
	obscured_pass=$(echo -n "${SSH_PASSWORD}" | rclone obscure -)
	RCLONE_OPTS="${RCLONE_OPTS} --sftp-pass ${obscured_pass}"
elif [ ! -z "${SSH_KEY}" ]; then
	RCLONE_OPTS="${RCLONE_OPTS} --sftp-key-file ${SSH_KEY}"
fi

if [ ! -z "${DST_PORT}" ]; then
	RCLONE_OPTS="${RCLONE_OPTS} --sftp-port ${DST_PORT}"
fi

# Transfer files
if ls "${SRC_FOLDER}/${CDR_PREFIX}"* >/dev/null 2>&1 ; then
	rclone copy ${RCLONE_OPTS} "${SRC_FOLDER}" ":sftp:${DST_FOLDER}" && rm -f "${SRC_FOLDER}/${CDR_PREFIX}"*
fi
