#!/bin/bash
### MODUL-NR. 007 ### <- Hier Nummer einfügen!
# (c) August 2008 Stefan Schäfer / FSP Computer & Netzwerke
# (c) 2009-2019 Stefan Schäfer / invis-server.org / stefan@invis-server.org
# (c) 2013,2014 Dimitri Asarowski / invis-server.org / dimitri@invis-server.org
# (c) 2013-2017 Ingo Göppert / invis-server.org / ingo@invis-server.org

# License: GPLv3
# Questions: info@invis-server.org

# Hier Kurzbeschreibung des Moduls einfügen

# Insert short description of this module here

# Dieses Programm ist freie Software. Sie können es unter den Bedingungen der 
# GNU General Public License, wie von der Free Software Foundation veröffentlicht,
# weitergeben und/oder modifizieren, entweder gemäß Version 3 der Lizenz oder
# (nach Ihrer Option) jeder späteren Version.

# Die Veröffentlichung dieses Programms erfolgt in der Hoffnung, daß es Ihnen
# von Nutzen sein wird, aber OHNE IRGENDEINE GARANTIE, sogar ohne die implizite 
# Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR EINEN BESTIMMTEN ZWECK. 
# Details finden Sie in der GNU General Public License.

# Sie sollten ein Exemplar der GNU General Public License zusammen mit diesem 
# Programm erhalten haben. Falls nicht, siehe <http://www.gnu.org/licenses/>. 

# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# include functions
source $SINEINCLUDEDIR/functions

modulename=`basename $0`

clear
windowtitle="DHCP-Server"
pgsubtitle="Einfaches DHCP-Server Setup"

# named.conf template kopieren
old /etc/dhcpd.conf 2>&1| tee -a $LOGFILE | pgbox
cp $TEMPLATEDIR/$modulename/dhcpd.conf /etc 2>&1| tee -a $LOGFILE | pgbox

# modify dhcpd.conf

# set internal network interface as dhcpd interface
sysconf_addword /etc/sysconfig/dhcpd DHCPD_INTERFACE intern 2>&1| tee -a $LOGFILE | pgbox


# Daten abfragen
domain=`getconfdata "Domain" "2"`
ipaddr=`getconfdata "IP" "2"`
netbase=`getconfdata "NetworkBase" "2"`
broadcast=`getconfdata "Broadcast" "2"`
## IP-Adresse zerlegen
netpart1=`echo "$ipaddr" | cut -d "." -f 1`
netpart2=`echo "$ipaddr" | cut -d "." -f 2`
netpart3=`echo "$ipaddr" | cut -d "." -f 3`
ipnetmask=`getconfdata "NMask-short" "2"`

# Konfigurationsdatei anpassen
path="/etc/"
file="dhcpd.conf"

# 24 oder 16 Bit Netzwerkmaske?
if [[ $ipnetmask == "24" ]]; then
    netpart="$netpart1.$netpart2.$netpart3"
    strings="192.168.220%$netpart"
    changevalues $path $file "$strings"
elif [[ $ipnetmask == "16" ]]; then
    netpart="$netpart1.$netpart2"
    # DHCP Range aendern
    strings="192.168.220.100 192.168.220.199%$netpart.200.1 $netpart.200.254"
    changevalues $path $file "$strings"
    # hier wird die Null automatisch eingefuegt, da von dieser Anpassung lediglich
    # Server-Adressen betroffen sind, die immer zwischen. 172.x.0.1 und 172.x.0.10 liegen
    strings="192.168.220%$netpart.0"
    changevalues $path $file "$strings"
    # Netzwerkmaske und Broadcast aendern
    strings="255.255.255.0%255.255.0.0"
    changevalues $path $file "$strings"
    strings="192.168.220.255%$netpart.255.255"
    changevalues $path $file "$strings"
fi
string="invis-net.loc%$domain"
changevalues $path $file "$string"

# DHCP-Server starten
# Nameserver bind in Autostart und starten
chkservice "dhcpd"
