#!/usr/bin/perl

use AuthCAS;

use Net::LDAP;
use Net::LDAP::Util qw(ldap_error_text
                       ldap_error_name
			ldap_error_desc
                            );

$PERCORSO="/vmail";

open(FH,"<&=3");

my $cas = new AuthCAS(	casUrl => 'https://caoss.cilea.it/cas',
			CAFile => '/etc/ca.pem',
			);


while(<FH>) {
	chomp;
	if ($_ =~ m/^PT-/)  {
		$PT=$_;
		$PT =~ s/^PT-/ST-/;

	        my ($user, @proxies) = $cas->validatePT('{127.0.0.1:800}INBOX',$PT);


		my $ldap = Net::LDAP->new('127.0.0.1');
		my $mesg =$ldap->bind();

		if($mesg->code()) {
			return(111);
		}

		$result = $ldap->search(	base=> 'dc=cilea,dc=it',
					filter => "(&(objectClass=qmailUser)(accountStatus=active)(uid=$user))",
				     );
		if ($result->count == 1 ) {
			foreach $entry ($result->all_entries) {
				$ENV{'HOME'}=$PERCORSO."/".$entry->get_value('nohomeDirectory');

				$ENV{'MAILDIR'}=$PERCORSO."/".$entry->get_value('mailMessageStore')."/Maildir/";
				$ENV{'USER'}=$user;
				$ENV{'AUTHENTICATED'}=$user;
				exec @ARGV;
			}
		} else  { exit(1); }

	}
}
