overview of contrib-patches from http://rucus.ru.ac.za/~guy/ezmlm/contrib/
This commit is contained in:
parent
3bda5229b3
commit
c44dcd1a9a
9 changed files with 2525 additions and 0 deletions
19
ezmlm-web-ng/contrib-patches/README
Normal file
19
ezmlm-web-ng/contrib-patches/README
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
Source:
|
||||||
|
http://rucus.ru.ac.za/~guy/ezmlm/contrib/
|
||||||
|
|
||||||
|
all ezmlm-pm-patchs refer to Mail::Ezmlm -> ignored
|
||||||
|
|
||||||
|
1) ezmlm-web-andrew-pam-20030520.txt
|
||||||
|
- tooltip texts -> this is already fixed
|
||||||
|
- xhtml-tags in lowercase -> fixed in rev 26
|
||||||
|
|
||||||
|
2) ezmlm-web-andrew-pam-20040526.txt
|
||||||
|
- untaint mail-adresses -> better suited for Mail::Ezmlm -> ignored
|
||||||
|
|
||||||
|
3) ezmlm-web-gordon-rowell-20011024.txt
|
||||||
|
- delete only allowd, if user may create lists -> ignored
|
||||||
|
|
||||||
|
4) ezmlm-web-jose-celestino-20020208.txt
|
||||||
|
- support for newsletters -> ignored (for now)
|
||||||
|
- domain-based acl -> ignored
|
||||||
|
- filtered subscribers list for huge lists -> ignored (for now)
|
|
@ -0,0 +1,79 @@
|
||||||
|
From ledjon@ledjon.com Fri Mar 12 00:03:27 2004
|
||||||
|
Return-Path: <ledjon@ledjon.com>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Received: (qmail 56152 invoked by uid 1025); 11 Mar 2004 22:03:27 -0000
|
||||||
|
Received: (qmail-scanner-1.20rc3 56151 invoked by uid 82); 11 Mar 2004 22:03:27 -0000
|
||||||
|
Received: from 69-56-199-178.theplanet.com (HELO wylde.ledhosting.com) (69.56.199.178)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 11 Mar 2004 22:03:24 -0000
|
||||||
|
Received: (qmail 25788 invoked from network); 11 Mar 2004 17:03:18 -0500
|
||||||
|
Received: from atlnga1-ar3-4-64-009-109.atlnga1.dsl-verizon.net (HELO page) (4.64.9.109)
|
||||||
|
by 69-56-199-178.theplanet.com with SMTP; 11 Mar 2004 17:03:18 -0500
|
||||||
|
From: "Jon Coulter" <ledjon@ledjon.com>
|
||||||
|
To: <guy-ezmlm@rucus.ru.ac.za>
|
||||||
|
Subject: Mail::Ezmlm Patch
|
||||||
|
Date: Thu, 11 Mar 2004 17:03:24 -0500
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: multipart/mixed;
|
||||||
|
boundary="----=_NextPart_000_0000_01C4078A.C44C42F0"
|
||||||
|
X-Mailer: Microsoft Office Outlook, Build 11.0.5510
|
||||||
|
Thread-Index: AcQHtKkecjFWE5llQ6aIAIPcXCJAog==
|
||||||
|
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
|
||||||
|
X-Qmail-Scanner-Message-ID: <107904260763856141@server.rucus.ru.ac.za>
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 1642
|
||||||
|
|
||||||
|
This is a multi-part message in MIME format.
|
||||||
|
|
||||||
|
------=_NextPart_000_0000_01C4078A.C44C42F0
|
||||||
|
Content-Type: text/plain;
|
||||||
|
charset="us-ascii"
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
|
||||||
|
Your (quite wonderful) Mail::Ezmlm perl module has a bug in that I patched
|
||||||
|
some time ago for my own use, so I figured I'd go ahead and send it along to
|
||||||
|
you.
|
||||||
|
|
||||||
|
Basically it does something to the effect of 'return @array || undef' which
|
||||||
|
forces a scalar return (making it return @array as the number of items in
|
||||||
|
the array, rather then the items themselves)
|
||||||
|
|
||||||
|
This just replaces it with a trinary operator.
|
||||||
|
|
||||||
|
Feel free to use or ignore it at your own will. Thanks.
|
||||||
|
|
||||||
|
Jon Coulter
|
||||||
|
ledjon@ledjon.com
|
||||||
|
|
||||||
|
------=_NextPart_000_0000_01C4078A.C44C42F0
|
||||||
|
Content-Type: application/octet-stream;
|
||||||
|
name="Ezmlm.pm.patch"
|
||||||
|
Content-Transfer-Encoding: quoted-printable
|
||||||
|
Content-Disposition: attachment;
|
||||||
|
filename="Ezmlm.pm.patch"
|
||||||
|
|
||||||
|
*** /usr/lib/perl5/site_perl/5.8.0/Mail/Ezmlm.pm~ Wed Jul 16 00:44:01 =
|
||||||
|
2003=0A=
|
||||||
|
--- /usr/lib/perl5/site_perl/5.8.0/Mail/Ezmlm.pm Wed Jul 16 00:54:22 2003=0A=
|
||||||
|
***************=0A=
|
||||||
|
*** 245,251 ****=0A=
|
||||||
|
=0A=
|
||||||
|
if($?) {=0A=
|
||||||
|
$self->_seterror($?, 'error during ezmlm-list in =
|
||||||
|
subscribers()'); =0A=
|
||||||
|
! return @subscribers || undef;=0A=
|
||||||
|
} else {=0A=
|
||||||
|
$self->_seterror(undef);=0A=
|
||||||
|
return @subscribers; =0A=
|
||||||
|
--- 245,251 ----=0A=
|
||||||
|
=0A=
|
||||||
|
if($?) {=0A=
|
||||||
|
$self->_seterror($?, 'error during ezmlm-list in =
|
||||||
|
subscribers()'); =0A=
|
||||||
|
! return (scalar @subscribers ? @subscribers : undef);=0A=
|
||||||
|
} else {=0A=
|
||||||
|
$self->_seterror(undef);=0A=
|
||||||
|
return @subscribers; =0A=
|
||||||
|
|
||||||
|
------=_NextPart_000_0000_01C4078A.C44C42F0--
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
From lbraeuer@mpex.net Fri Mar 5 17:03:07 2004
|
||||||
|
Return-Path: <lbraeuer@mpex.net>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.net
|
||||||
|
Received: (qmail 49433 invoked by uid 1025); 5 Mar 2004 15:03:07 -0000
|
||||||
|
Received: (qmail-scanner-1.20rc3 49432 invoked by uid 82); 05 Mar 2004 15:03:07 -0000
|
||||||
|
Received: from endo.mpex.net (80.190.108.11)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 5 Mar 2004 15:03:04 -0000
|
||||||
|
Received: (qmail 21499 invoked by uid 509); 5 Mar 2004 15:02:59 -0000
|
||||||
|
Received: from unknown (HELO mpex.net) (217.225.11.124)
|
||||||
|
by 0 with SMTP; 5 Mar 2004 15:02:59 -0000
|
||||||
|
Message-ID: <404896A9.8030606@mpex.net>
|
||||||
|
Date: Fri, 05 Mar 2004 16:03:05 +0100
|
||||||
|
From: Lars Braeuer <lbraeuer@mpex.net>
|
||||||
|
Organization: MPeX.net GmbH
|
||||||
|
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113
|
||||||
|
X-Accept-Language: de, en-us, en
|
||||||
|
MIME-Version: 1.0
|
||||||
|
To: guy-ezmlm@rucus.net
|
||||||
|
Subject: Bug + fix in ezmlm.pm 0.04
|
||||||
|
Content-Type: text/plain; charset=us-ascii; format=flowed
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 1010
|
||||||
|
|
||||||
|
Addition: Just found out, that there's the same bug on line 138!
|
||||||
|
|
||||||
|
---------------
|
||||||
|
|
||||||
|
Hi Guy!
|
||||||
|
|
||||||
|
I just posted this on cpan, but I also wanted to let you know:
|
||||||
|
|
||||||
|
----------------
|
||||||
|
http://rt.cpan.org/NoAuth/Bug.html?id=5571
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Subject: Problem with dash in owner or sender address
|
||||||
|
|
||||||
|
In Ezmlm.pm 0.04 on line 85 the options are split at every dash ("-\w+"). So when trying to supply
|
||||||
|
an owner or sender address containing a dash i.e. someone@some-domain.com this domain is splitted in
|
||||||
|
two parts ("someone@some" and "-domain.com") causing this error: "ezmlm-make: fatal: dir and dot
|
||||||
|
must start with slash". This occurs because "-domain.com" is interpreted as an option which is of
|
||||||
|
course wrong.
|
||||||
|
|
||||||
|
This problem can be solved by adding a \s right in front of the -\w+ on line 85 of the module:
|
||||||
|
|
||||||
|
--- foreach (split(/["'](.+?)["']|(-\w+)/, $commandline)) {
|
||||||
|
+++ foreach (split(/["'](.+?)["']|(\s-\w+)/, $commandline)) {
|
||||||
|
|
||||||
|
This assures, that an option is split and not every occurence of a dash, even in a domain.
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
From sbeck@gossamer-threads.com Sat Oct 9 00:36:20 2004
|
||||||
|
Return-Path: <sbeck@gossamer-threads.com>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.net
|
||||||
|
Received: (qmail 94672 invoked by uid 1025); 8 Oct 2004 22:36:20 -0000
|
||||||
|
Received: from sbeck@gossamer-threads.com by server.rucus.ru.ac.za by uid 82 with qmail-scanner-1.22
|
||||||
|
(clamdscan: 0.75.1. Clear:RC:0(64.69.64.21):.
|
||||||
|
Processed in 3.991777 secs); 08 Oct 2004 22:36:20 -0000
|
||||||
|
Received: from gossamer.nmsrv.com (HELO gossamer-threads.com) (64.69.64.21)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 8 Oct 2004 22:36:16 -0000
|
||||||
|
Received: (qmail 17647 invoked from network); 8 Oct 2004 22:36:00 -0000
|
||||||
|
X-AntiVirus: Clean
|
||||||
|
Received: from unknown (HELO sbeck) (sbeck@64.180.111.209)
|
||||||
|
by gossamer.nmsrv.com with (RC4-MD5 encrypted) SMTP; 8 Oct 2004 22:36:00 -0000
|
||||||
|
Subject: Mail::Ezmlm tainting
|
||||||
|
From: Scott Beck <sbeck@gossamer-threads.com>
|
||||||
|
To: Guy Antony Halse <guy-ezmlm@rucus.net>
|
||||||
|
Content-Type: text/plain
|
||||||
|
Organization: Gossamer Threads
|
||||||
|
Message-Id: <1097274969.15328.32.camel@sbeck.office.gossamer-threads.com>
|
||||||
|
Mime-Version: 1.0
|
||||||
|
X-Mailer: Ximian Evolution 1.4.6
|
||||||
|
Date: Fri, 08 Oct 2004 15:36:09 -0700
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 810
|
||||||
|
|
||||||
|
Hi,
|
||||||
|
|
||||||
|
I just ran into a taint problem with Mail::Ezmlm on one of our servers.
|
||||||
|
In Mail/Ezmlm.pm you have a sub _checkaddress which validates an email
|
||||||
|
address that is passed off to system, however to just verify the address
|
||||||
|
is not enough for perl's -T tests. You must reassign it to a capture
|
||||||
|
from a regex. Here is a version of the function that fixes this (a
|
||||||
|
little hacky).
|
||||||
|
|
||||||
|
sub _checkaddress {
|
||||||
|
my($self, $address) = @_;
|
||||||
|
return 1 unless defined($address);
|
||||||
|
return 0 unless($address =~ /^(\S+\@\S+\.\S+)$/);
|
||||||
|
$_[1] = $1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
Cheers,
|
||||||
|
|
||||||
|
Scott
|
||||||
|
--
|
||||||
|
-------------------- Gossamer Threads Inc. ----------------------
|
||||||
|
Scott Beck Email: scott@gossamer-threads.com
|
||||||
|
Lead Software Developer Phone: (604) 687-5804
|
||||||
|
http://www.gossamer-threads.com Fax: (604) 687-5806
|
||||||
|
|
||||||
|
|
||||||
|
|
193
ezmlm-web-ng/contrib-patches/ezmlm-pm-scott-beck-20041009.txt
Normal file
193
ezmlm-web-ng/contrib-patches/ezmlm-pm-scott-beck-20041009.txt
Normal file
|
@ -0,0 +1,193 @@
|
||||||
|
From matt@tnpi.biz Mon Nov 15 21:21:15 2004
|
||||||
|
Return-Path: <matt@tnpi.biz>
|
||||||
|
Delivered-To: guy@rucus.ru.ac.za
|
||||||
|
Received: (qmail 48783 invoked by uid 1025); 15 Nov 2004 19:21:15 -0000
|
||||||
|
Received: from matt@tnpi.biz by server.rucus.ru.ac.za by uid 82 with qmail-scanner-1.22
|
||||||
|
(clamdscan: 0.75.1. Clear:RC:0(207.89.154.94):.
|
||||||
|
Processed in 2.727858 secs); 15 Nov 2004 19:21:15 -0000
|
||||||
|
Received: from matt-serv2.cdlc.mi.core.com (HELO mail.cadillac.net) (207.89.154.94)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 15 Nov 2004 19:21:12 -0000
|
||||||
|
Received: (qmail 5634 invoked by uid 89); 15 Nov 2004 19:21:06 -0000
|
||||||
|
Received: from unknown (HELO ?10.0.1.218?) (matt@cadillac.net@10.0.1.218)
|
||||||
|
by matt-serv2.cdlc.mi.core.com with (RC4-SHA encrypted) SMTP; 15 Nov 2004 19:21:06 -0000
|
||||||
|
Mime-Version: 1.0 (Apple Message framework v619)
|
||||||
|
To: guy@rucus.ru.ac.za
|
||||||
|
Message-Id: <7D5CC579-373B-11D9-A43C-000A95A797A8@tnpi.biz>
|
||||||
|
Content-Type: multipart/mixed; boundary=Apple-Mail-5--167304881
|
||||||
|
From: Matt Simerson <matt@tnpi.biz>
|
||||||
|
Subject: Mail::Ezmlm patch submission
|
||||||
|
Date: Mon, 15 Nov 2004 14:21:02 -0500
|
||||||
|
X-Mailer: Apple Mail (2.619)
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 6582
|
||||||
|
|
||||||
|
|
||||||
|
--Apple-Mail-5--167304881
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Content-Type: text/plain;
|
||||||
|
charset=US-ASCII;
|
||||||
|
format=flowed
|
||||||
|
|
||||||
|
Hey Guy,
|
||||||
|
|
||||||
|
First, thanks a bunch for writing Mail::Ezmlm, it's quite useful. :-)
|
||||||
|
|
||||||
|
I've used it to write a CGI interface to Ezmlm for a client. It's not a
|
||||||
|
very complex thing, it just creates a web page where the client logs in
|
||||||
|
and then has the choice to list the subscribers for a list, batch add a
|
||||||
|
list of subscribers, or mass delete a list.
|
||||||
|
|
||||||
|
It's posted here if you're interested in seeing it:
|
||||||
|
https://mail.cadillac.net/ezmlm.cgi
|
||||||
|
|
||||||
|
You can log in using the domain "example.com" and the password
|
||||||
|
"guyrucus".
|
||||||
|
|
||||||
|
Anyhow, the only problem I've had with Mail::Ezmlm is that when I run
|
||||||
|
my script suid as the user that owns the mailing list, mod_perl whines
|
||||||
|
about the data because it's tainted. So, I've made a few minor
|
||||||
|
alterations to untaint the data. My approach is rather basic and could
|
||||||
|
be improved upon but it works quite well and is slightly more secure
|
||||||
|
than what's being used at present. I'd appreciate if you'd review the
|
||||||
|
patch and apply it or something similar which achieves the same result.
|
||||||
|
|
||||||
|
The patch is against v 1.9 of Mail::Ezmlm.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--Apple-Mail-5--167304881
|
||||||
|
Content-Type: multipart/appledouble;
|
||||||
|
boundary=Apple-Mail-6--167304881
|
||||||
|
Content-Disposition: attachment
|
||||||
|
|
||||||
|
|
||||||
|
--Apple-Mail-6--167304881
|
||||||
|
Content-Transfer-Encoding: base64
|
||||||
|
Content-Type: application/applefile;
|
||||||
|
name="Ezmlm.pm.patch"
|
||||||
|
Content-Disposition: attachment;
|
||||||
|
filename=Ezmlm.pm.patch
|
||||||
|
|
||||||
|
AAUWBwACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAJAAAAPgAAAAoAAAADAAAASAAAAA4AAAACAAAA
|
||||||
|
VgAABq5URVhUUipjaAAARXptbG0ucG0ucGF0Y2gAAAEAAAAGaAAABWgAAABGAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAASAAJTW9uYWNvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAEAEIACgR0AooAQgAKBHQC
|
||||||
|
ir2+Z3QAAAFTAAABUwAAAAABAAAABRhSKmNoAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQdDb3VyaWVyAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAACgAAAAQJSGVsdmV0aWNhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADENvbmZpZGVudGlhbAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAQAAAQAAAQAAAIAAAACAAAAAgAAAAIAAAAAAAAABAQABAAEAAAAAAwBQ
|
||||||
|
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACW1hY2ludG9zaAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAZoAAAFaAAAAEYAZdCMAlUAAAAcAEYAAU1QU1IAAAASQkJT
|
||||||
|
VAAAAB4D7f//AAAAAAB/K8AAgP//AAAATAB/K9A=
|
||||||
|
|
||||||
|
--Apple-Mail-6--167304881
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Content-Type: application/text;
|
||||||
|
x-mac-type=54455854;
|
||||||
|
x-unix-mode=0644;
|
||||||
|
x-mac-creator=522A6368;
|
||||||
|
name="Ezmlm.pm.patch"
|
||||||
|
Content-Disposition: attachment;
|
||||||
|
filename=Ezmlm.pm.patch
|
||||||
|
|
||||||
|
--- Ezmlm.pm.orig Sat Nov 13 13:38:59 2004
|
||||||
|
+++ Ezmlm.pm Mon Nov 15 13:44:35 2004
|
||||||
|
@@ -236,6 +236,16 @@
|
||||||
|
my($self, $part) = @_;
|
||||||
|
my(@subscribers);
|
||||||
|
($self->_seterror(-1, 'must setlist() before returning subscribers()') && return undef) unless(defined($self->{'LIST_NAME'}));
|
||||||
|
+
|
||||||
|
+ # additions by matt simerson (matt@tnpi.biz) to pass mod_perl security (taint) checks
|
||||||
|
+ $ENV{"PATH"} = "";
|
||||||
|
+ if ( $self->{'LIST_NAME'} =~ /([\w\-\/.]*)/ ) {
|
||||||
|
+ $self->{'LIST_NAME'} = $1;
|
||||||
|
+ } else {
|
||||||
|
+ warn "TAINTED DATA IN LIST_NAME: $self->{'LIST_NAME'}\n";
|
||||||
|
+ };
|
||||||
|
+ # end additions
|
||||||
|
+
|
||||||
|
if(defined($part) && $part) {
|
||||||
|
($self->_seterror(-1, "$part part of $self->{'LIST_NAME'} does not appear to exist in subscribers()") && return undef) unless(-e "$self->{'LIST_NAME'}/$part");
|
||||||
|
@subscribers = map { s/[\r\n]// && $_ } sort `$EZMLM_BASE/ezmlm-list $self->{'LIST_NAME'}/$part`;
|
||||||
|
@@ -270,6 +280,19 @@
|
||||||
|
} else {
|
||||||
|
foreach $address (@addresses) {
|
||||||
|
next unless $self->_checkaddress($address);
|
||||||
|
+
|
||||||
|
+ # matt adds
|
||||||
|
+ $ENV{"PATH"} = ""; # taint checks
|
||||||
|
+
|
||||||
|
+ if ( $self->{'LIST_NAME'} =~ /([\w\-\/.]*)/ ) {
|
||||||
|
+ $self->{'LIST_NAME'} = $1;
|
||||||
|
+ } else {
|
||||||
|
+ warn "TAINTED DATA IN LIST_NAME: $self->{'LIST_NAME'}\n";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ if ( $address =~ /(.*)/ ) { $address = $1 };
|
||||||
|
+ # end matt adds
|
||||||
|
+
|
||||||
|
system("$EZMLM_BASE/ezmlm-sub", $self->{'LIST_NAME'}, $address) == 0 ||
|
||||||
|
($self->_seterror($?) && return undef);
|
||||||
|
}
|
||||||
|
@@ -322,6 +345,16 @@
|
||||||
|
} else {
|
||||||
|
foreach $address (@addresses) {
|
||||||
|
$ENV{'SENDER'} = $address;
|
||||||
|
+
|
||||||
|
+ # matt adds
|
||||||
|
+ $ENV{"PATH"} = ""; # taint checks
|
||||||
|
+ if ( $self->{'LIST_NAME'} =~ /([\w\-\/.]*)/ ) {
|
||||||
|
+ $self->{'LIST_NAME'} = $1;
|
||||||
|
+ } else {
|
||||||
|
+ warn "TAINTED DATA IN LIST_NAME: $self->{'LIST_NAME'}\n";
|
||||||
|
+ };
|
||||||
|
+ # end matt adds
|
||||||
|
+
|
||||||
|
undef($issub) if ((system("$EZMLM_BASE/ezmlm-issubn", $self->{'LIST_NAME'}) / 256) != 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
--Apple-Mail-6--167304881--
|
||||||
|
|
||||||
|
--Apple-Mail-5--167304881
|
||||||
|
Content-Transfer-Encoding: 7bit
|
||||||
|
Content-Type: text/plain;
|
||||||
|
charset=US-ASCII;
|
||||||
|
format=flowed
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Matt
|
||||||
|
|
||||||
|
``````````````````````````````````````````````````````````````````
|
||||||
|
Matt Simerson http://matt.simerson.net
|
||||||
|
The Network People Inc. http://www.tnpi.biz
|
||||||
|
|
||||||
|
The chief danger in life is that you may take too many precautions.
|
||||||
|
- Alfred Adler
|
||||||
|
``````````````````````````````````````````````````````````````````
|
||||||
|
|
||||||
|
--Apple-Mail-5--167304881--
|
||||||
|
|
||||||
|
|
422
ezmlm-web-ng/contrib-patches/ezmlm-web-andrew-pam-20030520.txt
Normal file
422
ezmlm-web-ng/contrib-patches/ezmlm-web-andrew-pam-20030520.txt
Normal file
|
@ -0,0 +1,422 @@
|
||||||
|
From xanni@kira.glasswings.com.au Tue May 20 16:09:12 2003
|
||||||
|
Return-Path: <xanni@kira.glasswings.com.au>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Received: (qmail 98840 invoked from network); 20 May 2003 14:09:12 -0000
|
||||||
|
Received: from mail011.syd.optusnet.com.au (210.49.20.139)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 20 May 2003 14:09:12 -0000
|
||||||
|
Received: from kira.glasswings.com.au (c16443.eburwd3.vic.optusnet.com.au [210.49.192.62])
|
||||||
|
by mail011.syd.optusnet.com.au (8.11.6p2/8.11.6) with ESMTP id h4KE93X08963
|
||||||
|
for <guy-ezmlm@rucus.ru.ac.za>; Wed, 21 May 2003 00:09:03 +1000
|
||||||
|
Received: (from xanni@localhost)
|
||||||
|
by kira.glasswings.com.au (8.9.3/8.9.3) id AAA18521
|
||||||
|
for guy-ezmlm@rucus.ru.ac.za; Wed, 21 May 2003 00:18:02 +1000
|
||||||
|
Date: Wed, 21 May 2003 00:18:01 +1000
|
||||||
|
From: Andrew Pam <xanni@glasswings.com.au>
|
||||||
|
To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Subject: Bug fixes for ezmlm-web
|
||||||
|
Message-ID: <20030520141801.GM599@kira.glasswings.com.au>
|
||||||
|
Mime-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Disposition: inline
|
||||||
|
User-Agent: Mutt/1.4i
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 24092
|
||||||
|
|
||||||
|
I found the following problems when installing ezmlm-web v2.1:
|
||||||
|
|
||||||
|
* Many browsers do not provide any visible display of alt tags, so the
|
||||||
|
help icons are not usable without some JavaScript
|
||||||
|
|
||||||
|
* There were several HTML errors in the output of the script, such as
|
||||||
|
mismatched tags, misspelled attributes and missing quotes around attributes
|
||||||
|
|
||||||
|
* The CGI module now outputs XHTML, which requires that all tags be lowercase
|
||||||
|
|
||||||
|
Here is a patch which addresses all these issues:
|
||||||
|
|
||||||
|
|
||||||
|
--- ezmlm-web.cgi Tue Sep 26 06:58:08 2000
|
||||||
|
+++ /usr/local/bin/ezmlm-web.cgi Wed May 21 00:07:32 2003
|
||||||
|
@@ -1,6 +1,9 @@
|
||||||
|
-#!/usr/bin/perl -T
|
||||||
|
+#!/usr/bin/perl -Tw
|
||||||
|
#===========================================================================
|
||||||
|
# ezmlm-web.cgi - version 2.1 - 25/09/2000
|
||||||
|
+# 20/05/2003 Andrew Pam <xanni@sericyb.com.au>
|
||||||
|
+# Fixed HTML errors, changed all HTML to lowercase for XHTML
|
||||||
|
+# Added sub help_icon and sub help_option for non-tooltip browsers
|
||||||
|
# $Id: ezmlm-web.cgi,v 1.3 2000/09/25 19:58:07 guy Exp $
|
||||||
|
#
|
||||||
|
# Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved.
|
||||||
|
@@ -239,7 +242,7 @@
|
||||||
|
&list_text;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
- print "<H1 ALIGN=CENTER>$Q::action</H1><H2 ALIGN=CENTER>$LANGUAGE{'nop'}</H2><HR ALIGN=center WIDTH=25%>";
|
||||||
|
+ print "<h1 align=\"center\">$Q::action</h1><h2 align=\"center\">$LANGUAGE{'nop'}</h2><hr align=\"center\" width=\"25%\">";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print HTML footer and exit :) ...
|
||||||
|
@@ -280,15 +283,15 @@
|
||||||
|
$q->delete_all;
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -default=>'select');
|
||||||
|
- print '<CENTER><TABLE BORDER="0" CELLPADDING="10"><TR><TD ALIGN="center" VALIGN="top" ROWSPAN="2">';
|
||||||
|
+ print '<center><table border="0" cellpadding="10"><tr><td align="center" valign="top" rowspan="2">';
|
||||||
|
print $q->scrolling_list(-name=>'list', -size=>$scrollsize, -values=>\@lists) if defined(@lists);
|
||||||
|
|
||||||
|
- print '</TD><TD ALIGN="left" VALIGN="top">', $LANGUAGE{'chooselistinfo'};
|
||||||
|
+ print '</td><td align="left" valign="top">', $LANGUAGE{'chooselistinfo'};
|
||||||
|
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'create'}]"), ' ' if (!defined($opt_c));
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'edit'}]"), ' ' if(defined(@lists));
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'delete'}]") if(defined(@lists));
|
||||||
|
- print '</TD></TR><TR><TD> </TD></TR></TABLE></CENTER>';
|
||||||
|
+ print '</td></tr><tr><td> </td></tr></table></center>';
|
||||||
|
print $q->endform;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -302,9 +305,9 @@
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -default=>'confirm_delete');
|
||||||
|
print $q->hidden(-name=>'list', -default=>$q->param('list'));
|
||||||
|
- print '<H2 ALIGN="center">', $LANGUAGE{'confirmdelete'}, ' ', $q->param('list'), '</H3><BR><CENTER>';
|
||||||
|
+ print '<h2 align="center">', $LANGUAGE{'confirmdelete'}, ' ', $q->param('list'), '</h2><br><center>';
|
||||||
|
print $q->submit(-name=>'confirm', -value=>"[$BUTTON{'no'}]"), ' ';
|
||||||
|
- print $q->submit(-name=>'confirm', -value=>"[$BUTTON{'yes'}]"), '</CENTER>';
|
||||||
|
+ print $q->submit(-name=>'confirm', -value=>"[$BUTTON{'yes'}]"), '</center>';
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------
|
||||||
|
@@ -327,28 +330,28 @@
|
||||||
|
|
||||||
|
# Print out a form of options ...
|
||||||
|
$q->delete('state');
|
||||||
|
- print "<H2 ALIGN=center>$LANGUAGE{'subscribersto'} $Q::list ($listaddress)</H2><HR ALIGN=center WIDTH=25%>";
|
||||||
|
+ print "<h2 align=\"center\">$LANGUAGE{'subscribersto'} $Q::list ($listaddress)</h2><hr align=\"center\" width=\"25%\">";
|
||||||
|
print $q->start_multipart_form;
|
||||||
|
- print '<CENTER><TABLE ALIGN="center" CELLPADDING="10"><TR><TD ROWSPAN="2" VALIGN="top" ALIGN="center">';
|
||||||
|
+ print '<center><table align="center" cellpadding="10"><tr><td rowspan="2" valign="top" align="center">';
|
||||||
|
print $q->hidden(-name=>'state', -default=>'edit');
|
||||||
|
print $q->hidden(-name=>'list', -default=>$Q::list);
|
||||||
|
print $q->scrolling_list(-name=>'delsubscriber', -size=>$scrollsize, -values=>\@subscribers, -labels=>&pretty_names, -multiple=>'true') if defined(@subscribers);
|
||||||
|
- print '</TD><TD VALIGN="top" ALIGN="left">';
|
||||||
|
- print ' ', ($#subscribers + 1), ' ', $LANGUAGE{'subscribers'}, '<BR>' if defined(@subscribers);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '<P>' if defined(@subscribers);
|
||||||
|
- print $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'addaddress'}, '"><BR>';
|
||||||
|
- print $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'addaddressfile'}, '"><br>' if ($FILE_UPLOAD);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '<P>';
|
||||||
|
- print '<STRONG>', $LANGUAGE{'additionalparts'}, ':</STRONG><BR>' if($list->ismodpost || $list->ismodsub || $list->isremote || $list->isdeny || $list->isallow || $list->isdigest);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'moderators'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'moderator'}, '"> ' if ($list->ismodpost || $list->ismodsub || $list->isremote);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'denylist'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'deny'}, '"> ' if ($list->isdeny);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'allowlist'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'allow'}, '"> ' if ($list->isallow);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'digestsubscribers'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'digest'}, '"> ' if ($list->isdigest);
|
||||||
|
- print '<P>';
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'webarchive'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'webarch'}, '"> ' if(&ezmlmcgirc);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'configuration'}]"), '<IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'config'}, '"> ';
|
||||||
|
+ print '</td><td valign="top" align="left">';
|
||||||
|
+ print ' ', ($#subscribers + 1), ' ', $LANGUAGE{'subscribers'}, '<br>' if defined(@subscribers);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '<p>' if defined(@subscribers);
|
||||||
|
+ print $q->textfield(-name=>'addsubscriber', -size=>'40'), help_icon('addaddress'), '<br>';
|
||||||
|
+ print $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), help_icon('addaddressfile'), '<br>' if ($FILE_UPLOAD);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '<p>';
|
||||||
|
+ print '<strong>', $LANGUAGE{'additionalparts'}, ':</strong><br>' if($list->ismodpost || $list->ismodsub || $list->isremote || $list->isdeny || $list->isallow || $list->isdigest);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'moderators'}]"), help_icon('moderator'), ' ' if ($list->ismodpost || $list->ismodsub || $list->isremote);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'denylist'}]"), help_icon('deny'), ' ' if ($list->isdeny);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'allowlist'}]"), help_icon('allow'), ' ' if ($list->isallow);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'digestsubscribers'}]"), help_icon('digest'), ' ' if ($list->isdigest);
|
||||||
|
+ print '<p>';
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'webarchive'}]"), help_icon('webarch'), ' ' if(&ezmlmcgirc);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'configuration'}]"), help_icon('config'), ' ';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'selectlist'}]");
|
||||||
|
- print '</TD></TR><TR><TD> </TD></TR></TABLE></CENTER>';
|
||||||
|
+ print '</td></tr><tr><td> </td></tr></table></center>';
|
||||||
|
print $q->endform;
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -534,15 +537,15 @@
|
||||||
|
my($subpath) = $config =~ m{8\s*'([^']+)'};
|
||||||
|
my($remotepath) = $config =~ m{9\s*'([^']+)'};
|
||||||
|
|
||||||
|
- $moderated = '<BLINK><FONT COLOR=#ff0000>' if ($postpath);
|
||||||
|
+ $moderated = '<blink><font color="#ff0000">' if ($postpath);
|
||||||
|
$moderated .= "[$LANGUAGE{'posting'}]" if ($list->ismodpost);
|
||||||
|
- $moderated .= '</FONT><IMG SRC="' . $HELP_ICON_URL . '" ALT="Posting Moderators are stored in a non-standard location (' . $postpath . '). You will have to edit them manually."></BLINK>' if ($postpath);
|
||||||
|
- $moderated .= '<BLINK><FONT COLOR=#ff0000>' if ($subpath);
|
||||||
|
+ $moderated .= '</font><img src="' . $HELP_ICON_URL . '" alt="Posting Moderators are stored in a non-standard location (' . $postpath . '). You will have to edit them manually."></blink>' if ($postpath);
|
||||||
|
+ $moderated .= '<blink><font color="#ff0000">' if ($subpath);
|
||||||
|
$moderated .= " [$LANGUAGE{'subscription'}]" if($list->ismodsub);
|
||||||
|
- $moderated .= '</FONT><IMG SRC="' . $HELP_ICON_URL . '" ALT="Subscriber Moderators are stored in a non-standard location (' . $subpath . '). You will have to edit them manually"></BLINK>' if ($subpath);
|
||||||
|
- $moderated .= '<BLINK><FONT COLOR=#ff0000>' if ($remotepath);
|
||||||
|
+ $moderated .= '</font><img src="' . $HELP_ICON_URL . '" alt="Subscriber Moderators are stored in a non-standard location (' . $subpath . '). You will have to edit them manually"></blink>' if ($subpath);
|
||||||
|
+ $moderated .= '<blink><font color="#ff0000">' if ($remotepath);
|
||||||
|
$moderated .= " [$LANGUAGE{'remoteadmin'}]" if($list->isremote);
|
||||||
|
- $moderated .= '</FONT><IMG SRC="' . $HELP_ICON_URL . '" ALT="Remote Administrators are stored in a non-standard location (' . $remotepath . '). You will have to edit them manually"></BLINK>' if ($remotepath);
|
||||||
|
+ $moderated .= '</font><img src="' . $HELP_ICON_URL . '" alt="Remote Administrators are stored in a non-standard location (' . $remotepath . '). You will have to edit them manually"></blink>' if ($remotepath);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -557,20 +560,20 @@
|
||||||
|
|
||||||
|
# Print out a form of options ...
|
||||||
|
$q->delete('state');
|
||||||
|
- print "<H2 ALIGN=center>$type $LANGUAGE{'for'} $listaddress</H2><HR ALIGN=center WIDTH=25%>";
|
||||||
|
- print "<CENTER>$moderated</CENTER><P>" if(defined($moderated));
|
||||||
|
+ print "<h2 align=\"center\">$type $LANGUAGE{'for'} $listaddress</h2><hr align=\"center\" width=\"25%\">";
|
||||||
|
+ print "<center>$moderated</center><p>" if(defined($moderated));
|
||||||
|
print $q->start_multipart_form;
|
||||||
|
- print '<CENTER><TABLE ALIGN="center" CELLPADDING="10"><TR><TD ROWSPAN="2" VALIGN="top" ALIGN="center">';
|
||||||
|
+ print '<center><table align="center" cellpadding="10"><tr><td rowspan="2" valign="top" align="center">';
|
||||||
|
print $q->hidden(-name=>'state', -default=>$part);
|
||||||
|
print $q->hidden(-name=>'list', -default=>$Q::list), "\n";
|
||||||
|
print $q->scrolling_list(-name=>'delsubscriber', -size=>$scrollsize, -values=>\@subscribers, -multiple=>'true', -labels=>&pretty_names) if defined(@subscribers);
|
||||||
|
- print '</TD></TR><TR><TD VALIGN="top" ALIGN="left">';
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '<P>' if defined(@subscribers);
|
||||||
|
- print $q->textfield(-name=>'addsubscriber', -size=>'40'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'addaddress'}, '"><BR>';
|
||||||
|
- print $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'addaddressfile'}, '"><br>' if ($FILE_UPLOAD);
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '<P>';
|
||||||
|
+ print '</td></tr><tr><td valign="top" align="left">';
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'deleteaddress'}]"), '<p>' if defined(@subscribers);
|
||||||
|
+ print $q->textfield(-name=>'addsubscriber', -size=>'40'), help_icon('addaddreess'), '<br>';
|
||||||
|
+ print $q->filefield(-name=>'addfile', -size=>20, -maxlength=>100), help_icon('addaddressfile'), '<br>' if ($FILE_UPLOAD);
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'addaddress'}]"), '<p>';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'subscribers'}]");
|
||||||
|
- print '</TD></TR><TR><TD> </TD></TR></TABLE></CENTER>';
|
||||||
|
+ print '</td></tr><tr><td> </td></tr></table></center>';
|
||||||
|
print $q->endform;
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -598,27 +601,26 @@
|
||||||
|
|
||||||
|
# Print a form of options ...
|
||||||
|
$q->delete_all;
|
||||||
|
- print '<H2 ALIGN=CENTER>', $LANGUAGE{'createnew'}, '</H2><HR ALIGN=center WIDTH=25%>';
|
||||||
|
+ print '<h2 align="center">', $LANGUAGE{'createnew'}, '</h2><hr align="center" width="25%">';
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -value=>'create');
|
||||||
|
- print '<BIG><STRONG>', $LANGUAGE{'listname'}, ': </STRONG></BIG>', $q->textfield(-name=>'list', -size=>'20'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'listname'}, '"><P>';
|
||||||
|
- print '<BIG><STRONG>', $LANGUAGE{'listaddress'}, ': </STRONG></BIG>';
|
||||||
|
+ print '<big><strong>', $LANGUAGE{'listname'}, ': </strong></big>', $q->textfield(-name=>'list', -size=>'20'), help_icon('listname'), '<p>';
|
||||||
|
+ print '<big><strong>', $LANGUAGE{'listaddress'}, ': </strong></big>';
|
||||||
|
print $q->textfield(-name=>'inlocal', -default=>$username, -size=>'10');
|
||||||
|
- print ' <BIG><STRONG>@</STRONG></BIG> ', $q->textfield(-name=>'inhost', -default=>$hostname, -size=>'30'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'listadd'}, '"><P>';
|
||||||
|
+ print ' <big><strong>@</strong></big> ', $q->textfield(-name=>'inhost', -default=>$hostname, -size=>'30'), help_icon('listadd'), '<p>';
|
||||||
|
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'listoptions'}, ':</STRONG></BIG>';
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'listoptions'}, ':</strong></big>';
|
||||||
|
&display_options($DEFAULT_OPTIONS);
|
||||||
|
|
||||||
|
# Allow creation of mysql table if the module allows it
|
||||||
|
if($Mail::Ezmlm::MYSQL_BASE) {
|
||||||
|
- print '<P> ', $q->checkbox(-name=>'sql', -label=>$LANGUAGE{'mysqlcreate'}, -on=>1);
|
||||||
|
- print ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'mysqlcreate'}, '">';
|
||||||
|
+ print '<p> ', $q->checkbox(-name=>'sql', -label=>$LANGUAGE{'mysqlcreate'}, -on=>1), help_icon('mysqlcreate');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'allowedtoedit'}, ': </STRONG></BIG>',
|
||||||
|
- $q->textfield(-name=>'webusers', -value=>$ENV{'REMOTE_USER'}||'ALL', -size=>'30'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'webusers'}, '">',
|
||||||
|
- '<BR><FONT SIZE="-1">', $HELPER{'allowedit'}, '</FONT>'
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'allowedtoedit'}, ': </strong></big>',
|
||||||
|
+ $q->textfield(-name=>'webusers', -value=>$ENV{'REMOTE_USER'}||'ALL', -size=>'30'), help_icon('webusers'),
|
||||||
|
+ '<br><font size="-1">', $HELPER{'allowedit'}, '</font>'
|
||||||
|
if(-e "$LIST_DIR/webusers");
|
||||||
|
|
||||||
|
print '<P>', $q->submit(-name=>'action', -value=>"[$BUTTON{'createlist'}]"), ' ';
|
||||||
|
@@ -647,7 +649,7 @@
|
||||||
|
# Sanity Checks ...
|
||||||
|
return 1 if ($listname eq '' || $qmail eq '');
|
||||||
|
if(-e ("$LIST_DIR/$listname/lock") || -e ("$HOME_DIR/.qmail-$qmail")) {
|
||||||
|
- print "<H1 ALIGN=CENTER>List '$listname' already exists :(</H1>";
|
||||||
|
+ print "<h1 align=\"center\">List '$listname' already exists :(</h1>";
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -710,13 +712,13 @@
|
||||||
|
|
||||||
|
# Print a form of options ...
|
||||||
|
$q->delete_all;
|
||||||
|
- print '<H2 ALIGN="center">', $LANGUAGE{'editconfiguration'}, '</H2><HR ALIGN=center WIDTH=25%>';
|
||||||
|
+ print '<h2 align="center">', $LANGUAGE{'editconfiguration'}, '</h2><hr align="center" width="25%">';
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -value=>'configuration');
|
||||||
|
print $q->hidden(-name=>'list', -value=>$listname);
|
||||||
|
- print '<BIG><STRONG>', $LANGUAGE{'listname'}, ": <EM>$listname</EM><BR>";
|
||||||
|
- print "$LANGUAGE{'listaddress'}: <EM>$listaddress</EM></STRONG></BIG><P>";
|
||||||
|
- print '<BIG><STRONG>', $LANGUAGE{'listoptions'}, ':</BIG></STRONG><BR>';
|
||||||
|
+ print '<big><strong>', $LANGUAGE{'listname'}, ": <em>$listname</em><br>";
|
||||||
|
+ print "$LANGUAGE{'listaddress'}: <em>$listaddress</em></strong></big><p>";
|
||||||
|
+ print '<big><strong>', $LANGUAGE{'listoptions'}, ':</big></strong><br>';
|
||||||
|
|
||||||
|
# Print a list of options, selecting the ones that apply to this list ...
|
||||||
|
&display_options($list->getconfig);
|
||||||
|
@@ -727,10 +729,10 @@
|
||||||
|
$mimeremove = $list->getpart('mimeremove');
|
||||||
|
$prefix = $list->getpart('prefix');
|
||||||
|
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'prefix'}, ': </STRONG></BIG>', $q->textfield(-name=>'prefix', -default=>$prefix, -size=>12), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'prefix'}, '">' if defined($prefix);
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'headerremove'}, ':</BIG></STRONG> <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'headerremove'}, '"><BR>', $q->textarea(-name=>'headerremove', -default=>$headerremove, -rows=>5, -columns=>70);
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'headeradd'}, ':</BIG></STRONG> <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'headeradd'}, '"><BR>', $q->textarea(-name=>'headeradd', -default=>$headeradd, -rows=>5, -columns=>70);
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'mimeremove'}, ':</BIG></STRONG> <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'mimeremove'}, '"><BR>', $q->textarea(-name=>'mimeremove', -default=>$mimeremove, -rows=>5, -columns=>70) if defined($mimeremove);
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'prefix'}, ': </strong></big>', $q->textfield(-name=>'prefix', -default=>$prefix, -size=>12), help_icon('prefix') if defined($prefix);
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'headerremove'}, ':</big></strong> ', help_icon('headerremove'), '<br>', $q->textarea(-name=>'headerremove', -default=>$headerremove, -rows=>5, -columns=>70);
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'headeradd'}, ':</big></strong> ', help_icon('headeradd'), '<br>', $q->textarea(-name=>'headeradd', -default=>$headeradd, -rows=>5, -columns=>70);
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'mimeremove'}, ':</big></strong> ', help_icon('mimeremove'), '<br>', $q->textarea(-name=>'mimeremove', -default=>$mimeremove, -rows=>5, -columns=>70) if defined($mimeremove);
|
||||||
|
|
||||||
|
if(open(WEBUSER, "<$LIST_DIR/webusers")) {
|
||||||
|
my($webusers);
|
||||||
|
@@ -740,13 +742,13 @@
|
||||||
|
close WEBUSER;
|
||||||
|
$webusers ||= $ENV{'REMOTE_USER'} || 'ALL';
|
||||||
|
|
||||||
|
- print '<P><BIG><STRONG>', $LANGUAGE{'allowedtoedit'}, ': </STRONG></BIG>',
|
||||||
|
- $q->textfield(-name=>'webusers', -value=>$webusers, -size=>'30'), ' <IMG SRC="', $HELP_ICON_URL, '" ALT="', $HELPER{'webusers'}, '">',
|
||||||
|
- '<BR><FONT SIZE="-1">', $HELPER{'allowedit'}, '</FONT>';
|
||||||
|
+ print '<p><big><strong>', $LANGUAGE{'allowedtoedit'}, ': </strong></big>',
|
||||||
|
+ $q->textfield(-name=>'webusers', -value=>$webusers, -size=>'30'), help_icon('webusers'),
|
||||||
|
+ '<br><font size="-1">', $HELPER{'allowedit'}, '</font>';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
- print '<P>', $q->submit(-name=>'action', -value=>"[$BUTTON{'updateconfiguration'}]"), ' ';
|
||||||
|
+ print '<p>', $q->submit(-name=>'action', -value=>"[$BUTTON{'updateconfiguration'}]"), ' ';
|
||||||
|
print $q->reset(-value=>"[$BUTTON{'resetform'}]"), ' ';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'cancel'}]"), ' ';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'edittexts'}]");
|
||||||
|
@@ -841,12 +843,12 @@
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -default=>'list_text');
|
||||||
|
print $q->hidden(-name=>'list', -default=>$q->param('list'));
|
||||||
|
- print '<CENTER><TABLE BORDER="0" CELLPADDING="10" ALIGN="center"><TR><TD ALIGN="center" VALIGN="top" ROWSPAN="2">';
|
||||||
|
+ print '<center><table border="0" cellpadding="10" align="center"><tr><td align="center" valign="top" rowspan="2">';
|
||||||
|
print $q->scrolling_list(-name=>'file', -values=>\@files);
|
||||||
|
- print '</TD><TD ALIGN="center" VALIGN="top">';
|
||||||
|
+ print '</td><td align="center" valign="top">';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'editfile'}]"), ' ';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'cancel'}]");
|
||||||
|
- print '<P>', $LANGUAGE{'edittextinfo'}, '</TD></TR><TR><TD> </TD></TR></TABLE></CENTER>';
|
||||||
|
+ print '<p>', $LANGUAGE{'edittextinfo'}, '</td></tr><tr><td> </td></tr></table></center>';
|
||||||
|
print $q->endform;
|
||||||
|
|
||||||
|
}
|
||||||
|
@@ -862,20 +864,20 @@
|
||||||
|
|
||||||
|
# Print a form ...
|
||||||
|
$q->delete('state');
|
||||||
|
- print '<H2 ALIGN="CENTER">', $LANGUAGE{'editingfile'}, ': ', $Q::file, '</H2>';
|
||||||
|
- print '<CENTER><TABLE ALIGN="center" CELLPADDING="5"><TR><TD VALIGN="top" ROWSPAN="2">';
|
||||||
|
+ print '<h2 align="center">', $LANGUAGE{'editingfile'}, ': ', $Q::file, '</h2>';
|
||||||
|
+ print '<center><table align="center" cellpadding="5"><tr><td valign="top" rowspan="2">';
|
||||||
|
print $q->startform;
|
||||||
|
print $q->hidden(-name=>'state', -default=>'edit_text');
|
||||||
|
print $q->hidden(-name=>'list', -default=>$q->param('list'));
|
||||||
|
print $q->hidden(-name=>'file', -default=>$q->param('file'));
|
||||||
|
print $q->textarea(-name=>'content', -default=>$content, -rows=>'25', -columns=>'72');
|
||||||
|
- print '</TD><TD VALIGN="top" ALIGN="left">';
|
||||||
|
+ print '</td><td valign="top" align="left">';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'savefile'}]"), ' ';
|
||||||
|
print $q->reset(-value=>"[$BUTTON{'resetform'}]"), ' ';
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'cancel'}]");
|
||||||
|
- print '<P>', $LANGUAGE{'editfileinfo'};
|
||||||
|
+ print '<p>', $LANGUAGE{'editfileinfo'};
|
||||||
|
print $q->endform;
|
||||||
|
- print '</TD></TR><TR><TD> <TD></TR></TABLE><CENTER>'
|
||||||
|
+ print '</td></tr><tr><td> <td></tr></table><center>'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -915,37 +917,35 @@
|
||||||
|
my($i, $j);
|
||||||
|
|
||||||
|
print "<!-- $opts -->";
|
||||||
|
- print '<TABLE BORDER="0" CELLPADDING="3"><TR><TD>';
|
||||||
|
+ print '<table border="0" cellpadding="3"><tr><td>';
|
||||||
|
foreach $i (grep {/\D/} keys %EZMLM_LABELS) {
|
||||||
|
if ($opts =~ /^\w*$i\w*\s*/) {
|
||||||
|
print $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0], -on=>'1');
|
||||||
|
} else {
|
||||||
|
print $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
||||||
|
}
|
||||||
|
- print '<IMG SRC="', $HELP_ICON_URL, '" BORDER="0" ALT="', $EZMLM_LABELS{$i}[1] , '">';
|
||||||
|
- print '</TD>'; $j++;
|
||||||
|
+ print help_option($i), '</td>'; $j++;
|
||||||
|
if ($j >= 3) {
|
||||||
|
- $j = 0; print '</TR><TR>';
|
||||||
|
+ $j = 0; print '</tr><tr>';
|
||||||
|
}
|
||||||
|
- print '<TD>';
|
||||||
|
+ print '<td>';
|
||||||
|
}
|
||||||
|
- print '</TD></TR></TABLE>';
|
||||||
|
+ print '</td></tr></table>';
|
||||||
|
|
||||||
|
- print '<TABLE BORDER="0" CELPADDING="3">';
|
||||||
|
+ print '<table border="0" cellpadding="3">';
|
||||||
|
foreach $i (grep {/\d/} keys %EZMLM_LABELS) {
|
||||||
|
- print '<TR><TD>';
|
||||||
|
+ print '<tr><td>';
|
||||||
|
if ($opts =~ /$i (?:'(.+?)')/) {
|
||||||
|
print $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0], -on=>'1');
|
||||||
|
} else {
|
||||||
|
print $q->checkbox(-name=>$i, -value=>$i, -label=>$EZMLM_LABELS{$i}[0]);
|
||||||
|
}
|
||||||
|
- print '<IMG SRC="', $HELP_ICON_URL, '" BORDER="0" ALT="', $EZMLM_LABELS{$i}[1] , '">';
|
||||||
|
- print '</TD><TD>';
|
||||||
|
+ print help_option($i), '</td><td>';
|
||||||
|
print $q->textfield(-name=>"$i-value", -value=>$1||$EZMLM_LABELS{$i}[2], -size=>30);
|
||||||
|
- print '</TD></TR>';
|
||||||
|
+ print '</td></tr>';
|
||||||
|
|
||||||
|
}
|
||||||
|
- print '</TABLE>';
|
||||||
|
+ print '</table>';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -976,6 +976,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
# -------------------------------------------------------------------------
|
||||||
|
+
|
||||||
|
sub rmtree {
|
||||||
|
# A subroutine to recursively delete a directory (like rm -f).
|
||||||
|
# Based on the one in the perl cookbook :)
|
||||||
|
@@ -995,6 +996,28 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------
|
||||||
|
+
|
||||||
|
+sub help_icon($) {
|
||||||
|
+ # Generate HTML for help icons
|
||||||
|
+ # Written 20 May 2003 by Andrew Pam <xanni@sericyb.com.au>
|
||||||
|
+
|
||||||
|
+ my $msg = $HELPER{$_[0]};
|
||||||
|
+ return '<img src="' . $HELP_ICON_URL . '" alt="' . $msg .
|
||||||
|
+ '" onClick="alert(\'' . $msg . '\');">';
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# ------------------------------------------------------------------------
|
||||||
|
+
|
||||||
|
+sub help_option($) {
|
||||||
|
+ # Generate HTML for option help icons
|
||||||
|
+ # Written 20 May 2003 by Andrew Pam <xanni@sericyb.com.au>
|
||||||
|
+
|
||||||
|
+ my $msg = $EZMLM_LABELS{$_[0]}[1];
|
||||||
|
+ return '<img src="' . $HELP_ICON_URL . '" border="0" alt="' . $msg .
|
||||||
|
+ '" onClick="alert(\'' . $msg . '\');">';
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BEGIN {
|
||||||
|
sub handle_errors {
|
||||||
|
|
||||||
|
|
||||||
|
Hope that helps,
|
||||||
|
Andrew Pam
|
||||||
|
--
|
||||||
|
mailto:xanni@xanadu.net Andrew Pam
|
||||||
|
http://www.xanadu.com.au/ Chief Scientist, Xanadu
|
||||||
|
http://www.glasswings.com.au/ Technology Manager, Glass Wings
|
||||||
|
http://www.sericyb.com.au/ Manager, Serious Cybernetics
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
From xanni@urYod.glasswings.com.au Wed May 26 10:27:04 2004
|
||||||
|
Return-Path: <xanni@urYod.glasswings.com.au>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Received: (qmail 95684 invoked by uid 1025); 26 May 2004 08:27:04 -0000
|
||||||
|
Received: (qmail-scanner-1.22 95683 invoked by uid 82); 26 May 2004 08:27:04 -0000
|
||||||
|
Received: from mail018.syd.optusnet.com.au (211.29.132.72)
|
||||||
|
by server.rucus.ru.ac.za with SMTP; 26 May 2004 08:26:58 -0000
|
||||||
|
Received: from urYod.glasswings.com.au (c211-28-208-136.eburwd1.vic.optusnet.com.au [211.28.208.136])
|
||||||
|
by mail018.syd.optusnet.com.au (8.11.6p2/8.11.6) with ESMTP id i4Q8QmD27299
|
||||||
|
for <guy-ezmlm@rucus.ru.ac.za>; Wed, 26 May 2004 18:26:49 +1000
|
||||||
|
Received: from urYod.glasswings.com.au (localhost.localdomain [127.0.0.1])
|
||||||
|
by urYod.glasswings.com.au (8.12.10/8.12.10) with ESMTP id i4Q8QlgD004619
|
||||||
|
for <guy-ezmlm@rucus.ru.ac.za>; Wed, 26 May 2004 18:26:47 +1000
|
||||||
|
Received: (from xanni@localhost)
|
||||||
|
by urYod.glasswings.com.au (8.12.10/8.12.10/Submit) id i4Q8Qljs004617
|
||||||
|
for guy-ezmlm@rucus.ru.ac.za; Wed, 26 May 2004 18:26:47 +1000
|
||||||
|
Date: Wed, 26 May 2004 18:26:47 +1000
|
||||||
|
From: Andrew Pam <xanni@glasswings.com.au>
|
||||||
|
To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Subject: Another ezmlm-web patch
|
||||||
|
Message-ID: <20040526082647.GN1975@urYod.glasswings.com.au>
|
||||||
|
Mime-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Disposition: inline
|
||||||
|
User-Agent: Mutt/1.4.1i
|
||||||
|
X-Face: ="NXL=B\E?60DRs]*]Mp-[@,"/\ESi&5s~&qMPLKzyWqo*<)SiE$IykXoakjYA62"oQT_.0I-i:nay>Pg]I{>J&dN(D<]F}+eaMSI=Kv]<L%q>fr7.e;3u(e1ZlP^C>pRxW*sJEgdAevnn^/D{Eg[f
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 1682
|
||||||
|
|
||||||
|
Hello! I recently upgraded my system from Red Hat Linux 7.3 to
|
||||||
|
Fedora Core 1 which in turn resulted in upgrading my perl to 5.8.3.
|
||||||
|
This revealed a nasty security bug in Mail::Ezmlm which of course affects
|
||||||
|
ezmlm-web.cgi and is detected by perl when running SUID. Mail::Ezmlm
|
||||||
|
passes email addresses to the ezmlm tools on the command line using the
|
||||||
|
"system" perl function, but doesn't check that the email addresses are
|
||||||
|
free of dangerous characters. Here's a patch to ezmlm-web.cgi to make
|
||||||
|
it check for valid characters before calling Mail::Ezmlm:
|
||||||
|
|
||||||
|
--- ezmlm-web.cgi.orig 2000-09-26 06:58:08.000000000 +1100
|
||||||
|
+++ ezmlm-web.cgi 2004-05-26 17:54:30.000000000 +1000
|
||||||
|
@@ -477,7 +477,14 @@
|
||||||
|
untie %pretty;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ($list->sub($add->address(), $part) != 1) {
|
||||||
|
+# Modified 2004-05-26 by Andrew Pam <xanni@sericyb.com.au>
|
||||||
|
+# Untaint the address because $list->sub will pass it to ezmlm-sub
|
||||||
|
+# on the command line!
|
||||||
|
+# Note this may not handle some less common email address formats
|
||||||
|
+ my($addr) = $add->address() =~ /([\w\.\=]+\@[\w\.\=]+)/
|
||||||
|
+ or die "Illegal character in address '" . $add->address() ."'";
|
||||||
|
+# if ($list->sub($add->address(), $part) != 1) {
|
||||||
|
+ if ($list->sub($addr, $part) != 1) {
|
||||||
|
die "Unable to subscribe to list: $!";
|
||||||
|
}
|
||||||
|
$count++;
|
||||||
|
|
||||||
|
Of course arguably Mail::Ezmlm should really be doing this.
|
||||||
|
|
||||||
|
Cheers,
|
||||||
|
Andrew
|
||||||
|
--
|
||||||
|
mailto:xanni@xanadu.net Andrew Pam
|
||||||
|
http://www.xanadu.com.au/ Chief Scientist, Xanadu
|
||||||
|
http://www.glasswings.com.au/ Technology Manager, Glass Wings
|
||||||
|
http://www.sericyb.com.au/ Manager, Serious Cybernetics
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
From gordonr@e-smith.com Wed Oct 24 08:10:56 2001
|
||||||
|
Return-Path: <gordonr@e-smith.com>
|
||||||
|
Delivered-To: guy-ezmlm@rucus.ru.ac.za
|
||||||
|
Received: (qmail 18972 invoked from network); 24 Oct 2001 06:10:56 -0000
|
||||||
|
Received: from terrapin.ru.ac.za (146.231.128.6)
|
||||||
|
by rucus.ru.ac.za with SMTP; 24 Oct 2001 06:10:56 -0000
|
||||||
|
Received: from cpe-144-132-208-16.nsw.bigpond.net.au ([144.132.208.16] helo=icedvovo.sydney.e-smith.com)
|
||||||
|
by terrapin.ru.ac.za with smtp (Exim 3.32 #1)
|
||||||
|
id 15wHFE-000C6Z-00
|
||||||
|
for guy-ezmlm@rucus.ru.ac.za; Wed, 24 Oct 2001 08:10:29 +0200
|
||||||
|
Received: (qmail 19833 invoked by uid 500); 24 Oct 2001 06:10:53 -0000
|
||||||
|
MBOX-Line: From gordonr@e-smith.com Wed Oct 24 16:10:53 2001
|
||||||
|
Date: Wed, 24 Oct 2001 16:10:53 +1000
|
||||||
|
From: Gordon Rowell <gordonr@e-smith.com>
|
||||||
|
To: Guy Antony Halse <guy-ezmlm@rucus.ru.ac.za>
|
||||||
|
Subject: ezmlm-web 2.1 patch - if you can't create lists, you can't delete them
|
||||||
|
Message-ID: <20011024161053.U8219@e-smith.com>
|
||||||
|
Mime-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=us-ascii
|
||||||
|
Content-Disposition: inline
|
||||||
|
User-Agent: Mutt/1.2.5i
|
||||||
|
Organization: Mitel Networks Corporation
|
||||||
|
Status: RO
|
||||||
|
Content-Length: 1758
|
||||||
|
Lines: 40
|
||||||
|
|
||||||
|
Hi Guy,
|
||||||
|
|
||||||
|
I'm in process of integrating ezmlm-web with our SME Server V5 product - see
|
||||||
|
www.e-smith.{com,org}. I did a quick and dirty proof of concept contrib to
|
||||||
|
integrate ezmlm, and am now revising it around ezmlm-web - great stuff.
|
||||||
|
|
||||||
|
It fits in very well with our manager. I have a small shim to create
|
||||||
|
and delete lists which ensures that the list is known to our account
|
||||||
|
namespace. I wanted to ensure that people couldn't delete lists without
|
||||||
|
our manager knowing about it. The patch below also disables list deletion
|
||||||
|
if you have disabled list creation. You may want another switch, but
|
||||||
|
overloading opt_c seemed right to me.
|
||||||
|
|
||||||
|
BTW: I am also making use of Mail::Ezmlm, which is great, so you're not the
|
||||||
|
only one who thinks it's a good idea :-)
|
||||||
|
|
||||||
|
Also, I'll be building an RPM out of ezmlm-web which I'll make available
|
||||||
|
once I've done it.
|
||||||
|
|
||||||
|
Gordon
|
||||||
|
--
|
||||||
|
Gordon Rowell gordonr@e-smith.com
|
||||||
|
VP Engineering
|
||||||
|
Network Server Solutions Group http://www.e-smith.com
|
||||||
|
Mitel Networks Corporation http://www.mitel.com
|
||||||
|
|
||||||
|
---CUT HERE------CUT HERE------CUT HERE------CUT HERE---
|
||||||
|
[gordonr@sao]$ diff -u ezmlm-web.cgi.orig ezmlm-web.cgi
|
||||||
|
--- ezmlm-web.cgi.orig Tue Sep 26 06:58:08 2000
|
||||||
|
+++ ezmlm-web.cgi Wed Oct 24 16:05:08 2001
|
||||||
|
@@ -287,7 +287,7 @@
|
||||||
|
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'create'}]"), ' ' if (!defined($opt_c));
|
||||||
|
print $q->submit(-name=>'action', -value=>"[$BUTTON{'edit'}]"), ' ' if(defined(@lists));
|
||||||
|
- print $q->submit(-name=>'action', -value=>"[$BUTTON{'delete'}]") if(defined(@lists));
|
||||||
|
+ print $q->submit(-name=>'action', -value=>"[$BUTTON{'delete'}]") if ((!defined($opt_c)) && (defined(@lists)));
|
||||||
|
print '</TD></TR><TR><TD> </TD></TR></TABLE></CENTER>';
|
||||||
|
print $q->endform;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
1572
ezmlm-web-ng/contrib-patches/ezmlm-web-jose-celestino-20020208.txt
Normal file
1572
ezmlm-web-ng/contrib-patches/ezmlm-web-jose-celestino-20020208.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue