#!/bin/bash

. /srv/rdaa/service/.env
. /srv/rdaa/service/.env_$ENVIRONMENT

mac="$(cat /sys/class/net/eth0/address)"
ip="$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')"
uid="$(echo $mac | sed 's/://g')"

echo "RDAA_UID=$uid" > /srv/rdaa/service/.uid
hostnamectl set-hostname $uid
sed -i "/127.0.1.1/c\127.0.1.1       $uid" /etc/hosts

shield_version=2

description="RDA_autoinstalled"

sleep 10

auth_request="$(curl --silent -X POST 'https://'$RDBA_HOST_ADDRESS'/authserver-service/oauth/token' -H 'accept: application/json' -H 'Content-Type: application/x-www-form-urlencoded' -H 'X-CSRF-TOKEN: ' -d 'grant_type='$grant_type'&client_id='$client_id'&username='$username_auth'&password='$password_auth'' | jq '.')"

bearer_token="$(echo $auth_request | jq --raw-output '.access_token')"

    if [ -z "$bearer_token" ]; then
        echo "Cannot connect to RDBA! Will try another one..."
        echo -e "\nCannot connect to RDBA! Will try another one...\n" > /dev/tty0
        exit 1
    else
        response="$(curl --silent -X POST 'https://'$RDBA_HOST_ADDRESS'/rdas-service/api/v1/rdas' -H 'Content-Type: application/json' -d '{"uid":"'$uid'","description":"'$description'","shieldVersion":"'$shield_version'","ipAddress":"'$ip'"}' -H 'Authorization: Bearer '$bearer_token'')"
        error="$(echo $response | jq --raw-output '.error')"
        if [ ! "$error" = "null" ];then
            echo $error
            echo -e "\n"$error"\n" > /dev/tty0
                if [ ! -f /srv/rdaa/service/.priv_key ];then
                  touch /srv/rdaa/service/.priv_key
                  chown pi. /srv/rdaa/service/.priv_key
                fi
            echo "RDA ENVIRONMENT is: $ENVIRONMENT"
            echo "RDA UID is: $uid"
            echo "RDA IP is: $ip"
            echo -e "\nRDA ENVIRONMENT is: $ENVIRONMENT\n" > /dev/tty0
            echo -e "\nRDA UID is: $uid\n" > /dev/tty0
            echo -e "\nRDA IP is: $ip\n" > /dev/tty0
            sync
            systemctl start rdaa_docker.service
            exit 0
        fi
        if [ -z "$response" ]; then
            echo "Cannot connect to RDBA! Will try another one..."
            echo -e "\nCannot connect to RDBA! Will try another one...\n" > /dev/tty0
            exit 1
        else
            priv_key="$(echo $response | jq --raw-output '.privateKey')"
            echo "RDAA_PRIVATE_KEY=$priv_key" > /srv/rdaa/service/.priv_key
            sed -i "s|RDAA_PRIVATE_KEY=.*|RDAA_PRIVATE_KEY=$priv_key|" /srv/rdaa/service/.env_$ENVIRONMENT
            chown pi. /srv/rdaa/service/.priv_key
            echo "RDA authorized in DataBase"
            echo "RDA ENVIRONMENT is: $ENVIRONMENT"
            echo "RDA UID is: $uid"
            echo "RDA IP is: $ip"
            echo -e "\nRDA authorized in DataBase\n" > /dev/tty0
            echo -e "\nRDA ENVIRONMENT is: $ENVIRONMENT\n" > /dev/tty0
            echo -e "\nRDA UID is: $uid\n" > /dev/tty0
            echo -e "\nRDA IP is: $ip\n" > /dev/tty0
            sync
            systemctl start rdaa_docker.service
            exit 0
        fi
    fi