#!/bin/sh
# This shell-script will import some GNS authorities into your GNS
# namestore.

LOCATION=$(which gnunet-config)
if [ -z $LOCATION ]
then
  LOCATION="gnunet-config"
fi
$LOCATION --version 1> /dev/null
if test $? != 0
then
	echo "GNUnet command line tools not found, check environmental variables PATH and GNUNET_PREFIX"
	exit 1
fi

gnunet-arm -I 1> /dev/null 2>/dev/null
if [ ! $? -eq 0 ]
then
	echo "GNUnet is not running, please start GNUnet before running import"
	exit 1
fi

options=''

while getopts "c:" opt; do
  case $opt in
    c)
      options="$options -c $OPTARG"
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      exit 1
      ;;
    :)
      echo "Option -$OPTARG requires an argument." >&2
      exit 1
      ;;
  esac
done

# By default, we create two GNS zones:
gnunet-identity -C master-zone $options
gnunet-identity -C private-zone $options

# Additionally, we create the FS SKS zone
gnunet-identity -C sks-zone $options

#### Integrate those with the respective subsystems ####

# Default zone for 'gnunet-gns' lookups
gnunet-identity -e master-zone -s gns-master $options

# Default zone for 'gnunet-namestore' operations
gnunet-identity -e master-zone -s namestore $options

# Use master-zone for GNS proxy lookups
gnunet-identity -e master-zone -s gns-proxy $options

# Use master-zone for intercepted DNS queries
# (remove this entry to disable DNS interception by GNS service)
gnunet-identity -e master-zone -s gns-intercept $options

# Use master-zone for DNS2GNS proxy.
gnunet-identity -e master-zone -s dns2gns $options

# 'gns-private' is not yet used (!)
gnunet-identity -e private-zone -s gns-private $options

# 'fs-sks' default ego for gnunet-fs-gtk namespace operations
gnunet-identity -e sks-zone -s fs-sks $options

# Get the public keys as strings (so we can create PKEY records)
MASTER=`gnunet-identity -d $options | grep master-zone | awk '{print $3}'`
PRIVATE=`gnunet-identity -d $options | grep private-zone | awk '{print $3}'`
PIN=DWJASSPE33MRN8T6Q0PENRNBTQY0E6ZYGTRCDP5DGPBF2CRJMJEG

# Link private zone into master zone
if (gnunet-namestore -z master-zone -D -n private -t PKEY | grep "PKEY: $PRIVATE" 1>/dev/null)
then
  echo "Private zone link exists, skipping"
else
  gnunet-namestore -z master-zone -a -e never -n private -p -t PKEY -V $PRIVATE $options
fi

# Link GNUnet's FCFS zone into master zone under label "pin"
if (gnunet-namestore -z master-zone -D -n pin -t PKEY | grep "PKEY: $PIN" 1>/dev/null)
then
  echo "Pin zone link exists, skipping"
else
  gnunet-namestore -z master-zone -a -e never -n pin -p -t PKEY -V $PIN $options
fi
