#!/bin/sh
#
# aryzhov@spasu.net
# configure zones. Applicable for HOME/blade only,
# all addresses and names are hardcoded
#
[ -z "$SID" ] && SID=/tmp/install_config
[ X$SubrIsRead = XYes ] || . $SID/Scripts/Misc/!Includes/Subroutines
[ X$VarsAreSet = XYes ] || SetJVars
SetRootOpts ; [ X$ROOT != X/ ] && exec Chroot_Script $0 $*

ZONECFG=/usr/sbin/zonecfg
ZONEADM=/usr/sbin/zoneadm
ZONESDIR=/space/zones

PHYS_177=ce3
PHYS_196=ce0
PHYS_192=ce2
PHYS_213=eri0

#
# Configure additional NICs
#
echo "
127.0.0.1               blade loghost
210.111.111.17          blade-ext       blade-$PHYS_213
211.111.111.19          blade-pub       blade-$PHYS_192
196.1.1.17              blade-pri       blade-$PHYS_196
177.1.1.17              blade-fak       blade-$PHYS_177
" >>/etc/hosts

echo blade-$PHYS_213 >/etc/hostname.$PHYS_213
echo blade-$PHYS_192 >/etc/hostname.$PHYS_192
echo blade-$PHYS_196 >/etc/hostname.$PHYS_196
echo blade-$PHYS_177 >/etc/hostname.$PHYS_177

echo spasu.net >/etc/defaultdomain
echo blade     >/etc/nodename
echo "213.160.42.177\n177.1.1.11\n" >/etc/defaultrouter


# # # # #

ln -s $ZONESDIR/. /zones

# StartShell

#
#
#
D=/space/trans;        mkdir -p $D; chown aryzhov:1001  $D; chmod 501 $D
D=/space/export/mail;  mkdir -p $D; chown root:root     $D; chmod 755 $D
D=/space/export/home;  mkdir -p $D; chown root:root     $D; chmod 755 $D
D=/space/export/ftp;   mkdir -p $D; chown aryzhov:1001  $D; chmod 101 $D
D=/space/export/www;   mkdir -p $D; chown aryzhov:1001  $D; chmod 101 $D

#
#
#
ZONENAME=fuji
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=177.1.1.201; set physical=$PHYS_177;    end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

ZONENAME=inet
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=177.1.1.202; set physical=$PHYS_177;    end
    add fs;  set dir=/var/mail;         set special=/space/export/mail;  set type=lofs;  add options [rw,nodevices]; end
    add fs;  set dir=/export/home;      set special=/space/export/home;  set type=lofs;  add options [rw,nodevices]; end
    add fs;  set dir=/export/ftp;       set special=/space/export/ftp;   set type=lofs;  add options [rw,nodevices]; end
    add fs;  set dir=/export/www;       set special=/space/export/www;   set type=lofs;  add options [rw,nodevices]; end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

ZONENAME=ftpd
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=177.1.1.203; set physical=$PHYS_177;    end
    # add kids net here
    add fs;  set dir=/export/ftp;       set special=/space/export/ftp;   set type=lofs;  add options [rw,nodevices]; end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

ZONENAME=smbd
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=192.168.1.204; set physical=$PHYS_192;    end
    # add kids net here
    add fs;  set dir=/export/ftp;       set special=/space/export/ftp;   set type=lofs;  add options [rw,nodevices]; end
    add fs;  set dir=/export/www;       set special=/space/export/www;   set type=lofs;  add options [rw,nodevices]; end
    add fs;  set dir=/space/trans;      set special=/space/trans;        set type=lofs;  add options [rw,nodevices]; end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

ZONENAME=smtp
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=177.1.1.205; set physical=$PHYS_177;    end
    add fs;  set dir=/var/mail;         set special=/space/export/mail;  set type=lofs;  add options [rw,nodevices]; end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

ZONENAME=sshd
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=177.1.1.206; set physical=$PHYS_177;    end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install

for i in 178 179 180 181 182; do
  ZONENAME=e$i
  echo "create -b; set zonepath=$ZONESDIR/$ZONENAME; set autoboot=true
    add net; set address=219.160.42.$i; set physical=$PHYS_213;  end
    #dd net; set address=196.1.1.$i;    set physical=$PHYS_196;  end
  verify; commit; exit\n" | $ZONECFG -z $ZONENAME  &&  $ZONEADM -z $ZONENAME install
done

#
#
#
PKG_LIST_DIR=$SI_CONFIG_DIR/Profiles/$SITE/Packages/pkginfo
LIST_ZONES=$PKG_LIST_DIR/${MYNAME}.zones

