#!/bin/bash

# Script to check if wifi is connected and start hotspot if not
# will also retreive unique RPi ID and store it to deviceID.txt
# Script launched by cron job
# @reboot /var/www/moduleair_pro_4g/boot_hotspot.sh >> /var/www/moduleair_pro_4g/logs/app.log 2>&1

OUTPUT_FILE="/var/www/moduleair_pro_4g/wifi_list.csv"

echo "-------------------"
echo "-------------------"

echo "ModuleAir pro started at $(date)"


echo "getting RPI serial number"
# Get the last 8 characters of the serial number and write to text file
serial_number=$(cat /proc/cpuinfo | grep Serial | awk '{print substr($3, length($3) - 7)}')
# Define the JSON file path
# update Sqlite database
echo "Updating SQLite database with device ID: $serial_number"
sqlite3 /var/www/moduleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='$serial_number' WHERE key='deviceID';"

echo "id: $serial_number"

#get the SSH port for tunneling
SSH_TUNNEL_PORT=$(sqlite3 /var/www/moduleair_pro_4g/sqlite/sensors.db "SELECT value FROM config_table WHERE key='sshTunnel_port'")

#need to wait for the network manager to be ready
sleep 20
# Get the connection state of wlan0
STATE=$(nmcli -g GENERAL.STATE device show wlan0)

# Check if the state is 'disconnected'
if [ "$STATE" == "30 (disconnected)" ]; then
    echo "wlan0 is disconnected."
    echo "need to perform a wifi scan"
    # Perform a wifi scan and save its output to a csv file    
    # nmcli device wifi list
    nmcli -f SSID,SIGNAL,SECURITY device wifi list | awk 'BEGIN { OFS=","; print "SSID,SIGNAL,SECURITY" } NR>1 { print $1,$2,$3 }' > "$OUTPUT_FILE"
    # Start the hotspot
    echo "Starting hotspot..."
    sudo nmcli device wifi hotspot ifname wlan0 ssid moduleair_pro password moduleaircfg

    # Update JSON to reflect hotspot mode
    sqlite3 /var/www/moduleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='hotspot' WHERE key='WIFI_status'"


else
    echo "🛜Success: wlan0 is connected!🛜"
    CONN_SSID=$(nmcli -g GENERAL.CONNECTION device show wlan0)
    echo "Connection: $CONN_SSID"

     # Update SQLite to reflect hotspot mode
    sqlite3 /var/www/moduleair_pro_4g/sqlite/sensors.db "UPDATE config_table SET value='connected' WHERE key='WIFI_status'"

    # Lancer le tunnel SSH
    #echo "Démarrage du tunnel SSH sur le port $SSH_TUNNEL_PORT..."
    # Start the SSH agent if it's not already running
    #eval "$(ssh-agent -s)"
    # Add your SSH private key
    #ssh-add /home/airlab/.ssh/id_rsa
    #connections details
    #REMOTE_USER="airlab_server1"    # Remplacez par votre nom d'utilisateur distant
    #REMOTE_SERVER="aircarto.fr"     # Remplacez par l'adresse de votre serveur
    #LOCAL_PORT=22                   # Port local à rediriger
    #MONITOR_PORT=0                  # Désactive la surveillance de connexion autossh
    
    #autossh -M "$MONITOR_PORT" -f -N -R "$SSH_TUNNEL_PORT:localhost:$LOCAL_PORT" "$REMOTE_USER@$REMOTE_SERVER" -p 50221
    # ssh -f -N -R 52221:localhost:22 -p 50221 airlab_server1@aircarto.fr
    #ssh -i /var/www/.ssh/id_rsa -f -N -R "$SSH_TUNNEL_PORT:localhost:$LOCAL_PORT" -p 50221 -o StrictHostKeyChecking=no "$REMOTE_USER@$REMOTE_SERVER" 

    #Check if the tunnel was created successfully
    #if [ $? -eq 0 ]; then
    #    echo "Tunnel started successfully!"
    #else
    #    echo "Error: Unable to start the tunnel!"
    #    exit 1
    #fi
fi
echo "-------------------"
