This commit is contained in:
Nick Bebout 2012-04-16 17:26:18 -05:00
parent 1b3773e80f
commit 1cb5bee328
98 changed files with 1701 additions and 597 deletions

10
CREDITS
View file

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: CREDITS,v 1.160 2011/07/11 01:30:09 gilles Exp gilles $
# $Id: CREDITS,v 1.162 2011/09/21 20:21:14 gilles Exp gilles $
If you want to make a donation to the author, Gilles LAMIRAL,
use any of the following ways:
@ -30,10 +30,16 @@ I thank very much all of these people.
I thank also very much all people who bought imapsync from the homepage
but I don't cite them here.
Klaus Franken
Patch to avoid useless warning "Use of uninitialized value $uid1 in exists"
Charles H Deling
Contributed by giving the book
13.59 "The Twitter Book"
Paulo Victor Fernandes da Silva
Contributed by giving money 1 USD
Daniel Rohde
Bugfix. Solaris 10. ps -o vsz -p @PID

View file

@ -1,17 +1,46 @@
RCS file: RCS/imapsync,v
Working file: imapsync
head: 1.456
head: 1.463
branch:
locks: strict
gilles: 1.456
gilles: 1.463
access list:
symbolic names:
keyword substitution: kv
total revisions: 456; selected revisions: 456
total revisions: 463; selected revisions: 463
description:
----------------------------
revision 1.456 locked by: gilles;
revision 1.463 locked by: gilles;
date: 2011/11/12 21:58:52; author: gilles; state: Exp; lines: +9 -7
--subscribe is on by defaut.
----------------------------
revision 1.462
date: 2011/10/16 23:48:58; author: gilles; state: Exp; lines: +14 -11
Added --nocacheaftercopy to avoid bad uids in cache with --useuid or --usecache and strange uid generator like dbmail 2.2.17
----------------------------
revision 1.461
date: 2011/10/07 21:02:15; author: gilles; state: Exp; lines: +8 -8
MailEnable
Mirapoint
----------------------------
revision 1.460
date: 2011/09/21 20:19:46; author: gilles; state: Exp; lines: +8 -8
Avoid Perl warning 'Use of uninitialized value $uid1 in exists'. Thanks to Klaus Franken
----------------------------
revision 1.459
date: 2011/09/21 20:10:38; author: gilles; state: Exp; lines: +7 -7
Kerio 7.2.0 Patch 1 as host2
----------------------------
revision 1.458
date: 2011/08/24 22:26:20; author: gilles; state: Exp; lines: +7 -6
Yahoo host1 success.
----------------------------
revision 1.457
date: 2011/08/24 21:55:56; author: gilles; state: Exp; lines: +10 -10
Renamed file.csv to file.txt
----------------------------
revision 1.456
date: 2011/08/24 04:21:30; author: gilles; state: Exp; lines: +15 -13
Help message on --sep when namespace separator is NIL. Yahoo case.
----------------------------

53
FAQ
View file

@ -1,11 +1,14 @@
#!/bin/cat
# $Id: FAQ,v 1.92 2011/08/24 06:50:17 gilles Exp gilles $
# $Id: FAQ,v 1.95 2011/11/12 23:41:20 gilles Exp gilles $
+------------------+
| FAQ for imapsync |
+------------------+
Unix versus Windows syntax.
A) \ versus ^
On Unix shells you can write a single command on multiple lines
by using the escape character \ at the end of each line
(except the last one). On Windows this character is ^
@ -31,6 +34,14 @@ better, no truncation, pretty print. It's just sugar.
In this FAQ I use \ for examples. Transcript to ^ if
you're on a Windows system.
B) ' versus "
On Windows the single quote character ' doesn't work
like on Unix so in the examples of this FAQ the
command containing single quotes ' will fail on Windows.
To fix it just replace single quotes ' by double quotes "
=======================================================================
Q. How to install imapsync?
@ -81,11 +92,11 @@ Thank you for your participation.
Q. I need to migrate hundred accounts, how can I do?
R. If you have many mailboxes to migrate think about a little
shell program. Write a file called file.csv (for example)
shell program. Write a file called file.txt (for example)
containing users and passwords.
The separator used in this example is ';'
The file.csv file contains:
The file.txt file contains:
user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
@ -99,11 +110,11 @@ On Unix the shell program can be:
{ while IFS=';' read u1 p1 u2 p2; do
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
done ; } < file.csv
done ; } < file.txt
On Windows the batch program can be:
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.csv) DO imapsync ^
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
--host1 imap.side1.org --user1 %%G --password1 %%H ^
--host2 imap.side2.org --user2 %%I --password2 %%J ...
@ -128,10 +139,15 @@ R. - Download latest Mail::IMAPClient 3.xx at
- run imapsync with perl and -I option tailing to use the perl
module Mail-IMAPClient-3.xx. Example:
perl -I./Mail-IMAPClient-3.23/lib ./imapsync ...
perl -I./Mail-IMAPClient-3.30/lib ./imapsync ...
or if imapsync is in directory /path/
perl -I./Mail-IMAPClient-3.23/lib /path/imapsync ...
perl -I./Mail-IMAPClient-3.30/lib /path/imapsync ...
- Look at the script named i3 in the tarball, it can be used to
run imapsync with included Mail-IMAPClient-3.30/ wherever you
unpacked the imapsync tarball
=======================================================================
Q. How can I use imapsync with Mail::IMAPClient 2.2.9 perl module?
@ -148,6 +164,11 @@ R. - Download Mail::IMAPClient 2.2.9 at
or if imapsync is in directory /path/
perl -I./Mail-IMAPClient-2.2.9 /path/imapsync [...]
- Look at the script named i2 in the tarball, it can be used to
run imapsync with included Mail-IMAPClient-2.2.9/ wherever you
unpacked the imapsync tarball
=======================================================================
Q. Can I use imapsync to migrate emails from pop3 server to imap server?
@ -322,7 +343,7 @@ Q. How to convert flags?
R. use --regexflag
For example to convert flag IMPORTANT to flag CANWAIT
imapsync ... --regexflag 's/IMPORTANT/CANWAIT/g' --debugflags
imapsync ... --regexflag "s/IMPORTANT/CANWAIT/g" --debugflags
option --debugflags is usefull to see in details what imapsync
does with flags.
@ -1014,6 +1035,22 @@ http://www.linux-france.org/prj/imapsync_list/msg00639.html
http://biasecurities.com/blog/2009/migrate-email-from-gmail-to-google-apps/
http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/
=======================================================================
Q. Synchronising from Yahoo to XXX
R. Use --host1 imap.mail.yahoo.com --sep1 '/'
./imapsync \
--host1 imap.mail.yahoo.com \
--user1 billy \
--password1 secret \
--host2 XXX \
--user2 billy \
--password2 secret \
--sep1 '/'
Can also add --ssl1 to gain encrypted transfer from yahoo.
=======================================================================
Q. from Microsoft's Exchange 2007 to Google Apps for your Domain
(GAFYD)

View file

@ -5,7 +5,49 @@ Changes from 2.99_01 to 3.16 made by Mark Overmeer
Changes from 0.09 to 2.99_01 made by David Kernen
- Potential compatibility issues from 3.17+ highlighted with '*'
version 3.28_04: Fri Mar 4 00:17:38 EST 2011
version 3.30: Fri Nov 11 09:37:00 EST 2011
- rt.cpan.org#72347: Starttls array ref argument dereferenced twice
[Jonathan Buhacoff]
- during connect(): Port now defaults 143 or 993 if $self->Ssl
[Kodi Arfer]
- stop reconnect deep recursion if server disconnects on login
[Luca Ferrario]
- reconnect() now returns 1 on success; on error undef or 0=recursive
- handle EBADF from syswrite in _send_bytes
- rt.cpan.org#67263: add RFC4978 IMAP COMPRESS Extension support
[SDIZ]
+ new method: compress()
+ new attributes: Compress Readmoremethod
- general code cleanup:
+ new() now always returns $self or undef (never $sock any more)
+ Socket() now always return a socket or undef
+ login() now always return $self or undef
+ _read_more() will now use Readmoremethod if set
- missing second arg '' for encode_base64 causing AUTHENTICATE
PLAIN to fail on lines longer than 76 characters
[Yoshiho Yoshida]
version 3.29: Tue Aug 9 00:33:52 EDT 2011
- rt.cpan.org#69876: ENVELOPE as part of fetch_hash convenience method
[Chris Huttman]
+ added Mail::IMAPClient::BodyStructure::Envelope->parse_string($str)
convenience method for handling ENVELOPE data from fetch_hash
- rt.cpan.org#68310: folders() should not call exists()/STATUS
[Gilles Lamiral]
- affects folders() and subscribed() methods
+ use selectable() instead of exists() in call
- consider removing extra call to folders()/subscribed()
+ ensure separator is set properly in folders()
+ selectable now properly checks for \Noselect flag
+ update folders() POD to match implementation behavior
- rt.cpan.org#68648: [patch]: CAPABILITY after authenticate
[Stef Simoens]
+ delete cache after State set to Authenticate
- State() is no longer an auto-generated method
- rt.cpan.org#68755: provided socket loses blocking in 3.19-3.28
[Martin Schmitt]
version 3.28: Fri Mar 4 00:17:38 EST 2011
- rt.cpan.org#66004: internaldate() return undef if no internaldate in reply
[Jason Long]
- rt.cpan.org#66367: fetch_hash uses Escaped_results() in 3.26/3.27

View file

@ -1,6 +1,6 @@
--- #YAML:1.0
name: Mail-IMAPClient
version: 3.28
version: 3.30
abstract: IMAP4 client library
author:
- Phil Pearl (Lobbes) <phil@zimbra.com>

View file

