#!/bin/bash
# Script zum Erweitern eines Maschinenkontos um RFC2307 Attribute.
# (c) 2016 Stefan Schaefer - FSP Computer & Netzwerke

# License: GPLv3
# 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/>. 

#Konfigurationsdaten
conffile="/etc/invis/invis.conf"
confdir="/etc/invis"
passfile="/etc/invis/invis-pws.conf"

# Funktionen
# Werte aus Konfigurationsdatendatei extrahieren
# $1 = Konfigurationsdatei, $2 = Parameter, $3 Wert (Feld)
getconfdata() {
    cat $1 |grep "$2" | cut -d ":" -f $3
}

# Hostnamen
membername="$1"

# Pruefen, ob eine Liste genannt wurde
if [[ -z $membername ]]; then
    echo "Bitte den Hostnamen des zu erweiternden Computer-Kontos angeben."
    echo "membermod hostname"
    exit
fi

# Daten aus Konfiguration holen
basedn=`getconfdata $conffile "baseDN" "2"`
domain=`getconfdata $conffile "intDomain" "2"`
nisdomain=`echo $domain | cut -d "." -f1`

# RID der Maschine ermitteln
rid=`pdbedit -Lv $membername$ | grep "User SID" | cut -d "-" -f8`
#echo $rid

# Arbeitsdatei anlegen
workfile="/tmp/machineattributes.ldif"
echo "Maschinenkonto erweitern"
echo "dn: CN=$membername,CN=Computers,$basedn" > $workfile
echo "changetype: modify" >> $workfile
echo "add: objectclass" >> $workfile
echo "objectclass: posixAccount" >> $workfile
echo "add: uidNumber" >> $workfile
echo "uidNumber: $rid" >> $workfile
echo "add: gidNumber" >> $workfile
echo "gidNumber: 515" >> $workfile
echo "add: mssfu30nisDomain" >> $workfile
echo "mssfu30nisDomain: $nisdomain" >> $workfile
echo "add: loginShell" >> $workfile
echo "loginShell: /bin/false" >> $workfile
echo "add: unixHomeDirectory" >> $workfile
echo "unixHomeDirectory: /dev/null" >> $workfile
echo "add: description" >> $workfile
echo "description: Computer" >> $workfile


ldbmodify -v -H /var/lib/samba/private/sam.ldb $workfile
