#!/bin/bash

. exec/system/config/allg.sh
. exec/system/shell/allg/file.sh

find_script domain/share read.sh
find_script domain/detail read.sh

find_template conffile domain/share shares_primary.conf

prog='/####RELEASENAME####/ { gsub(/####RELEASENAME####/,releasename); }
      /####FOLDERNAME####/  { gsub(/####FOLDERNAME####/,foldername);   }
      /####DESCRIPTION####/ { gsub(/####DESCRIPTION####/,description); }
      /####WORKGROUP####/   { gsub(/####WORKGROUP####/,workgroup);     }
                            { print $0 }'

workgroup=$($sambabin/samba-tool domain info 127.0.0.1 | fgrep 'Netbios domain' | sed -e 's/  *//g' | cut -f2 -d:)
dirs=`( get_data "$getreleases" | \
  while read line; 
  do
     get_releases "$line"
     awk "$prog" "releasename=$(tolower "$name")" "foldername=$DATAROOT$location" "description=$description" "workgroup=$workgroup" $conffile
  done )`
  
echo "$dirs" > $sambaconf/shares.conf
. ./exec/system/shell/domain/restart/$typ

get_data "$getrelease" $vafolderidInput | \
  while read line; 
  do
    get_releases "$line"
     
    groupname="Mneshare $(Tolower $(hostname)) $(Tolower $name)"
    groupnameread="$groupname Read"

    $sambabin/samba-tool group list | egrep "^$groupname\$" 2>&1 >/dev/null
    if [ ! "$?" = "0" ]; then
      $sambabin/samba-tool group add "$groupname" >&$logfile 2>&1
      $sambabin/samba-tool group add "$groupnameread" >&$logfile 2>&1

      wwwid=$($sambabin/wbinfo --name-to-sid="www-data" | cut -f1 "-d ")
      wrsid=$($sambabin/wbinfo --name-to-sid="$groupname" | cut -f1 "-d ")
      rdsid=$($sambabin/wbinfo --name-to-sid="$groupnameread" | cut -f1 "-d ")

      ww="(A;OICI;0x001f01ff;;;$wwwid)"
      wr="(A;OICI;0x001f01ff;;;$wrsid)"
      rd="(A;OICI;0x001200a9;;;$rdsid)"

      sddl=$($sambabin/samba-tool ntacl get --as-sddl "$DATAROOT/$location" | sed -e "s/(A.*$//" )
      $sambabin/samba-tool ntacl set "$sddl$wr$rd$ww" "$DATAROOT/$location"
    fi
    chmod g+s "$DATAROOT/$location"
    ( cd "$DATAROOT/$location"; getfacl . | setfacl -R --set-file=- . )
     
    members=$($sambabin/samba-tool group listmembers "$groupname")
    if [ ! "$members" = "" ]; then
      $sambabin/samba-tool group removemembers "$groupname"     $(user=$members; echo $user | sed -e "s/ /,/g") >&$logfile 2>&1
    fi
    members=$($sambabin/samba-tool group listmembers "$groupnameread")
    if [ ! "$members" = "" ]; then
      $sambabin/samba-tool group removemembers "$groupnameread" $(user=$members; echo $user | sed -e "s/ /,/g") >&$logfile 2>&1
    fi

    wmember=
    rmember=
    kr=
    kw=
      while read lline;
      do
        get_validusers "$lline";
        if [ "$readwrite" = "r" ]; then
          rmember="$rmember$kr$user"
          kr=","
        else
          wmember="$wmember$kw$user"
          kw=","
        fi
    done <<< $(get_data "$getvalidusers" "$name" )

    if [ "$rmember" != "" ]; then $sambabin/samba-tool group addmembers "$groupnameread" "$rmember" >&$logfile 2>&1; fi;
    if [ "$wmember" != "" ]; then $sambabin/samba-tool group addmembers "$groupname"     "$wmember" >&$logfile 2>&1; fi;
  done
