From 1cb5bee328ba776a5b006367eb453cc2e4caa4ea Mon Sep 17 00:00:00 2001 From: Nick Bebout Date: Mon, 16 Apr 2012 17:26:18 -0500 Subject: [PATCH] 1.463 --- CREDITS | 10 +- ChangeLog | 37 ++- FAQ | 53 +++- .../Changes | 44 ++- .../MANIFEST | 0 .../META.yml | 2 +- .../Makefile.PL | 1 + .../README | 1 + .../examples/build_dist.pl | 0 .../examples/build_ldif.pl | 0 .../examples/cleanTest.pl | 0 .../examples/copy_folder.pl | 0 .../examples/cyrus_expire.pl | 0 .../examples/cyrus_expunge.pl | 0 .../examples/find_dup_msgs.pl | 0 .../examples/idle.pl | 0 .../examples/imap_to_mbox.pl | 0 .../examples/imtestExample.pl | 0 .../examples/migrate_mail2.pl | 0 .../examples/migrate_mbox.pl | 0 .../examples/populate_mailbox.pl | 0 .../examples/sharedFolder.pl | 0 .../lib/Mail/IMAPClient.pm | 269 ++++++++++++++---- .../lib/Mail/IMAPClient.pod | 84 ++++-- .../lib/Mail/IMAPClient/BodyStructure.pm | 6 + .../IMAPClient/BodyStructure/Parse.grammar | 0 .../Mail/IMAPClient/BodyStructure/Parse.pm | 0 .../Mail/IMAPClient/BodyStructure/Parse.pod | 0 .../lib/Mail/IMAPClient/MessageSet.pm | 0 .../lib/Mail/IMAPClient/Thread.grammar | 0 .../lib/Mail/IMAPClient/Thread.pm | 0 .../lib/Mail/IMAPClient/Thread.pod | 0 .../prepare_dist | 0 .../t/basic.t | 0 .../t/body_string.t | 0 .../t/bodystructure.t | 36 ++- .../t/fetch_hash.t | 0 .../t/messageset.t | 0 .../t/pod.t | 0 .../t/simple.t | 0 .../t/thread.t | 0 .../test_template.txt | 0 Makefile | 51 ++-- NTLM-1.05/README | 65 ----- NTLM-1.09/COPYING-Artistic | 127 +++++++++ NTLM-1.09/COPYING-GPL | 250 ++++++++++++++++ {NTLM-1.05 => NTLM-1.09}/Changes | 11 + {NTLM-1.05 => NTLM-1.09}/DES/DES.pm | 0 {NTLM-1.05 => NTLM-1.09}/DES/Makefile | 145 ++++++---- {NTLM-1.05 => NTLM-1.09}/DES/Makefile.PL | 0 {NTLM-1.05 => NTLM-1.09}/DES/pm_to_blib | 0 {NTLM-1.05 => NTLM-1.09}/MANIFEST | 0 {NTLM-1.05 => NTLM-1.09}/MD4/MD4.pm | 0 {NTLM-1.05 => NTLM-1.09}/MD4/Makefile | 145 ++++++---- {NTLM-1.05 => NTLM-1.09}/MD4/Makefile.PL | 0 {NTLM-1.05 => NTLM-1.09}/MD4/pm_to_blib | 0 {NTLM-1.05 => NTLM-1.09}/META.yml | 6 +- {NTLM-1.05 => NTLM-1.09}/Makefile | 207 +++++++------- {NTLM-1.05 => NTLM-1.09}/Makefile.PL | 0 .../blib/lib/Authen => NTLM-1.09}/NTLM.pm | 22 +- NTLM-1.09/README | 104 +++++++ {NTLM-1.05 => NTLM-1.09}/blib/arch/.exists | 0 .../blib/arch/auto/Authen/NTLM/.exists | 0 .../blib/arch/auto/Authen/NTLM/DES/.exists | 0 .../blib/arch/auto/Authen/NTLM/MD4/.exists | 0 {NTLM-1.05 => NTLM-1.09}/blib/bin/.exists | 0 .../blib/lib/Authen/.exists | 0 .../blib/lib/Authen}/NTLM.pm | 22 +- .../blib/lib/Authen/NTLM/.exists | 0 .../blib/lib/Authen/NTLM/DES.pm | 0 .../blib/lib/Authen/NTLM/MD4.pm | 0 .../blib/lib/auto/Authen/NTLM/.exists | 0 .../blib/lib/auto/Authen/NTLM/DES/.exists | 0 .../blib/lib/auto/Authen/NTLM/MD4/.exists | 0 {NTLM-1.05 => NTLM-1.09}/blib/man1/.exists | 0 {NTLM-1.05 => NTLM-1.09}/blib/man3/.exists | 0 .../blib/man3/Authen::NTLM.3pm | 59 ++-- {NTLM-1.05 => NTLM-1.09}/blib/script/.exists | 0 {NTLM-1.05 => NTLM-1.09}/pm_to_blib | 0 {NTLM-1.05 => NTLM-1.09}/t/01_load.t | 0 {NTLM-1.05 => NTLM-1.09}/t/02_ntlm.t | 0 {NTLM-1.05 => NTLM-1.09}/t/03_oo.t | 0 {NTLM-1.05 => NTLM-1.09}/t/04_v2.t | 0 {NTLM-1.05 => NTLM-1.09}/t/99_pod.t | 0 README | 19 +- TIME | 2 + TODO | 8 +- VERSION | 2 +- VERSION_EXE | 2 +- W/paypal_reply/paypal_bilan | 7 +- W/paypal_reply/paypal_build_invoices | 13 +- file.csv => file.txt | 27 +- i3 | 4 +- imapsync | 48 ++-- index.shtml | 81 +++--- memo | 159 ++++++++++- test2.bat | 4 +- tests.sh | 165 ++++++++--- 98 files changed, 1701 insertions(+), 597 deletions(-) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/Changes (98%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/MANIFEST (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/META.yml (97%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/Makefile.PL (98%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/README (98%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/build_dist.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/build_ldif.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/cleanTest.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/copy_folder.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/cyrus_expire.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/cyrus_expunge.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/find_dup_msgs.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/idle.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/imap_to_mbox.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/imtestExample.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/migrate_mail2.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/migrate_mbox.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/populate_mailbox.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/examples/sharedFolder.pl (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient.pm (93%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient.pod (97%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/BodyStructure.pm (99%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/BodyStructure/Parse.grammar (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/BodyStructure/Parse.pm (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/BodyStructure/Parse.pod (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/MessageSet.pm (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/Thread.grammar (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/Thread.pm (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/lib/Mail/IMAPClient/Thread.pod (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/prepare_dist (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/basic.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/body_string.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/bodystructure.t (91%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/fetch_hash.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/messageset.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/pod.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/simple.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/t/thread.t (100%) rename {Mail-IMAPClient-3.28 => Mail-IMAPClient-3.30}/test_template.txt (100%) delete mode 100644 NTLM-1.05/README create mode 100644 NTLM-1.09/COPYING-Artistic create mode 100644 NTLM-1.09/COPYING-GPL rename {NTLM-1.05 => NTLM-1.09}/Changes (83%) rename {NTLM-1.05 => NTLM-1.09}/DES/DES.pm (100%) rename {NTLM-1.05 => NTLM-1.09}/DES/Makefile (78%) rename {NTLM-1.05 => NTLM-1.09}/DES/Makefile.PL (100%) rename {NTLM-1.05 => NTLM-1.09}/DES/pm_to_blib (100%) rename {NTLM-1.05 => NTLM-1.09}/MANIFEST (100%) rename {NTLM-1.05 => NTLM-1.09}/MD4/MD4.pm (100%) rename {NTLM-1.05 => NTLM-1.09}/MD4/Makefile (78%) rename {NTLM-1.05 => NTLM-1.09}/MD4/Makefile.PL (100%) rename {NTLM-1.05 => NTLM-1.09}/MD4/pm_to_blib (100%) rename {NTLM-1.05 => NTLM-1.09}/META.yml (78%) rename {NTLM-1.05 => NTLM-1.09}/Makefile (80%) rename {NTLM-1.05 => NTLM-1.09}/Makefile.PL (100%) rename {NTLM-1.05/blib/lib/Authen => NTLM-1.09}/NTLM.pm (94%) create mode 100644 NTLM-1.09/README rename {NTLM-1.05 => NTLM-1.09}/blib/arch/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/arch/auto/Authen/NTLM/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/arch/auto/Authen/NTLM/DES/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/arch/auto/Authen/NTLM/MD4/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/bin/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/Authen/.exists (100%) rename {NTLM-1.05 => NTLM-1.09/blib/lib/Authen}/NTLM.pm (94%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/Authen/NTLM/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/Authen/NTLM/DES.pm (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/Authen/NTLM/MD4.pm (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/auto/Authen/NTLM/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/auto/Authen/NTLM/DES/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/lib/auto/Authen/NTLM/MD4/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/man1/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/man3/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/blib/man3/Authen::NTLM.3pm (92%) rename {NTLM-1.05 => NTLM-1.09}/blib/script/.exists (100%) rename {NTLM-1.05 => NTLM-1.09}/pm_to_blib (100%) rename {NTLM-1.05 => NTLM-1.09}/t/01_load.t (100%) rename {NTLM-1.05 => NTLM-1.09}/t/02_ntlm.t (100%) rename {NTLM-1.05 => NTLM-1.09}/t/03_oo.t (100%) rename {NTLM-1.05 => NTLM-1.09}/t/04_v2.t (100%) rename {NTLM-1.05 => NTLM-1.09}/t/99_pod.t (100%) rename file.csv => file.txt (53%) diff --git a/CREDITS b/CREDITS index df1132a..02a8b42 100644 --- a/CREDITS +++ b/CREDITS @@ -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 diff --git a/ChangeLog b/ChangeLog index 0ea6f77..af517f3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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. ---------------------------- diff --git a/FAQ b/FAQ index bc776e3..385fcdd 100644 --- a/FAQ +++ b/FAQ @@ -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) diff --git a/Mail-IMAPClient-3.28/Changes b/Mail-IMAPClient-3.30/Changes similarity index 98% rename from Mail-IMAPClient-3.28/Changes rename to Mail-IMAPClient-3.30/Changes index 137a4c7..eb68a41 100644 --- a/Mail-IMAPClient-3.28/Changes +++ b/Mail-IMAPClient-3.30/Changes @@ -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 diff --git a/Mail-IMAPClient-3.28/MANIFEST b/Mail-IMAPClient-3.30/MANIFEST similarity index 100% rename from Mail-IMAPClient-3.28/MANIFEST rename to Mail-IMAPClient-3.30/MANIFEST diff --git a/Mail-IMAPClient-3.28/META.yml b/Mail-IMAPClient-3.30/META.yml similarity index 97% rename from Mail-IMAPClient-3.28/META.yml rename to Mail-IMAPClient-3.30/META.yml index e10d446..7bbbd07 100644 --- a/Mail-IMAPClient-3.28/META.yml +++ b/Mail-IMAPClient-3.30/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Mail-IMAPClient -version: 3.28 +version: 3.30 abstract: IMAP4 client library author: - Phil Pearl (Lobbes) diff --git a/Mail-IMAPClient-3.28/Makefile.PL b/Mail-IMAPClient-3.30/Makefile.PL similarity index 98% rename from Mail-IMAPClient-3.28/Makefile.PL rename to Mail-IMAPClient-3.30/Makefile.PL index 82ce861..14d3005 100644 --- a/Mail-IMAPClient-3.28/Makefile.PL +++ b/Mail-IMAPClient-3.30/Makefile.PL @@ -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)" }, diff --git a/Mail-IMAPClient-3.28/README b/Mail-IMAPClient-3.30/README similarity index 98% rename from Mail-IMAPClient-3.28/README rename to Mail-IMAPClient-3.30/README index 26a65fb..3aa5e11 100644 --- a/Mail-IMAPClient-3.28/README +++ b/Mail-IMAPClient-3.30/README @@ -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 diff --git a/Mail-IMAPClient-3.28/examples/build_dist.pl b/Mail-IMAPClient-3.30/examples/build_dist.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/build_dist.pl rename to Mail-IMAPClient-3.30/examples/build_dist.pl diff --git a/Mail-IMAPClient-3.28/examples/build_ldif.pl b/Mail-IMAPClient-3.30/examples/build_ldif.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/build_ldif.pl rename to Mail-IMAPClient-3.30/examples/build_ldif.pl diff --git a/Mail-IMAPClient-3.28/examples/cleanTest.pl b/Mail-IMAPClient-3.30/examples/cleanTest.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/cleanTest.pl rename to Mail-IMAPClient-3.30/examples/cleanTest.pl diff --git a/Mail-IMAPClient-3.28/examples/copy_folder.pl b/Mail-IMAPClient-3.30/examples/copy_folder.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/copy_folder.pl rename to Mail-IMAPClient-3.30/examples/copy_folder.pl diff --git a/Mail-IMAPClient-3.28/examples/cyrus_expire.pl b/Mail-IMAPClient-3.30/examples/cyrus_expire.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/cyrus_expire.pl rename to Mail-IMAPClient-3.30/examples/cyrus_expire.pl diff --git a/Mail-IMAPClient-3.28/examples/cyrus_expunge.pl b/Mail-IMAPClient-3.30/examples/cyrus_expunge.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/cyrus_expunge.pl rename to Mail-IMAPClient-3.30/examples/cyrus_expunge.pl diff --git a/Mail-IMAPClient-3.28/examples/find_dup_msgs.pl b/Mail-IMAPClient-3.30/examples/find_dup_msgs.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/find_dup_msgs.pl rename to Mail-IMAPClient-3.30/examples/find_dup_msgs.pl diff --git a/Mail-IMAPClient-3.28/examples/idle.pl b/Mail-IMAPClient-3.30/examples/idle.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/idle.pl rename to Mail-IMAPClient-3.30/examples/idle.pl diff --git a/Mail-IMAPClient-3.28/examples/imap_to_mbox.pl b/Mail-IMAPClient-3.30/examples/imap_to_mbox.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/imap_to_mbox.pl rename to Mail-IMAPClient-3.30/examples/imap_to_mbox.pl diff --git a/Mail-IMAPClient-3.28/examples/imtestExample.pl b/Mail-IMAPClient-3.30/examples/imtestExample.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/imtestExample.pl rename to Mail-IMAPClient-3.30/examples/imtestExample.pl diff --git a/Mail-IMAPClient-3.28/examples/migrate_mail2.pl b/Mail-IMAPClient-3.30/examples/migrate_mail2.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/migrate_mail2.pl rename to Mail-IMAPClient-3.30/examples/migrate_mail2.pl diff --git a/Mail-IMAPClient-3.28/examples/migrate_mbox.pl b/Mail-IMAPClient-3.30/examples/migrate_mbox.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/migrate_mbox.pl rename to Mail-IMAPClient-3.30/examples/migrate_mbox.pl diff --git a/Mail-IMAPClient-3.28/examples/populate_mailbox.pl b/Mail-IMAPClient-3.30/examples/populate_mailbox.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/populate_mailbox.pl rename to Mail-IMAPClient-3.30/examples/populate_mailbox.pl diff --git a/Mail-IMAPClient-3.28/examples/sharedFolder.pl b/Mail-IMAPClient-3.30/examples/sharedFolder.pl similarity index 100% rename from Mail-IMAPClient-3.28/examples/sharedFolder.pl rename to Mail-IMAPClient-3.30/examples/sharedFolder.pl diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pm b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pm similarity index 93% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pm rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pm index cebb696..ef09340 100644 --- a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pm +++ b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pm @@ -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 } diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pod b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pod similarity index 97% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pod rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pod index 6a4b12c..f445bc2 100644 --- a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient.pod +++ b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient.pod @@ -649,7 +649,11 @@ The B 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 method will -return C. +return C. Supported capabilities are cached by the client, +however, this cache is deleted after a connection is set to +I and when L is called. + +See also L. =head2 close @@ -668,6 +672,18 @@ Note: this closes the currently selected folder, not the IMAP session. See also L, L, and RFC3501. +=head2 compress + +Example: + + $imap->compress or die "Could not enable RFC4978 compression: $@\n"; + +The B method accepts no arguments. This method is used to +instruct the server to use the DEFLATE (RFC1951) compression +extension. See the L 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 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 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, L, and L may automatically invoke B see the documentation of each method for details. +If the L parameter is set, the L method will automatically be called after successful authentication. + See also L and L 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 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 to +deflate/inflate the data to/from the server. This attribute is used +in the L method. + +See also L and L. + +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 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). Even if it doesn't fix the problem, -testing with both I 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 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 so this -parameter may become deprecated in the future. +See also L. =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 method call or separately by calling the L object -method. +Specifies the port on which the IMAP server is listening. A default +value of 993 (if L is true) or 143 is set during a call to +L if no value is provided by the caller. This argument can +be supplied with the L method call or separately by calling the +L object method. =head2 Prewritemethod @@ -3186,6 +3216,18 @@ object itself. See also L. +=head2 Readmoremethod + +B 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 diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure.pm b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure.pm similarity index 99% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure.pm rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure.pm index 0a91d2b..589fd9c 100644 --- a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure.pm +++ b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure.pm @@ -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) } diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.grammar b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.grammar similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.grammar rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.grammar diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.pm b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.pm similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.pm rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.pm diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.pod b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.pod similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/BodyStructure/Parse.pod rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/BodyStructure/Parse.pod diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/MessageSet.pm b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/MessageSet.pm similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/MessageSet.pm rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/MessageSet.pm diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.grammar b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.grammar similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.grammar rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.grammar diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.pm b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.pm similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.pm rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.pm diff --git a/Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.pod b/Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.pod similarity index 100% rename from Mail-IMAPClient-3.28/lib/Mail/IMAPClient/Thread.pod rename to Mail-IMAPClient-3.30/lib/Mail/IMAPClient/Thread.pod diff --git a/Mail-IMAPClient-3.28/prepare_dist b/Mail-IMAPClient-3.30/prepare_dist similarity index 100% rename from Mail-IMAPClient-3.28/prepare_dist rename to Mail-IMAPClient-3.30/prepare_dist diff --git a/Mail-IMAPClient-3.28/t/basic.t b/Mail-IMAPClient-3.30/t/basic.t similarity index 100% rename from Mail-IMAPClient-3.28/t/basic.t rename to Mail-IMAPClient-3.30/t/basic.t diff --git a/Mail-IMAPClient-3.28/t/body_string.t b/Mail-IMAPClient-3.30/t/body_string.t similarity index 100% rename from Mail-IMAPClient-3.28/t/body_string.t rename to Mail-IMAPClient-3.30/t/body_string.t diff --git a/Mail-IMAPClient-3.28/t/bodystructure.t b/Mail-IMAPClient-3.30/t/bodystructure.t similarity index 91% rename from Mail-IMAPClient-3.28/t/bodystructure.t rename to Mail-IMAPClient-3.30/t/bodystructure.t index 8bcf3e6..c81bfff 100644 --- a/Mail-IMAPClient-3.28/t/bodystructure.t +++ b/Mail-IMAPClient-3.30/t/bodystructure.t @@ -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, [ '' ], "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 ""}; + my $env = Mail::IMAPClient::BodyStructure::Envelope->parse_string($str); + is( $env->subject, "subj", "subject" ); + is( $env->inreplyto, "NIL", "inreplyto" ); + is( $env->messageid, "", "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, [ '' ], "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 "")}; + my $env = Mail::IMAPClient::BodyStructure::Envelope->parse_string($str); + is( $env->subject, "subj", "subject" ); + is( $env->inreplyto, "NIL", "inreplyto" ); + is( $env->messageid, "", "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, [ '' ], "to_addresses" ); +} diff --git a/Mail-IMAPClient-3.28/t/fetch_hash.t b/Mail-IMAPClient-3.30/t/fetch_hash.t similarity index 100% rename from Mail-IMAPClient-3.28/t/fetch_hash.t rename to Mail-IMAPClient-3.30/t/fetch_hash.t diff --git a/Mail-IMAPClient-3.28/t/messageset.t b/Mail-IMAPClient-3.30/t/messageset.t similarity index 100% rename from Mail-IMAPClient-3.28/t/messageset.t rename to Mail-IMAPClient-3.30/t/messageset.t diff --git a/Mail-IMAPClient-3.28/t/pod.t b/Mail-IMAPClient-3.30/t/pod.t similarity index 100% rename from Mail-IMAPClient-3.28/t/pod.t rename to Mail-IMAPClient-3.30/t/pod.t diff --git a/Mail-IMAPClient-3.28/t/simple.t b/Mail-IMAPClient-3.30/t/simple.t similarity index 100% rename from Mail-IMAPClient-3.28/t/simple.t rename to Mail-IMAPClient-3.30/t/simple.t diff --git a/Mail-IMAPClient-3.28/t/thread.t b/Mail-IMAPClient-3.30/t/thread.t similarity index 100% rename from Mail-IMAPClient-3.28/t/thread.t rename to Mail-IMAPClient-3.30/t/thread.t diff --git a/Mail-IMAPClient-3.28/test_template.txt b/Mail-IMAPClient-3.30/test_template.txt similarity index 100% rename from Mail-IMAPClient-3.28/test_template.txt rename to Mail-IMAPClient-3.30/test_template.txt diff --git a/Makefile b/Makefile index d888d0d..2564221 100644 --- a/Makefile +++ b/Makefile @@ -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) \ diff --git a/NTLM-1.05/README b/NTLM-1.05/README deleted file mode 100644 index 12c9c14..0000000 --- a/NTLM-1.05/README +++ /dev/null @@ -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. - - -Perl port of this code is Copyright (C) 2001 Mark Bush. - - -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. - diff --git a/NTLM-1.09/COPYING-Artistic b/NTLM-1.09/COPYING-Artistic new file mode 100644 index 0000000..4ff3f42 --- /dev/null +++ b/NTLM-1.09/COPYING-Artistic @@ -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 diff --git a/NTLM-1.09/COPYING-GPL b/NTLM-1.09/COPYING-GPL new file mode 100644 index 0000000..16df98e --- /dev/null +++ b/NTLM-1.09/COPYING-GPL @@ -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. + + + Copyright (C) 19yy + + 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. + + , 1 April 1989 + Ty Coon, President of Vice + +That's all there is to it! diff --git a/NTLM-1.05/Changes b/NTLM-1.09/Changes similarity index 83% rename from NTLM-1.05/Changes rename to NTLM-1.09/Changes index 115231e..06c6845 100644 --- a/NTLM-1.05/Changes +++ b/NTLM-1.09/Changes @@ -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 - fix minor bug in last release - thanks to Dmitry Karasik diff --git a/NTLM-1.05/DES/DES.pm b/NTLM-1.09/DES/DES.pm similarity index 100% rename from NTLM-1.05/DES/DES.pm rename to NTLM-1.09/DES/DES.pm diff --git a/NTLM-1.05/DES/Makefile b/NTLM-1.09/DES/Makefile similarity index 78% rename from NTLM-1.05/DES/Makefile rename to NTLM-1.09/DES/Makefile index 747da8d..212e76e 100644 --- a/NTLM-1.05/DES/Makefile +++ b/NTLM-1.09/DES/Makefile @@ -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 , Mark Bush ] +# 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 , Mark Bush ' >> 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) '' > $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' $(DISTNAME)' >> $(DISTNAME).ppd +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) '' >> $(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 diff --git a/NTLM-1.05/DES/Makefile.PL b/NTLM-1.09/DES/Makefile.PL similarity index 100% rename from NTLM-1.05/DES/Makefile.PL rename to NTLM-1.09/DES/Makefile.PL diff --git a/NTLM-1.05/DES/pm_to_blib b/NTLM-1.09/DES/pm_to_blib similarity index 100% rename from NTLM-1.05/DES/pm_to_blib rename to NTLM-1.09/DES/pm_to_blib diff --git a/NTLM-1.05/MANIFEST b/NTLM-1.09/MANIFEST similarity index 100% rename from NTLM-1.05/MANIFEST rename to NTLM-1.09/MANIFEST diff --git a/NTLM-1.05/MD4/MD4.pm b/NTLM-1.09/MD4/MD4.pm similarity index 100% rename from NTLM-1.05/MD4/MD4.pm rename to NTLM-1.09/MD4/MD4.pm diff --git a/NTLM-1.05/MD4/Makefile b/NTLM-1.09/MD4/Makefile similarity index 78% rename from NTLM-1.05/MD4/Makefile rename to NTLM-1.09/MD4/Makefile index bbf9732..849b417 100644 --- a/NTLM-1.05/MD4/Makefile +++ b/NTLM-1.09/MD4/Makefile @@ -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 , Mark Bush ] +# 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 , Mark Bush ' >> 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) '' > $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' $(DISTNAME)' >> $(DISTNAME).ppd +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) '' >> $(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 diff --git a/NTLM-1.05/MD4/Makefile.PL b/NTLM-1.09/MD4/Makefile.PL similarity index 100% rename from NTLM-1.05/MD4/Makefile.PL rename to NTLM-1.09/MD4/Makefile.PL diff --git a/NTLM-1.05/MD4/pm_to_blib b/NTLM-1.09/MD4/pm_to_blib similarity index 100% rename from NTLM-1.05/MD4/pm_to_blib rename to NTLM-1.09/MD4/pm_to_blib diff --git a/NTLM-1.05/META.yml b/NTLM-1.09/META.yml similarity index 78% rename from NTLM-1.05/META.yml rename to NTLM-1.09/META.yml index df2d97b..3c07f98 100644 --- a/NTLM-1.05/META.yml +++ b/NTLM-1.09/META.yml @@ -1,10 +1,10 @@ --- #YAML:1.0 name: Authen-NTLM -version: 1.05 +version: 1.09 abstract: ~ -license: ~ +license: perl author: - - David (Buzz) Bussenschutt , Mark Bush + - David (Buzz) Bussenschutt , Mark Bush , Nick Bebout generated_by: ExtUtils::MakeMaker version 6.42 distribution_type: module requires: diff --git a/NTLM-1.05/Makefile b/NTLM-1.09/Makefile similarity index 80% rename from NTLM-1.05/Makefile rename to NTLM-1.09/Makefile index a2f96da..98141fc 100644 --- a/NTLM-1.05/Makefile +++ b/NTLM-1.09/Makefile @@ -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 , Mark Bush ] +# 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 , Mark Bush ' >> 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) '' > $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' $(DISTNAME)' >> $(DISTNAME).ppd +ppd : + $(NOECHO) $(ECHO) '' > $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' David (Buzz) Bussenschutt <davidbuzz@gmail.com>, Mark Bush <Mark.Bush@bushnet.demon.co.uk>' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd - $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd + $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) ' ' >> $(DISTNAME).ppd $(NOECHO) $(ECHO) '' >> $(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 diff --git a/NTLM-1.05/Makefile.PL b/NTLM-1.09/Makefile.PL similarity index 100% rename from NTLM-1.05/Makefile.PL rename to NTLM-1.09/Makefile.PL diff --git a/NTLM-1.05/blib/lib/Authen/NTLM.pm b/NTLM-1.09/NTLM.pm similarity index 94% rename from NTLM-1.05/blib/lib/Authen/NTLM.pm rename to NTLM-1.09/NTLM.pm index 5587f54..60af70e 100644 --- a/NTLM-1.05/blib/lib/Authen/NTLM.pm +++ b/NTLM-1.09/NTLM.pm @@ -148,6 +148,10 @@ L, L, L =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 - released by David Bussenschutt 9th Aug 2007 @@ -155,7 +159,7 @@ L, L, L =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]; diff --git a/NTLM-1.09/README b/NTLM-1.09/README new file mode 100644 index 0000000..1354a9d --- /dev/null +++ b/NTLM-1.09/README @@ -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. + + +Parts of this code Copyright (C) 2007 David (Buzz) Bussenschutt. + + +Perl port of this code is Copyright (C) 2001 Mark Bush. + + +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. diff --git a/NTLM-1.05/blib/arch/.exists b/NTLM-1.09/blib/arch/.exists similarity index 100% rename from NTLM-1.05/blib/arch/.exists rename to NTLM-1.09/blib/arch/.exists diff --git a/NTLM-1.05/blib/arch/auto/Authen/NTLM/.exists b/NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.05/blib/arch/auto/Authen/NTLM/.exists rename to NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists diff --git a/NTLM-1.05/blib/arch/auto/Authen/NTLM/DES/.exists b/NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists similarity index 100% rename from NTLM-1.05/blib/arch/auto/Authen/NTLM/DES/.exists rename to NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists diff --git a/NTLM-1.05/blib/arch/auto/Authen/NTLM/MD4/.exists b/NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists similarity index 100% rename from NTLM-1.05/blib/arch/auto/Authen/NTLM/MD4/.exists rename to NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists diff --git a/NTLM-1.05/blib/bin/.exists b/NTLM-1.09/blib/bin/.exists similarity index 100% rename from NTLM-1.05/blib/bin/.exists rename to NTLM-1.09/blib/bin/.exists diff --git a/NTLM-1.05/blib/lib/Authen/.exists b/NTLM-1.09/blib/lib/Authen/.exists similarity index 100% rename from NTLM-1.05/blib/lib/Authen/.exists rename to NTLM-1.09/blib/lib/Authen/.exists diff --git a/NTLM-1.05/NTLM.pm b/NTLM-1.09/blib/lib/Authen/NTLM.pm similarity index 94% rename from NTLM-1.05/NTLM.pm rename to NTLM-1.09/blib/lib/Authen/NTLM.pm index 5587f54..60af70e 100644 --- a/NTLM-1.05/NTLM.pm +++ b/NTLM-1.09/blib/lib/Authen/NTLM.pm @@ -148,6 +148,10 @@ L, L, L =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 - released by David Bussenschutt 9th Aug 2007 @@ -155,7 +159,7 @@ L, L, L =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]; diff --git a/NTLM-1.05/blib/lib/Authen/NTLM/.exists b/NTLM-1.09/blib/lib/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.05/blib/lib/Authen/NTLM/.exists rename to NTLM-1.09/blib/lib/Authen/NTLM/.exists diff --git a/NTLM-1.05/blib/lib/Authen/NTLM/DES.pm b/NTLM-1.09/blib/lib/Authen/NTLM/DES.pm similarity index 100% rename from NTLM-1.05/blib/lib/Authen/NTLM/DES.pm rename to NTLM-1.09/blib/lib/Authen/NTLM/DES.pm diff --git a/NTLM-1.05/blib/lib/Authen/NTLM/MD4.pm b/NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm similarity index 100% rename from NTLM-1.05/blib/lib/Authen/NTLM/MD4.pm rename to NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm diff --git a/NTLM-1.05/blib/lib/auto/Authen/NTLM/.exists b/NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.05/blib/lib/auto/Authen/NTLM/.exists rename to NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists diff --git a/NTLM-1.05/blib/lib/auto/Authen/NTLM/DES/.exists b/NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists similarity index 100% rename from NTLM-1.05/blib/lib/auto/Authen/NTLM/DES/.exists rename to NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists diff --git a/NTLM-1.05/blib/lib/auto/Authen/NTLM/MD4/.exists b/NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists similarity index 100% rename from NTLM-1.05/blib/lib/auto/Authen/NTLM/MD4/.exists rename to NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists diff --git a/NTLM-1.05/blib/man1/.exists b/NTLM-1.09/blib/man1/.exists similarity index 100% rename from NTLM-1.05/blib/man1/.exists rename to NTLM-1.09/blib/man1/.exists diff --git a/NTLM-1.05/blib/man3/.exists b/NTLM-1.09/blib/man3/.exists similarity index 100% rename from NTLM-1.05/blib/man3/.exists rename to NTLM-1.09/blib/man3/.exists diff --git a/NTLM-1.05/blib/man3/Authen::NTLM.3pm b/NTLM-1.09/blib/man3/Authen::NTLM.3pm similarity index 92% rename from NTLM-1.05/blib/man3/Authen::NTLM.3pm rename to NTLM-1.09/blib/man3/Authen::NTLM.3pm index 7e3bc1e..5bea465 100644 --- a/NTLM-1.05/blib/man3/Authen::NTLM.3pm +++ b/NTLM-1.09/blib/man3/Authen::NTLM.3pm @@ -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 \& which, itself, has based its NTLM implementation on F. 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 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 is called, then the next call to C 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 \- released by David Bussenschutt 9th Aug 2007 diff --git a/NTLM-1.05/blib/script/.exists b/NTLM-1.09/blib/script/.exists similarity index 100% rename from NTLM-1.05/blib/script/.exists rename to NTLM-1.09/blib/script/.exists diff --git a/NTLM-1.05/pm_to_blib b/NTLM-1.09/pm_to_blib similarity index 100% rename from NTLM-1.05/pm_to_blib rename to NTLM-1.09/pm_to_blib diff --git a/NTLM-1.05/t/01_load.t b/NTLM-1.09/t/01_load.t similarity index 100% rename from NTLM-1.05/t/01_load.t rename to NTLM-1.09/t/01_load.t diff --git a/NTLM-1.05/t/02_ntlm.t b/NTLM-1.09/t/02_ntlm.t similarity index 100% rename from NTLM-1.05/t/02_ntlm.t rename to NTLM-1.09/t/02_ntlm.t diff --git a/NTLM-1.05/t/03_oo.t b/NTLM-1.09/t/03_oo.t similarity index 100% rename from NTLM-1.05/t/03_oo.t rename to NTLM-1.09/t/03_oo.t diff --git a/NTLM-1.05/t/04_v2.t b/NTLM-1.09/t/04_v2.t similarity index 100% rename from NTLM-1.05/t/04_v2.t rename to NTLM-1.09/t/04_v2.t diff --git a/NTLM-1.05/t/99_pod.t b/NTLM-1.09/t/99_pod.t similarity index 100% rename from NTLM-1.05/t/99_pod.t rename to NTLM-1.09/t/99_pod.t diff --git a/README b/README index 897f262..f3df037 100644 --- a/README +++ b/README @@ -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 $ diff --git a/TIME b/TIME index 8ee8200..2e06442 100644 --- a/TIME +++ b/TIME @@ -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. diff --git a/TODO b/TODO index b4ef37d..6295f99 100644 --- a/TODO +++ b/TODO @@ -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. diff --git a/VERSION b/VERSION index 3853217..5b29492 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.456 +1.463 diff --git a/VERSION_EXE b/VERSION_EXE index 3853217..5679d30 100644 --- a/VERSION_EXE +++ b/VERSION_EXE @@ -1 +1 @@ -1.456 +1.462 diff --git a/W/paypal_reply/paypal_bilan b/W/paypal_reply/paypal_bilan index d279915..3d914c8 100755 --- a/W/paypal_reply/paypal_bilan +++ b/W/paypal_reply/paypal_bilan @@ -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 ; diff --git a/W/paypal_reply/paypal_build_invoices b/W/paypal_reply/paypal_build_invoices index 55156ef..b7548ad 100755 --- a/W/paypal_reply/paypal_build_invoices +++ b/W/paypal_reply/paypal_build_invoices @@ -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 diff --git a/file.csv b/file.txt similarity index 53% rename from file.csv rename to file.txt index cd03ab9..9d931a7 100644 --- a/file.csv +++ b/file.txt @@ -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 diff --git a/i3 b/i3 index 1a9d84c..95412a2 100755 --- a/i3 +++ b/i3 @@ -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 "$@" diff --git a/imapsync b/imapsync index c805ecf..e8a1215 100755 --- a/imapsync +++ b/imapsync @@ -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 diff --git a/index.shtml b/index.shtml index 176cf9e..e0918a6 100644 --- a/index.shtml +++ b/index.shtml @@ -5,7 +5,7 @@ Imapsync: an IMAP migration tool ( release <!--#exec cmd="cat VERSION"--> ) - + @@ -29,8 +29,8 @@ @@ -39,11 +39,8 @@ imapsync logo

Welcome to the imapsync web site!

-Ten years old since release 1.1!
-(on Friday 29 July 2011) -

What is imapsync?

imapsync software is a command line tool allowing incremental and @@ -59,13 +56,22 @@ where the user plays independently on both sides. Use offlineimap (written by John Goerzen) for this purpose.

-

Some numbers

+

Some numbers for 2011

  • Number of imapsync users per month: between 2 and 3 thousands users
  • -
  • Number of imapsync transfers per month: between 3 and 8 millions transfers
  • -
  • Pourcentage of Windows users : 10%
  • -
  • Biggest user usage: 5 millions of IMAP mailbox transfers in a month (one every 2 seconds)
  • +
  • Number of imapsync transfers per month: between 3 and 11 millions transfers
  • +
  • Pourcentage between operating systems users running imapsync: +
      +
    • Linux: 65 %
    • +
    • Win32: 18 %
    • +
    • Darwin: 11 %
    • +
    • FreeBSD: 6 %
    • +
    • Solaris: 0.4 %
    • +
    • OpenBSD: 0.1 %
    • +
    +
  • +
  • Biggest user usage: more than 11 millions of IMAP mailbox transfers
@@ -81,37 +87,32 @@ where the user plays independently on both sides. Use offlineimap

New features or bugfixes since previous releases:

    +
  • 1.463
  • +
  • Update: include and use of Mail-IMAPClient-3.30 (imapsync.exe)
  • +
  • Usability: --subscribe option is on by defaut.
  • +
  • BugFix: Added --nocacheaftercopy to avoid bad uids in cache with --useuid or --usecache and strange uid generator like dbmail 2.2.17
  • +
  • BugFix: Avoid Perl warning 'Use of uninitialized value $uid1 in exists'. Thanks to Klaus Franken
  • + +
+ +
    +
  • 1.456
  • +
  • Added a file.txt example to batch massive migration (many mailboxes) on Windows or Unix
  • +
  • Added support to Yahoo as host1 (just add --sep1 "/" option. Add --ssl1 for encryption)
  • +
  • Empty default value for $h1_flags $h2_flags to avoid useless Perl warnings.
  • +
  • MDaemon 12.0.3 failure as host2 (successive APPEND are buggy on MDaemon)
  • +
+ +
  • 1.452
  • New feature: Added --search option allowing to select messages with the powerful IMAP SEARCH command.
  • Bugfix: Date reference to select messages with --maxdate --mindate is the beginning of imapsync run now.
  • Bugfix: Fixed ps call to work with Solaris 10. Thanks to Daniel Rohde.
  • Success: Kerio 7.2.0P1 success story.
  • -
  • Success: MDaemon 12.0.3 success story.
  • - - -
  • 1.446
  • -
  • Bugfix: Better --idatefromheader behavior (thank to Dax Kelson patches).
  • -
  • Usability: Now --delete2 sets --uidexpunge2 instead of --expunge2 if possible.
  • -
  • Usability: Adapted the usage output multiline character to Unix or Win, \ or ^
  • -
  • Bugfix: Avoid a "not a number" warning when size is null.
  • -
  • Bugfix: Added "Date" in the default --useheader list. It is ("Message-Id", "Message-ID", "Date")
  • -
  • Bugfix: allows bad header beginning with a blank character.
  • - -
  • 1.434
  • -
  • Bugfix: Changed the way imapsync knows whether a folder exists or not. Exchange might be happy and stop deconnecting for this reason.
  • -
  • Bugfix: Reconnections are well done in TLS mode now.
  • -
  • Bugfix: IMAP RFC 3501 and some imap servers require internal dates have a zone data. Default to +0000 when host1 doesn't give it.
  • -
  • Bugfix: Options --maxsize --minsize now really work with --useuid (1.422 had a cache issue).
  • -
  • Bugfix: Improved the way imapsync deals with headers:
      -
    • Stopped getting first 2KB body of message. Not a good idea in practice.
    • -
    • If massive get headers fails then take the whole header one by one (instead of body).
    • -
    • Default is like --useheader "Message-Id" --useheader "Message-ID" (instead of just "Message-Id").
    • -
    • Use header "Message-Id" and header "Date" as md5 signature when taking the whole header.
    • +
    • Success: MDaemon 12.0.3 success story as host1.
    -
  • -
This document last modified on -($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 $)

diff --git a/memo b/memo index cebdf78..5c988e7 100644 --- a/memo +++ b/memo @@ -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 < 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 ) } diff --git a/test2.bat b/test2.bat index e9a62a7..9c0f134 100755 --- a/test2.bat +++ b/test2.bat @@ -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 diff --git a/tests.sh b/tests.sh index 7e8fcf9..2bc62e6 100644 --- a/tests.sh +++ b/tests.sh @@ -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