@ -8,6 +8,7 @@ my @missing;
my %optional = (
"Authen::NTLM" => { for => "Authmechanism 'NTLM'" },
"Authen::SASL" => { for => "Authmechanism 'DIGEST-MD5'" },
"Compress::Zlib" => { for => "COMPRESS DEFLATE support" },
"Digest::HMAC_MD5" => { for => "Authmechanism 'CRAM-MD5'" },
"Digest::MD5" => { for => "Authmechanism 'DIGEST-MD5'" },
"IO::Socket::SSL" => { for => "SSL enabled connections (Ssl => 1)" },

View file

@ -18,6 +18,7 @@ The following are the minimum requirements for using Mail::IMAPClient:
Optional:
Authen::NTLM
Authen::SASL
Compress::Zlib
Digest::HMAC_MD5
Digest::MD5
IO::Socket::SSL

View file

@ -7,7 +7,7 @@ use strict;
use warnings;
package Mail::IMAPClient;
our $VERSION = '3.28';
our $VERSION = '3.30';
use Mail::IMAPClient::MessageSet;
@ -16,7 +16,7 @@ use IO::Select ();
use Carp qw(carp); #local $SIG{__WARN__} = \&Carp::cluck; #DEBUG
use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
use Errno qw(EAGAIN EPIPE ECONNRESET);
use Errno qw(EAGAIN EBADF ECONNRESET EPIPE);
use List::Util qw(first min max sum);
use MIME::Base64 qw(encode_base64 decode_base64);
use File::Spec ();
@ -47,6 +47,7 @@ my %SEARCH_KEYS = map { ( $_ => 1 ) } qw(
# modules require(d) during runtime when applicable
my %Load_Module = (
"Compress-Zlib" => "Compress::Zlib",
"SSL" => "IO::Socket::SSL",
"BodyStructure" => "Mail::IMAPClient::BodyStructure",
"Envelope" => "Mail::IMAPClient::BodyStructure::Envelope",
@ -83,11 +84,11 @@ BEGIN {
# set-up accessors
foreach my $datum (
qw(Authcallback Authmechanism Authuser Buffer Count Debug
Debug_fh Domain Folder Ignoresizeerrors Keepalive
qw(Authcallback Authmechanism Authuser Buffer Count Compress
Debug Debug_fh Domain Folder Ignoresizeerrors Keepalive
Maxappendstringlength Maxcommandlength Maxtemperrors
Password Peek Port Prewritemethod Proxy Ranges Readmethod
Reconnectretry Server Showcredentials Ssl Starttls State
Readmoremethod Reconnectretry Server Showcredentials Ssl Starttls
Supportedflags Timeout Uid User)
)
{
@ -256,7 +257,6 @@ sub new {
LastError => "",
Uid => 1,
Count => 0,
Fast_io => 1,
Clear => 2,
Keepalive => 0,
Maxappendstringlength => 1024**2,
@ -264,7 +264,6 @@ sub new {
Maxtemperrors => undef,
State => Unconnected,
Authmechanism => 'LOGIN',
Port => 143,
Timeout => 600,
History => {},
};
@ -275,6 +274,12 @@ sub new {
}
bless $self, ref($class) || $class;
# Fast_io is enabled by default when not given a socket
unless ( exists $self->{Fast_io} || $self->{Socket} || $self->{Rawsocket} )
{
$self->{Fast_io} = 1;
}
if ( my $sup = $self->{Supportedflags} ) { # unpack into case-less HASH
my %sup = map { m/^\\?(\S+)/ ? lc $1 : () } @$sup;
$self->{Supportedflags} = \%sup;
@ -299,7 +304,10 @@ sub new {
$self->RawSocket($sock) unless $self->{Socket};
}
!$self->{Socket} && $self->{Server} ? $self->connect : $self;
if ( !$self->{Socket} && $self->{Server} ) {
$self->connect or return undef;
}
return $self;
}
sub connect(@) {
@ -309,7 +317,7 @@ sub connect(@) {
%$self = ( %$self, @_ ) if @_;
my $server = $self->Server;
my $port = $self->Port;
my $port = $self->Port || $self->Port( $self->Ssl ? "993" : "143" );
my @timeout = $self->Timeout ? ( Timeout => $self->Timeout ) : ();
my $sock;
@ -323,27 +331,28 @@ sub connect(@) {
}
else {
my $ioclass = "IO::Socket::INET";
if ( $self->Ssl ) {
$ioclass = $self->_load_module("SSL") or return undef;
}
$ioclass = $self->_load_module("SSL") if ( $self->Ssl );
$self->_debug("Connecting via $ioclass to $server:$port @timeout");
$sock = $ioclass->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Debug => $self->Debug,
@timeout
);
if ($ioclass) {
$self->_debug("Connecting via $ioclass to $server:$port @timeout");
$sock = $ioclass->new(
PeerAddr => $server,
PeerPort => $port,
Proto => 'tcp',
Debug => $self->Debug,
@timeout
);
}
}
unless ($sock) {
if ($sock) {
$self->_debug( "Connected to $server" . ( $! ? " errno($!)" : "" ) );
return $self->Socket($sock);
}
else {
$self->LastError("Unable to connect to $server: $@");
return undef;
}
$self->_debug( "Connected to $server" . ( $! ? " errno($!)" : "" ) );
$self->Socket($sock);
}
sub RawSocket(;$) {
@ -357,7 +366,7 @@ sub RawSocket(;$) {
delete $self->{_fcntl};
$self->Fast_io( $self->Fast_io );
$sock;
return $sock;
}
sub Socket($) {
@ -387,7 +396,11 @@ sub Socket($) {
$self->starttls or return undef;
}
$self->User && $self->Password ? $self->login : $self;
if ( defined $self->User && defined $self->Password ) {
$self->login or return undef;
}
return $self->{Socket};
}
# RFC2595 section 3.1
@ -418,7 +431,7 @@ sub starttls {
# give caller control of args to start_SSL if desired
my @sslargs =
( $self->Starttls and ref( $self->Starttls ) eq "ARRAY" )
? ( @${ $self->Starttls } )
? ( @{ $self->Starttls } )
: ( Timeout => 30 );
unless ( $ioclass->start_SSL( $sock, @sslargs ) ) {
@ -432,30 +445,129 @@ sub starttls {
return $self;
}
# RFC4978 COMPRESS
sub compress {
my ($self) = @_;
# BUG? strict check on capability commented out for now...
#my $can = $self->has_capability("COMPRESS")
#return undef unless $can and $can eq "DEFLATE";
$self->_imap_command("COMPRESS DEFLATE") or return undef;
my $zcl = $self->_load_module("Compress-Zlib") or return undef;
# give caller control of args if desired
$self->Compress(
[
-WindowBits => -$zcl->MAX_WBITS(),
-Level => $zcl->Z_BEST_SPEED()
]
) unless ( $self->Compress and ref( $self->Compress ) eq "ARRAY" );
my ( $rc, $do, $io );
( $do, $rc ) = Compress::Zlib::deflateInit( @{ $self->Compress } );
unless ( $rc == $zcl->Z_OK ) {
$self->LastError("deflateInit failed (rc=$rc)");
return undef;
}
( $io, $rc ) =
Compress::Zlib::inflateInit( -WindowBits => -$zcl->MAX_WBITS() );
unless ( $rc == $zcl->Z_OK ) {
$self->LastError("inflateInit failed (rc=$rc)");
return undef;
}
$self->{Prewritemethod} = sub {
my ( $imap, $string ) = @_;
my ( $rc, $out1, $out2 );
( $out1, $rc ) = $do->deflate($string);
( $out2, $rc ) = $do->flush( $zcl->Z_PARTIAL_FLUSH() )
unless ( $rc != $zcl->Z_OK );
unless ( $rc == $zcl->Z_OK ) {
$self->LastError("deflate/flush failed (rc=$rc)");
return undef;
}
return $out1 . $out2;
};
# need to retain some state for Readmoremethod/Readmethod calls
my ( $Zbuf, $Ibuf ) = ( "", "" );
$self->{Readmoremethod} = sub {
my $self = shift;
return 1 if ( length($Zbuf) || length($Ibuf) );
$self->__read_more(@_);
};
$self->{Readmethod} = sub {
my ( $imap, $fh, $buf, $len, $off ) = @_;
# get more data, but empty $Ibuf first if any data is left
my ( $lz, $li ) = ( length $Zbuf, length $Ibuf );
if ( $lz || !$li ) {
my $ret = sysread( $fh, $Zbuf, $len, length $Zbuf );
$lz = length $Zbuf;
return $ret if ( !$ret && !$lz ); # $ret is undef or 0
}
# accummulate inflated data in $Ibuf
if ($lz) {
my ( $tbuf, $rc ) = $io->inflate( \$Zbuf );
unless ( $rc == $zcl->Z_OK ) {
$self->LastError("inflate failed (rc=$rc)");
return undef;
}
$Ibuf .= $tbuf;
}
# pull desired length of data from $Ibuf
my $tbuf = substr( $Ibuf, 0, $len );
substr( $Ibuf, 0, $len ) = "";
substr( $$buf, $off ) = $tbuf;
return length $tbuf;
};
return $self;
}
sub login {
my $self = shift;
my $auth = $self->Authmechanism;
return $self->authenticate( $auth, $self->Authcallback )
if $auth && $auth ne 'LOGIN';
my $passwd = $self->Password;
my $id = $self->User;
if ( $auth && $auth ne 'LOGIN' ) {
$self->authenticate( $auth, $self->Authcallback )
or return undef;
}
else {
my $passwd = $self->Password;
my $id = $self->User;
return undef unless ( defined($passwd) and defined($id) );
return undef unless ( defined($passwd) and defined($id) );
# BUG: should use Quote() with $passwd and $id
if ( $passwd eq "" or $passwd =~ m/\W/ ) {
$passwd =~ s/(["\\])/\\$1/g;
$passwd = qq("$passwd");
# BUG: should use Quote() with $passwd and $id
if ( $passwd eq "" or $passwd =~ m/\W/ ) {
$passwd =~ s/(["\\])/\\$1/g;
$passwd = qq("$passwd");
}
$id = qq("$id") if $id !~ /^".*"$/;
$self->_imap_command("LOGIN $id $passwd")
or return undef;
}
$id = qq("$id") if $id !~ /^".*"$/;
$self->_imap_command("LOGIN $id $passwd")
or return undef;
$self->State(Authenticated);
$self;
if ( $self->Compress ) {
$self->compress or return undef;
}
return $self;
}
sub noop {
@ -557,7 +669,7 @@ sub _folders_or_subscribed {
{
my @list;
if ($what) {
my $sep = $self->separator($what);
my $sep = $self->separator($what) || $self->separator(undef);
last unless defined $sep;
my $whatsub = $what =~ m/\Q${sep}\E$/ ? "$what*" : "$what$sep*";
@ -566,8 +678,10 @@ sub _folders_or_subscribed {
shift @$tref; # remove command
push @list, @$tref;
my $exists = $self->exists($what) or last;
if ($exists) {
# BUG?: this behavior has been around since 2.x, why?
my $cansel = $self->selectable($what);
last unless defined $cansel;
if ($cansel) {
$tref = $self->$method( undef, $what ) or last;
shift @$tref; # remove command
push @list, @$tref;
@ -1051,16 +1165,32 @@ sub reconnect {
if ( $self->IsAuthenticated ) {
$self->_debug("reconnect called but already authenticated");
return $self;
return 1;
}
# safeguard from deep recursion via connect
if ( $self->{_doing_reconnect} ) {
$self->_debug("recursive call to reconnect, returning 0\n");
$self->LastError("unexpected reconnect recursion")
unless $self->LastError;
return 0;
}
my $einfo = $self->LastError || "";
$self->_debug( "reconnecting to ", $self->Server, ", last error: $einfo" );
$self->{_doing_reconnect} = 1;
# reconnect and select appropriate folder
$self->connect or return undef;
my $ret;
if ( $self->connect ) {
$ret = 1;
if ( defined $self->Folder ) {
$ret = defined( $self->select( $self->Folder ) ) ? 1 : undef;
}
}
return ( defined $self->Folder ) ? $self->select( $self->Folder ) : $self;
delete $self->{_doing_reconnect};
return $ret ? 1 : $ret;
}
# wrapper for _imap_command_do to enable retrying on lost connections
@ -1091,11 +1221,15 @@ sub _imap_command {
# BUG? reconnect if caller ignored/missed earlier errors?
# or $self->LastError =~ /NO not connected/
);
if ( $self->reconnect ) {
$self->_debug("reconnect successful on try #$tries");
my $ret = $self->reconnect;
if ($ret) {
$self->_debug("reconnect success($ret) on try #$tries/$retry");
}
elsif ( defined $ret and $ret == 0 ) { # escaping recursion
return undef;
}
else {
$self->_debug("reconnect failed on try #$tries");
$self->_debug("reconnect failure on try #$tries/$retry");
push( @err, $self->LastError ) if $self->LastError;
}
}
@ -1340,10 +1474,10 @@ sub _send_bytes($) {
local $SIG{PIPE} = 'IGNORE'; # handle SIGPIPE as normal error
my $socket = $self->Socket;
while ( $total < length $$byteref ) {
my $written =
syswrite( $self->Socket, $$byteref, length($$byteref) - $total,
$total );
syswrite( $socket, $$byteref, length($$byteref) - $total, $total );
if ( defined $written ) {
$temperrs = 0;
@ -1364,7 +1498,8 @@ sub _send_bytes($) {
# Unconnected might be apropos for more than just these?
my $emsg = $! ? "$!" : "no error caught";
$self->State(Unconnected) if ( $! == EPIPE or $! == ECONNRESET );
$self->State(Unconnected)
if ( $! == EPIPE or $! == ECONNRESET or $! == EBADF );
$self->LastError("Write failed '$emsg'");
return undef; # no luck
@ -1620,6 +1755,12 @@ sub _sysread {
}
sub _read_more {
my $self = shift;
my $rm = $self->Readmoremethod;
$rm ? $rm->( $self, @_ ) : $self->__read_more(@_);
}
sub __read_more {
my $self = shift;
my $opt = ref( $_[0] ) eq "HASH" ? shift : {};
my ( $socket, $timeout ) = @_;
@ -1756,7 +1897,7 @@ sub _disconnect {
local ($@); # avoid stomping on global $@
eval { $sock->close };
}
$self;
return $self;
}
# LIST/XLIST/LSUB Response
@ -2710,8 +2851,8 @@ sub is_parent {
sub selectable {
my ( $self, $f ) = @_;
my $info = $self->list( "", $f );
defined $info ? not( grep /NoSelect/i, @$info ) : undef;
my $info = $self->list( "", $f ) or return undef;
return not( grep /\b\\Noselect\b/i, @$info );
}
# append( $self, $folder, $text [, $optmsg] )
@ -2992,6 +3133,7 @@ sub authenticate {
: ( "", $client->User ),
defined $client->Password ? $client->Password : "",
),
''
);
};
}
@ -3250,6 +3392,19 @@ sub unseen_count {
return $r;
}
sub State($) {
my ( $self, $state ) = @_;
if ( defined $state ) {
$self->{State} = $state;
# discard cached capability info after authentication
delete $self->{CAPABILITY} if ( $state == Authenticated );
}
return defined( $self->{State} ) ? $self->{State} : Unconnected;
}
sub Status { shift->State }
sub IsUnconnected { shift->State == Unconnected }
sub IsConnected { shift->State >= Connected }

View file

@ -649,7 +649,11 @@ The B<capability> method returns an array of capabilities as returned
by the CAPABILITY IMAP Client command, or a reference to an array of
capabilities if called in scalar context. If the CAPABILITY IMAP
Client command fails for any reason then the B<capability> method will
return C<undef>.
return C<undef>. Supported capabilities are cached by the client,
however, this cache is deleted after a connection is set to
I<Authenticated> and when L</starttls> is called.
See also L</has_capability>.
=head2 close
@ -668,6 +672,18 @@ Note: this closes the currently selected folder, not the IMAP session.
See also L</delete_message>, L</expunge>, and RFC3501.
=head2 compress
Example:
$imap->compress or die "Could not enable RFC4978 compression: $@\n";
The B<compress> method accepts no arguments. This method is used to
instruct the server to use the DEFLATE (RFC1951) compression
extension. See the L</Compress> attribute for how to specify arguments for use during the the initialization process.
Version note: method added in Mail::IMAPClient 3.30
=head2 connect
Example:
@ -1142,9 +1158,12 @@ For example:
# Prints:
# Projects/Completed, Projects/Ongoing
Notice that if you just want to list a folder's subfolders (and not
the folder itself), then you need to include the hierarchy separator
character (as returned by the L</separator> method).
Please note that documentation previously suggested that if you just
want to list a folder's subfolders (and not the folder itself), then
you need to include the hierarchy separator character (as returned by
the L</separator> method). However, this does not match the behavior
of the existing implementation, so you will need to manually exclude
the parent folder from the results.
=head2 xlist_folders
@ -1458,6 +1477,8 @@ and $@ is set. The methods L</new>, L</connect>, and L</Socket> may
automatically invoke B<login> see the documentation of each method for
details.
If the L</Compress> parameter is set, the L</compress> method will automatically be called after successful authentication.
See also L</proxyauth> and L</Proxy> for additional information
regarding ways of authenticating with a server via SASL and/or
PROXYAUTH.
@ -2834,6 +2855,22 @@ will (except of course for that inevitable last transaction).
The default I<Clear> value is set to five (5) in order to conserve
memory.
=head2 Compress
If set, Mail::IMAPClient attempts to enable use of the RFC4978
COMPRESS DEFLATE extension. This requires that the server supports
this CAPABILITY. This attribute can be set to a true value to enable
or an ARRAYREF to control the arguments used in the call to
Compress::Zlib::deflateInit().
Mail::IMAPClient will automatically use L<Compress::Zlib> to
deflate/inflate the data to/from the server. This attribute is used
in the L</login> method.
See also L</compress> and L</capability>.
Version note: attribute added in Mail::IMAPClient 3.30
=head2 Debug
Example:
@ -2914,20 +2951,12 @@ Example:
# or:
$imap->Fast_io($true_or_false);
The I<Fast_io> parameter controls whether or not your
Mail::IMAPClient object will attempt to use buffered (i.e. "Fast")
I/O. It is turned on by default. If you turn it off you will
definitely slow down your program, often to a painful degree.
However, if you are experience problems you may want to try this just
to see if it helps. If it does then that means you have found a bug
and should report it immediately (by following the instructions in the
section on L</"REPORTING BUGS">). Even if it doesn't fix the problem,
testing with both I<Fast_io> turned on and with it turned off will
often aid in identifying the source of the problem. (If it doesn't
help you, it may help me when you report it!)
The I<Fast_io> parameter controls whether or not the Mail::IMAPClient
object will attempt to use non-blocking I/O on the IMAP socket. It is
turned on by default (unless the caller provides the socket to be
used).
Lately there have not been any bugs associated with I<Fast_io> so this
parameter may become deprecated in the future.
See also L</Buffer>.
=head2 Folder
@ -3056,10 +3085,11 @@ Example:
# or:
$imap->Port($new_value);
Specifies the port on which the IMAP server is listening. The default
is 143, which is the standard IMAP port. Can be supplied with the
L</new> method call or separately by calling the L</Port> object
method.
Specifies the port on which the IMAP server is listening. A default
value of 993 (if L</Ssl> is true) or 143 is set during a call to
L</connect> if no value is provided by the caller. This argument can
be supplied with the L</new> method call or separately by calling the
L</Port> object method.
=head2 Prewritemethod
@ -3186,6 +3216,18 @@ object itself.
See also L</Prewritemethod>.
=head2 Readmoremethod
B<Readmoremethod> should contain a reference to a subroutine that will
replace/enhance the behavior of the internal _read_more() method. The
subroutine will be passed the following arguments: first the used
Mail::IMAPClient object. Second, a reference to a socket. Third, a
timeout value which is used as the timeout value for CORE::select() by
default. Depending upon changes/features introduced by Readmethod
changes may be required here.
Version note: attribute added in Mail::IMAPClient 3.30
=head2 Reconnectretry
If an IMAP connection sits idle too long, the connection may be closed

View file

@ -164,6 +164,12 @@ sub new
$parser->envelope($envelope);
}
sub parse_string
{ my ($class, $envelope) = @_;
$envelope = "(" . $envelope . ")" unless ( $envelope =~ /^\(/ );
$parser->envelopestruct($envelope);
}
sub from_addresses { shift->_addresses(from => 1) }
sub sender_addresses { shift->_addresses(sender => 1) }
sub replyto_addresses { shift->_addresses(replyto => 1) }

View file

@ -2,7 +2,7 @@
use strict;
use warnings;
use Test::More tests => 27;
use Test::More tests => 41;
BEGIN { use_ok('Mail::IMAPClient::BodyStructure') or exit; }
@ -115,3 +115,37 @@ is_deeply( [ $bsobj->parts ], \@exp, 'bs9 parts' )
my $to = $env->to_addresses;
is_deeply( $to, [ '<phil+to@dom.loc>' ], "to_addresses" );
}
# envelope: parse_string
# date, subject, from, sender, reply-to, to, cc, bcc, in-reply-to, message-id
{
my $str = q{"Mon, 29 Nov 2010 18:28:23 +0200" "subj" (("Phil Pearl" NIL "phil+from" "dom.loc")) (("Phil Pearl" NIL "phil+sender" "dom.loc")) () ((NIL NIL "phil+to" "dom.loc")) NIL NIL NIL "<msgid>"};
my $env = Mail::IMAPClient::BodyStructure::Envelope->parse_string($str);
is( $env->subject, "subj", "subject" );
is( $env->inreplyto, "NIL", "inreplyto" );
is( $env->messageid, "<msgid>", "messageid" );
is( $env->bcc, "NIL", "bcc" );
is( $env->cc, "NIL", "cc" );
is( $env->replyto, "NIL", "replyto" );
# personalname mailboxname hostname sourcename
my $to = $env->to_addresses;
is_deeply( $to, [ '<phil+to@dom.loc>' ], "to_addresses" );
}
# envelope: parse_string
# date, subject, from, sender, reply-to, to, cc, bcc, in-reply-to, message-id
{
my $str = q{("Mon, 29 Nov 2010 18:28:23 +0200" "subj" (("Phil Pearl" NIL "phil+from" "dom.loc")) (("Phil Pearl" NIL "phil+sender" "dom.loc")) () ((NIL NIL "phil+to" "dom.loc")) NIL NIL NIL "<msgid>")};
my $env = Mail::IMAPClient::BodyStructure::Envelope->parse_string($str);
is( $env->subject, "subj", "subject" );
is( $env->inreplyto, "NIL", "inreplyto" );
is( $env->messageid, "<msgid>", "messageid" );
is( $env->bcc, "NIL", "bcc" );
is( $env->cc, "NIL", "cc" );
is( $env->replyto, "NIL", "replyto" );
# personalname mailboxname hostname sourcename
my $to = $env->to_addresses;
is_deeply( $to, [ '<phil+to@dom.loc>' ], "to_addresses" );
}

View file

@ -1,5 +1,5 @@
# $Id: Makefile,v 1.84 2011/07/29 03:02:01 gilles Exp gilles $
# $Id: Makefile,v 1.89 2011/11/13 08:53:12 gilles Exp gilles $
.PHONY: help usage all
@ -20,21 +20,27 @@ usage:
@echo "make upload_ks"
@echo "make imapsync.exe"
@echo "make imapsync_elf_x86.bin"
@echo "make publish"
DIST_NAME=imapsync-$(VERSION)
DIST_FILE=$(DIST_NAME).tgz
DEB_FILE=$(DIST_NAME).deb
VERSION=$(shell perl -I./Mail-IMAPClient-2.2.9 ./imapsync --version)
VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version)
VERSION_EXE=$(shell cat ./VERSION_EXE)
HELLO=$(shell date;uname -a)
IMAPClient_2xx=./Mail-IMAPClient-2.2.9
IMAPClient_3xx=./Mail-IMAPClient-3.30/lib
IMAPClient=$(IMAPClient_3xx)
hello:
echo "$(HELLO)"
echo "$(VERSION)"
echo "$(IMAPClient)"
all: ChangeLog README VERSION
all: ChangeLog README VERSION imapsync_elf_x86.bin
testp :
@ -47,7 +53,7 @@ README: imapsync
perldoc -t imapsync > README
VERSION: imapsync
perl -I./Mail-IMAPClient-2.2.9 ./imapsync --version > VERSION
perl -I./$(IMAPClient) ./imapsync --version > VERSION
.PHONY: clean clean_tilde clean_test
@ -90,22 +96,23 @@ cidone:
###############
.PHONY: test tests testp testf test3xx
.PHONY: test tests testp testf test3xx testv2 testv3
test_quick : test_quick_3xx test_quick_229
test_quick_229: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh -x tests.sh locallocal
CMD_PERL='perl -I./$(IMAPClient_2xx)' /usr/bin/time sh -x tests.sh locallocal
test_quick_3xx: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-3.28/lib' /usr/bin/time sh -x tests.sh locallocal
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh -x tests.sh locallocal
testv2:
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh
testv2: .test_229
CMD_PERL='perl -I./$(IMAPClient_2xx) /usr/bin/time sh tests.sh
touch .test_229
testv3:
CMD_PERL='perl -I./Mail-IMAPClient-3.28/lib' sh -x tests.sh
testv3:.test_3xx
CMD_PERL='perl -I./$(IMAPClient_3xx)' sh -x tests.sh
touch .test_3xx
test: .test_229 .test_3xx
@ -116,11 +123,11 @@ test3xx: .test_3xx
test229: .test_229
.test_229: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' /usr/bin/time sh tests.sh 1>/dev/null
CMD_PERL='perl -I./$(IMAPClient_2xx)' /usr/bin/time sh tests.sh 1>/dev/null
touch .test_229
.test_3xx: imapsync tests.sh
CMD_PERL='perl -I./Mail-IMAPClient-3.28/lib' /usr/bin/time sh tests.sh 1>/dev/null
CMD_PERL='perl -I./$(IMAPClient_3xx)' /usr/bin/time sh tests.sh 1>/dev/null
touch .test_3xx
testf: clean_test test
@ -145,7 +152,7 @@ tests_win32: dosify_bat
# ssh Admin@c 'tasklist /NH /FO CSV'
tests_win32_dev: dosify_bat
scp imapsync file.csv test2.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
scp imapsync file.txt test2.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/'
ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test2.bat'
test_imapsync_exe: dosify_bat
@ -171,23 +178,24 @@ imapsync.exe: imapsync build_exe.bat .dosify_bat
imapsync_elf_x86.bin: imapsync
rcsdiff imapsync
{ test 'vadrouille' = "`hostname`" && \
pp -o imapsync_elf_x86.bin -I Mail-IMAPClient-3.28/lib \
pp -o imapsync_elf_x86.bin -I $(IMAPClient_3xx) \
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
-M Authen::NTLM \
imapsync ; \
} || :
{ test 'petite' = "`hostname`" && \
pp -o imapsync_elf_x86.bin -I Mail-IMAPClient-3.28/lib \
pp -o imapsync_elf_x86.bin -I $(IMAPClient_3xx) \
-I NTLM-1.09/blib/lib \
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
-M Authen::NTLM \
-M Tie::Hash::NamedCapture \
-a '/usr/lib/perl/5.10.0/auto/POSIX/SigAction;auto/POSIX/SigAction' \
-a '/usr/lib/perl/5.10.1/auto/POSIX/SigAction;auto/POSIX/SigAction' \
imapsync ; \
} || :
{ test 'ks200821.kimsufi.com' = "`hostname`" && \
pp -o imapsync_elf_x86.bin -I Mail-IMAPClient-3.28/lib \
pp -o imapsync_elf_x86.bin -I $(IMAPClient_3xx) \
-M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \
-M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \
-M Authen::NTLM \
@ -244,18 +252,19 @@ dist_prepa_exe: imapsync.exe
#cd $(DIST_PATH)/ && md5sum -c ./imapsync.exe.md5.txt
.PHONY: publish upload_ks ks
ks:
rsync -avz --delete --exclude imapsync.exe \
. imapsync@ks.lamiral.info:public_html/imapsync/
publish: upload_ks ks
PUBLIC_FILES = ./ChangeLog ./COPYING ./CREDITS ./FAQ \
./index.shtml ./INSTALL ./TIME \
./logo_imapsync.png ./logo_imapsync_s.png \
./paypal.shtml ./paypal_return.shtml ./paypal_return_support.shtml \
./README ./style.css ./TODO ./VERSION ./VERSION_EXE ./memo
./README ./style.css ./TODO ./VERSION ./VERSION_EXE ./memo ./file.txt
upload_ks:
rsync -lptvHzP $(PUBLIC_FILES) \

View file

@ -1,65 +0,0 @@
NTLM Authentication Scheme
==========================
This module implements the NTLM authentication mechanism. It can be
used to perform NTLM style authentication for any desired protocol.
The module works well with the Mail::IMAPClient module in the
"authenticate" method, however I had to make a change to that method
for it to work. The following line (2511 in version 2.1.4):
($code) = $o->[DATA] =~ /^\+ (.*)$/ ;
needed to be changed to:
($code) = $o->[DATA] =~ /^\+(.*)$/ ;
as the initial NTLM challenge is empty.
This module also works well with LWP::Authen::Ntlm , allowing LWP::UserAgent
and/or WWW::Mechanise to automate/browse/fetch/etc remote Microsoft Windows
servers running NTLM authentication.
Example use is like this(note the fact that NTLM.pm is NOT explicitly used!):
use WWW::Mechanize;
$mech = WWW::Mechanize->new(keep_alive=>1);
$mech->no_proxy('my.server');
$mech->credentials('my.server:80', '', "my_domain\\my_user", my_pass);
$response = $mech->get( $url );
INSTALLATION
To install this application:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires the MIME::Base64 module, and Digest::HMAC_MD5
COPYRIGHT AND LICENCE
This application is free software. This code is distributed in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. You may freely use,
copy and distribute this software as long as all copyright notices, including
this notice, remain intact and that you do not try to claim it as your own or
try to sell it. You may alter the code as long as you send me any diffs (this
will ensure that you have an easier time of it when you upgrade ;).
Parts of this code Copyright (C) 2007 David (Buzz) Bussenschutt.
<davidbuzz@gmail.com>
Perl port of this code is Copyright (C) 2001 Mark Bush.
<Mark.Bush@bushnet.demon.co.uk>
The code is originally based on fetchmail code which is Copyright (C) 1997 Eric
S. Raymond.
Fetchmail uses SMB/Netbios code from samba which is Copyright (C)
Andrew Tridgell 1992-1998 with modifications from Jeremy Allison.

127
NTLM-1.09/COPYING-Artistic Normal file
View file

@ -0,0 +1,127 @@
The "Artistic License"
Preamble
The intent of this document is to state the conditions under which a
Package may be copied, such that the Copyright Holder maintains some
semblance of artistic control over the development of the package,
while giving the users of the package the right to use and distribute
the Package in a more-or-less customary fashion, plus the right to make
reasonable modifications.
Definitions:
"Package" refers to the collection of files distributed by the
Copyright Holder, and derivatives of that collection of files
created through textual modification.
"Standard Version" refers to such a Package if it has not been
modified, or has been modified in accordance with the wishes
of the Copyright Holder as specified below.
"Copyright Holder" is whoever is named in the copyright or
copyrights for the package.
"You" is you, if you're thinking about copying or distributing
this Package.
"Reasonable copying fee" is whatever you can justify on the
basis of media cost, duplication charges, time of people involved,
and so on. (You will not be required to justify it to the
Copyright Holder, but only to the computing community at large
as a market that must bear the fee.)
"Freely Available" means that no fee is charged for the item
itself, though there may be fees involved in handling the item.
It also means that recipients of the item may redistribute it
under the same conditions they received it.
1. You may make and give away verbatim copies of the source form of the
Standard Version of this Package without restriction, provided that you
duplicate all of the original copyright notices and associated disclaimers.
2. You may apply bug fixes, portability fixes and other modifications
derived from the Public Domain or from the Copyright Holder. A Package
modified in such a way shall still be considered the Standard Version.
3. You may otherwise modify your copy of this Package in any way, provided
that you insert a prominent notice in each changed file stating how and
when you changed that file, and provided that you do at least ONE of the
following:
a) place your modifications in the Public Domain or otherwise make them
Freely Available, such as by posting said modifications to Usenet or
an equivalent medium, or placing the modifications on a major archive
site such as uunet.uu.net, or by allowing the Copyright Holder to include
your modifications in the Standard Version of the Package.
b) use the modified Package only within your corporation or organization.
c) rename any non-standard executables so the names do not conflict
with standard executables, which must also be provided, and provide
a separate manual page for each non-standard executable that clearly
documents how it differs from the Standard Version.
d) make other distribution arrangements with the Copyright Holder.
4. You may distribute the programs of this Package in object code or
executable form, provided that you do at least ONE of the following:
a) distribute a Standard Version of the executables and library files,
together with instructions (in the manual page or equivalent) on where
to get the Standard Version.
b) accompany the distribution with the machine-readable source of
the Package with your modifications.
c) give non-standard executables non-standard names, and clearly
document the differences in manual pages (or equivalent), together
with instructions on where to get the Standard Version.
d) make other distribution arrangements with the Copyright Holder.
5. You may charge a reasonable copying fee for any distribution of this
Package. You may charge any fee you choose for support of this
Package. You may not charge a fee for this Package itself. However,
you may distribute this Package in aggregate with other (possibly
commercial) programs as part of a larger (possibly commercial) software
distribution provided that you do not advertise this Package as a
product of your own. You may embed this Package's interpreter within
an executable of yours (by linking); this shall be construed as a mere
form of aggregation, provided that the complete Standard Version of the
interpreter is so embedded.
6. The scripts and library files supplied as input to or produced as
output from the programs of this Package do not automatically fall
under the copyright of this Package, but belong to whoever generated
them, and may be sold commercially, and may be aggregated with this
Package. If such scripts or library files are aggregated with this
Package via the so-called "undump" or "unexec" methods of producing a
binary executable image, then distribution of such an image shall
neither be construed as a distribution of this Package nor shall it
fall under the restrictions of Paragraphs 3 and 4, provided that you do
not represent such an executable image as a Standard Version of this
Package.
7. C subroutines (or comparably compiled subroutines in other
languages) supplied by you and linked into this Package in order to
emulate subroutines and variables of the language defined by this
Package shall not be considered part of this Package, but are the
equivalent of input as in Paragraph 6, provided these subroutines do
not change the language in any way that would cause it to fail the
regression tests for the language.
8. Aggregation of this Package with a commercial distribution is always
permitted provided that the use of this Package is embedded; that is,
when no overt attempt is made to make this Package's interfaces visible
to the end user of the commercial distribution. Such use shall not be
construed as a distribution of this Package.
9. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written permission.
10. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
The End

250
NTLM-1.09/COPYING-GPL Normal file
View file

@ -0,0 +1,250 @@
GNU GENERAL PUBLIC LICENSE
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The license agreements of most software companies try to keep users
at the mercy of those companies. By contrast, our General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. The
General Public License applies to the Free Software Foundation's
software and to any other program whose authors commit to using it.
You can use it for your programs, too.
When we speak of free software, we are referring to freedom, not
price. Specifically, the General Public License is designed to make
sure that you have the freedom to give away or sell copies of free
software, that you receive source code or can get it if you want it,
that you can change the software or use pieces of it in new free
programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of a such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must tell them their rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any program or other work which
contains a notice placed by the copyright holder saying it may be
distributed under the terms of this General Public License. The
"Program", below, refers to any such program or work, and a "work based
on the Program" means either the Program or any work containing the
Program or a portion of it, either verbatim or with modifications. Each
licensee is addressed as "you".
1. You may copy and distribute verbatim copies of the Program's source
code as you receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice and
disclaimer of warranty; keep intact all the notices that refer to this
General Public License and to the absence of any warranty; and give any
other recipients of the Program a copy of this General Public License
along with the Program. You may charge a fee for the physical act of
transferring a copy.
2. You may modify your copy or copies of the Program or any portion of
it, and copy and distribute such modifications under the terms of Paragraph
1 above, provided that you also do the following:
a) cause the modified files to carry prominent notices stating that
you changed the files and the date of any change; and
b) cause the whole of any work that you distribute or publish, that
in whole or in part contains the Program or any part thereof, either
with or without modifications, to be licensed at no charge to all
third parties under the terms of this General Public License (except
that you may choose to grant warranty protection to some or all
third parties, at your option).
c) If the modified program normally reads commands interactively when
run, you must cause it, when started running for such interactive use
in the simplest and most usual way, to print or display an
announcement including an appropriate copyright notice and a notice
that there is no warranty (or else, saying that you provide a
warranty) and that users may redistribute the program under these
conditions, and telling the user how to view a copy of this General
Public License.
d) You may charge a fee for the physical act of transferring a
copy, and you may at your option offer warranty protection in
exchange for a fee.
Mere aggregation of another independent work with the Program (or its
derivative) on a volume of a storage or distribution medium does not bring
the other work under the scope of these terms.
3. You may copy and distribute the Program (or a portion or derivative of
it, under Paragraph 2) in object code or executable form under the terms of
Paragraphs 1 and 2 above provided that you also do one of the following:
a) accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of
Paragraphs 1 and 2 above; or,
b) accompany it with a written offer, valid for at least three
years, to give any third party free (except for a nominal charge
for the cost of distribution) a complete machine-readable copy of the
corresponding source code, to be distributed under the terms of
Paragraphs 1 and 2 above; or,
c) accompany it with the information you received as to where the
corresponding source code may be obtained. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form alone.)
Source code for a work means the preferred form of the work for making
modifications to it. For an executable file, complete source code means
all the source code for all modules it contains; but, as a special
exception, it need not include source code for modules which are standard
libraries that accompany the operating system on which the executable
file runs, or for standard header files or definitions files that
accompany that operating system.
4. You may not copy, modify, sublicense, distribute or transfer the
Program except as expressly provided under this General Public License.
Any attempt otherwise to copy, modify, sublicense, distribute or transfer
the Program is void, and will automatically terminate your rights to use
the Program under this License. However, parties who have received
copies, or rights to use copies, from you under this General Public
License will not have their licenses terminated so long as such parties
remain in full compliance.
5. By copying, distributing or modifying the Program (or any work based
on the Program) you indicate your acceptance of this license to do so,
and all its terms and conditions.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the original
licensor to copy, distribute or modify the Program subject to these
terms and conditions. You may not impose any further restrictions on the
recipients' exercise of the rights granted herein.
7. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of the license which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
the license, you may choose any version ever published by the Free Software
Foundation.
8. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to humanity, the best way to achieve this is to make it
free software which everyone can redistribute and change under these
terms.
To do so, attach the following notices to the program. It is safest to
attach them to the start of each source file to most effectively convey
the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19xx name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the
appropriate parts of the General Public License. Of course, the
commands you use may be called something other than `show w' and `show
c'; they could even be mouse-clicks or menu items--whatever suits your
program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
program `Gnomovision' (a program to direct compilers to make passes
at assemblers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
That's all there is to it!

View file

@ -1,5 +1,16 @@
Revision history for Perl NTLM authentication suite
1.09 8 Sep 2011
- fix CPAN ticket # 70703
1.08 6 Apr 2011
- fix CPAN ticket # 39925
1.07 - not released
1.06 24 Mar 2011
- relicense as GPL+ or Artistic
1.05 19 Jun 2008
- implement OO interface - thanks to Dmitry Karasik <dmitry@karasik.eu.org>
- fix minor bug in last release - thanks to Dmitry Karasik <dmitry@karasik.eu.org>

View file

@ -1,17 +1,20 @@
# This Makefile is for the Authen::NTLM::DES extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.30_01 (Revision: Revision: 4535 ) from the contents of
# 6.55_02 (Revision: 65502) from the contents of
# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
#
# ANY CHANGES MADE HERE WILL BE LOST!
#
# MakeMaker ARGV: ()
#
# MakeMaker Parameters:
# AUTHOR => q[David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>]
# BUILD_REQUIRES => { }
# NAME => q[Authen::NTLM::DES]
# PREREQ_PM => { }
# VERSION_FROM => q[DES.pm]
# --- MakeMaker post_initialize section:
@ -19,29 +22,28 @@
# --- MakeMaker const_config section:
# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm)
# They may have been overridden via Makefile.PL or on the command line
# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
# They may have been overridden via Makefile.PL or on the command line.
AR = ar
CC = cc
CCCDLFLAGS = -fPIC
CCDLFLAGS = -Wl,-E
DLEXT = so
DLSRC = dl_dlopen.xs
EXE_EXT =
FULL_AR = /usr/bin/ar
LD = cc
LDDLFLAGS = -shared -L/usr/local/lib
LDFLAGS = -L/usr/local/lib
LIBC = /lib/libc-2.7.so
LDDLFLAGS = -shared -O2 -g -L/usr/local/lib -fstack-protector
LDFLAGS = -fstack-protector -L/usr/local/lib
LIBC = /lib/libc-2.11.1.so
LIB_EXT = .a
OBJ_EXT = .o
OSNAME = linux
OSVERS = 2.6.24-19-server
OSVERS = 2.6.24-28-server
RANLIB = :
SITELIBEXP = /usr/local/share/perl/5.8.8
SITEARCHEXP = /usr/local/lib/perl/5.8.8
SITELIBEXP = /usr/local/share/perl/5.10.1
SITEARCHEXP = /usr/local/lib/perl/5.10.1
SO = so
EXE_EXT =
FULL_AR = /usr/bin/ar
VENDORARCHEXP = /usr/lib/perl5
VENDORLIBEXP = /usr/share/perl5
@ -73,15 +75,15 @@ PREFIX = /usr
PERLPREFIX = $(PREFIX)
SITEPREFIX = $(PREFIX)/local
VENDORPREFIX = $(PREFIX)
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.10
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.8.8
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.10.1
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.10
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.8.8
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.10.1
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@ -109,14 +111,14 @@ INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
PERL_LIB = /usr/share/perl/5.8
PERL_ARCHLIB = /usr/lib/perl/5.8
PERL_LIB = /usr/share/perl/5.10
PERL_ARCHLIB = /usr/lib/perl/5.10
LIBPERL_A = libperl.a
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = Makefile.old
MAKE_APERL_FILE = Makefile.aperl
PERLMAINCC = $(CC)
PERL_INC = /usr/lib/perl/5.8/CORE
PERL_INC = /usr/lib/perl/5.10/CORE
PERL = /usr/bin/perl
FULLPERL = /usr/bin/perl
ABSPERL = $(PERL)
@ -127,17 +129,19 @@ PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
PERL_CORE = 0
PERM_DIR = 755
PERM_RW = 644
PERM_RWX = 755
MAKEMAKER = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm
MM_VERSION = 6.30_01
MM_REVISION = Revision: 4535
MAKEMAKER = /usr/share/perl/5.10/ExtUtils/MakeMaker.pm
MM_VERSION = 6.55_02
MM_REVISION = 65502
# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
MAKE = make
FULLEXT = Authen/NTLM/DES
BASEEXT = DES
PARENT_NAME = Authen::NTLM
@ -183,13 +187,13 @@ PM_TO_BLIB = DES.pm \
# --- MakeMaker platform_constants section:
MM_Unix_VERSION = 1.50_01
MM_Unix_VERSION = 6.55_02
PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
# --- MakeMaker tool_autosplit section:
# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' --
@ -201,7 +205,7 @@ SHELL = /bin/sh
CHMOD = chmod
CP = cp
MV = mv
NOOP = $(SHELL) -c true
NOOP = $(TRUE)
NOECHO = @
RM_F = rm -f
RM_RF = rm -rf
@ -209,24 +213,26 @@ TEST_F = test -f
TOUCH = touch
UMASK_NULL = umask 0
DEV_NULL = > /dev/null 2>&1
MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
FALSE = false
TRUE = true
ECHO = echo
ECHO_N = echo -n
UNINST = 0
VERBINST = 0
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
MACROSTART =
MACROEND =
USEMAKEFILE = -f
FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
# --- MakeMaker makemakerdflt section:
makemakerdflt: all
makemakerdflt : all
$(NOECHO) $(NOOP)
@ -301,42 +307,42 @@ blibdirs.ts : blibdirs
$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_LIBDIR)
$(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_AUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
$(INST_BIN)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_BIN)
$(NOECHO) $(CHMOD) 755 $(INST_BIN)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_SCRIPT)
$(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
@ -446,16 +452,27 @@ realclean purge :: clean realclean_subdirs
# --- MakeMaker metafile section:
metafile : create_distdir
$(NOECHO) $(ECHO) Generating META.yml
$(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
$(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM-DES' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.02' >> META_new.yml
$(NOECHO) $(ECHO) 'version_from: DES.pm' >> META_new.yml
$(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
$(NOECHO) $(ECHO) '' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30_01' >> META_new.yml
$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM-DES' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.02' >> META_new.yml
$(NOECHO) $(ECHO) 'abstract: ~' >> META_new.yml
$(NOECHO) $(ECHO) 'author:' >> META_new.yml
$(NOECHO) $(ECHO) ' - David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> META_new.yml
$(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml
$(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
$(NOECHO) $(ECHO) ' directory:' >> META_new.yml
$(NOECHO) $(ECHO) ' - t' >> META_new.yml
$(NOECHO) $(ECHO) ' - inc' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.55_02' >> META_new.yml
$(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
$(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
$(NOECHO) $(ECHO) ' version: 1.4' >> META_new.yml
-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
@ -477,14 +494,14 @@ signature :
# --- MakeMaker distmeta section:
distmeta : create_distdir metafile
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' --
# --- MakeMaker distsignature section:
distsignature : create_distdir
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' --
$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
cd $(DISTVNAME) && cpansign -s
@ -494,7 +511,7 @@ distsignature : create_distdir
# --- MakeMaker force section:
# Phony target to force checking subdirectories.
FORCE:
FORCE :
$(NOECHO) $(NOOP)
@ -513,7 +530,7 @@ $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
$(PERLRUN) Makefile.PL
$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
false
$(FALSE)
@ -534,7 +551,11 @@ TESTDB_SW = -d
testdb :: testdb_$(LINKTYPE)
test :: $(TEST_TYPE)
test :: $(TEST_TYPE) subdirs-test
subdirs-test ::
$(NOECHO) $(NOOP)
$(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
test_dynamic :: pure_all
@ -550,14 +571,12 @@ testdb_static :: testdb_dynamic
# --- MakeMaker ppd section:
# Creates a PPD (Perl Package Description) for a binary distribution.
ppd:
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,02,0,0">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
ppd :
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1.02">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <AUTHOR>David (Buzz) Bussenschutt &lt;davidbuzz@gmail.com&gt;, Mark Bush &lt;Mark.Bush@bushnet.demon.co.uk&gt;</AUTHOR>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
@ -565,8 +584,8 @@ ppd:
# --- MakeMaker pm_to_blib section:
pm_to_blib : $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
DES.pm $(INST_LIB)/Authen/NTLM/DES.pm
$(NOECHO) $(TOUCH) pm_to_blib

View file

@ -1,17 +1,20 @@
# This Makefile is for the Authen::NTLM::MD4 extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.30_01 (Revision: Revision: 4535 ) from the contents of
# 6.55_02 (Revision: 65502) from the contents of
# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
#
# ANY CHANGES MADE HERE WILL BE LOST!
#
# MakeMaker ARGV: ()
#
# MakeMaker Parameters:
# AUTHOR => q[David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>]
# BUILD_REQUIRES => { }
# NAME => q[Authen::NTLM::MD4]
# PREREQ_PM => { }
# VERSION_FROM => q[MD4.pm]
# --- MakeMaker post_initialize section:
@ -19,29 +22,28 @@
# --- MakeMaker const_config section:
# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm)
# They may have been overridden via Makefile.PL or on the command line
# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
# They may have been overridden via Makefile.PL or on the command line.
AR = ar
CC = cc
CCCDLFLAGS = -fPIC
CCDLFLAGS = -Wl,-E
DLEXT = so
DLSRC = dl_dlopen.xs
EXE_EXT =
FULL_AR = /usr/bin/ar
LD = cc
LDDLFLAGS = -shared -L/usr/local/lib
LDFLAGS = -L/usr/local/lib
LIBC = /lib/libc-2.7.so
LDDLFLAGS = -shared -O2 -g -L/usr/local/lib -fstack-protector
LDFLAGS = -fstack-protector -L/usr/local/lib
LIBC = /lib/libc-2.11.1.so
LIB_EXT = .a
OBJ_EXT = .o
OSNAME = linux
OSVERS = 2.6.24-19-server
OSVERS = 2.6.24-28-server
RANLIB = :
SITELIBEXP = /usr/local/share/perl/5.8.8
SITEARCHEXP = /usr/local/lib/perl/5.8.8
SITELIBEXP = /usr/local/share/perl/5.10.1
SITEARCHEXP = /usr/local/lib/perl/5.10.1
SO = so
EXE_EXT =
FULL_AR = /usr/bin/ar
VENDORARCHEXP = /usr/lib/perl5
VENDORLIBEXP = /usr/share/perl5
@ -73,15 +75,15 @@ PREFIX = /usr
PERLPREFIX = $(PREFIX)
SITEPREFIX = $(PREFIX)/local
VENDORPREFIX = $(PREFIX)
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.10
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.8.8
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.10.1
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.10
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.8.8
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.10.1
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@ -109,14 +111,14 @@ INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
PERL_LIB = /usr/share/perl/5.8
PERL_ARCHLIB = /usr/lib/perl/5.8
PERL_LIB = /usr/share/perl/5.10
PERL_ARCHLIB = /usr/lib/perl/5.10
LIBPERL_A = libperl.a
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = Makefile.old
MAKE_APERL_FILE = Makefile.aperl
PERLMAINCC = $(CC)
PERL_INC = /usr/lib/perl/5.8/CORE
PERL_INC = /usr/lib/perl/5.10/CORE
PERL = /usr/bin/perl
FULLPERL = /usr/bin/perl
ABSPERL = $(PERL)
@ -127,17 +129,19 @@ PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
PERL_CORE = 0
PERM_DIR = 755
PERM_RW = 644
PERM_RWX = 755
MAKEMAKER = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm
MM_VERSION = 6.30_01
MM_REVISION = Revision: 4535
MAKEMAKER = /usr/share/perl/5.10/ExtUtils/MakeMaker.pm
MM_VERSION = 6.55_02
MM_REVISION = 65502
# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
MAKE = make
FULLEXT = Authen/NTLM/MD4
BASEEXT = MD4
PARENT_NAME = Authen::NTLM
@ -183,13 +187,13 @@ PM_TO_BLIB = MD4.pm \
# --- MakeMaker platform_constants section:
MM_Unix_VERSION = 1.50_01
MM_Unix_VERSION = 6.55_02
PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
# --- MakeMaker tool_autosplit section:
# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' --
@ -201,7 +205,7 @@ SHELL = /bin/sh
CHMOD = chmod
CP = cp
MV = mv
NOOP = $(SHELL) -c true
NOOP = $(TRUE)
NOECHO = @
RM_F = rm -f
RM_RF = rm -rf
@ -209,24 +213,26 @@ TEST_F = test -f
TOUCH = touch
UMASK_NULL = umask 0
DEV_NULL = > /dev/null 2>&1
MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
FALSE = false
TRUE = true
ECHO = echo
ECHO_N = echo -n
UNINST = 0
VERBINST = 0
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
MACROSTART =
MACROEND =
USEMAKEFILE = -f
FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
# --- MakeMaker makemakerdflt section:
makemakerdflt: all
makemakerdflt : all
$(NOECHO) $(NOOP)
@ -301,42 +307,42 @@ blibdirs.ts : blibdirs
$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_LIBDIR)
$(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_AUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
$(INST_BIN)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_BIN)
$(NOECHO) $(CHMOD) 755 $(INST_BIN)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_SCRIPT)
$(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
@ -446,16 +452,27 @@ realclean purge :: clean realclean_subdirs
# --- MakeMaker metafile section:
metafile : create_distdir
$(NOECHO) $(ECHO) Generating META.yml
$(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
$(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM-MD4' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.02' >> META_new.yml
$(NOECHO) $(ECHO) 'version_from: MD4.pm' >> META_new.yml
$(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
$(NOECHO) $(ECHO) '' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30_01' >> META_new.yml
$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM-MD4' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.02' >> META_new.yml
$(NOECHO) $(ECHO) 'abstract: ~' >> META_new.yml
$(NOECHO) $(ECHO) 'author:' >> META_new.yml
$(NOECHO) $(ECHO) ' - David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> META_new.yml
$(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'requires: {}' >> META_new.yml
$(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
$(NOECHO) $(ECHO) ' directory:' >> META_new.yml
$(NOECHO) $(ECHO) ' - t' >> META_new.yml
$(NOECHO) $(ECHO) ' - inc' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.55_02' >> META_new.yml
$(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
$(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
$(NOECHO) $(ECHO) ' version: 1.4' >> META_new.yml
-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
@ -477,14 +494,14 @@ signature :
# --- MakeMaker distmeta section:
distmeta : create_distdir metafile
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' --
# --- MakeMaker distsignature section:
distsignature : create_distdir
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' --
$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
cd $(DISTVNAME) && cpansign -s
@ -494,7 +511,7 @@ distsignature : create_distdir
# --- MakeMaker force section:
# Phony target to force checking subdirectories.
FORCE:
FORCE :
$(NOECHO) $(NOOP)
@ -513,7 +530,7 @@ $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
$(PERLRUN) Makefile.PL
$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
false
$(FALSE)
@ -534,7 +551,11 @@ TESTDB_SW = -d
testdb :: testdb_$(LINKTYPE)
test :: $(TEST_TYPE)
test :: $(TEST_TYPE) subdirs-test
subdirs-test ::
$(NOECHO) $(NOOP)
$(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
test_dynamic :: pure_all
@ -550,14 +571,12 @@ testdb_static :: testdb_dynamic
# --- MakeMaker ppd section:
# Creates a PPD (Perl Package Description) for a binary distribution.
ppd:
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,02,0,0">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
ppd :
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1.02">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <AUTHOR>David (Buzz) Bussenschutt &lt;davidbuzz@gmail.com&gt;, Mark Bush &lt;Mark.Bush@bushnet.demon.co.uk&gt;</AUTHOR>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
@ -565,8 +584,8 @@ ppd:
# --- MakeMaker pm_to_blib section:
pm_to_blib : $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
MD4.pm $(INST_LIB)/Authen/NTLM/MD4.pm
$(NOECHO) $(TOUCH) pm_to_blib

View file

@ -1,10 +1,10 @@
--- #YAML:1.0
name: Authen-NTLM
version: 1.05
version: 1.09
abstract: ~
license: ~
license: perl
author:
- David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>
- David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>, Nick Bebout <nbebout@cpan.org>
generated_by: ExtUtils::MakeMaker version 6.42
distribution_type: module
requires:

View file

@ -1,16 +1,18 @@
# This Makefile is for the Authen::NTLM extension to perl.
#
# It was generated automatically by MakeMaker version
# 6.30_01 (Revision: Revision: 4535 ) from the contents of
# 6.55_02 (Revision: 65502) from the contents of
# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
#
# ANY CHANGES MADE HERE WILL BE LOST!
#
# MakeMaker ARGV: ()
#
# MakeMaker Parameters:
# AUTHOR => q[David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>]
# BUILD_REQUIRES => { }
# DIR => [q[DES], q[MD4]]
# NAME => q[Authen::NTLM]
# PREREQ_PM => { Digest::HMAC_MD5=>q[0], MIME::Base64=>q[0] }
@ -21,29 +23,28 @@
# --- MakeMaker const_config section:
# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm)
# They may have been overridden via Makefile.PL or on the command line
# These definitions are from config.sh (via /usr/lib/perl/5.10/Config.pm).
# They may have been overridden via Makefile.PL or on the command line.
AR = ar
CC = cc
CCCDLFLAGS = -fPIC
CCDLFLAGS = -Wl,-E
DLEXT = so
DLSRC = dl_dlopen.xs
EXE_EXT =
FULL_AR = /usr/bin/ar
LD = cc
LDDLFLAGS = -shared -L/usr/local/lib
LDFLAGS = -L/usr/local/lib
LIBC = /lib/libc-2.7.so
LDDLFLAGS = -shared -O2 -g -L/usr/local/lib -fstack-protector
LDFLAGS = -fstack-protector -L/usr/local/lib
LIBC = /lib/libc-2.11.1.so
LIB_EXT = .a
OBJ_EXT = .o
OSNAME = linux
OSVERS = 2.6.24-19-server
OSVERS = 2.6.24-28-server
RANLIB = :
SITELIBEXP = /usr/local/share/perl/5.8.8
SITEARCHEXP = /usr/local/lib/perl/5.8.8
SITELIBEXP = /usr/local/share/perl/5.10.1
SITEARCHEXP = /usr/local/lib/perl/5.10.1
SO = so
EXE_EXT =
FULL_AR = /usr/bin/ar
VENDORARCHEXP = /usr/lib/perl5
VENDORLIBEXP = /usr/share/perl5
@ -54,11 +55,11 @@ DIRFILESEP = /
DFSEP = $(DIRFILESEP)
NAME = Authen::NTLM
NAME_SYM = Authen_NTLM
VERSION = 1.05
VERSION = 1.09
VERSION_MACRO = VERSION
VERSION_SYM = 1_05
VERSION_SYM = 1_09
DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
XS_VERSION = 1.05
XS_VERSION = 1.09
XS_VERSION_MACRO = XS_VERSION
XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
INST_ARCHLIB = blib/arch
@ -75,15 +76,15 @@ PREFIX = /usr
PERLPREFIX = $(PREFIX)
SITEPREFIX = $(PREFIX)/local
VENDORPREFIX = $(PREFIX)
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8
INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.10
DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.8.8
INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.10.1
DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8
INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.10
DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.8.8
INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.10.1
DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
@ -111,14 +112,14 @@ INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
PERL_LIB = /usr/share/perl/5.8
PERL_ARCHLIB = /usr/lib/perl/5.8
PERL_LIB = /usr/share/perl/5.10
PERL_ARCHLIB = /usr/lib/perl/5.10
LIBPERL_A = libperl.a
FIRST_MAKEFILE = Makefile
MAKEFILE_OLD = Makefile.old
MAKE_APERL_FILE = Makefile.aperl
PERLMAINCC = $(CC)
PERL_INC = /usr/lib/perl/5.8/CORE
PERL_INC = /usr/lib/perl/5.10/CORE
PERL = /usr/bin/perl
FULLPERL = /usr/bin/perl
ABSPERL = $(PERL)
@ -129,17 +130,19 @@ PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
PERL_CORE = 0
PERM_DIR = 755
PERM_RW = 644
PERM_RWX = 755
MAKEMAKER = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm
MM_VERSION = 6.30_01
MM_REVISION = Revision: 4535
MAKEMAKER = /usr/share/perl/5.10/ExtUtils/MakeMaker.pm
MM_VERSION = 6.55_02
MM_REVISION = 65502
# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
# DLBASE = Basename part of dynamic library. May be just equal BASEEXT.
MAKE = make
FULLEXT = Authen/NTLM
BASEEXT = NTLM
PARENT_NAME = Authen
@ -185,13 +188,13 @@ PM_TO_BLIB = NTLM.pm \
# --- MakeMaker platform_constants section:
MM_Unix_VERSION = 1.50_01
MM_Unix_VERSION = 6.55_02
PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
# --- MakeMaker tool_autosplit section:
# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)' --
@ -203,7 +206,7 @@ SHELL = /bin/sh
CHMOD = chmod
CP = cp
MV = mv
NOOP = $(SHELL) -c true
NOOP = $(TRUE)
NOECHO = @
RM_F = rm -f
RM_RF = rm -rf
@ -211,24 +214,26 @@ TEST_F = test -f
TOUCH = touch
UMASK_NULL = umask 0
DEV_NULL = > /dev/null 2>&1
MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' --
EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' --
FALSE = false
TRUE = true
ECHO = echo
ECHO_N = echo -n
UNINST = 0
VERBINST = 0
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' --
DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' --
UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' --
WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' --
MACROSTART =
MACROEND =
USEMAKEFILE = -f
FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' --
# --- MakeMaker makemakerdflt section:
makemakerdflt: all
makemakerdflt : all
$(NOECHO) $(NOOP)
@ -248,7 +253,7 @@ RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
DIST_CP = best
DIST_DEFAULT = tardist
DISTNAME = Authen-NTLM
DISTVNAME = Authen-NTLM-1.05
DISTVNAME = Authen-NTLM-1.09
# --- MakeMaker macro section:
@ -320,42 +325,42 @@ blibdirs.ts : blibdirs
$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_LIBDIR)
$(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR)
$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB)
$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_AUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR)
$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR)
$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
$(INST_BIN)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_BIN)
$(NOECHO) $(CHMOD) 755 $(INST_BIN)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN)
$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_SCRIPT)
$(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT)
$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR)
$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
$(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR)
$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
@ -401,7 +406,6 @@ POD2MAN = $(POD2MAN_EXE)
manifypods : pure_all \
NTLM.pm \
NTLM.pm
$(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \
NTLM.pm $(INST_MAN3DIR)/Authen::NTLM.$(MAN3EXT)
@ -430,8 +434,8 @@ subdirs ::
# --- MakeMaker clean_subdirs section:
clean_subdirs :
$(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) clean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';'
$(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) clean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';'
$(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) clean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' --
$(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) clean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' --
# --- MakeMaker clean section:
@ -463,10 +467,10 @@ clean :: clean_subdirs
# --- MakeMaker realclean_subdirs section:
realclean_subdirs :
- $(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) realclean'\'' if -f '\''$(MAKEFILE_OLD)'\'';'
- $(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) realclean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';'
- $(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) realclean'\'' if -f '\''$(MAKEFILE_OLD)'\'';'
- $(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) realclean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';'
- $(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) realclean'\'' if -f '\''$(MAKEFILE_OLD)'\'';' --
- $(ABSPERLRUN) -e 'chdir '\''DES'\''; system '\''$(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) realclean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' --
- $(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) realclean'\'' if -f '\''$(MAKEFILE_OLD)'\'';' --
- $(ABSPERLRUN) -e 'chdir '\''MD4'\''; system '\''$(MAKE) $(USEMAKEFILE) $(FIRST_MAKEFILE) realclean'\'' if -f '\''$(FIRST_MAKEFILE)'\'';' --
# --- MakeMaker realclean section:
@ -481,18 +485,29 @@ realclean purge :: clean realclean_subdirs
# --- MakeMaker metafile section:
metafile : create_distdir
$(NOECHO) $(ECHO) Generating META.yml
$(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
$(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#' >> META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.05' >> META_new.yml
$(NOECHO) $(ECHO) 'version_from: NTLM.pm' >> META_new.yml
$(NOECHO) $(ECHO) 'installdirs: site' >> META_new.yml
$(NOECHO) $(ECHO) '--- #YAML:1.0' > META_new.yml
$(NOECHO) $(ECHO) 'name: Authen-NTLM' >> META_new.yml
$(NOECHO) $(ECHO) 'version: 1.09' >> META_new.yml
$(NOECHO) $(ECHO) 'abstract: ~' >> META_new.yml
$(NOECHO) $(ECHO) 'author:' >> META_new.yml
$(NOECHO) $(ECHO) ' - David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> META_new.yml
$(NOECHO) $(ECHO) 'license: unknown' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'configure_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'build_requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' ExtUtils::MakeMaker: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
$(NOECHO) $(ECHO) ' Digest::HMAC_MD5: 0' >> META_new.yml
$(NOECHO) $(ECHO) ' MIME::Base64: 0' >> META_new.yml
$(NOECHO) $(ECHO) '' >> META_new.yml
$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30_01' >> META_new.yml
$(NOECHO) $(ECHO) ' Digest::HMAC_MD5: 0' >> META_new.yml
$(NOECHO) $(ECHO) ' MIME::Base64: 0' >> META_new.yml
$(NOECHO) $(ECHO) 'no_index:' >> META_new.yml
$(NOECHO) $(ECHO) ' directory:' >> META_new.yml
$(NOECHO) $(ECHO) ' - t' >> META_new.yml
$(NOECHO) $(ECHO) ' - inc' >> META_new.yml
$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.55_02' >> META_new.yml
$(NOECHO) $(ECHO) 'meta-spec:' >> META_new.yml
$(NOECHO) $(ECHO) ' url: http://module-build.sourceforge.net/META-spec-v1.4.html' >> META_new.yml
$(NOECHO) $(ECHO) ' version: 1.4' >> META_new.yml
-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
@ -515,7 +530,7 @@ manifest :
$(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
veryclean : realclean
$(RM_F) *~ *.orig */*~ */*.orig
$(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old
@ -523,7 +538,7 @@ veryclean : realclean
dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
$(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
-e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
-e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' --
tardist : $(DISTVNAME).tar$(SUFFIX)
$(NOECHO) $(NOOP)
@ -586,14 +601,14 @@ ci :
# --- MakeMaker distmeta section:
distmeta : create_distdir metafile
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"' --
# --- MakeMaker distsignature section:
distsignature : create_distdir
$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
-e ' or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"' --
$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
cd $(DISTVNAME) && cpansign -s
@ -601,16 +616,16 @@ distsignature : create_distdir
# --- MakeMaker install section:
install :: all pure_install doc_install
install :: pure_install doc_install
$(NOECHO) $(NOOP)
install_perl :: all pure_perl_install doc_perl_install
install_perl :: pure_perl_install doc_perl_install
$(NOECHO) $(NOOP)
install_site :: all pure_site_install doc_site_install
install_site :: pure_site_install doc_site_install
$(NOECHO) $(NOOP)
install_vendor :: all pure_vendor_install doc_vendor_install
install_vendor :: pure_vendor_install doc_vendor_install
$(NOECHO) $(NOOP)
pure_install :: pure_$(INSTALLDIRS)_install
@ -625,7 +640,7 @@ pure__install : pure_site_install
doc__install : doc_site_install
$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
pure_perl_install ::
pure_perl_install :: all
$(NOECHO) umask 022; $(MOD_INSTALL) \
$(INST_LIB) $(DESTINSTALLPRIVLIB) \
$(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
@ -637,7 +652,7 @@ pure_perl_install ::
$(SITEARCHEXP)/auto/$(FULLEXT)
pure_site_install ::
pure_site_install :: all
$(NOECHO) umask 02; $(MOD_INSTALL) \
read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
@ -650,7 +665,7 @@ pure_site_install ::
$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
$(PERL_ARCHLIB)/auto/$(FULLEXT)
pure_vendor_install ::
pure_vendor_install :: all
$(NOECHO) umask 022; $(MOD_INSTALL) \
$(INST_LIB) $(DESTINSTALLVENDORLIB) \
$(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
@ -659,9 +674,9 @@ pure_vendor_install ::
$(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
$(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
doc_perl_install ::
doc_perl_install :: all
doc_site_install ::
doc_site_install :: all
$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
-$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
-$(NOECHO) umask 02; $(DOC_INSTALL) \
@ -672,7 +687,7 @@ doc_site_install ::
EXE_FILES "$(EXE_FILES)" \
>> $(DESTINSTALLSITEARCH)/perllocal.pod
doc_vendor_install ::
doc_vendor_install :: all
uninstall :: uninstall_from_$(INSTALLDIRS)dirs
@ -689,7 +704,7 @@ uninstall_from_vendordirs ::
# --- MakeMaker force section:
# Phony target to force checking subdirectories.
FORCE:
FORCE :
$(NOECHO) $(NOOP)
@ -708,7 +723,7 @@ $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
$(PERLRUN) Makefile.PL
$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <=="
false
$(FALSE)
@ -739,13 +754,17 @@ TESTDB_SW = -d
testdb :: testdb_$(LINKTYPE)
test :: $(TEST_TYPE)
$(NOECHO) $(ABSPERLRUN) -e 'chdir '\''DES'\''; ' \
-e 'system '\''$(MAKE) test $(PASTHRU)'\'' ' \
-e ' if -f '\''$(FIRST_MAKEFILE)'\'';'
$(NOECHO) $(ABSPERLRUN) -e 'chdir '\''MD4'\''; ' \
-e 'system '\''$(MAKE) test $(PASTHRU)'\'' ' \
-e ' if -f '\''$(FIRST_MAKEFILE)'\'';'
test :: $(TEST_TYPE) subdirs-test
subdirs-test ::
$(NOECHO) $(NOOP)
subdirs-test ::
$(NOECHO) cd DES && $(MAKE) test $(PASTHRU)
subdirs-test ::
$(NOECHO) cd MD4 && $(MAKE) test $(PASTHRU)
test_dynamic :: pure_all
PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
@ -761,16 +780,14 @@ testdb_static :: testdb_dynamic
# --- MakeMaker ppd section:
# Creates a PPD (Perl Package Description) for a binary distribution.
ppd:
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,05,0,0">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
ppd :
$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1.09">' > $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ABSTRACT></ABSTRACT>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <AUTHOR>David (Buzz) Bussenschutt &lt;davidbuzz@gmail.com&gt;, Mark Bush &lt;Mark.Bush@bushnet.demon.co.uk&gt;</AUTHOR>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="Digest-HMAC_MD5" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <DEPENDENCY NAME="MIME-Base64" VERSION="0,0,0,0" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <REQUIRE NAME="Digest::HMAC_MD5" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <REQUIRE NAME="MIME::Base64" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <ARCHITECTURE NAME="i486-linux-gnu-thread-multi-5.10" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' <CODEBASE HREF="" />' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) ' </IMPLEMENTATION>' >> $(DISTNAME).ppd
$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
@ -778,8 +795,8 @@ ppd:
# --- MakeMaker pm_to_blib section:
pm_to_blib : $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM)
$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \
NTLM.pm $(INST_LIB)/Authen/NTLM.pm
$(NOECHO) $(TOUCH) pm_to_blib

View file

@ -148,6 +148,10 @@ L<perl>, L<Mail::IMAPClient>, L<LWP::Authen::Ntlm>
=head1 HISTORY
1.09 - fix CPAN ticket # 70703
1.08 - fix CPAN ticket # 39925
1.07 - not publicly released
1.06 - relicense as GPL+ or Artistic
1.05 - add OO interface by Dmitry Karasik
1.04 - implementation of NTLMv2 by Andrew Hobson/Dmitry Karasik
1.03 - fixes long-standing 1 line bug L<http://rt.cpan.org/Public/Bug/Display.html?id=9521> - released by David Bussenschutt 9th Aug 2007
@ -155,7 +159,7 @@ L<perl>, L<Mail::IMAPClient>, L<LWP::Authen::Ntlm>
=cut
$VERSION = "1.05";
$VERSION = "1.09";
@ISA = qw(Exporter);
@EXPORT = qw(ntlm ntlm_domain ntlm_user ntlm_password ntlm_reset ntlm_host ntlmv2);
@ -210,7 +214,7 @@ sub challenge
my ( $self, $challenge) = @_;
$state = defined $challenge;
($user,$domain,$password,$host) = @{$self}{qw(user domain password host)};
$ntlm_v2 = ($self-> {version} > 1) ? 1 : 0;
$ntlm_v2 = ($self-> {version} eq '2') ? 1 : 0;
return ntlm($challenge);
}
@ -287,10 +291,17 @@ sub ntlm
$lmResp = &lmEncrypt($c_info->{data});
$ntResp = &ntEncrypt($c_info->{data});
$flags = pack($msg3_tl, $c_info->{flags});
} else {
}
elsif ($ntlm_v2 eq '1') {
$lmResp = &lmv2Encrypt($c_info->{data});
$ntResp = &ntv2Encrypt($c_info->{data}, $c_info->{target_data});
$flags = pack($msg3_tl, $ntlm_v2_msg3_flags);
}
else {
$domain = &unicode($domain);#substr($challenge, $c_info->{domain}{offset}, $c_info->{domain}{len});
$lmResp = &lmEncrypt($c_info->{data});
$ntResp = &ntEncrypt($c_info->{data});
$flags = pack($msg3_tl, $c_info->{flags});
}
$u_host = &unicode(($host ? $host : $user));
$response = pack($msg3, $ident, 3);
@ -318,7 +329,7 @@ sub ntlm
$f &= ~NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED;
}
$msg1_host = $user;
if ($ntlm_v2) {
if ($ntlm_v2 and $ntlm_v2 eq '1') {
$f &= ~NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED;
$f |= NTLMSSP_NEGOTIATE_NTLM2;
$msg1_host = "";
@ -360,7 +371,8 @@ sub decode_challenge
my (@res, @hdr);
my $original = $challenge;
$res->{buffer} = substr($challenge, $msg2_hlen);
$res->{buffer} = $msg2_hlen < length $challenge
? substr($challenge, $msg2_hlen) : '';
$challenge = substr($challenge, 0, $msg2_hlen);
@res = unpack($msg2, $challenge);
$res->{ident} = $res[0];

104
NTLM-1.09/README Normal file
View file

@ -0,0 +1,104 @@
NTLM Authentication Scheme
==========================
This module implements the NTLM authentication mechanism. It can be
used to perform NTLM style authentication for any desired protocol.
The module works well with the Mail::IMAPClient module in the
"authenticate" method, however I had to make a change to that method
for it to work. The following line (2511 in version 2.1.4):
($code) = $o->[DATA] =~ /^\+ (.*)$/ ;
needed to be changed to:
($code) = $o->[DATA] =~ /^\+(.*)$/ ;
as the initial NTLM challenge is empty.
This module also works well with LWP::Authen::Ntlm , allowing LWP::UserAgent
and/or WWW::Mechanise to automate/browse/fetch/etc remote Microsoft Windows
servers running NTLM authentication.
Example use is like this(note the fact that NTLM.pm is NOT explicitly used!):
use WWW::Mechanize;
$mech = WWW::Mechanize->new(keep_alive=>1);
$mech->no_proxy('my.server');
$mech->credentials('my.server:80', '', "my_domain\\my_user", my_pass);
$response = $mech->get( $url );
INSTALLATION
To install this application:
perl Makefile.PL
make
make test
make install
DEPENDENCIES
This module requires the MIME::Base64 module, and Digest::HMAC_MD5
COPYRIGHT AND LICENSE
This program is free software; you can redistribute it and/or modify
it under the terms of either:
a) the GNU General Public License as published by the Free
Software Foundation; either version 1, or (at your option) any
later version, or
b) the "Artistic License" which comes with this Kit.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either
the GNU General Public License or the Artistic License for more details.
You should have received a copy of the Artistic License with this
Kit, in the file named "COPYING-Artistic". If not, I'll be glad to provide one.
You should also have received a copy of the GNU General Public License version 1
along with this program in the file named "COPYING-GPL". If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA or visit their web page on the internet at
http://www.gnu.org/copyleft/gpl.html.
For those of you that choose to use the GNU General Public License,
my interpretation of the GNU General Public License is that no Perl
script falls under the terms of the GPL unless you explicitly put
said script under the terms of the GPL yourself. Furthermore, any
object code linked with perl does not automatically fall under the
terms of the GPL, provided such object code only adds definitions
of subroutines and variables, and does not otherwise impair the
resulting interpreter from executing any standard Perl script. I
consider linking in C subroutines in this manner to be the moral
equivalent of defining subroutines in the Perl language itself. You
may sell such an object file as proprietary provided that you provide
or offer to provide the Perl source, as specified by the GNU General
Public License. (This is merely an alternate way of specifying input
to the program.) You may also sell a binary produced by the dumping of
a running Perl script that belongs to you, provided that you provide or
offer to provide the Perl source as specified by the GPL. (The
fact that a Perl interpreter and your code are in the same binary file
is, in this case, a form of mere aggregation.) This is my interpretation
of the GPL. If you still have concerns or difficulties understanding
my intent, feel free to contact me. Of course, the Artistic License
spells all this out for your protection, so you may prefer to use that.
License clarified by Nick Bebout per email from David Bussenschutt.
<nb@fedoraproject.org>
Parts of this code Copyright (C) 2007 David (Buzz) Bussenschutt.
<davidbuzz@gmail.com>
Perl port of this code is Copyright (C) 2001 Mark Bush.
<Mark.Bush@bushnet.demon.co.uk>
The code is originally based on fetchmail code which is Copyright (C) 1997 Eric
S. Raymond.
Fetchmail uses SMB/Netbios code from samba which is Copyright (C)
Andrew Tridgell 1992-1998 with modifications from Jeremy Allison.

View file

@ -148,6 +148,10 @@ L<perl>, L<Mail::IMAPClient>, L<LWP::Authen::Ntlm>
=head1 HISTORY
1.09 - fix CPAN ticket # 70703
1.08 - fix CPAN ticket # 39925
1.07 - not publicly released
1.06 - relicense as GPL+ or Artistic
1.05 - add OO interface by Dmitry Karasik
1.04 - implementation of NTLMv2 by Andrew Hobson/Dmitry Karasik
1.03 - fixes long-standing 1 line bug L<http://rt.cpan.org/Public/Bug/Display.html?id=9521> - released by David Bussenschutt 9th Aug 2007
@ -155,7 +159,7 @@ L<perl>, L<Mail::IMAPClient>, L<LWP::Authen::Ntlm>
=cut
$VERSION = "1.05";
$VERSION = "1.09";
@ISA = qw(Exporter);
@EXPORT = qw(ntlm ntlm_domain ntlm_user ntlm_password ntlm_reset ntlm_host ntlmv2);
@ -210,7 +214,7 @@ sub challenge
my ( $self, $challenge) = @_;
$state = defined $challenge;
($user,$domain,$password,$host) = @{$self}{qw(user domain password host)};
$ntlm_v2 = ($self-> {version} > 1) ? 1 : 0;
$ntlm_v2 = ($self-> {version} eq '2') ? 1 : 0;
return ntlm($challenge);
}
@ -287,10 +291,17 @@ sub ntlm
$lmResp = &lmEncrypt($c_info->{data});
$ntResp = &ntEncrypt($c_info->{data});
$flags = pack($msg3_tl, $c_info->{flags});
} else {
}
elsif ($ntlm_v2 eq '1') {
$lmResp = &lmv2Encrypt($c_info->{data});
$ntResp = &ntv2Encrypt($c_info->{data}, $c_info->{target_data});
$flags = pack($msg3_tl, $ntlm_v2_msg3_flags);
}
else {
$domain = &unicode($domain);#substr($challenge, $c_info->{domain}{offset}, $c_info->{domain}{len});
$lmResp = &lmEncrypt($c_info->{data});
$ntResp = &ntEncrypt($c_info->{data});
$flags = pack($msg3_tl, $c_info->{flags});
}
$u_host = &unicode(($host ? $host : $user));
$response = pack($msg3, $ident, 3);
@ -318,7 +329,7 @@ sub ntlm
$f &= ~NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED;
}
$msg1_host = $user;
if ($ntlm_v2) {
if ($ntlm_v2 and $ntlm_v2 eq '1') {
$f &= ~NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED;
$f |= NTLMSSP_NEGOTIATE_NTLM2;
$msg1_host = "";
@ -360,7 +371,8 @@ sub decode_challenge
my (@res, @hdr);
my $original = $challenge;
$res->{buffer} = substr($challenge, $msg2_hlen);
$res->{buffer} = $msg2_hlen < length $challenge
? substr($challenge, $msg2_hlen) : '';
$challenge = substr($challenge, 0, $msg2_hlen);
@res = unpack($msg2, $challenge);
$res->{ident} = $res[0];

View file

@ -1,15 +1,7 @@
.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
@ -48,22 +40,25 @@
. ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.if \nF \{\
.ie \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.\"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.hy 0
.if n .na
.el \{\
. de IX
..
.\}
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
@ -129,7 +124,11 @@
.\" ========================================================================
.\"
.IX Title "NTLM 3pm"
.TH NTLM 3pm "2008-06-18" "perl v5.8.8" "User Contributed Perl Documentation"
.TH NTLM 3pm "2011-09-09" "perl v5.10.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Authen::NTLM \- An NTLM authentication module
.SH "SYNOPSIS"
@ -137,7 +136,7 @@ Authen::NTLM \- An NTLM authentication module
.Vb 10
\& use Mail::IMAPClient;
\& use Authen::NTLM;
\& my $imap = Mail::IMAPClient\->new(Server=>\(aqimaphost\(aq);
\& my $imap = Mail::IMAPClient\->new(Server=>\*(Aqimaphost\*(Aq);
\& ntlm_user($username);
\& ntlm_password($password);
\& $imap\->authenticate("NTLM", Authen::NTLM::ntlm);
@ -179,16 +178,14 @@ or
\& to perform the challenge/response mechanism for NTLM connections
\& or it can be used on its own for NTLM authentication with other
\& protocols (eg. HTTP).
.Ve
.PP
.Vb 5
\&
\& The implementation is a direct port of the code from F<fetchmail>
\& which, itself, has based its NTLM implementation on F<samba>. As
\& such, this code is not especially efficient, however it will still
\& take a fraction of a second to negotiate a login on a PII which is
\& likely to be good enough for most situations.
.Ve
.Sh "\s-1FUNCTIONS\s0"
.SS "\s-1FUNCTIONS\s0"
.IX Subsection "FUNCTIONS"
.IP "\fIntlm_domain()\fR" 4
.IX Item "ntlm_domain()"
@ -225,17 +222,13 @@ or
\& response containing the username and domain (which may be empty).
\& The first call to C<ntlm()> generates this first message ignoring
\& any arguments.
.Ve
.Sp
.Vb 5
\&
\& The second time it is called, it is assumed that the argument is
\& the challenge string sent from the server. This will contain 8
\& bytes of data which are used in the DES functions to generate the
\& response authentication strings. The result of the call is the
\& final authentication string.
.Ve
.Sp
.Vb 3
\&
\& If C<ntlm_reset()> is called, then the next call to C<ntlm()> will
\& start the process again allowing multiple authentications within
\& an application.
@ -245,7 +238,7 @@ or
.Vb 1
\& Use NTLM v2 authentication.
.Ve
.Sh "\s-1OBJECT\s0 \s-1API\s0"
.SS "\s-1OBJECT\s0 \s-1API\s0"
.IX Subsection "OBJECT API"
.ie n .IP "new %options" 4
.el .IP "new \f(CW%options\fR" 4
@ -270,10 +263,14 @@ the call is the final authentication string.
.Ve
.SH "SEE ALSO"
.IX Header "SEE ALSO"
perl, Mail::IMAPClient, LWP::Authen::Ntlm
perl, Mail::IMAPClient, LWP::Authen::Ntlm
.SH "HISTORY"
.IX Header "HISTORY"
.Vb 4
.Vb 8
\& 1.09 \- fix CPAN ticket # 70703
\& 1.08 \- fix CPAN ticket # 39925
\& 1.07 \- not publicly released
\& 1.06 \- relicense as GPL+ or Artistic
\& 1.05 \- add OO interface by Dmitry Karasik
\& 1.04 \- implementation of NTLMv2 by Andrew Hobson/Dmitry Karasik
\& 1.03 \- fixes long\-standing 1 line bug L<http://rt.cpan.org/Public/Bug/Display.html?id=9521> \- released by David Bussenschutt 9th Aug 2007

19
README
View file

@ -3,7 +3,7 @@ NAME
Synchronise mailboxes between two imap servers. Good at IMAP migration.
More than 36 different IMAP server softwares supported with success.
$Revision: 1.456 $
$Revision: 1.463 $
SYNOPSIS
To synchronise imap account "foo" on "imap.truc.org" to imap account
@ -334,8 +334,8 @@ IMAP SERVERS
- hMailServer 5.3.3 [host2], 4.4.1 [host1] (see FAQ)
- iPlanet Messaging server 4.15, 5.1, 5.2
- IMail 7.15 (Ipswitch/Win2003), 8.12, 11.03 [host1]
- Kerio 7.2.0P1 [host1]
- MailEnable 4.23 [host1] [host2]
- Kerio 7.2.0 Patch 1 [host1] [host2]
- MailEnable 4.23 [host1] [host2], 4.26 [host1][host2], 5 [host1]
- MDaemon 7.0.1, 8.0.2, 8.1, 9.5.4 (Windows server 2003 R2 platform), 12 [host2],
12.0.3 [host1]
- Mercury 4.1 (Windows server 2000 platform)
@ -344,7 +344,7 @@ IMAP SERVERS
Exchange2007-EP-SP2,
Exchange 2010 RTM (Release to Manufacturing) [host2],
Exchange 2010 SP1 RU2[host2],
- Mirapoint
- Mirapoint, 4.1.9-GA [host1]
- Netscape Mail Server 3.6 (Wintel !)
- Netscape Messaging Server 4.15 Patch 7
- OpenMail IMAP server B.07.00.k0 (Samsung Contact ?)
@ -363,6 +363,7 @@ IMAP SERVERS
(http://www.washington.edu/imap/)
- UW - QMail v2.1
- VMS, Imap part of TCP/IP suite of VMS 7.3.2
- Yahoo [host1]
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6,
Zimbra 5.0.24_GA_3356.RHEL4 [host1], 5.5, 6.x
@ -385,10 +386,10 @@ HUGE MIGRATION
--maxage --minage --maxsize --useheader --fast --useuid --usecache
If you have many mailboxes to migrate think about a little shell
program. Write a file called file.csv (for example) containing users and
program. Write a file called file.txt (for example) containing users and
passwords. The separator used in this example is ';'
The file.csv file contains:
The file.txt file contains:
user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
@ -401,11 +402,11 @@ HUGE MIGRATION
{ while IFS=';' read u1 p1 u2 p2; do
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
done ; } < file.csv
done ; } < file.txt
On Windows the batch program can be:
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.csv) DO imapsync ^
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
--host1 imap.side1.org --user1 %%G --password1 %%H ^
--host2 imap.side2.org --user2 %%I --password2 %%J ...
@ -441,5 +442,5 @@ SIMILAR SOFTWARES
Feedback (good or bad) will often be welcome.
$Id: imapsync,v 1.456 2011/08/24 04:21:30 gilles Exp gilles $
$Id: imapsync,v 1.463 2011/11/12 21:58:52 gilles Exp gilles $

2
TIME
View file

@ -1,3 +1,5 @@
210 Added statistics on ks and lfo, % Operating systems, ip per year .Updated index.shtml
210 Added --nocacheaftercopy and played with dbmail (uids generation are +=2!)
120 Statistics statistics_VERSION_synthesis
150 10 years old announce. index.html. 10 EUR. freshmeat announce+release 1.452
60 Added --search option.

8
TODO
View file

@ -1,5 +1,5 @@
#!/bin/cat
# $Id: TODO,v 1.101 2011/08/24 06:50:30 gilles Exp gilles $
# $Id: TODO,v 1.103 2011/11/12 21:59:35 gilles Exp gilles $
TODO file for imapsync
----------------------
@ -23,6 +23,7 @@ Evaluate
http://www.rackspace.com/apps/email_hosting/migrations
http://www.yippiemove.com/
Find a way to avoid passwords in --debugimap unless needed.
Explain that users can win time/bandwidth by using --expunge
@ -162,6 +163,11 @@ http://asg.web.cmu.edu/cyrus/download/imapd/altnamespace.html
===========================================================================
DONE. Add --subscribe by default.
DONE. Ask Nick Czeczulin why he wrote patent "Method for mailbox migration"
http://www.google.com/patents/about?id=qI_IAAAAEBAJ
DONE. Add --search option allowing to select messages with any IMAP SEARCH command.
DONE. Make --usecache works with --maxage --maxsize etc.

View file

@ -1 +1 @@
1.456
1.463

View file

@ -1 +1 @@
1.456
1.462

View file

@ -1,6 +1,6 @@
#!/usr/bin/perl
# $Id: paypal_bilan,v 1.36 2011/07/18 19:21:07 gilles Exp gilles $
# $Id: paypal_bilan,v 1.37 2011/09/17 22:54:31 gilles Exp gilles $
use strict;
use warnings;
@ -171,8 +171,9 @@ print "Nb invoice suspended $nb_invoice_suspended\n" ;
print "Nb invoice sent $nb_invoice_sent\n" ;
print "Have to send invoices @invoice_not_sent\n" if ( @invoice_not_sent ) ;
print "$total_eur != $total_HT_EUR_exo + $total_HT_EUR_ass + $total_TVA_EUR + $total_HT_EUR_sup + $total_TVA_EUR_sup\n"
if ( $total_eur != $total_HT_EUR_exo + $total_HT_EUR_ass + $total_TVA_EUR + $total_HT_EUR_sup + $total_TVA_EUR_sup ) ;
my $total_eur2 = $total_HT_EUR_exo + $total_HT_EUR_ass + $total_TVA_EUR + $total_HT_EUR_sup + $total_TVA_EUR_sup ;
print "$total_eur != $total_eur2 = $total_HT_EUR_exo + $total_HT_EUR_ass + $total_TVA_EUR + $total_HT_EUR_sup + $total_TVA_EUR_sup\n"
if ( $total_eur != $total_eur2 ) ;
sub parse_one_line_io {
my $csv = shift ;

View file

@ -15,19 +15,22 @@ set -x
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 645 /g/paypal/paypal_2011_05_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 733 /g/paypal/paypal_2011_06_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 824 /g/paypal/paypal_2011_07_complet.csv
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 917 /g/paypal/paypal_2011_08_complet.csv
#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 917 /g/paypal/paypal_2011_08_complet.csv
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 999 /g/paypal/paypal_2011_09_complet.csv
/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1094 /g/paypal/paypal_2011_10_complet.csv
# /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 824 /g/paypal/paypal_2011_07_complet.csv
# /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 917 /g/paypal/paypal_2011_08_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 824 /g/paypal/paypal_2011_07_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 917 /g/paypal/paypal_2011_08_complet.csv
: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 1094 /g/paypal/paypal_2011_10_complet.csv
set +x
# La totale
: || /g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug \
--first_in 147 --avoid_numbers '292 293 643 644 731 732' \
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093' \
/g/paypal/paypal_201?_??_complet.csv
: || /g/public_html/imapsync/W/paypal_reply/paypal_bilan \
--first_in 147 --avoid_numbers '292 293 643 644 731 732' \
--first_in 147 --avoid_numbers '292 293 643 644 731 732 1093' \
/g/paypal/paypal_201?_??_complet.csv

View file

@ -1,19 +1,24 @@
# Example file.csv for imapsync massive migration.
# Thanks to http://ss64.com/nt/for_f.html
# Example file.txt for imapsync massive migration.
#
# ==== Windows ====
# Thanks to http://ss64.com/nt/for_f.html for
# the Windows example of a for loop
#
# A line beginning with # is a comment thanks to option Win32 eol=#
# Separator is character ; it can be changed by any character using delims=;
# Each contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2
#
# This file can be used on Windows with the following line in a batch
# FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.csv) DO imapsync --host1 imap.truc.org --user1 %%G --password1 %%H --host2 imap.trac.org --user2 %%I --password2 %%J
# FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync --host1 imap.truc.org --user1 %%G --password1 %%H --host2 imap.trac.org --user2 %%I --password2 %%J
#
# A line beginning with # is a comment thanks to option Win32 eol=#
# Separator is character ; it can be changed by any character changing delims=;
# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2
#
# ==== Unix ====
# This file can be used on Unix with the following line in a Bourne shell script
# { while IFS=';' read u1 p1 u2 p2; do imapsync --user1 "$u1" --password1 "$p1" --user2 "$u2" --password2 "$p2" ... ; done ; } < file.csv
#
#
# { while IFS=';' read u1 p1 u2 p2; do imapsync --user1 "$u1" --password1 "$p1" --user2 "$u2" --password2 "$p2" ... ; done ; } < file.txt
#
# Separator is character ; it can be changed by any character changing IFS=';'
# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2
#
# Now the data example
user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
user003_1;password003_1;user003_2;password003_2

4
i3
View file

@ -1,7 +1,7 @@
#!/bin/sh
# $Id: i3,v 1.7 2011/03/15 01:15:48 gilles Exp gilles $
# $Id: i3,v 1.8 2011/11/12 21:49:00 gilles Exp gilles $
BASE=`dirname $0`
perl -I${BASE}/Mail-IMAPClient-3.28/lib ${BASE}/imapsync "$@"
perl -I${BASE}/Mail-IMAPClient-3.30/lib ${BASE}/imapsync "$@"

View file

@ -20,7 +20,7 @@ Synchronise mailboxes between two imap servers.
Good at IMAP migration. More than 36 different IMAP server softwares
supported with success.
$Revision: 1.456 $
$Revision: 1.463 $
=head1 SYNOPSIS
@ -383,8 +383,8 @@ Success stories reported with the following 44 imap servers
- hMailServer 5.3.3 [host2], 4.4.1 [host1] (see FAQ)
- iPlanet Messaging server 4.15, 5.1, 5.2
- IMail 7.15 (Ipswitch/Win2003), 8.12, 11.03 [host1]
- Kerio 7.2.0P1 [host1]
- MailEnable 4.23 [host1] [host2]
- Kerio 7.2.0 Patch 1 [host1] [host2]
- MailEnable 4.23 [host1] [host2], 4.26 [host1][host2], 5 [host1]
- MDaemon 7.0.1, 8.0.2, 8.1, 9.5.4 (Windows server 2003 R2 platform), 12 [host2],
12.0.3 [host1]
- Mercury 4.1 (Windows server 2000 platform)
@ -393,7 +393,7 @@ Success stories reported with the following 44 imap servers
Exchange2007-EP-SP2,
Exchange 2010 RTM (Release to Manufacturing) [host2],
Exchange 2010 SP1 RU2[host2],
- Mirapoint
- Mirapoint, 4.1.9-GA [host1]
- Netscape Mail Server 3.6 (Wintel !)
- Netscape Messaging Server 4.15 Patch 7
- OpenMail IMAP server B.07.00.k0 (Samsung Contact ?)
@ -412,6 +412,7 @@ Success stories reported with the following 44 imap servers
(http://www.washington.edu/imap/)
- UW - QMail v2.1
- VMS, Imap part of TCP/IP suite of VMS 7.3.2
- Yahoo [host1]
- Zimbra-IMAP 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6,
Zimbra 5.0.24_GA_3356.RHEL4 [host1], 5.5, 6.x
@ -452,11 +453,11 @@ Pay special attention to options
--usecache
If you have many mailboxes to migrate think about a little
shell program. Write a file called file.csv (for example)
shell program. Write a file called file.txt (for example)
containing users and passwords.
The separator used in this example is ';'
The file.csv file contains:
The file.txt file contains:
user001_1;password001_1;user001_2;password001_2
user002_1;password002_1;user002_2;password002_2
@ -470,11 +471,11 @@ On Unix the shell program can be:
{ while IFS=';' read u1 p1 u2 p2; do
imapsync --host1 imap.side1.org --user1 "$u1" --password1 "$p1" \
--host2 imap.side2.org --user2 "$u2" --password2 "$p2" ...
done ; } < file.csv
done ; } < file.txt
On Windows the batch program can be:
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.csv) DO imapsync ^
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
--host1 imap.side1.org --user1 %%G --password1 %%H ^
--host2 imap.side2.org --user2 %%I --password2 %%J ...
@ -516,7 +517,7 @@ Entries for imapsync:
Feedback (good or bad) will often be welcome.
$Id: imapsync,v 1.456 2011/08/24 04:21:30 gilles Exp gilles $
$Id: imapsync,v 1.463 2011/11/12 21:58:52 gilles Exp gilles $
=cut
@ -622,7 +623,7 @@ my(
$max_msg_size_in_bytes,
$modules_version,
$delete2folders, $delete2foldersonly, $delete2foldersbutnot,
$usecache, $debugcache,
$usecache, $debugcache, $cacheaftercopy,
$wholeheaderifneeded, %h1_msgs_copy_by_uid, $useuid, $h2_uidguess,
);
@ -630,7 +631,7 @@ my(
# global variables initialisation
$rcs = '$Id: imapsync,v 1.456 2011/08/24 04:21:30 gilles Exp gilles $ ';
$rcs = '$Id: imapsync,v 1.463 2011/11/12 21:58:52 gilles Exp gilles $ ';
$total_bytes_transferred = 0;
$total_bytes_skipped = 0;
@ -705,6 +706,7 @@ if ( $fast ) {
# Activate --usecache if --useuid is set and no --nousecache
$usecache = 1 if ( $useuid and ( ! defined( $usecache ) ) ) ;
$cacheaftercopy = 1 if ( $usecache and ( ! defined( $cacheaftercopy ) ) ) ;
print banner_imapsync(@argv_copy);
@ -739,6 +741,8 @@ $skipsize = (defined $skipsize) ? $skipsize : 1;
$uid1 = defined($uid1) ? $uid1 : 1;
$uid2 = defined($uid2) ? $uid2 : 1;
$subscribe = defined($subscribe) ? $subscribe : 1;
# Allow size mismatch by default
$allowsizemismatch = defined($allowsizemismatch) ? $allowsizemismatch : 1;
@ -878,7 +882,7 @@ if ( ! ( 1
and $usecache
and ! $delete ) ) {
die_clean(
"Problem --usecache can not be used safely with options --maxsize--minsize --maxage --minage
"Problem --usecache can not be used safely with options --maxsize --minsize --maxage --minage
Use --nousecache or suppress the --max* --min* options\n" ) ;
}
@ -1299,6 +1303,7 @@ FOLDER: foreach my $h1_fold (@h1_folders_wanted) {
}
my $h2_uidnext = $imap2->uidnext( $h2_fold ) ;
$debug and print "uidnext h2: $h2_uidnext\n" ;
$h2_uidguess = $h2_uidnext ;
MESS: foreach my $m_id (@h1_hash_keys_sorted_by_uid) {
my $h1_size = $h1_hash{$m_id}{'s'};
@ -1822,8 +1827,8 @@ sub banner_imapsync {
my @argv_copy = @_;
my $banner_imapsync = join("",
'$RCSfile: imapsync,v $ ',
'$Revision: 1.456 $ ',
'$Date: 2011/08/24 04:21:30 $ ',
'$Revision: 1.463 $ ',
'$Date: 2011/11/12 21:58:52 $ ',
"\n",localhost_info(), "\n",
"Command line used:\n",
"$0 ", command_line_nopassword(@argv_copy), "\n",
@ -2694,11 +2699,11 @@ sub copy_message {
$new_id = lastuid( $imap2, $h2_fold, $h2_uidguess ) ;
}
printf( "msg %s/%-19s copied to %s/%-10s\n", $h1_fold, "$h1_msg {$string_len}", $h2_fold, $new_id );
$h2_uidguess++;
$h2_uidguess += 1 ;
$total_bytes_transferred += $h1_size;
$nb_msg_transferred += 1;
$debugcache and print "touch $cache_dir/${h1_msg}_$new_id\n" if ( $usecache ) ;
touch( "$cache_dir/${h1_msg}_$new_id" ) if ( $usecache and $new_id =~ m{^\d+$} );
$debugcache and print "touch $cache_dir/${h1_msg}_$new_id\n" if ( $usecache and $cacheaftercopy and $new_id =~ m{^\d+$} ) ;
touch( "$cache_dir/${h1_msg}_$new_id" ) if ( $usecache and $cacheaftercopy and $new_id =~ m{^\d+$} ) ;
if ( $delete ) {
print "msg $h1_fold/$h1_msg deleted on host1\n";
unless($dry) {
@ -2731,8 +2736,8 @@ sub cache_map {
$debugcache and print "C12: $file\n" ;
( $uid1, $uid2 ) = match_a_cache_file( $file ) ;
if ( exists( $h1_msgs_hash_ref->{ $uid1 } )
and exists( $h2_msgs_hash_ref->{ $uid2 } ) ) {
if ( exists( $h1_msgs_hash_ref->{ $uid1 // q{} } )
and exists( $h2_msgs_hash_ref->{ $uid2 // q{} } ) ) {
# keep only the greatest uid2
# 130_2301 and
# 130_231 => keep only 130 -> 2301
@ -3396,6 +3401,7 @@ sub get_options {
"releasecheck!" => \$releasecheck,
"modules_version!" => \$modules_version,
"usecache!" => \$usecache,
"cacheaftercopy!" => \$cacheaftercopy,
"debugcache!" => \$debugcache,
"useuid!" => \$useuid,
);
@ -3580,7 +3586,7 @@ sub check_last_release {
}
sub imapsync_version {
my $rcs = '$Id: imapsync,v 1.456 2011/08/24 04:21:30 gilles Exp gilles $ ';
my $rcs = '$Id: imapsync,v 1.463 2011/11/12 21:58:52 gilles Exp gilles $ ';
$rcs =~ m/,v (\d+\.\d+)/;
my $VERSION = ($1) ? $1: "UNKNOWN";
return($VERSION);
@ -3808,7 +3814,7 @@ Several options are mandatory.
--dry : do nothing, just print what would be done.
--subscribed : transfers subscribed folders.
--subscribe : subscribe to the folders transferred on the
host2 that are subscribed on host1.
host2 that are subscribed on host1. On by default.
--subscribe_all : subscribe to the folders transferred on the
host2 even if they are not subscribed on host1.
--nofoldersizes : Do not calculate the size of each folder in bytes

View file

@ -5,7 +5,7 @@
<title>Imapsync: an IMAP migration tool ( release <!--#exec cmd="cat VERSION"--> )</title>
<meta name="generator" content="Bluefish 1.0.7"/>
<meta name="author" content="Gilles LAMIRAL"/>
<meta name="date" content="2011-08-03T03:25:16+0200"/>
<meta name="date" content="2011-11-13T00:45:16+0100"/>
<meta name="copyright" content="None"/>
<meta name="keywords" content="imap, transfert, migration"/>
<meta name="description" content="imap migration tool"/>
@ -29,8 +29,8 @@
<body>
<ul class="none">
<li>Buy <a href="#buy_source">imapsync <b>source code</b></a> (any OS)</li>
<li>Buy <a href="#buy_exe"><b>standalone win32</b></a> imapsync.exe</li>
<li>Buy <a href="#buy_source"><b>imapsync source code</b></a> (any OS)</li>
<li>Buy <a href="#buy_exe"><b>standalone win32</b></a> <b>imapsync.exe</b> (also <b>works on win64</b>)</li>
<li>Buy <a href="#buy_support">imapsync <b>support</b></a> to succeed your migration</li>
<li>Are your <a href="#imap_server_success">imap servers <b>supported</b></a> by imapsync?</li>
</ul>
@ -39,11 +39,8 @@
<a href="http://ks.lamiral.info/imapsync/"><img src="logo_imapsync.png" width="486" height="309" alt="imapsync logo"/></a>
<h1>Welcome to the imapsync web site!</h1>
<span style="font-size:300%;">Ten years old since release 1.1!</span><br/>
(on Friday 29 July 2011)
</div>
<h2>What is imapsync?</h2>
<p><b>imapsync</b> software is a command line tool allowing incremental and
@ -59,13 +56,22 @@ where the user plays independently on both sides. Use <b>offlineimap</b>
(written by John Goerzen) for this purpose.
</p>
<h2><a id="NUMBERS"></a>Some numbers</h2>
<h2><a id="NUMBERS"></a>Some numbers for 2011</h2>
<ul>
<li>Number of <b>imapsync users</b> per month: between <b>2 and 3 thousands </b>users</li>
<li>Number of <b>imapsync transfers</b> per month: between <b>3 and 8 millions </b>transfers</li>
<li>Pourcentage of <b>Windows</b> users : <b>10%</b></li>
<li><b>Biggest user</b> usage: <b>5 millions</b> of IMAP mailbox transfers <b>in a month</b> (one every 2 seconds)</li>
<li>Number of <b>imapsync transfers</b> per month: between <b>3 and 11 millions </b>transfers </li>
<li>Pourcentage between <b>operating systems</b> users running imapsync:
<ul>
<li><b>Linux: 65 %</b></li>
<li><b>Win32: 18 %</b></li>
<li><b>Darwin: 11 %</b></li>
<li>FreeBSD: 6 %</li>
<li>Solaris: 0.4 %</li>
<li>OpenBSD: 0.1 %</li>
</ul>
</li>
<li><b>Biggest user usage</b>: more than <b>11 millions</b> of IMAP mailbox transfers</li>
</ul>
@ -81,37 +87,32 @@ where the user plays independently on both sides. Use <b>offlineimap</b>
<p>New features or bugfixes since previous releases:</p>
<ul>
<li><b>1.463</b></li>
<li><b>Update</b>: include and use of Mail-IMAPClient-3.30 (imapsync.exe)</li>
<li><b>Usability</b>: --subscribe option is on by defaut.</li>
<li><b>BugFix</b>: Added --nocacheaftercopy to avoid bad uids in cache with --useuid or --usecache and strange uid generator like dbmail 2.2.17</li>
<li><b>BugFix</b>: Avoid Perl warning 'Use of uninitialized value $uid1 in exists'. Thanks to Klaus Franken</li>
</ul>
<ul>
<li><b>1.456</b></li>
<li>Added a <b><a href="./file.txt">file.txt</a></b> example to <b>batch massive migration</b> (many mailboxes) on Windows or Unix</li>
<li>Added support to <b>Yahoo</b> as host1 (just add <kbd>--sep1 "/"</kbd> option. Add <kbd>--ssl1</kbd> for encryption)</li>
<li>Empty default value for $h1_flags $h2_flags to avoid useless Perl warnings.</li>
<li><b>MDaemon 12.0.3 failure as host2</b> (successive APPEND are buggy on MDaemon)</li>
</ul>
<ul>
<li><b>1.452</b></li>
<li><b>New feature</b>: Added <b>--search</b> option allowing to <b>select messages</b> with the <b>powerful IMAP SEARCH</b> command.</li>
<li><b>Bugfix</b>: Date reference to select messages with --maxdate --mindate is the beginning of imapsync run now.</li>
<li>Bugfix: Fixed ps call to work with Solaris 10. Thanks to Daniel Rohde.</li>
<li>Success: <b>Kerio 7.2.0P1</b> success story.</li>
<li>Success: <b>MDaemon 12.0.3</b> success story.</li>
<li><b>1.446</b></li>
<li><b>Bugfix</b>: Better --idatefromheader behavior (thank to Dax Kelson patches).</li>
<li><b>Usability</b>: Now --delete2 sets --uidexpunge2 instead of --expunge2 if possible.</li>
<li><b>Usability</b>: Adapted the usage output multiline character to Unix or Win, \ or ^</li>
<li>Bugfix: Avoid a "not a number" warning when size is null.</li>
<li><b>Bugfix</b>: Added "Date" in the default --useheader list. It is ("Message-Id", "Message-ID", "Date")</li>
<li>Bugfix: allows bad header beginning with a blank character.</li>
<li><b>1.434</b></li>
<li><b>Bugfix</b>: Changed the way imapsync knows <b>whether a folder exists</b> or not. <b>Exchange</b> might be happy and <b>stop deconnecting</b> for this reason.</li>
<li><b>Bugfix</b>: <b>Reconnections</b> are well done in <b>TLS mode</b> now.</li>
<li><b>Bugfix</b>: IMAP RFC 3501 and some imap servers require <b>internal dates</b> have a <b>zone data</b>. Default <b>to +0000</b> when host1 doesn't give it.</li>
<li><b>Bugfix</b>: Options --maxsize --minsize now really work with --useuid (1.422 had a cache issue).</li>
<li><b>Bugfix</b>: <b>Improved</b> the way imapsync <b>deals with headers</b>:<ul>
<li><b>Stopped</b> getting <b>first 2KB body</b> of message. Not a good idea in practice.</li>
<li>If <b>massive</b> get headers <b>fails</b> then take the <b>whole header</b> one by one (instead of body).</li>
<li>Default is like --useheader <b>"Message-Id"</b> --useheader <b>"Message-ID"</b> (instead of just "Message-Id").</li>
<li>Use header "Message-Id" and header "Date" as md5 signature when taking the whole header.</li>
<li>Success: <b>MDaemon 12.0.3 success story as host1</b>.</li>
</ul>
</li>
</ul>
<!--
<p>The next imapsync release should see:</p>
@ -193,7 +194,8 @@ name="submit" alt="PayPal - The safer, easier way to pay online!"/>
<h2><a id="buy_exe"></a>Buy standalone imapsync.exe for win32</h2>
<p>Struggle free from source code and Perl installation by<br/>
buying the latest win32 <b>standalone imapsync.exe</b> for <b>10</b> EUR</p>
buying the latest win32 <b>standalone imapsync.exe</b> for <b>30 EUR</b>
</p>
<p>
30 EUR is equal to around <b>45 USD</b>, no problem to pay in USD (or any currency) with paypal:
@ -333,7 +335,7 @@ will be to code it or fix it.<br/>
<tr align="right"><td> Yes</td><td>Fix capability changes </td><td> 1 hour </td><td> 80 min </td><td> 0 $ </td><td> 0 $ </td></tr>
<tr align="right"><td> Yes</td><td>Large mailbox --maxage </td><td> 4 hours </td><td> 270 min </td><td> 0 $ </td><td> 0 $ </td></tr>
<tr align="right"><td> Yes</td><td>dkimap support </td><td> 3 hours </td><td> 120 min </td><td> 0 $ </td><td> 0 $ </td></tr>
<tr align="right"><td> No</td><td>gratis from here </td><td> 4 hours </td><td> 0 min </td><td> 0 $ </td><td>60000 $ </td></tr>
</table>
<h2><a id="imap_server_success"></a>Lists of imap server software failures and success stories</h2>
@ -351,7 +353,7 @@ Don't hesitate to have a try, I will help you and make efforts to switch them to
</ul>
<p>Now the long reported <b>success stories</b> list: <b>44 different imap server softwares supported!</b><br/>
([host1] means "source server", [host2] means "destination server"):
[host1] means "source server" and [host2] means "destination server":
</p>
<ul>
@ -391,7 +393,7 @@ Don't hesitate to have a try, I will help you and make efforts to switch them to
<li>iPlanet Messaging server 4.15, 5.1, 5.2</li>
<li>IMail 7.15 (Ipswitch/Win2003), 8.12, 11.03 [host1]</li>
<li>Kerio 7.2.0P1 [host1]</li>
<li><b>MailEnable</b> 4.23 [host1][host2], 4.26 [host1][host2]</li>
<li><b>MailEnable</b> 4.23 [host1][host2], 4.26 [host1][host2], 5 [host1]</li>
<li>MDaemon 7.0.1, 8.0.2, 8.1, 9.5.4 (Windows server 2003 R2 platform), 12 [host2], 12.0.3 [host1]</li>
<li>Mercury 4.1 (Windows server 2000 platform)</li>
<li><b>Microsoft Exchange Server</b> 5.5, 6.0.6249.0[host1], 6.0.6487.0[host1],
@ -400,7 +402,7 @@ Don't hesitate to have a try, I will help you and make efforts to switch them to
Exchange 2010 RTM (Release to Manufacturing) [host2],
Exchange 2010 SP1 RU2 [host2]
</li>
<li>Mirapoint server</li>
<li>Mirapoint server 4.1.9-GA [host1]</li>
<li>Netscape Mail Server 3.6 (Wintel)</li>
<li>Netscape Messaging Server 4.15 Patch 7</li>
<li>OpenMail IMAP server B.07.00.k0</li>
@ -419,6 +421,7 @@ Don't hesitate to have a try, I will help you and make efforts to switch them to
(http://www.washington.edu/imap/)</li>
<li>UW - QMail v2.1</li>
<li>VMS, Imap part of TCP/IP suite of VMS 7.3.2</li>
<li><b>Yahoo</b> [host1]</li>
<li><b>Zimbra-IMAP</b> 3.0.1 GA 160, 3.1.0 Build 279, 4.0.5, 4.5.2, 4.5.6,
Zimbra 5.0.24_GA_3356.RHEL4 [host1], 5.5, 6.x</li>
</ul>
@ -449,7 +452,7 @@ alt="Viewable With Any Browser" />
<!--#config timefmt="%D" -->
<!--#config timefmt="%A %B %d, %Y" -->
<b>This document last modified on <!--#echo var="LAST_MODIFIED" --></b>
($Id: index.shtml,v 1.86 2011/08/03 01:26:05 gilles Exp gilles $)
($Id: index.shtml,v 1.92 2011/11/12 23:45:34 gilles Exp gilles $)
</p>
</body>

159
memo
View file

@ -1,6 +1,6 @@
#!/bin/sh
# $Id: memo,v 1.35 2011/08/22 00:31:14 gilles Exp gilles $
# $Id: memo,v 1.38 2011/11/07 15:12:06 gilles Exp gilles $
software_version() {
@ -14,31 +14,71 @@ statistics_lfo() {
cat <<EOFF
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n" # list ip
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc" # count ip
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n |grep MSWin32" # Win32
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 13,18,19 |sort -n|uniq -c| sort -n" # OS usage+basename
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 12 |sort -n|uniq -c| sort -n" # imapsync release
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc -l" # count ip
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|wc -l" # imapsync runs
tail -f /usr/local/apache/logs/access_log|cat -n|grep prj/imapsync/VERSION|cat -n |grep VERSION # lfo frequency
EOFF
}
statistics_lfo_run() {
# 62.147.165.21 - - [31/Oct/2010:23:45:28 +0100] "GET /prj/imapsync/VERSION HTTP/1.0" 200 6 "-" "imapsync/1.368 (linux system, perl 5.8.8, Mail::IMAPClient 2.2.9 imapsync)"
#grep prj/imapsync/VERSION /usr/local/apache/logs/access_log | sort -n | cut -d ' ' -f 1,12,13|uniq -c | sort -n # list ip
echo lfo list ip
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n" # list ip
echo lfo Win32
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n |grep MSWin32" # Win32
echo lfo OS usage+basename
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 13,18,19 |sort -n|uniq -c| sort -n" # OS usage+basename
echo lfo imapsync release
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 12 |sort -n|uniq -c| sort -n" # imapsync release
echo -n "lfo count ip: "
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc -l" # count ip
echo -n "lfo imapsync runs: "
ssh glamiral@linux-france.org "grep -h prj/imapsync/VERSION /usr/local/apache/logs/access_log.bak|wc -l" # imapsync runs
}
statistics_ks() {
cat <<EOFF
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n" # list ip
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc" # count ip
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n |grep MSWin32" # Win32
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n" # list ip
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n |grep MSWin32" # Win32
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log access.log_????????|cut -d ' ' -f 13,18,19 |sort -n|uniq -c| sort -n" # OS usage+basename
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log access.log_????????|cut -d ' ' -f 12 |sort -n|uniq -c| sort -n" # imapsync release
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 13,18,19 |sort -n|uniq -c| sort -n" # OS usage+basename
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 12 |sort -n|uniq -c| sort -n" # imapsync release
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc -l" # count ip
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|wc -l" # imapsync runs
tail -f /var/log/apache2/access.log |cat -n|grep prj/imapsync/VERSION|cat -n |grep VERSION # ks frequency
EOFF
}
statistics_ks_run() {
echo ks list ip
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n" # list ip
echo ks Win32
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n |grep MSWin32" # Win32
echo OS usage+basename
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 13,18,19 |sort -n|uniq -c| sort -n" # OS usage+basename
echo ks imapsync release
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 12 |sort -n|uniq -c| sort -n" # imapsync release
echo -n "ks count ip: "
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|cut -d ' ' -f 1,12,13,18,19|sort -n|uniq -c|sort -n|wc -l" # count ip
echo -n "ks imapsync runs: "
ssh root@ks "cd /var/log/apache2/;grep -h prj/imapsync/VERSION access.log_????????|wc -l" # imapsync runs
}
statistics_VERSION_lfo() {
TMPDIR=.
@ -86,14 +126,52 @@ statistics_VERSION_monthly() {
)
}
echo statistics_VERSION_yearly_ip
statistics_VERSION_yearly_ip() {
year=${1:-`date '+%Y'`}
(
cd /home/lf/glamiral/imapsync_stats
cut -d ' ' -f 1,12,13,18,19 linux-france.org.??-??-${year}.imapsync_VERSION |sort -n |uniq -c|sort -n > stats_imapsync_${year}.ip
)
}
echo statistics_VERSION_yearly_os
statistics_VERSION_yearly_os() {
year=${1:-`date '+%Y'`}
(
cd /home/lf/glamiral/imapsync_stats
Linux=`grep linux stats_imapsync_${year}.ip | wc -l`
Win32=`grep MSWin32 stats_imapsync_${year}.ip | wc -l`
Darwin=`grep darwin stats_imapsync_${year}.ip | wc -l`
FreeBSD=`grep freebsd stats_imapsync_${year}.ip | wc -l`
Solaris=`grep solaris stats_imapsync_${year}.ip | wc -l`
OpenBSD=`grep openbsd stats_imapsync_${year}.ip | wc -l`
Nb_All=`cat stats_imapsync_${year}.ip | wc -l`
for OS in Linux Win32 Darwin FreeBSD Solaris OpenBSD; do
#echo $OS `eval "echo \\$$OS"` / $Nb_All
Nb_OS=`eval "echo \\$$OS"`
PerCent=`echo "scale=2; 100*$Nb_OS/$Nb_All" | bc -l`
echo $OS $PerCent %
done
)
}
echo statistics_VERSION_synthesis
statistics_VERSION_synthesis() {
year=${1:-`date '+%Y'`}
(
cd /home/lf/glamiral/imapsync_stats
echo Nb users each month
wc -l *.ip
wc -l stats_imapsync_${year}_??.ip
echo Nb users each year
wc -l stats_imapsync_????.ip
echo Nb runs each month
tail -n 1 *.runs
tail -n 1 stats_imapsync_${year}_??.runs
echo % Operating systems
statistics_VERSION_yearly_os $year
echo Biggest users
tail -n 5 stats_imapsync_${year}.ip
)
}
@ -128,11 +206,57 @@ statistics_VERSION_monthly_ip() {
)
}
echo statistics_VERSION_yearly_ip
statistics_VERSION_yearly_ip() {
echo statistics_VERSION_monthly_os 08
statistics_VERSION_monthly_os() {
month=${1:-`date '+%m'`}
(
cd /home/imapsync/imapsync_stats
cut -d ' ' -f 1,12,13,18,19 access.log_2011????.imapsync_VERSION |sort -n |uniq -c|sort -n > stats_imapsync_2011.ip
Linux=`grep linux stats_imapsync_2011_${month}.ip | wc -l`
Win32=`grep MSWin32 stats_imapsync_2011_${month}.ip | wc -l`
Darwin=`grep darwin stats_imapsync_2011_${month}.ip | wc -l`
FreeBSD=`grep freebsd stats_imapsync_2011_${month}.ip | wc -l`
Solaris=`grep solaris stats_imapsync_2011_${month}.ip | wc -l`
OpenBSD=`grep openbsd stats_imapsync_2011_${month}.ip | wc -l`
Nb_All=`cat stats_imapsync_2011_${month}.ip | wc -l `
for OS in Linux Win32 Darwin FreeBSD Solaris OpenBSD; do
#echo $OS `eval "echo \\$$OS"` / $Nb_All
Nb_OS=`eval "echo \\$$OS"`
PerCent=`echo "scale=2; 100*$Nb_OS/$Nb_All" | bc -l`
echo $OS $PerCent%
done
)
}
echo statistics_VERSION_yearly_os
statistics_VERSION_yearly_os() {
year=${1:-`date '+%Y'`}
(
cd /home/imapsync/imapsync_stats
Linux=`grep linux stats_imapsync_${year}.ip | wc -l`
Win32=`grep MSWin32 stats_imapsync_${year}.ip | wc -l`
Darwin=`grep darwin stats_imapsync_${year}.ip | wc -l`
FreeBSD=`grep freebsd stats_imapsync_${year}.ip | wc -l`
Solaris=`grep solaris stats_imapsync_${year}.ip | wc -l`
OpenBSD=`grep openbsd stats_imapsync_${year}.ip | wc -l`
Nb_All=`cat stats_imapsync_${year}.ip | wc -l`
for OS in Linux Win32 Darwin FreeBSD Solaris OpenBSD; do
#echo $OS `eval "echo \\$$OS"` / $Nb_All
Nb_OS=`eval "echo \\$$OS"`
PerCent=`echo "scale=2; 100*$Nb_OS/$Nb_All" | bc -l`
echo $OS $PerCent %
done
)
}
echo statistics_VERSION_yearly_ip
statistics_VERSION_yearly_ip() {
year=${1:-`date '+%Y'`}
(
cd /home/imapsync/imapsync_stats
cut -d ' ' -f 1,12,13,18,19 access.log_${year}????.imapsync_VERSION |sort -n |uniq -c|sort -n > stats_imapsync_${year}.ip
)
}
@ -170,12 +294,19 @@ statistics_VERSION_monthly() {
echo statistics_VERSION_synthesis
statistics_VERSION_synthesis() {
year=${1:-`date '+%Y'`}
(
cd /home/imapsync/imapsync_stats
echo Nb users each month
wc -l *.ip
wc -l stats_imapsync_${year}_??.ip
echo Nb users each year
wc -l stats_imapsync_????.ip
echo Nb runs each month
tail -n 1 *.runs
tail -n 1 stats_imapsync_${year}_??.runs
echo % Operating systems
statistics_VERSION_yearly_os $year
echo Biggest users
tail -n 5 stats_imapsync_${year}.ip
)
}

View file

@ -1,5 +1,5 @@
REM $Id: test2.bat,v 1.5 2011/08/24 06:48:44 gilles Exp gilles $
REM $Id: test2.bat,v 1.6 2011/08/24 21:55:56 gilles Exp gilles $
cd C:\msys\1.0\home\Admin\imapsync
REM perl ./imapsync --host1 p --user1 tata --passfile1 secret.tata --host2 p --user2 titi --passfile2 secret.titi --delete2 --expunge2 --folder INBOX
@ -19,6 +19,6 @@ REM --folder INBOX.bigmail
REM perl imapsync
REM perl imapsync --host1 p --user1 tata --passfile1 secret.tata --host2 p --user2 titi --passfile2 secret.titi --nofoldersize --folder INBOX.yop.yap --regexflag "s/\\ /\\/g" --debugflags
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.csv) DO imapsync ^
FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync ^
--host1 imap.side1.org --user1 %%G --password1 %%H ^
--host2 imap.side2.org --user2 %%I --password2 %%J

165
tests.sh
View file

@ -1,6 +1,6 @@
#!/bin/sh
# $Id: tests.sh,v 1.174 2011/08/24 06:48:23 gilles Exp gilles $
# $Id: tests.sh,v 1.182 2011/11/12 23:40:55 gilles Exp gilles $
# Example 1:
# CMD_PERL='perl -I./Mail-IMAPClient-3.25/lib' sh -x tests.sh
@ -20,11 +20,15 @@ HOST2=${HOST2:-'localhost'}
echo HOST2=$HOST2
# most tests use:
CMD_PERL=${CMD_PERL:-'perl -I./Mail-IMAPClient-2.2.9'}
# few debugging tests use:
CMD_PERL_2xx='perl -I./Mail-IMAPClient-2.2.9'
CMD_PERL_3xx='perl -I./Mail-IMAPClient-3.28/lib'
CMD_PERL_3xx='perl -I./Mail-IMAPClient-3.30/lib'
CMD_PERL=${CMD_PERL:-$CMD_PERL_3xx}
#echo $CMD_PERL
#exit
#### Shell pragmas
@ -542,14 +546,14 @@ ll_nosyncinternaldates() {
ll_idatefromheader() {
can_send && sendtestmessage
# can_send && sendtestmessage
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--folder INBOX.oneemail \
--folder INBOX.oneemail2 \
--idatefromheader --debug --dry
}
@ -575,14 +579,14 @@ ll_subscribed()
}
ll_subscribe()
ll_nosubscribe()
{
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--subscribed --subscribe
--subscribed --nosubscribe
}
ll_justconnect()
@ -802,6 +806,28 @@ ll_search_SENTSINCE()
--search 'SENTSINCE 11-Jul-2011' --folder INBOX
}
ll_search_BEFORE_delete2_useuid()
{
can_send && sendtestmessage titi
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--search 'BEFORE 29-Sep-2011' --folder INBOX --delete2 --useuid
}
ll_search_SENTBEFORE()
{
can_send && sendtestmessage titi
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--search 'SENTBEFORE 2-Oct-2011' --folder INBOX --delete2
}
@ -1238,7 +1264,8 @@ ll_regex_flag4()
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--folder INBOX.yop.yap --nofoldersizes \
--regexflag 's/\$label1/\\label1/g' --debugflags
--regexflag 's/\$label1/\\label1/g' \
--regexflag "s/\\\$Forwarded//g" --debugflags
echo 'sudo rm -f /home/vmail/titi/.yop.yap/cur/*'
}
@ -1283,10 +1310,10 @@ ll_tls_justlogin() {
ll_tls_devel() {
CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' ll_justlogin ll_ssl_justlogin \
&& CMD_PERL='perl -I./Mail-IMAPClient-3.28/lib' ll_justlogin ll_ssl_justlogin \
&& CMD_PERL='perl -I./Mail-IMAPClient-2.2.9' ll_tls_justconnect ll_tls_justlogin \
&& CMD_PERL='perl -I./Mail-IMAPClient-3.28/lib' ll_tls_justconnect ll_tls_justlogin
CMD_PERL=$CMD_PERL_2xx ll_justlogin ll_ssl_justlogin \
&& CMD_PERL=$CMD_PERL_3xx ll_justlogin ll_ssl_justlogin \
&& CMD_PERL=$CMD_PERL_2xx ll_tls_justconnect ll_tls_justlogin \
&& CMD_PERL=$CMD_PERL_3xx ll_tls_justconnect ll_tls_justlogin
}
ll_tls() {
@ -1346,7 +1373,7 @@ ll_authmech_PLAIN() {
}
ll_authmech_NTLM() {
$CMD_PERL -I./NTLM-1.05/blib/lib ./imapsync \
$CMD_PERL -I./NTLM-1.09/blib/lib ./imapsync \
--host1 mail.freshgrillfoods.com --user1 ktraster \
--passfile1 ../../var/pass/secret.ktraster \
--host2 $HOST2 --user2 titi \
@ -1357,7 +1384,7 @@ ll_authmech_NTLM() {
}
ll_authmech_NTLM_domain() {
$CMD_PERL -I./NTLM-1.05/blib/lib ./imapsync \
$CMD_PERL -I./NTLM-1.09/blib/lib ./imapsync \
--host1 mail.freshgrillfoods.com --user1 ktraster \
--passfile1 ../../var/pass/secret.ktraster \
--host2 $HOST2 --user2 titi \
@ -1367,13 +1394,14 @@ ll_authmech_NTLM_domain() {
}
ll_authmech_NTLM_2() {
$CMD_PERL -I./NTLM-1.05/blib/lib ./imapsync \
$CMD_PERL -I./NTLM-1.09/blib/lib ./imapsync \
--host1 mail.freshgrillfoods.com --user1 ktraster \
--passfile1 ../../var/pass/secret.ktraster \
--host2 $HOST2 --user2 titi \
--passfile2 ../../var/pass/secret.titi \
--authmech1 NTLM --dry
}
@ -1556,8 +1584,6 @@ msw2() {
}
xxxxx_gmail() {
! ping -c1 imap.gmail.com || $CMD_PERL ./imapsync \
@ -1569,7 +1595,11 @@ xxxxx_gmail() {
--user1 tata \
--passfile1 ../../var/pass/secret.tata \
--nofoldersizes \
--justfolders --dry --prefix2 '[Gmail]/'
--justfolders \
--regextrans2 "s, +$,,g" --regextrans2 "s, +/,/,g" \
--exclude INBOX.yop.YAP
#--dry --prefix2 '[Gmail]/'
}
xxxxx_gmail_2() {
@ -1584,7 +1614,6 @@ xxxxx_gmail_2() {
--passfile2 ../../var/pass/secret.gilles_gmail \
--nofoldersizes \
--regextrans2 's,(.*),SMS,'
#--dry --prefix2 '[Gmail]/'
}
xxxxx_gmail_3() {
@ -1641,10 +1670,8 @@ gmail_xxxxx() {
--host2 $HOST2 \
--user2 tata \
--passfile2 ../../var/pass/secret.tata \
--useheader 'Message-Id' \
--useheader="X-Gmail-Received" \
--nofoldersizes \
--prefix1 '[Gmail]/' --dry --justfolders
--dry --justfolders
}
@ -1657,10 +1684,7 @@ gmail() {
--passfile1 ../../var/pass/secret.gilles_gmail \
--host2 $HOST2 \
--user2 tata \
--passfile2 ../../var/pass/secret.tata \
--useheader 'Message-Id' \
--useheader="X-Gmail-Received" \
--regextrans2 's/\[Gmail\]/Gmail/'
--passfile2 ../../var/pass/secret.tata
}
gmail_justfolders() {
@ -1673,9 +1697,6 @@ gmail_justfolders() {
--host2 $HOST2 \
--user2 tata \
--passfile2 ../../var/pass/secret.tata \
--useheader 'Message-Id' \
--useheader="X-Gmail-Received" \
--regextrans2 's/\[Gmail\]/Gmail/' \
--justfolders
}
@ -1704,12 +1725,9 @@ gmail_gmail() {
--passfile1 ../../var/pass/secret.gilles_gmail \
--host2 imap.gmail.com \
--ssl2 \
--user2 gilles.lamiral@gmail.com \
--passfile2 ../../var/pass/secret.gilles_gmail \
--useheader 'Message-Id' --useheader="X-Gmail-Received" \
--regextrans2 's¤INBOX¤inbox_copy¤' \
--folder INBOX \
--allowsizemismatch
--user2 imapsync.gl@gmail.com \
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
--justfolders
}
@ -1723,9 +1741,7 @@ gmail_gmail2() {
--ssl2 \
--user2 imapsync.gl@gmail.com \
--passfile2 ../../var/pass/secret.imapsync.gl_gmail \
--useheader 'Message-Id' --skipsize \
--folder INBOX \
--allowsizemismatch
--folder INBOX
#--dry # --debug --debugimap # --authmech1 LOGIN
}
@ -1743,8 +1759,11 @@ yahoo_xxxx_login() {
}
yahoo_xxxx() {
# Yahoo works only with ssl (november 2011)
# Could do plain port 143 before
! ping -c1 imap.mail.yahoo.com || $CMD_PERL ./imapsync \
--host1 imap.mail.yahoo.com \
--ssl1 \
--user1 glamiral \
--passfile1 ../../var/pass/secret.gilles_yahoo \
--host2 $HOST2 \
@ -1752,8 +1771,6 @@ yahoo_xxxx() {
--passfile2 ../../var/pass/secret.titi \
--sep1 '.'
# Yahoo works also with ssl
# --ssl1 \
}
@ -1769,7 +1786,7 @@ allow3xx() {
}
noallow3xx() {
! perl -I./Mail-IMAPClient-3.28/lib ./imapsync \
! $CMD_PERL_3xx ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 $HOST2 --user2 titi \
@ -1985,6 +2002,70 @@ ll_useuid_nousecache()
# specific tests
##########################
dbmail_uid() {
# --useuid alone does not work on dbmaikl server 2.2.17 ready to run
# because uids are += 2 and uidnext is in fact uidnext + 1
if can_send; then
sendtestmessage
else
:
fi
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 182.236.127.31 --user2 imapsynctest \
--passfile2 ../../var/pass/secret.dbmail \
--folder INBOX --fast --delete2 --expunge2 \
--usecache --useuid --nocacheaftercopy
}
dbmail_nocacheaftercopy() {
# Does work
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 182.236.127.31 --user2 imapsynctest \
--passfile2 ../../var/pass/secret.dbmail \
--folder INBOX --fast --delete2 --expunge2 --usecache --nocacheaftercopy
}
dbmail_nocache() {
# Does work
$CMD_PERL ./imapsync \
--host1 $HOST1 --user1 tata \
--passfile1 ../../var/pass/secret.tata \
--host2 182.236.127.31 --user2 imapsynctest \
--passfile2 ../../var/pass/secret.dbmail \
--folder INBOX --fast --delete2 --expunge2
}
bluehost2() {
$CMD_PERL ./imapsync \
--host1 imap.mail.yahoo.com --tls1 \
--user1 dalton@piila.com \
--passfile1 ../../var/pass/secret.bluehost2 \
--host2 box766.bluehost.com --ssl2 \
--user2 dalton@piila.com \
--passfile2 ../../var/pass/secret.bluehost2 \
--sep1 '/' --useuid --regextrans2 's/Inbox/INBOX/' --regextrans2 's,/,_,'
}
bluehost() {
$CMD_PERL ./imapsync \
--host1 imap.mail.yahoo.com --tls1 \
--user1 pii@piila.com \
--passfile1 ../../var/pass/secret.bluehost \
--host2 box766.bluehost.com --ssl2 \
--user2 pii@piila.com \
--passfile2 ../../var/pass/secret.bluehost \
--sep1 '/' --usecache --useuid --regextrans2 's/Inbox/INBOX/'
}
b2btech_1() {
$CMD_PERL ./imapsync \
@ -2410,7 +2491,7 @@ ll_nosyncinternaldates
ll_idatefromheader
ll_folder_rev
ll_subscribed
ll_subscribe
ll_nosubscribe
ll_justfoldersizes
ll_authmd5
ll_authmd51