#!/bin/bash
#

# preset
#LOG="logger -t corr[$$]"
LOG=echo

# config
mapsConfig=${mapsConfig:-/etc/mapserver}

for item in config nob.conf ; do
  if [ ! -s $mapsConfig/$item ]; then
    $LOG "Configuration at $mapsConfig/$item not found, exiting."
    exit 1
  fi
  source $mapsConfig/$item
done

# init
dateStart=$(date +%s)

$LOG "Stage 6b: preparing .rsc files"
echo "/ip firewall address-list" > $confTargetPath/nob4.rsc
cat $confTargetPath/nob.short4nets $confTargetPath/nob.short4addr | awk '{ print "add address=" $1 " list=nob4" }' >> $confTargetPath/nob4.rsc

numAddr=$(cat $confTargetPath/nob.ip4addr | wc -l)
numNets=$(cat $confTargetPath/nob.ip4nets | wc -l)

$LOG "Stage 6c: Processing $numAddr addresses, $numNets networks"

let "numAddr += 10"
echo "create nob-4addr hash:ip family inet hashsize 1024 maxelem $numAddr" > $confTargetPath/nob.ipset-4addr
(while read item ; do
  echo "add nob-4addr $item"
done) < $confTargetPath/nob.ip4addr >> $confTargetPath/nob.ipset-4addr

let "numNets += 10"
echo "create nob-4nets hash:net family inet hashsize 1024 maxelem $numNets" > $confTargetPath/nob.ipset-4nets
(while read item ; do
  echo "add nob-4nets $item"
done) < $confTargetPath/nob.ip4nets >> $confTargetPath/nob.ipset-4nets

chown $confTargetOwner \
  $confTargetPath/nob.ip4addr $confTargetPath/nob.ip4nets \
  $confTargetPath/nob.short4addr $confTargetPath/nob.short4nets \
  $confTargetPath/nob4.rsc \
  $confTargetPath/nob.ipset-4addr \
  $confTargetPath/nob.ipset-4nets


cpuNo=$(cat /proc/cpuinfo | awk '$1 == "processor" { n = $3 } END { print n }')
$LOG "Stage 7: packing resulting lists using $cpuNo CPU cores"

let "cpuNo -= 5"

for item in nob.ip4addr nob.ip4nets nob.short4addr nob.short4nets nob.ipset-4addr nob.ipset-4nets ; do
  cat $confTargetPath/$item | xz -T $cpuNo -e > $confTargetPath/$item.xz
  chown $confTargetOwner $confTargetPath/$item.xz
done

dateEnd=$(date +%s)
let "dateSec = $dateEnd - $dateStart"
let "dateMin = $dateSec / 60"

$LOG "Finished after $dateSec seconds ($dateMin minutes)"

# EOF /usr/lib/mapserver/nob/nob.split
