#!/bin/bash

. sbs/exec/config/allg
. $(dirname $BASH_SOURCE)/config/functions

cols="domaintyp,domain,workgroup,description,netdevice,adminpassword,adminpassword2,administrator,primaryname,primaryaddr,dnsforwarder,dnssearch,dhcpstart,dhcpend,dhcpdns,dhcp6start,dhcp6end,dhcp6dns";
labels="Typ,Domainname,Workgroup,Beschreibung,Device,Password,Wiederholen,Administrator,Primary Server,Primary Adresse,DNS Forward,DNS Suche,IPv4 Start,IPv4 Ende,IPv4 DNS Server,IPv6 Start,IPv6 Ende,IPv6 DNS Server";
regexps="workgroup:notempty,primaryaddr:ipaddrempty,dhcpstart:ip4addrempty,dhcpend:ip4addrempty,dhcp6start:ip6addrempty,dhcp6end:ip6addrempty"

mne_need_error
systemctl is-enabled samba-ad-dc.service >/dev/null 2>/dev/null
if [ "$?" = "0" ]; then
	json_writeheader "$cols" "$labels" "" "" "adminpassword:notempty,domain:notempty,$regexps"

    host=$(hostname | awk '{ print toupper($0) }')
	info=$(samba-tool fsmo show | sed -n "/SchemaMasterRole/p" ) 
	master=$(echo $info | sed -n "/SchemaMasterRole.*CN=$host/p" )
	if [ "$master" = "" ];then
		domaintyp="second";

        primaryname=$(echo "$info" | awk -v RS=, -v FS== '{ if ( $1 == "CN" && name == "" ) name = $2 } END { print tolower(name) }')
        primaryaddr=$(nslookup -type=A "$primaryname" | awk '/Name:/ { ok=1 } /Address:/ { if ( ok ) { print $2; exit 0 } }' )
	else
		domaintyp="primary";
	fi

    info=$(samba-tool domain info 127.0.0.1)
    
    domain=$(echo "$info" | awk -v FS=: '/Domain/ { sub(/^[ \t]+/, "", $2); print $2 }')
    workgroup=$(echo "$info" | awk -v FS=: '/Netbios domain/ { sub(/^[ \t]+/, "", $2); print $2 }')
	  description=$( cat "$domainconfigfile"  | awk -v FS== '/^#/ { next; } /server string/ { sub(/^[ \t]+/, "", $2); print $2; exit 0 }')
    
    netdevice=$(cat "$domainconfigfile" | awk '/interfaces =/ { sub( /^.*lo */, "", $0 ); print $0 }')
    dnsforwarder=$(cat "$domainforwarderfile" 2>/dev/null | awk '/forwarders/ { start=1; next } /}/ { start=0 } { if ( start ) { sub(";",""); printf("%s%s", space, $NF); space=" " }}')
    
    dhcpstart=$(cat "$domaindhcpfile" 2>/dev/null | awk '/^#/ { next; } /range/ { sub(";", "", $2); print $2; exit 0 }')
    dhcpend=$(cat "$domaindhcpfile"   2>/dev/null | awk '/^#/ { next; } /range/ { sub(";", "", $3); print $3; exit 0 }')
    dhcpdns=$(cat "$domaindhcpfile"   2>/dev/null | awk '/^#/ { next; } /domain-name-servers/ { sub( "^.*domain-name-servers *", "", $0); sub(";", "", $0); print $0; exit 0 }')

    dhcp6start=$(cat "$domaindhcp6file" 2>/dev/null | awk '/^#/ { next; } /range6/ { sub(";", "", $2); print $2; exit 0 }')
    dhcp6end=$(cat "$domaindhcp6file"   2>/dev/null | awk '/^#/ { next; } /range6/ { sub(";", "", $3); print $3; exit 0 }')
    dhcp6dns=$(cat "$domaindhcp6file"   2>/dev/null | awk '/^#/ { next; } /dhcp6.name-servers/ { sub( "^.*dhcp6.name-servers *", "", $0); sub(";", "", $0); print $0; exit 0 }')
    
    dnssearch=$(cat "/etc/resolv.conf" 2>/dev/null | awk '/^#/ { next; } /search/ { sub(/^.*search[ \t]*/, "");  print $0; exit 0 }')
else
	json_writeheader "$cols" "$labels" "" "" "workgroup:notempty,primaryaddr:ipaddrempty,dhcpstart:ip4addrempty,dhcpend:ip4addrempty,dhcp6start:ip6addrempty,dhcp6end:ip6addrempty";
    domaintyp="standalone";
	workgroup=$( cat "$domainconfigfile"  2>/dev/null | awk -v FS== '/^#/ { next; } /workgroup/ { sub(/^[ \t]+/, "", $2); print $2; exit 0}')
	description=$( cat "$domainconfigfile" 2>/dev/null | awk -v FS== '/^#/ { next; } /server string/ { sub(/^[ \t]+/, "", $2); print $2; exit 0}')
	if [ "$workgroup" == "" ]; then
	  domaintyp=""
	fi
fi

echo '  "values"  : ['
json_writedata "$domaintyp" "$domain" "$workgroup" "$description" "$netdevice" "$adminpassword" "$adminpassword2" "$administrator" "$primaryname" "$primaryaddr" "$dnsforwarder" "$dnssearch" "$dhcpstart" "$dhcpend" "$dhcpdns" "$dhcp6start" "$dhcp6end" "$dhcp6dns"
echo ']'
