Benjamin Mako Hill started on a patch to fix it.  It is not finished
yet, but could be a base for others trying to fix this problem.

The patch get a bit of the way to parse the web pages from mailman
2.1.4, but it break the parsing of pages from mailman 2.0.

Anyway, here is the patch.

--- /usr/src/chroot-sid/usr/bin/listadmin       2005-06-25 23:02:37.000000000 
+0200
+++ /tmp/listadmin-2.1  2005-08-07 17:49:59.596821978 +0200
@@ -429,18 +429,12 @@
     }
     my $parse = HTML::TokeParser->new(\$page) || die;

-    $parse->get_tag ("title") || die;
-    my $title = $parse->get_trimmed_text ("/title") || die;
-    if ($title =~ /authentication/i) {
-       print STDERR
-               "Unable to log in. Is your username and password correct?\n";
-       return ();
-    }
     my $mmver;

     $parse->get_tag ("hr");
     $parse->get_tag ("h2") || return ();
     my $headline = $parse->get_trimmed_text ("/h2") || die;
+    print $headline;
     if ($headline =~ /subscription/i) {
        parse_subscriptions ($parse, \%data);
        my $token = $parse->get_token;
@@ -503,8 +497,9 @@
        $mmver = $ret if $ret;
        $parse->get_tag ("/table");
        $parse->get_tag ("hr");
+       $token = $parse->get_tag( "center" );
        $token = $parse->get_token;
-    } until ($token->[0] eq "S" && lc ($token->[1]) eq "input");
+    } until ( $token->[0] eq "S" &&  lc ($token->[1]) eq "input" );
     return ($mmver);
 }

@@ -536,8 +531,14 @@
     $parse->get_tag ("tr") || die;
     $parse->get_tag ("td") || die;
     $parse->get_tag ("td") || die;
+
     $from = $parse->get_trimmed_text("/td");

+    if ($from eq "Python Powered") {
+        $mmver = 2;
+        return ($mmver);
+    }
+
     $parse->get_tag ("tr") || die; # Reason: _or_ Subject:
     $parse->get_tag ("td") || die;
     my $field = $parse->get_trimmed_text ("/td");
@@ -624,7 +625,7 @@
     my $text = $parse->get_trimmed_text ("/address") || die;

     if ($text =~ /Mailman\s*v(ersion)? (\d+\.\d+)/) {
-       if ($mmver && $mmver != 0 + $2) {
+       if ($mmver && ( $mmver != 0 + $2 && $mmver != 0 + 2.1 ) ) {
            print STDERR "Unknown version of Mailman.  First I thought ",
                "this was version $mmver.\n", "Now version ", 0 + $2,
                " looks more likely.  Help!\n";


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to