#!/bin/bash

bold ()
{
	echo $(tput bold)"$*"$(tput sgr0)
}

pomoc ()
{
	echo
	echo "$(bold NAZWA:)"
	echo "	"$(basename $0)
	echo
	echo "$(bold ZASTOSOWANIE:)"
	echo "	""Zminiea adres IP i inne parametry sieci."
	echo
	echo "$(bold SKŁADNIA:)"
	echo "	""$(basename $0)"" newIP=wartość newGate=wartość newDNS=wartość newDomain=wartość"
	echo "		""Argument --newIP= z podanym adresem IP jest obowiązkowy."
	echo "		""Pominięcie tego argumentu kończy pracę skryptu."
	echo "		""Jeżeli istnieje potrzeba zmiany innego parametry niż nowy adres IP"
	echo "		""należy w argumencie --newIP= podać wartość bieżącego adresu IP."
	echo
	echo "		""Skrypt będzie działał prawidłowo nawet wtedy, gdy pozstanie wywołaby tylko"
	echo "		""z jednbym argumentem, tj. newIP z podaną, po znaku równości, wartością tego argumentu."
	echo
	echo "		""$(bold argumenty:)"
	echo "			""--newIP=          należy podać adres IP."
	echo "			""--mewGate=        należy podać adres IP bramy."
	echo "			""--newDNS=         należy podać adres serwera DNS."
	echo "			""--newDomain=      należy podać nazwę domeny."
	echo
	echo "$(bold AUTOR:)"
	echo "	""Radek Bursztynowski"
	echo
	echo "$(bold WERSJA:)"
	echo "	""1.0"
	echo
	echo "$(bold DATA PRODUKCJI:)"
	echo "	""28.09.2025"
	echo
	echo "$(bold DATA ZMIANY)"
	echo "	""28.09.2025"
	echo
}

##############################################################

if [ "$#" = 0 ] || [ "$(echo '$@' | grep pomoc)" != "" ] || [ "$(echo '$@' | grep help)" != "" ]; then
	pomoc
	exit 0
fi

newIP=""
newGate=""
newDNS=""
newDomain=""
nicName="$(ip addr show $(ip route | awk '/default/ { print $5 }') | grep "inet" | head -n 1 | awk '/inet/ {print $2}' | cut -d'/' -f1)"

while [ "$#" != 0 ]; do
	if [ "$(echo $1 | grep newIP)" != "" ]; then
		newIP="$(echo $1 | awk -F = '{print $2}')"
	elif [ "$(echo $1 | grep newGate)" != "" ]; then
		newGate="$(echo $1 | awk -F = '{print $2}')"
	elif [ "$(echo $1 | grep newDNS)" != "" ]; then
		newDNS="$(echo $1 | awk -F = '{print $2}')"
	elif [ "$(echo $1 | grep newDomain)" != "" ]; then
		newDomain="$(echo $1 | awk -F = '{print $2}')"
	fi
	
	shift
done

if [ "$newIP" = "" ]; then
	echo
	echo "Nie podano nowego adresu IP, co jest obowiązkowe!"
	echo "Jeżeli chcesz, aby adres IP pozostał stary, a chcesz zminić jakiś inny parametr"
	echo "podaj stary adres IP."
	echo
	echo $(basename $0)"  --pomoc"
		
	exit 0
else
	# set IP address and so on to the bridge device and restart it
	# IP address
	nmcli connection modify $nicName ipv4.addresses "$newIP" >/dev/null 2>&1
fi
	
if [ "$newGate" != "" ]; then
	# gatway
	nmcli connection modify $nicName ipv4.gateway "$newGate" >/dev/null 2>&1
fi
	
if [ "$newDNS" != "" ]; then
	# DNS
	nmcli connection modify $nicName ipv4.dns "$newDNS" &>> /dev/null 2>&1
fi
	
if [ "$newDomain" != "" ]; then
	# Domain
	nmcli connection modify $nicName ipv4.dns-search "$newDomain" >/dev/null 2>&1
fi

nmcli connection modify $nicName ipv4.method manual > /dev/null 2>&1

if [ "$(ifconfig | grep bond)" != "" ]; then
	nmcli con modify bond0 master $nicName slave-type bridge > /dev/null 2>&1
fi

systemctl --quiet restart NetworkManager >/dev/null 2>&1

echo
echo "Dokonano zmiany ustawień sieci przy następujący parametrach:"
echo "	""newIP=""$newIP"
echo "	""newGate=""$newGate"
echo "	""newDNS=""$newDNS"
echo "	""newDomain=""$newDomain"
echo

