diff options
author | Erwin Lansing <erwin@FreeBSD.org> | 2005-06-14 12:46:05 +0000 |
---|---|---|
committer | Erwin Lansing <erwin@FreeBSD.org> | 2005-06-14 12:46:05 +0000 |
commit | 707a576ad3d365622a19a5959b9d952050925a6c (patch) | |
tree | cc4ea9c38f1983a556fe86a7f25180cfcb3e4555 /mail/gotmail | |
parent | [1]: (diff) |
Update to 0.8.3 which includes our login patch
Notes
Notes:
svn path=/head/; revision=137434
Diffstat (limited to 'mail/gotmail')
-rw-r--r-- | mail/gotmail/Makefile | 5 | ||||
-rw-r--r-- | mail/gotmail/distinfo | 4 | ||||
-rw-r--r-- | mail/gotmail/files/patch-gotmail | 264 |
3 files changed, 4 insertions, 269 deletions
diff --git a/mail/gotmail/Makefile b/mail/gotmail/Makefile index f77caf29a7d0..03707ee7463a 100644 --- a/mail/gotmail/Makefile +++ b/mail/gotmail/Makefile @@ -6,8 +6,7 @@ # PORTNAME= gotmail -PORTVERSION= 0.8.2 -PORTREVISION= 1 +PORTVERSION= 0.8.3 CATEGORIES= mail perl5 MASTER_SITES= ${MASTER_SITE_SOURCEFORGE} MASTER_SITE_SUBDIR= ${PORTNAME} @@ -22,7 +21,7 @@ RUN_DEPENDS= curl:${PORTSDIR}/ftp/curl \ MAN1= ${PORTNAME}.1 NO_BUILD= yes USE_PERL5= yes -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +WRKSRC= ${WRKDIR}/${PORTNAME} pre-patch: ${PERL} -pi -e 's|\r$$||' ${WRKSRC}/${PORTNAME} diff --git a/mail/gotmail/distinfo b/mail/gotmail/distinfo index 72a3ecefd447..f30f18073151 100644 --- a/mail/gotmail/distinfo +++ b/mail/gotmail/distinfo @@ -1,2 +1,2 @@ -MD5 (gotmail-0.8.2.tar.gz) = f3e147ef51815bed175794c6910283f6 -SIZE (gotmail-0.8.2.tar.gz) = 26416 +MD5 (gotmail-0.8.3.tar.gz) = edabb8a870543098ed841ed6a4b13f25 +SIZE (gotmail-0.8.3.tar.gz) = 26886 diff --git a/mail/gotmail/files/patch-gotmail b/mail/gotmail/files/patch-gotmail deleted file mode 100644 index 63149724d6c5..000000000000 --- a/mail/gotmail/files/patch-gotmail +++ /dev/null @@ -1,264 +0,0 @@ ---- gotmail.orig Sun Oct 10 19:42:31 2004 -+++ gotmail Thu May 26 14:28:27 2005 -@@ -197,7 +197,7 @@ - # and also to Tim Dijkstra. -pik- - - sub parseConfig { -- if ("@ARGV" =~ /(\s|^)(-c|--config-file)\ ([\w\.~\/\-]*)(\s|$)/i) { -+ if ("@ARGV" =~ /(\s|^)(-c|--config-file)\ ([\w\.~\/\-\@]*)(\s|$)/i) { - $conf_file = $3; - if (! -r $conf_file) { - die "Config file <$conf_file> is not readable!\n"; -@@ -578,7 +578,7 @@ - # Get rid of any trailing space on options.. Just for neatness. - $options =~ s/ $//; - -- my($cmdline) = "$conf_curl \"$url\" $options -i -m 600 -D $tmp_headers" . -+ my($cmdline) = "$conf_curl \'$url\' $options -i -m 600 -D $tmp_headers" . - " -A \"Mozilla/4.73 [en] (Win98; I)\""; - - # Copy output to logfile if necessary -@@ -627,25 +627,23 @@ - { - dispText("Getting hotmail index page...\n"); - my(@index_page); ## This will have the login page. -- my($form_label); - -- my(@java_page) = getPage("http://www.hotmail.com/", "", 1, 1, 0); -- ## @java_page is now an intermediate page which checks if you -- ## have javascript enabled or not!! -- my($page) = join("", @java_page); -- -- my($check_java); -- if($page =~ m/<form.*hiddenform.*action=\"(\S+)\".*>/i) { -- $check_java = $1; -- } -- if ($check_java) { -+ @index_page = getPage("http://www.hotmail.com/", "", 1, 1, 0); -+ my($page) = join("", @index_page); -+ -+ ## @index_page is now an intermediate page which checks if you -+ ## have javascript enabled or not!! This code invokes the form -+ ## on that page to get you to the login/password page. -+ if($page =~ m/<form.*((hiddenform)|(fmHF)).*action=\"(\S+)\".*>/i) { -+ my $action = $4; -+ - ## This processing happens only for the "new" hotmail structure. - dispText("Processing java check....\n"); - my($inp); ## This var will store all the input fields. -- while($page =~ m/<\s*input\s+.*name=\"(\S+)\"\s+value=\"(\S+)\"/) { -- $inp .= "$1=$2\&"; -+ while($page =~ m/<\s*input\s+.*name=\"(\S+)\"(\s+id="\S+")?\s+value=\"(\S*)\"/) { - ## Get rid of the input field we processed. -- $page =~ s/<\s*input/some_weird_unique_value_jsdahf/; -+ $page = $'; -+ $inp .= "$1=" . uri_escape($3) . "\&"; - } - ## Get rid of the last "&" - $inp =~ s/&$//g; -@@ -658,52 +656,100 @@ - my($params) = "\@$tmp_formdata"; - - ## Hopefully this should get us to the correct index page. -- @index_page = getPage($check_java, $params, 1, 1, 0); -- $form_label = "hotmail_com"; -- } -- else { -- ## The "old" hotmail page structure -- @index_page = @java_page; -- $form_label = ""; -+ @index_page = getPage($action, $params, 1, 1, 0); -+ $page = join "", @index_page; - } - - # Find the form "ACTION" parameter... -- my($login_script) = ""; -- my($ctnum) = ""; -+ my($login_script); -+ my($login_new) = 0; - -- my $page = join "", @index_page; -- if ($page =~ m/<form.*${form_label}.*action=\"(\S+)\".*>/i) { -+ # Old - multiple forms for multiple domains -+ if ($page =~ m/<form.*hotmail_com.*action=\"(\S+)\".*>/i) { - $login_script = $1; - } -- -- if ($page =~ m/ct=([0-9]+)/i) { -- $ctnum = uri_escape($1); -+ # New - heavy javascript -+ elsif ($page =~ m/<form.*f1.*action=\"(\S+)\".*>/i) { -+ $login_script = $1; -+ $login_new = 1; - } -- -- if ($login_script eq "") { -- die "Page doesn't contain any form action field!\n"; -+ # Very old - simple form -+ elsif ($page =~ m/<form.*action=\"(\S+)\".*>/i) { -+ $login_script = $1; - } -+ else { -+ die "Page doesn't contain any form action field!\n"; -+ } - - my($FORMFILE) = new FileHandle "> $tmp_formdata" || - die "Couldn't open formdata file: $!\n"; -- print $FORMFILE ("login=" . uri_escape($login, "^A-Za-z") . -- "\&passwd=" . uri_escape($password, "^A-Za-z") . -- "\&svc=mail\&mspp_shared=1" . -- "\&domain=" . uri_escape($domain) . -- "\&RemoteDAPost=https://login.msnia.passport.com/ppsecure/post.asp" . -- "\&sec=share\&curmbox=ACTIVE\&js=yes\&_lang=EN" . -- "\&beta=0\&ishotmail=1\&id=2\&fs=1" . -- "\&cb=_lang%3dEN%26country%3dUS\&ct=$ctnum"); -+ -+ if( $login_new ) { -+ dispText("Using New Login...\n"); -+ -+ ## The actual action of the form is replace by javascript -+ ## (authentication depends on the domain of your user id). -+ ## and arguments are appended in javascript -+ if( $page =~ m/g_DO\["\Q$domain\E"\]\s*=\s*"([^"]+)\"/ ) { -+ $login_script = $1; -+ #dispText( "g_DO=$1\n" ); -+ } -+ if( $page =~ m/g_QS\s*=\s*"([^"]+)\"/ ) { -+ $login_script .= index($login_script,'?') >= 0 ? '&' : '?'; -+ $login_script .= $1; -+ #dispText( "g_QS=$1\n" ); -+ } -+ -+ ## Get (or calculate) the hidden fields of the form -+ my ( $PPFT, $PPSX, $PwdPad ); -+ { -+ if( $page =~ m/<\s*input\s+.*name=\"PPFT\"(\s+id="\S+")?\s+value=\"(\S*)\"/ ) { -+ $PPFT = $2; -+ #dispText( "PPFT=$PPFT\n" ); -+ } -+ if( $page =~ m/<\s*input\s+.*name=\"PPSX\"(\s+id="\S+")?\s+value=\"(\S*)\"/ ) { -+ $PPSX = $2; -+ #dispText( "PPSX=$PPSX\n" ); -+ } -+ { -+ my $Padding = "IfYouAreReadingThisYouHaveTooMuchFreeTime"; -+ $PwdPad = substr( $Padding, 0, length($Padding)-length($password) ); -+ #dispText( "PwdPad=$PwdPad\n" ); -+ } -+ } -+ -+ print $FORMFILE ("PPSX=$PPSX" . -+ "\&PwdPad=$PwdPad" . -+ "\&login=" . uri_escape($login . '@' . $domain, "^A-Za-z") . -+ "\&passwd=" . uri_escape($password, "^A-Za-z") . -+ "\&SI=" . uri_escape( ' Sign In ' ) . -+ "\&LoginOptions=3" . -+ "\&PPFT=" . uri_escape( $PPFT ) ); -+ } else { -+ dispText("Using Old Login...\n"); -+ my($ctnum) = ""; -+ if ($page =~ m/ct=([0-9]+)/i) { -+ $ctnum = uri_escape($1); -+ } -+ print $FORMFILE ("login=" . uri_escape($login, "^A-Za-z") . -+ "\&passwd=" . uri_escape($password, "^A-Za-z") . -+ "\&svc=mail\&mspp_shared=1" . -+ "\&domain=" . uri_escape($domain) . -+ "\&RemoteDAPost=https://login.msnia.passport.com/ppsecure/post.asp" . -+ "\&sec=share\&curmbox=ACTIVE\&js=yes\&_lang=EN" . -+ "\&beta=0\&ishotmail=1\&id=2\&fs=1" . -+ "\&cb=_lang%3dEN%26country%3dUS\&ct=$ctnum"); -+ } - - close $FORMFILE; - my($params) = "\@$tmp_formdata"; - - dispText("Logging in...\n"); - my(@login_page) = getPage($login_script, $params, 1, 1, 0); -+ $page = join "", @login_page; - - # Find where they are sending us now... - my($redirect_location) = ""; -- $page = join "", @login_page; - - # Now not needed per Chris Ebenezer's comments - # if ($domain eq 'msn.com') { -@@ -724,8 +770,9 @@ - - if ($page =~ m/top\.location\.replace\(\"(.*)\"\);/i) { - $redirect_location = $1; -- $redirect_location =~ s/\$/\\\$/g; -- } -+ } elsif ($page =~ m/meta\s*http-equiv="refresh"\s*content="0;\s*URL=([^"]+)"/i ) { -+ $redirect_location = $1; -+ } - - if ($redirect_location eq "") { - die("Hotmail's page structure has changed! (redirloc)\n"); -@@ -737,30 +784,32 @@ - if ($redirect_location =~ m/http:\/\/([^\/]+)\/(.*)$/i) { - $host = $1; - } else { -- die ("Could not parse redirect location"); -+ die ("Could not parse redirect location\n"); - } - - dispText("Following redirect...\n"); - my(@redirect_page) = getPage($redirect_location, "", 0, 1, 0); -+ $page = join "", @redirect_page; - - # Find where the inbox is located... -- my($inbox_location) = ""; -- $page = join "", @redirect_page; -+ my($inbox_location); - if ($page =~ m/Location: (\S+)/i) { - my $inbox_loc = $1; -+ if ($inbox_loc =~ m/\&RedirectLocation=(http[^\&]+)\&/i) { -+ $inbox_loc = uri_unescape($1); -+ } - $inbox_loc =~ /(.+)\/dasp\/ua_info.asp\?pg=browser_limit[^&]*(&.+)/; - $inbox_location = "$1\/HoTMail"; -- dispText("Going to Inbox Page: $inbox_location\n"); -- my(@redirect_page) = getPage($inbox_location, "", 1, 1, 0); - } elsif ($page =~ /unavailable/i) { - die("Hotmail is reporting that your account is temporarily " . -- "unavailable. Please try again later."); -- } -- -- if ($inbox_location eq "") { -+ "unavailable. Please try again later.\n"); -+ } else { - die("Hotmail's page structure has changed! (inboxloc)\n"); - } - -+ dispText("Going to Inbox Page: $inbox_location\n"); -+ getPage($inbox_location, "", 1, 1, 0); -+ - return $inbox_location; - } - -@@ -1008,7 +1057,7 @@ - open PR,"|" . $conf_procmail_bin; - print PR $output; - close PR; -- print "Done.\n"; -+ dispText("Done.\n"); - } - elsif ($resend_address eq "") { - my($output) = $Message; -@@ -1123,13 +1172,13 @@ - if ($conf_movespam) { - # Figure out the ID of the Spam folder - $spam_folder_id = getFolderId($host, $folder_index_url, $conf_movespam); -- print "\$spam_folder_id->".$spam_folder_id."\n"; -+ dispText("\$spam_folder_id->".$spam_folder_id."\n"); - } - - if ($conf_move_messages_after_download) { - # Figure out the ID of the move to folder - $move_folder_id = getFolderId($host, $folder_index_url, $conf_move_messages_after_download); -- print "\$move_folder_id->".$move_folder_id."\n"; -+ dispText("\$move_folder_id->".$move_folder_id."\n"); - } - - # Ok let's get the folder list! |