#!/usr/bin/perl

$test="true";


use IMAP::Sieve;

sub opensieve {
	my ($uid,$pass,$proxy,$server,$port)=@_;
	$sieve=IMAP::Sieve->new('Proxy'=>$proxy,'Server'=>$server,'Login'=>$uid,'Password'=>$pass,'Port'=>$port);
	return;
}
	
sub closesieve {
	 if ($sieve) {$sieve->close};
}

sub listscripts {
   	@scripts=$sieve->listscripts;
   	return (join("\n",@scripts)."\n") ;
}   	
   	
sub getscript {
	my ($script) = @_;
	my ($scriptfile);

	$scriptfile=$sieve->getscript($script);
	return $scriptfile;
}

sub putscript {
	my ($scriptname,$script) = @_;
	$res=$sieve->putscript($scriptname,$script);
	if ($res) {print $sieve->{'Error'}}
	return;
}
	
sub setactive {
	my ($script)=@_;
	$res=$sieve->setactive($script);
	if ($res) { print $sieve->{'Error'};}
	return;
}
	
sub noop {
	$test=$sieve->noop;
	return;
}

sub deletescript {
	my ($script)=@_;
	$res=$sieve->deletescript($script);
	if ($res) {print $sieve->{'Error'};}
	return;
}
	
sub readscript {
	open (IN,"./testscript");
	$script="";
	while (<IN>) {
		$script.=$_;
	}
}
if ($test) {
$script="# this is a test script\n#test again\n";
print "Sieve server hostname: <localhost> ";
chomp($server = <>);
$server = 'localhost' if !$server;
print "Sieve daemon port: <2000>";
chomp($port=<>);
$port='2000' if !$port;
print "Please enter the user and password at the prompts\n";
print "Enter login name: ";
chomp($login = <>);
print "Enter password: ";
chomp($password = <>);
print "Enter user ID to proxy as(Press Enter if same as Login): ";
chomp($proxy = <>);

print "\n##opening connection\n";
&opensieve($login,$password,$proxy,$server,$port);
print $sieve->{'Error'}."\n";
print "Capability=$sieve->{'Capability'}\n";

print "\m##saving script\n";
&putscript('test1',$script);
print $sieve->{'Error'}."\n";

print "\n##listing scripts\n";
print &listscripts;

print "\n##getting script\n";
print &getscript('test1');
print $sieve->{'Error'}."\n";

print "\n##setting active script\n";
&setactive('test1');
print $sieve->{'Error'}."\n";

print "\n##listing scripts again\n";
print &listscripts;

print "\n##deleting a script\n";
&deletescript('test1');
print $sieve->{'Error'}."\n";

print "\n##listing scripts\n";
print &listscripts;
print $sieve->{'Error'}."\n";

print "\n##closing connection\n";
&closesieve;
print $sieve->{'Error'}."\n";

}
1;


syntax highlighted by Code2HTML, v. 0.9.1