pkginfo | sort   >/tmp/List_Glob
sort $LIST_ZONES >/tmp/List_Zones

MakeAdminFile

for z in `ls $ZONESDIR`; do

  sleep 10
  sync
  echo
  echo === Cleaning up zone $z ===
  echo

  egrep -s '^root:' $ZONESDIR/$z/root/etc/passwd || {
    printf "1\ni\nroot:x:0:1:Super-User:/:/sbin/sh\n.\nw\nq\n" | ed -s $ZONESDIR/$z/root/etc/passwd
    printf "1\ni\nroot:NoPWD:12855::::::\n.\nw\nq\n"           | ed -s $ZONESDIR/$z/root/etc/shadow
  }

  ARZ_UGID=`</etc/passwd awk -F: '$1=="aryzhov" {printf("%d:%d", $3, $4)}'`
  printf ",s/\/space\/zones\/$z\/root//\nw\nq\n" | ed -s $ZONESDIR/$z/root/etc/passwd
  printf ",s/^aryzhov:x:[0-9]*:[0-9]*:/aryzhov:x:$ARZ_UGID:/\nw\nq\n" | ed -s $ZONESDIR/$z/root/etc/passwd
  chown -R aryzhov $ZONESDIR/$z/root/usr/local/.../.

  cp $SI_CONFIG_DIR/sysidcfg.zone $ZONESDIR/$z/root/etc/sysidcfg
  cp /etc/minor_perm /etc/driver_aliases /etc/driver_classes /etc/name_to_major $ZONESDIR/$z/root/etc/.
  mkdir -p $ZONESDIR/$z/root/etc/dat
  cp /etc/dat/dat.conf $ZONESDIR/$z/root/etc/dat/dat.conf


  for i in `diff /tmp/List_Glob /tmp/List_Zones | awk '$1=="<" && NF>=3 {print $3}'`; do
    pkgrm -nM -a $PKGADMIN_FILE -R $ZONESDIR/$z/root/. $i 2>&1 | grep -v mail | sed '/^ *$/d'
  done

  [ -f $JS_SITE_CONFIG_DIR/netmasks ] && cat $JS_SITE_CONFIG_DIR/netmasks >$ZONESDIR/$z/root/etc/netmasks
  [ -f $JS_SITE_CONFIG_DIR/site.xml ] && cat $JS_SITE_CONFIG_DIR/site.xml >$ZONESDIR/$z/root/var/svc/profile/site.xml

  MASK=255.255.255.0; echo $z | egrep -s '^e1[78][0-9]$' && MASK=255.255.255.248

  echo "
    name_service=NONE
    terminal=xterm
    timezone=MET
    system_locale=C
    timeserver=localhost
    network_interface=PRIMARY{hostname=$z protocol_ipv6=no}
    security_policy=NONE
    root_password=nOFCknGPaSSWd
    nfs4_domain=dynamic

  " | expand | sed '/^*$/d;/^ *$/d;s/^ *//;s/hostname=zone/hostname='$z'/' >$ZONESDIR/$z/root/etc/sysidcfg

  cat /etc/netmasks >$ZONESDIR/$z/root/etc/netmasks

done

#
# Remove the runaway package locks
#
(cd /tmp && rm .ai*)

ZDistr_List="
  /usr/local/.../bin/xterm
  /usr/local/.../users/Rygoff/.profile
"

for f in `echo $ZDistr_List`; do /usr/local/.../bin/Zdistr $f; done

export ZONESDIR

for z in inet smtp e179 e180 e181 e182; do
  ZONEROOT=$ZONESDIR/$z/root
  echo "
    nameserver 213.160.40.2
    nameserver 213.160.40.34
  " | expand | sed 's/^ *//'>$ZONEROOT/etc/resolv.conf
  cp $ZONEROOT/etc/nsswitch.conf $ZONEROOT/etc/nsswitch.conf.std || StartShell "No ...nsswitch.conf in zone $z"
  echo ",s/^hosts:.*$/& dns/\nw\nq\n" | ed -s $ZONEROOT/etc/nsswitch.conf
  echo spasu.net >$ZONEROOT/etc/defaultdomain
done
#
#
#
add_apache      $ZONESDIR/inet/root/.
add_openwebmail $ZONESDIR/inet/root/usr/local/apache2
add_samba
add_sendmail
#dd_mozilla


echo "#!/bin/sh

  (
    #
    # Re-try default routes whn the zones will have booted
    #
    echo Waiting for zones to finish booting
    sleep 180
    svcadm refresh network/initial
  ) &

" >/etc/rc3.d/S99LateStart

chmod +x /etc/rc3.d/S99LateStart
