#! /usr/bin/perl -w

# $Id: pwdmodifier.in 8321 2005-07-28 15:29:38Z anton $
# $URL: https://svn.uvt.nl/its-id/trunk/sources/pwdmodifier/gatekeeper/src/pwdmodifier.in $
use MIME::Base64;

use strict;
our $testlibdir;
our $LOCALSTATEDIR;
our $SYSCONFDIR;
our $DATADIR = "/usr/local/share";
our $PACKAGE= "gatekeeper";

BEGIN
{
  $LOCALSTATEDIR    = "/usr/local/var/gatekeeper";
  $SYSCONFDIR       = "/usr/local/etc/gatekeeper";

  $testlibdir =  '';
  if ( $testlibdir ne '@TEST'.'LIBDIR@' and $testlibdir )
  {
    warn "keymaster using TESTLIBDIR: $testlibdir\n";
    unshift(@INC, "$testlibdir");
  }
}


use Baseobject;
use Errorlog;
use Straitjacket;
my $log;

BEGIN
{
  $log=new Errorlog({
    output=>[qw ( syslog )],
  });
  warn "Errorlog problem:",$log->error() if ($log->error());
}



my $jacket=new Straitjacket();
my $language=getbrowserlanguage();

warn "pwdmodifier: language: $language";

warn $jacket->error() if ($jacket->error());
# read configuration
my $cf= new Readconfig
    (
     {
       'configfile'=>"$DATADIR/$PACKAGE/pwdmodifier.template",
       'language'=>$language,
       'needs' => [  qw (
		       intro
		       hint
		       pleasetype
		       action
		       html
		       )
		   ],
	 # needed for substitution:
	 'allows' => [ qw ( comingfrom comingfrom_title) ],
       });


if ($cf->error())
{
  warn $cf->error();
  $jacket->present( "The service is momentarily off line, the maintainer has been notified.<br> Please try again later.");
  $log->mail($cf->error());
  die "aborted";
}

my $cfhash=$cf->hash();
my $cgiparams=$jacket->{cgi}->Vars();

$cgiparams->{comingfrom_title}='' unless (exists($cgiparams->{comingfrom_title}));


my  $referer=$ENV{HTTP_REFERER};
unless (defined ($referer))
{
  warn "NO REFERER";
  $referer="pwdmodifier";
}


#always
$cfhash->{comingfrom_title} = $cgiparams->{comingfrom_title} ;

if  (exists ($cgiparams->{comingfrom}) )
{
#  warn "taking comingfrom: $cgiparams->{comingfrom} ";
  $cfhash->{comingfrom} = $cgiparams->{comingfrom} ;
}
else
{
  $cfhash->{comingfrom} = $referer ;
#  warn "taking comingfrom from referer: $referer";

}


#expand vars in this order :)

$cfhash->{language}=$language;
map {$cf->expandvars ( \$cfhash->{$_}, $cfhash)} qw (action  html);

my $content=$jacket->strapjacket($cfhash->{html});

$ENV{REQUEST_URI}=~s/\?.*//;

if ($language eq 'nl')
{
  $content=~s/http:\/\/www\.tilburguniversity\.nl\//$ENV{REQUEST_URI}?language=en/sg;
}
else
{

  #language = 'en'
  $content=~s/http:\/\/www\.tilburguniversity\.nl\//$ENV{REQUEST_URI}?language=nl/sg;
  $content=~s/menu_english.gif\"\s+width=\"*?\d+\"*?/eng\/menu_nederlands.gif\" width=79/s;
}

print "Content-type:text/html\n\n",$content;



sub getbrowserlanguage
{
  my $lan= lc($ENV{'HTTP_ACCEPT_LANGUAGE'});

  my $cgiparams=$jacket->{cgi}->Vars();
  $log->verbose( $log->inspect($cgiparams));

  if (exists ($cgiparams->{language}))
  {
    return 'en' if ($cgiparams->{language} eq 'en');
    return 'nl' if ($cgiparams->{language} eq 'nl');
  }
  else
  {
    $log->debug( "No language parameter");
  }


  #index not found returns -1
  my $nl = index ($lan,'nl')+1;
  my $en = index ($lan,'en')+1;
  my $res='en';

  if ($nl && $en)
  {
    if ($nl < $en)
    {
      $res='nl';
    }
  }
  elsif ($nl)
  {
    $res='nl'
  }
  return $res;
}

# Local Variables:
# mode:perl
# mode:font-lock
# End:
