#!/bin/sh
#---------------------------------------------------------------------------
# /etc/rc.d/rc.dyndns - Dynamic hostname configuration
# last modified 2002-12-01  tg
#----------------------------------------------------------------------------

/usr/local/bin/colecho "Setting up dynamic hostname configuration ..." gn

# get additional config variables
/usr/local/bin/dtou /etc/dyndns.conf
. /etc/dyndns.conf

{
  echo "#!/bin/sh"
  echo "# dynamically created by /etc/rc.d/rc.dyndns"

  echo "if [ -f /var/run/meine.ip ]; then"          ## wenger ##
  echo "  oldip=\`cat /var/run/meine.ip\`"          ## wenger ##
  echo "else"                                       ## wenger ##
  echo "  oldip=\"0.0.0.0\""                        ## wenger ##
  echo "fi"                                         ## wenger ##
  echo "if [ \"\$local\" != \"\$oldip\" ]; then"    ## wenger ##
  echo "  echo \$local > /var/run/meine.ip"         ## wenger ##

  echo "MYIP=\$local"

  idx=1
  while [ "$idx" -le "$DYNDNS_N" ]; do

    # get config entries for provider idx
    eval provider='$DYNDNS_PROVIDER_'$idx
    eval DYNDNS_USER='$DYNDNS_USER_'$idx
    eval DYNDNS_PASSWORD='$DYNDNS_PASSWORD_'$idx
    eval DYNDNS_HOST='$DYNDNS_HOST_'$idx
    eval DYNDNS_DOMAIN='$DYNDNS_DOMAIN_'$idx
    eval DYNDNS_SECRET='$DYNDNS_SECRET_'$idx

    # get provider specific data
    eval providername='$PROVIDER_'$provider'_NAME'
    eval url='$PROVIDER_'$provider'_REQUEST_URL'
    eval host='$PROVIDER_'$provider'_REQUEST_HOST'
    eval port='$PROVIDER_'$provider'_REQUEST_PORT'
    eval auth='$PROVIDER_'$provider'_REQUEST_AUTHBASIC'

    # expand the variables in $url
    eval request=\"$url\"

    if [ $DYNDNS_SAVE_OUTPUT = 'yes' ] ; then
      eval outfile='/var/run/answer.$providername'
    else
      outfile=''
    fi

    # write everything to the script
    echo "echo \"Setting up dynamic hostname on $providername\""

    if [ "$outfile" ] ; then
      echo "if [ -f $outfile ] ; then"
      echo "  echo > $outfile"
      echo "fi"
      echo "echo \"-----------------------------------------\" >> $outfile"
      echo "date >> $outfile"
      echo "echo \"-----------------------------------------\" >> $outfile"
    else
      echo "echo \"----- start answer -----\""
    fi

    echo "{ echo \"GET "$request" HTTP/1.1\""
    echo "  echo \"Host: "$host\"
    if [ $auth = 'yes' ] ; then
      echo "  echo \"Authorization: Basic "$DYNDNS_SECRET\"
    fi
    echo "  echo \"User-Agent: opt_dyndns/2.1.14 me@null.net\""
    echo "  echo \"\""
    echo -n "} | /usr/local/bin/netcat -w 20 "$host" "$port

    if [ "$outfile" ] ; then
      echo " >> $outfile"
    else
      echo ""
      echo "echo \"\""
      echo "echo \"------ end answer ------\""
    fi

    idx=`/usr/bin/expr $idx + 1`
  done

echo "fi"                                           ## wenger ##

} > $DYNDNS_SCRIPT

chmod 700 $DYNDNS_SCRIPT
