#!/bin/bash
# Text color codes
RED='\033[0;31m'
NC='\033[0m' # No Color

# Convert 255.255.255.0 to CIDR notation
IPprefix_by_netmask () 
{
    c=0 x=0$( printf '%o' ${1//./ } )
    while [ $x -gt 0 ]; do
        let c+=$((x%2)) 'x>>=1'
    done

    echo $c
}

# write network file
function generate_network_yaml_file ()
{
    # Find NIC
    NIC=$(ls /sys/class/net | grep eth 2>&1)

    # Read Gateway, IP, subnet
    ip=""
    gateway=""
    dns1=""
    dns2=""

    filename="/etc/network/interfaces.d/$NIC";
    fp=$(<$filename)
    while IFS= read -r line
    do
        if [[ "$line" != "" ]]
        then
            # line=${stringa// /}
            # echo $line
            if [[ $line = *"gateway "* ]]
            then
                gateway=${line/"gateway "/};
            fi

            if [[ $line = *"address "* ]]
            then
                ip=${line/"address "/};
            fi

            if [[ $line = *"netmask "* ]]
            then
                subnet=${line/"netmask "/};
                subnet=$(IPprefix_by_netmask "$subnet" 2>&1)
            fi
        fi
    done < "$filename"

    # Read DNS Servers
    dns1="";
    dns2="";
    dns3="";
    i=1;
    filename="/etc/resolv.conf";
    fp=$(<$filename)
    while IFS= read -r line
    do
        if [[ "$line" != "" ]]
        then
            if [[ $line = *"nameserver "* ]]
            then
                if [[ $i -eq 1 ]]
                then
                    dns1=${line/"nameserver "/};
                fi

                if [[ $i -eq 2 ]]
                then
                    dns2=${line/"nameserver "/};
                fi

                if [[ $i -eq 3 ]]
                then
                    dns3=${line/"nameserver "/};
                fi

                ((i++))
            fi
        fi
    done < "$filename"

    mkdir -p /etc/netplan

    # write file
    echo "network:" > /etc/netplan/01-netconf.yaml
    echo "  ethernets:" >> /etc/netplan/01-netconf.yaml
    echo "      eth0:" >> /etc/netplan/01-netconf.yaml
    echo "          addresses:" >> /etc/netplan/01-netconf.yaml
    echo "              - $ip/$subnet" >> /etc/netplan/01-netconf.yaml
    echo "          gateway4: $gateway" >> /etc/netplan/01-netconf.yaml
    echo "          nameservers:" >> /etc/netplan/01-netconf.yaml
    echo "              addresses:" >> /etc/netplan/01-netconf.yaml
    echo "                  - $dns1" >> /etc/netplan/01-netconf.yaml
    if [[ "$dns2" != "" ]]
    then
        echo "                  - $dns2" >> /etc/netplan/01-netconf.yaml
    fi
    if [[ "$dns3" != "" ]]
    then
        echo "                  - $dns3" >> /etc/netplan/01-netconf.yaml
    fi
}

# Do not auto update programs
echo "APT::Periodic::Update-Package-Lists \"0\";" > /etc/apt/apt.conf.d/20auto-upgrades
echo "APT::Periodic::Unattended-Upgrade \"0\";" >> /etc/apt/apt.conf.d/20auto-upgrades

# Get new update
generate_network_yaml_file
cat /etc/netplan/01-netconf.yaml
read -n1 -rsp $'Press any key to continue...\n'

# make sure dpkg works (apt)
dpkg --configure -a

# Install missing programs
apt-get install -y telnet unzip

# Copy certificate file
cp /etc/sms/scripts/certificate.pem /etc/ssl

# Install new smsd and smstools
service smstools stop
wget https://downloads.inlogic.dk/inlogicgatewaymodem/Update46/smsd.zip -O /tmp/smsd.zip
if [ ! -f /tmp/smsd.zip ]
then
    echo "/tmp/smsd.zip does not exist. Stopping script."
    exit 1
fi
unzip -o /tmp/smsd.zip -d /
chmod 755 /usr/local/bin/smsd
chmod 755 /etc/init.d/smstools
systemctl daemon-reload
read -n1 -rsp $'Press any key to continue...\n'

# Remove files
rm -f /lib/udev/rules.d/41-UMS_modeswitch.rules
rm -f /etc/init.d/findnic.sh
rm -f /etc/sms/scripts/eventhandlerGSM1
rm -f /etc/sms/scripts/mysql_parser.php
rm -f /etc/sms/scripts/signal1.sh
rm -f /etc/sms/scripts/smsout.php
rm -f /etc/sms/scripts/AxelF
rm -f /etc/sms/scripts/ImperialMarch
rm -f /etc/sms/scripts/StarWars
rm -f /etc/sms/scripts/SuperMario
rm -f /etc/sms/scripts/Set_HUB_id.sh
rm -f /etc/sms/scripts/led1off.sh
rm -f /etc/sms/scripts/led1on.sh
rm -f /etc/sms/scripts/led2off.sh
rm -f /etc/sms/scripts/led2on.sh
rm -f /etc/sms/scripts/ledoff.sh
rm -f /etc/sms/scripts/ledon.sh
rm -f /etc/sms/scripts/inlogicmodem-1.pem
rm -f /etc/sms/scripts/createsmsd.php
rm -f /etc/sms/scripts/Shutdown.sh
rm -f /etc/sms/scripts/signal.sh
rm -f /mnt/flash/root/source/fileload.js
rm -f /mnt/flash/root/webservice/getdrives.php
rm -f /mnt/flash/root/webservice/getgenerelinfo.php
rm -f /mnt/flash/root/webservice/getmem.php
rm -f /mnt/flash/root/webservice/getsignal.php
rm -f /mnt/flash/root/webservice/getwho.php
rm -f /mnt/flash/root/source/serial.php
rm -f /mnt/flash/root/source/ShUtDoWn.php
rm -f /usr/sbin/smsd
rm -f /etc/apache2/sites-available/000-default-443.conf
rm -f /etc/apache2/conf-available/phpmyadmin.conf
rm -f /etc/apache2/conf-enabled/phpmyadmin.conf

# Remove folders
rm -rf /var/log/smstools
rm -rf /mnt/spool
rm -rf /mnt/flash/root/src
rm -rf /mnt/flash/root/source/custom

# Remove webconsole
rm -f /mnt/flash/root/source/custom/webconsole.php

# Remove phpmyadmin
rm -f /var/lib/dpkg/info/phpmyadmin*
rm -f /etc/apache2/conf.d/phpmyadmin.conf
rm -f /etc/apache2/conf-enabled/phpmyadmin.conf
rm -f /etc/apache2/conf-available/phpmyadmin.conf

# Remove packages
apt-get purge -y --force-all  phpmyadmin

rm -rf /etc/phpmyadmin
rm -rf /var/lib/phpmyadmin

rm -rf /mnt/flash/root/xml
rm -rf /var/lib/mysql/phpmyadmin
rm -rf /var/lib/apache2/site/disabled_by_admin/phpmyadmin
rm -rf /var/lib/apache2/conf/enabled_by_maint/phpmyadmin
rm -rf /var/www/html/phpmyadmin
rm -rf /usr/share/phpmyadmin
rm -rf /usr/share/doc-base/phpmyadmin
rm -rf /usr/share/doc/phpmyadmin
rm -rf /usr/share/lintian/overrides/phpmyadmin
rm -rf /usr/share/dbconfig-common/data/phpmyadmin
rm -rf /usr/share/dbconfig-common/scripts/phpmyadmin

# Remove .htaccess files due to non-override
rm -rf /mnt/flash/root/.htaccess

# Update to newest version
apt update -y
apt upgrade -y 
apt dist-upgrade -y 

# Get new ubuntu version
sed -i "s/xenial/bionic/g" /etc/apt/sources.list
sed -i "s/xenial/bionic/g" /etc/apt/sources.list.d/odroid.list
rm /etc/apt/sources.list.d/saiarcot895-ubuntu-myppa-xenial.list
apt-get update -y

apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

apt-get remove -y linux-image-xu3

printf "${RED}You have to choose ""No"" at next question. ""Do you want to abort removal now?"".\n${NC}"
read -n1 -rsp $'Press any key to continue...\n'
apt-get remove -y linux-image-4.14*

apt-get install -y linux-odroid-5422
apt-get autoremove -y

# Make usb-modeswitch work again
wget http://www.draisberghof.de/usb_modeswitch/usb-modeswitch-2.5.2.tar.bz2 -O /usr/src/usb-modeswitch-2.5.2.tar.bz2
tar xvf /usr/src/usb-modeswitch-2.5.2.tar.bz2 -C /usr/src
cd /usr/src/usb-modeswitch-2.5.2/
make;make install

# Add alias commands to bash
echo "alias inlsyslog='tail -f /var/log/syslog'" >> /root/.bashrc
echo "alias inlsmsd='tail -f /var/log/smsd.log'" >> /root/.bashrc
echo "alias inlapache='tail -f /var/log/apache2/error.log'" >> /root/.bashrc
echo "alias inlnetwork='nano /etc/netplan/01-netconf.yaml'" >> /root/.bashrc

# Set rigts to allow SSL updates
/bin/chown -R root:www-data /etc/ssl/
/bin/chmod -R 775 /etc/ssl/

# Set rigts to allow network updates
/bin/chown -R root:www-data /etc/netplan/
/bin/chmod -R 775 /etc/netplan/

# MySQL upgrade
export MYSQL_PWD=qscVDW234EFB
mysql_upgrade

# MySQL updates
mysql --execute="CREATE USER IF NOT EXISTS umsservice@'localhost' IDENTIFIED BY 'qscVDW234EFB'"
mysql --execute="GRANT ALL ON gsm.* TO umsservice@'localhost' IDENTIFIED BY 'qscVDW234EFB'"
mysql --execute="GRANT grant option ON gsm.* TO umsservice@'localhost'"

mysql --execute="DROP USER IF EXISTS umsservice@'%'"

mysql --execute="DROP USER IF EXISTS admin@'%'"
mysql --execute="DROP USER IF EXISTS sendsms@'%'"

# Create update service folder and set rights
mkdir -p /mnt/Update/
/bin/chown -R root:www-data /mnt/Update/
/bin/chmod -R 775 /mnt/Update/

wget https://downloads.inlogic.dk/inlogicgatewaymodem/Update46/Update.zip -O /mnt/Update/Update.zip
if [ ! -f /mnt/Update/Update.zip ]
then
    echo "/mnt/Update/Update.zip does not exist. Stopping script."
    exit 1
fi
unzip /mnt/Update/Update.zip -d /mnt/Update/update

chmod 777 /mnt/Update/update/mnt/flash/root/updateservice/update.sh
/bin/bash /mnt/Update/update/mnt/flash/root/updateservice/update.sh
read -n1 -rsp $'Press any key to continue...\n'

# Disable 000-default-443.conf
a2dissite 000-default-443.conf
a2dissite phpmyadmin.conf
# Enable inLogic site
a2ensite inlogicmodem

printf "${RED}Update complete - type reboot and enter\n${NC}"
# reboot
