#!/bin/sh

TITLE="Настройка сетевых адаптеров"
nwdir=$1/etc/systemd/network

setup_network() {
    nwdev=$1
    nw=`dialog --backtitle "$TITLE" --title "Выберите сетевую конфигурацию" --menu "Адаптер $nwdev" 20 50 15 static "Статический адрес" DHCP "Динамический адрес" off "Не используется" 2>&1 1>&3`
    if [ $? -ne 0 ]; then
	nw="DHCP"
    fi
    if [ "$nw" != "off" ]; then
	if [ "$nw" = "static" ]; then
	    nwset=`dialog --backtitle "$TITLE" --title "Настройте сетевую конфигурацию" --form "Адаптер $nwdev" 15 48 0 \
			"IP адрес:" 1 1 "192.168.0.77/24" 1 20 22 0 \
			"Шлюз:"     2 1 "192.168.0.1"     2 20 22 0 \
			"DNS:"      3 1 "192.168.0.1"     3 20 22 0 \
			2>&1 1>&3`
	    if [ $? -ne 0 ]; then
		IP="192.168.0.77/24"
		GW="192.168.0.1"
		DNS="192.168.0.1"
	    else
		IP=`echo $nwset | cut -d ' ' -f 1`
		GW=`echo $nwset | cut -d ' ' -f 2`
		DNS=`echo $nwset | cut -d ' ' -f 3`
	    fi

	    echo -e "[Match]\nName=$nwdev\n\n[Network]\nDNS=$DNS\n\n[Address]\nAddress=$IP\n\n[Route]\nGateway=$GW" > $nwdir/60-static-$nwdev.network
	else
	    echo -e "[Match]\nName=$nwdev\n\n[Network]\nDHCP=yes" > $nwdir/50-dhcp-$nwdev.network
	fi
    fi
}

setup_bridge() {
    echo -e "[NetDev]\nName=br0\nKind=bridge" > $nwdir/20-bridge.netdev
    echo -e "[Match]\nName=e*\n\n[Network]\nBridge=br0" > $nwdir/30-bridge.network
    setup_network br0
}

setup_networks() {
    if [ $# -gt 1 ]; then
	dialog --backtitle "$TITLE" --title "Сетевой мост" --yesno "Обнаружено несколько сетевых адаптеров, использовать сетевой мост?" 20 50 2>&1 1>&3
	if [ $? -ne 0 ]; then
	    for nwd; do
		setup_network $nwd
	    done
	else
	    setup_bridge
	fi
    elif [ $# -gt 0 ]; then
	setup_network $1
    else
	dialog --msgbox "Ошибка!\n\nНе найдены сетевые адаптеры!" 8 40
    fi
}

rm -f $nwdir/*
exec 3>&1
setup_networks `ls /sys/class/net | grep e`
exec 3>&-
