ezmlm-web und web-splash ausgelagert
This commit is contained in:
parent
d9086bca2f
commit
fec57c6d39
65 changed files with 0 additions and 9902 deletions
|
@ -1,14 +0,0 @@
|
||||||
This repository contains the development code of ezmlm-web
|
|
||||||
|
|
||||||
* trunk - the development area
|
|
||||||
* tags - released versions since 2.1
|
|
||||||
* website - the website for https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
* contrib-patches - incoming patches from users (including the ones, that were sent to Guy)
|
|
||||||
|
|
||||||
the website of ezmlm-web can be found at:
|
|
||||||
https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
|
|
||||||
the original website of ezmlm-web's creator Guy Antony Halse is available at:
|
|
||||||
http://rucus.ru.ac.za/~guy/ezmlm/
|
|
||||||
|
|
||||||
send questions and recommondations to ezmlm-web@sumpfralle.de
|
|
|
@ -1,27 +0,0 @@
|
||||||
Source of most patches:
|
|
||||||
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)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-----------------------------------------------
|
|
||||||
############ directory Policy #################
|
|
||||||
* done - patches that were incorporated
|
|
||||||
* ignored - patches, that were ignored
|
|
||||||
* open - these patches are not yet implemented/examined
|
|
|
@ -1,422 +0,0 @@
|
||||||
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
|
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
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--
|
|
||||||
|
|
||||||
|
|
|
@ -1,52 +0,0 @@
|
||||||
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.
|
|
||||||
|
|
||||||
|
|
|
@ -1,54 +0,0 @@
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,193 +0,0 @@
|
||||||
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--
|
|
||||||
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
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
|
|
||||||
|
|
|
@ -1,67 +0,0 @@
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -1,84 +0,0 @@
|
||||||
$Id: CHANGES,v 1.2 2000/09/25 17:54:06 guy Exp $
|
|
||||||
|
|
||||||
REVISION HISTORY - ezmlm-web.cgi
|
|
||||||
================================
|
|
||||||
|
|
||||||
Version 0.1 - 10/04/98 (Not Released)
|
|
||||||
* University Vac - I was bored and started to play. The first version just
|
|
||||||
let people play with the subscribers list. No moderators, no nothing.
|
|
||||||
|
|
||||||
Version 0.2 - 13/04/98 (Not Released)
|
|
||||||
* Allow list creation
|
|
||||||
* Allowed users to edit moderators
|
|
||||||
|
|
||||||
Version 0.3 - 15/04/98
|
|
||||||
* Allow list deletion (for balin@moria.org)
|
|
||||||
* Made changes to allow it to run on RedHat 4.2 as well as FreeBSD 3.0
|
|
||||||
* Fixed some minor bugs (cosmetic irritaions really) that people noticed
|
|
||||||
* Sorted subscribers list into alphabetical order.
|
|
||||||
* Added command line switch to change list directory (for nxsy@moria.org)
|
|
||||||
* Wrote some documentation ...
|
|
||||||
|
|
||||||
Version 0.4 - 28/04/98
|
|
||||||
* Fixed up virtual domain (inlocal) stuff as spotted by bryan@rucus
|
|
||||||
* Allowed the list directory to be automatically created if necessary.
|
|
||||||
|
|
||||||
Version 0.5 - 12/05/98 (Not Released)
|
|
||||||
* More bug fixes. Mainly for mathew@graham.
|
|
||||||
|
|
||||||
Version 1.0 - 01/08/98
|
|
||||||
* Complete re-write to convert to perl5 and CGI.pm
|
|
||||||
* Removed a lot of dependancy on the OS. Use builtin functions instead :)
|
|
||||||
* Added support for ezmlm-idx
|
|
||||||
* Added a lot more command line option support (-adfgiklmnpqsrstux5)
|
|
||||||
* Added support for digests and digest subscribers
|
|
||||||
* Added support for blacklists
|
|
||||||
* Allowed users to edit the config of existing lists
|
|
||||||
* Allowed the user to edit headeradd and headerremove as well as mimeremove
|
|
||||||
* Allowed user to edit any of the files in DIR/text
|
|
||||||
* Revised interface to make it more user-friendly and ergonomic.
|
|
||||||
* Changed the background colour for Kether (clb@rucus) *gryn*
|
|
||||||
* Removed a big bug in the delete_list function that had gone unnoticed.
|
|
||||||
|
|
||||||
Version 1.0.1 - 10/08/98
|
|
||||||
* Fixed a bug in the way 1.0 re-configured virtual hosts (bryan@rucus)
|
|
||||||
* Made the script read the /var/qmail/control files instead of explicitly
|
|
||||||
setting variables (for david@summersoft)
|
|
||||||
|
|
||||||
Version 1.0.2 - 28/08/98
|
|
||||||
* Fixed the bug introduced in v1.0.1 :( (keith@rucus)
|
|
||||||
* Fixed the way we recreate config files (noticed by Glen Stewart)
|
|
||||||
* Made the script check return values of system calls properly
|
|
||||||
* Fixed some of the taint checking stuff ... reports less in the logs now.
|
|
||||||
|
|
||||||
Version 1.0.3 - 03/10/98
|
|
||||||
* Fixed the alias-alias-alias-list bug in inlocal (bryan@rucus)
|
|
||||||
* Added a bit of online help
|
|
||||||
* Fixed the & in list owner (bryan@rucus)
|
|
||||||
* Added multi-level access to lists (based on idea by Glen Stewart)
|
|
||||||
|
|
||||||
Version 2.0 - 01/01/00
|
|
||||||
* Rewrote most of the code to take advantage of Mail::Ezmlm
|
|
||||||
* Made the webuser file more functional (users can alter it)
|
|
||||||
* Now handles all current, and future command line options
|
|
||||||
* Changed the colours :)
|
|
||||||
* Added support for ezmlm-cgi web archives
|
|
||||||
* Made it -w and use strict clean
|
|
||||||
* Moved all user config to a separate file
|
|
||||||
* Fixed the way we worked out list config - now complete
|
|
||||||
* Allowed a user specific config over-ride ``ezmlmwebrc''
|
|
||||||
* Allowed the printing of `nice' usernames (for Rhodes CS Dept)
|
|
||||||
* Took account of non-standard paths for moderators
|
|
||||||
* Removed all system() and `` calls from ezmlm-web.cgi
|
|
||||||
* Made `look and feel' virtually all user configurable
|
|
||||||
* Added a lot more context sensitive help
|
|
||||||
* Made ezmlm-web 99% language configurable - but no other templates yet :(
|
|
||||||
* Added support for creating databases
|
|
||||||
|
|
||||||
Version 2.1 - 25/09/00
|
|
||||||
* Fixed the multiple delete thing - finally!
|
|
||||||
* Fixed the '-' in username problem - The '-' in hostnames problem is fixed
|
|
||||||
in the new version of Mail::Ezmlm
|
|
||||||
* Fixed the '_' in list names problem
|
|
||||||
* Added support for file uploads of email addresses (multiple subscribe)
|
|
||||||
* Made error handling more friendly
|
|
|
@ -1,323 +0,0 @@
|
||||||
$Id: README,v 1.2 2000/09/25 17:57:21 guy Exp $
|
|
||||||
|
|
||||||
=================
|
|
||||||
| ezmlm-web-2.1 |
|
|
||||||
=================
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
I. Copyright Stuff
|
|
||||||
II. Some Background
|
|
||||||
III. Requirements
|
|
||||||
IV. Files
|
|
||||||
V. Installation
|
|
||||||
VI. Notes
|
|
||||||
VII. Multi-level list access
|
|
||||||
VIII. Language Portability
|
|
||||||
IX. Bugs && Bug Reports
|
|
||||||
X. Acknowledgements
|
|
||||||
XI. Availability
|
|
||||||
|
|
||||||
|
|
||||||
I. Copyright Stuff - essentially the FreeBSD licence ...
|
|
||||||
==================
|
|
||||||
ezmlm-web - version 2.1 - 25/09/2000
|
|
||||||
|
|
||||||
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
|
||||||
Please send bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
Neither name Guy Antony Halse nor the names of any contributors may be used
|
|
||||||
to endorse or promote products derived from this software without specific
|
|
||||||
prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
|
|
||||||
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
II. Some Background
|
|
||||||
===================
|
|
||||||
The need for ezmlm-web arose from the fact that we host many student
|
|
||||||
societies on our system. These societies usually have a virtual host for web
|
|
||||||
and email, which is administered by a computer rep from the society. These
|
|
||||||
computer reps often have little or no knowledge of Unix and so we needed a
|
|
||||||
user friendly system that would let the create and maintain mailing lists
|
|
||||||
(such as members@foo.soc.ru.ac.za, committee@foo.soc.ru.ac.za, etc).
|
|
||||||
|
|
||||||
Since I am never keen to re-invent the wheel, I had a look at Steve Peterson's
|
|
||||||
script (http://virtation.com/qmail/ml-sub), which allows people to subscribe
|
|
||||||
and unsubscribe from mailing lists using a form->email gateway. This is fine
|
|
||||||
for putting on a web page saying "here come and join our mailing list", but
|
|
||||||
doesn't really allow you to administrate a list.
|
|
||||||
|
|
||||||
Security of mailing lists was a concern, as we really didn't want
|
|
||||||
unauthorised people to be able to alter some users list. Ezmlm-web itself
|
|
||||||
implements no security checks (apart from un-tainting input) and so relies
|
|
||||||
on the web server to do this (re-inventing the wheel again :). We use an
|
|
||||||
Apache webserver, so one can control access to a directory using a .htaccess
|
|
||||||
file or in the access.conf file. ApacheWeek have a good article on doing
|
|
||||||
this at http://www.apacheweek.com/features/userauth. I also give examples
|
|
||||||
later in this document.
|
|
||||||
|
|
||||||
This version of ezmlm-web (2.0) is based to a large extent on previous
|
|
||||||
versions that I have developed. It has however been totally re-written to
|
|
||||||
make use of the Mail::Ezmlm perl module I wrote. At the same time it was
|
|
||||||
updated and extended to include the new features of ezmlm-idx. It includes
|
|
||||||
many new features that have been suggested to me over the last few months,
|
|
||||||
and hopefully is now useful to a much larger group of people.
|
|
||||||
|
|
||||||
III. Requirements
|
|
||||||
=================
|
|
||||||
This version of ezmlm-web requires the following;
|
|
||||||
|
|
||||||
* qmail v1.03
|
|
||||||
* ezmlm v0.53 (idx v0.40)
|
|
||||||
* Perl v5.004 and the following modules;
|
|
||||||
+ Mail::Ezmlm v0.03
|
|
||||||
+ Mail::Address v1.15
|
|
||||||
+ CGI v2.6
|
|
||||||
+ CGI::Carp v1.06
|
|
||||||
+ DB_File v1.65
|
|
||||||
+ Getopt::Std v4.1
|
|
||||||
+ File::Find v?
|
|
||||||
+ File::Copy v2.02
|
|
||||||
|
|
||||||
The version number indicates the version of the module that ezmlm-web was
|
|
||||||
developed with. Earlier versions may work, but then they haven't been
|
|
||||||
tested. Have a look on http://www.CPAN.org/, http://www.qmail.org/, and
|
|
||||||
http://www.ezmlm.org/ for anything you are missing.
|
|
||||||
|
|
||||||
IV. Files
|
|
||||||
=========
|
|
||||||
In this distribution you should find 8 files;
|
|
||||||
|
|
||||||
README This file. Provides some background information, notes on
|
|
||||||
installation, etc. Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
CHANGES The change history. Not needed to run ezmlm-web
|
|
||||||
|
|
||||||
TODO This file is a list of things I intend doing in future
|
|
||||||
versions of ezmlm-web. That is if there are any future
|
|
||||||
versions :) Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
ezmlm-web.cgi The ezmlm-web script proper. This program requires that
|
|
||||||
you have perl5 installed on your machine and that your web
|
|
||||||
server is capable of running CGI scripts.
|
|
||||||
|
|
||||||
index.c A C wrapper to allow ezmlm-web.cgi to run suid. Not
|
|
||||||
strictly necessary if your setup allows perl scripts to
|
|
||||||
run suid, but I prefer using wrappers anyway. It needs to
|
|
||||||
be edited and compiled to suit your system. Not needed to
|
|
||||||
run ezmlm-web.
|
|
||||||
|
|
||||||
htaccess.sample A sample Apache .htaccess file for controlling access to
|
|
||||||
the mailing lists. If you use another web server, you will
|
|
||||||
have to work this bit out for yourself.
|
|
||||||
|
|
||||||
webusers.sample A sample webusers file for multi-level access control.
|
|
||||||
|
|
||||||
V. Installation
|
|
||||||
===============
|
|
||||||
1. Copy ezmlm-web.cgi to some publically readable directory. It does not
|
|
||||||
have to be in a path accessible to your web server, but any user with a
|
|
||||||
mailing list must be able to run it (Check the read and execute rights
|
|
||||||
on both the file and directory). We put our copy in
|
|
||||||
/usr/local/bin ...
|
|
||||||
|
|
||||||
3. Edit the ezmlmwebrc file and alter the variables at the top to suit
|
|
||||||
your particular system. In particular, you will probably have to change
|
|
||||||
the $ENV{'PATH'} variable. Be particularly careful about what you set
|
|
||||||
as the path. Too much is a security risk and too little will cause the
|
|
||||||
script to malfunction. Version 2.0 requires that the following programs
|
|
||||||
be accessible in your path; mv, rm
|
|
||||||
|
|
||||||
Also be careful about the $LIST_DIR variable. This script assumes that
|
|
||||||
all users store their mailing lists in the same sub directory of the
|
|
||||||
home directory (eg ~/lists). You can override this for an individual
|
|
||||||
user by recompiling the C wrapper to call ezmlm-web.cgi with a -d
|
|
||||||
option.
|
|
||||||
|
|
||||||
Other configurable options are documented in the ezmlmwebrc file
|
|
||||||
itself. I have tried to keep the amount of information that you need to
|
|
||||||
supply to a minimum and also make reasonable guesses about default
|
|
||||||
values.
|
|
||||||
|
|
||||||
4. Edit the index.c file and change the path to the path of your copy
|
|
||||||
of ezmlm-web.cgi. Then compile this file. You can do this by issuing
|
|
||||||
the command; gcc -o index.cgi index.c
|
|
||||||
|
|
||||||
5. For every user/virtual host that needs to manage mailing lists, you
|
|
||||||
need to create a SUID (user not root!!) copy of index.cgi (see
|
|
||||||
chmod(1) for details). These need to reside somewhere accessible by
|
|
||||||
the web server. I suggest that you put them in a sub directory (see
|
|
||||||
about security) of each user/virtual host's home directory (eg
|
|
||||||
/home/luser/public_html/ezmlm for Apache on Redhat).
|
|
||||||
|
|
||||||
The copies don't actually have to be called index.cgi, but it is nice
|
|
||||||
for web servers that can resolve a cgi script as an index page (see the
|
|
||||||
srm.conf file in Apache). It is important to make sure that whichever
|
|
||||||
directory you choose to put them can i: Execute CGI Scripts and ii: Be
|
|
||||||
access controlled (here I mean both web and user access) by some method
|
|
||||||
(eg .htaccess, access.conf for Apache).
|
|
||||||
|
|
||||||
6. Install some method of securing access to the page. The following
|
|
||||||
information is applicable to Apache web servers ... Detailed
|
|
||||||
information on user authentication can be obtained from the Apache
|
|
||||||
documentation (http://www.apache.org) and ApacheWeek
|
|
||||||
(http://www.apacheweek.com/features/userauth)
|
|
||||||
|
|
||||||
6.1 Ensure that your Apache setup will allow .htaccess file to control
|
|
||||||
access in the directory that contains. This is controlled by the
|
|
||||||
AllowOverride tag in access.conf. (Also ensure you have the
|
|
||||||
necessary Apache modules installed)
|
|
||||||
|
|
||||||
6.2 Create a htpasswd file. This is done using the htpasswd command that
|
|
||||||
comes with Apache. Its command line syntax is;
|
|
||||||
htpasswd [-c] passwordfile username
|
|
||||||
|
|
||||||
You need to put the passwordfile somewhere that is not accessible by
|
|
||||||
people through the web, and create an entry for each user you want
|
|
||||||
to have access ... See the ApacheWeek article for more details.
|
|
||||||
|
|
||||||
6.3 Create a .htaccess file in the directory that contains index.cgi.
|
|
||||||
Note that using Apache's built in access control, you can only control
|
|
||||||
access to directories, not individual files, hence the need for a
|
|
||||||
sub-directory in step 5.
|
|
||||||
|
|
||||||
The format of the .htaccess file should be along the lines of this;
|
|
||||||
|
|
||||||
AuthName EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /path/to/passwordfile
|
|
||||||
require valid-user # or require user username
|
|
||||||
|
|
||||||
Again, see the ApacheWeek article for details.
|
|
||||||
|
|
||||||
7. Test the installation through the web. You should be asked for a
|
|
||||||
username and password (supplied in 6.2) and then be presented with a
|
|
||||||
screen entitled EZ Mailing List Manger. You can then try to create and
|
|
||||||
edit mailing lists ... Have Fun :)
|
|
||||||
|
|
||||||
VI. Notes
|
|
||||||
=========
|
|
||||||
* There is a function to delete mailing lists, but I really don't like the
|
|
||||||
idea. The only reason I put it in is that bvi@rucus asked for it.
|
|
||||||
If you set $UNSAFE_RD = 0 (the default) in the config section, the
|
|
||||||
ezmlm-web won't actually delete the list. In this case it moves the <list>
|
|
||||||
to .<list> and all the associated .qmail files to a sub-directory called
|
|
||||||
deleted.qmail/ (In the users home directory. This is by far a safer way
|
|
||||||
(since you can restore lists) and therefore I recommend it.
|
|
||||||
|
|
||||||
* The HTML interface has been tested using Nutscrape, Internet Exploder, and
|
|
||||||
Lynx. If anyone uses anything else and has problems, please let me know.
|
|
||||||
|
|
||||||
* I suggest that you make use of custom ezmlmwebrc files rather than using
|
|
||||||
the -d command line switches - it makes fault diagnosis easier ...
|
|
||||||
|
|
||||||
* Please see the section on languages below.
|
|
||||||
|
|
||||||
VII. Multi-Level Access
|
|
||||||
=======================
|
|
||||||
Ezmlm-web has a multi-level access system. This depends on a file called
|
|
||||||
webusers being present in $LIST_DIR. If the file is not present, then any
|
|
||||||
valid user has access to all lists. If, however, this file exists a number
|
|
||||||
of constraints come into place.
|
|
||||||
|
|
||||||
- The webusers file is scanned for either the list name (case insensitive) or
|
|
||||||
an ALL (case sensitive) entry.
|
|
||||||
- The list entry (or ALL) is scanned for the current user (as set in
|
|
||||||
$REMOTE_USER) or an ALL entry.
|
|
||||||
- If any valid match is made, then the user is allowed to edit the list.
|
|
||||||
Otherwise the user is politely told to go away ;-)
|
|
||||||
|
|
||||||
If list creation is allowed and the webusers file exists, then the person who
|
|
||||||
creates the list is the default owner. As of yet there is no way to add users
|
|
||||||
through the web interface, but I intend to do this eventually.
|
|
||||||
|
|
||||||
The format of a webusers file is as follows;
|
|
||||||
|
|
||||||
list1: user1, user2, user3
|
|
||||||
ALL: user1, user2
|
|
||||||
list2: ALL
|
|
||||||
|
|
||||||
ie; listname colon (:) and a comma (,) separated list of users. Spaces are
|
|
||||||
ignored but each list must appear on a new line.
|
|
||||||
|
|
||||||
Once this file exists, the ezmlm-web script will allow the list users to
|
|
||||||
configure their access lists along with any other options.
|
|
||||||
|
|
||||||
Oh, and BTW, list creation through the web can now be disabled. The way to do
|
|
||||||
this is to compile the wrapper calling ezmlm-web.cgi with a -c switch. See the
|
|
||||||
example index.c file for more details.
|
|
||||||
|
|
||||||
VIII. Language Portablity
|
|
||||||
=========================
|
|
||||||
One of the great new features of version 2.0 is that it is essentially
|
|
||||||
language independant (okay, not quite, but is 99% of the way there). Most of
|
|
||||||
the fixed strings, help, etc is defined in the RC file and thus can be
|
|
||||||
altered to suite a particular locale, language or even your own taste.
|
|
||||||
|
|
||||||
If anyone gets round to writing full templates for languages I would
|
|
||||||
appreciate it if you would do two things;
|
|
||||||
|
|
||||||
Firstly, make them public and announce them on the ezmlm@lists.cr.yp.to
|
|
||||||
mailing list so that others may benefit.
|
|
||||||
|
|
||||||
Secondly, please mail me a copy (guy-ezmlm@rucus.ru.ac.za) so that I may use
|
|
||||||
them in any future releases of ezmlm-web.
|
|
||||||
|
|
||||||
|
|
||||||
IX. Bugs && Bug Reports
|
|
||||||
=======================
|
|
||||||
I don't know of any bugs, but then this is a rewrite and a first release. It
|
|
||||||
has been tested reasonably well, but not exhaustively. I know it works on
|
|
||||||
FreeBSD 4.0-STABLE, FreeBSD 3.4-RELEASE, RedHat 5.1 and Redhat 6.0 all using
|
|
||||||
an Apache web server, but I would be interested to know whether it works on
|
|
||||||
other OSs and with other web servers. This version is far less dependent on
|
|
||||||
the OS than previous versions so I don't see any reason why it shouldn't.
|
|
||||||
|
|
||||||
Please mail bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
|
||||||
|
|
||||||
X. Acknowledgements
|
|
||||||
===================
|
|
||||||
* Keith Burdis (keith@rucus.ru.ac.za) - For constantly bugging me and
|
|
||||||
ensuring that I actually got round to writing some code :)
|
|
||||||
* Bryan Kilian (bryan@rucus.ru.ac.za) and the administrators of the
|
|
||||||
Litestep mailing list - For helping beta test and putting up with me
|
|
||||||
pestering them.
|
|
||||||
* Several societies at Rhodes. For switching to my web interface and so
|
|
||||||
unknowingly helping to beta test it.
|
|
||||||
* Barry Irwin (bvi@moria.org) - For trusting me and moving the Grahamstown
|
|
||||||
Foundation over to qmail and ezmlm - yet another beta tester :-)
|
|
||||||
* David Summers (david@summersoft.fay.ar.us) - For some ideas. And for
|
|
||||||
offering to make up an RPM version. I hope the offer still exists for
|
|
||||||
version 2.0 :-)
|
|
||||||
* Glen Stewart (glen_stewart@associate.com) - For a multitude of ideas.
|
|
||||||
* Fred Lindberg (lindberg@id.wustl.edu) for his useful posts to the
|
|
||||||
mailing list, suggestions, help, etc
|
|
||||||
* Galen Johnson (gjohnson@totalsports.net) - For some ideas on bugfixes.
|
|
||||||
|
|
||||||
XI. Availability
|
|
||||||
=================
|
|
||||||
The latest version of ezmlm-web will always be available on;
|
|
||||||
ftp://rucus.ru.ac.za/pub/mail/ezmlm/
|
|
||||||
|
|
||||||
More information on ezmlm-web and developments to ezmlm-web can be found at;
|
|
||||||
http://rucus.ru.ac.za/~guy/ezmlm/
|
|
|
@ -1,8 +0,0 @@
|
||||||
$Id: TODO,v 1.3 2000/09/25 19:58:02 guy Exp $
|
|
||||||
|
|
||||||
TODO - ezmlm-web 2.1
|
|
||||||
|
|
||||||
- More Documentation
|
|
||||||
- Maybe allowing user specific overides on the -c option.
|
|
||||||
- Some nice install method. But then I use FreeBSD and ported it
|
|
||||||
so that might just count as my nice install method :)
|
|
|
@ -1,18 +0,0 @@
|
||||||
$Id: UPGRADING,v 1.1 2000/09/25 19:24:20 guy Exp $
|
|
||||||
|
|
||||||
UPGRADING ezmlm-web 2.0 to ezmlm-web 2.1
|
|
||||||
|
|
||||||
There are no major changes that need to be made in order to upgrade. All
|
|
||||||
that is necessary is to add two new lines to your ezmlmwebrc ... In the top
|
|
||||||
section of the file add
|
|
||||||
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
and in the %HELPER section, you need to add
|
|
||||||
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
|
|
||||||
(or just copy the new ezmlmwebrc :)
|
|
||||||
|
|
||||||
Have a look for these two lines in the new ezmlmwebrc included in this
|
|
||||||
distribution if you are unsure of how/where to put these.
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,268 +0,0 @@
|
||||||
# $Id: ezmlmwebrc,v 1.5 2000/09/25 18:25:26 guy Exp $
|
|
||||||
# Configuration file for ezmlm-web 2.1
|
|
||||||
# ===========================================================================
|
|
||||||
|
|
||||||
# This file is not just an ordinary configuration file - it contains valid
|
|
||||||
# perl statements that are executed just like any other perl script. When
|
|
||||||
# editing this file, be careful that it is still valid perl when you have
|
|
||||||
# finished (perl -w ezmlmwebrc ;-)
|
|
||||||
|
|
||||||
# It is divided into to logical parts. The first part configures the way
|
|
||||||
# ezmlm-web runs, and the second changes the language, etc of ezmlm-web. You
|
|
||||||
# can not arbitarilly exclude any statement, since the script doesn't define
|
|
||||||
# any defaults of its own. You could, however, always split this file up and
|
|
||||||
# include the parts with
|
|
||||||
#
|
|
||||||
# require('/path/to/other/part');
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Where do we store lists on this server ... Try "$HOME_DIR/lists".
|
|
||||||
# This directory will automatically be created if needed.
|
|
||||||
$LIST_DIR = "$HOME_DIR/lists";
|
|
||||||
|
|
||||||
# Safe list deletion?
|
|
||||||
# 0 = move list to .list and the .qmails to deleted.qmail/. Recoverable :)
|
|
||||||
# 1 = allow user to delete list completely. No backup, therefore no recovery.
|
|
||||||
$UNSAFE_RM = 0;
|
|
||||||
|
|
||||||
# Who is the alias user on this system (usually alias ;)
|
|
||||||
$ALIAS_USER = 'alias';
|
|
||||||
|
|
||||||
# Where do the qmail control files live on this system ...
|
|
||||||
$QMAIL_BASE = $Mail::Ezmlm::QMAIL_BASE . '/control';
|
|
||||||
|
|
||||||
# The url to our web interface - so we can use ezmlm-cgi if necessary
|
|
||||||
$EZMLM_CGI_URL = 'http://some.server.that.has/cgi-bin/ezmlm-cgi';
|
|
||||||
|
|
||||||
# Where our ezcgirc file lives (probably /etc/ezmlm/ezcgirc)
|
|
||||||
$EZMLM_CGI_RC = '/etc/ezmlm/ezcgirc';
|
|
||||||
|
|
||||||
# Do we want to allow ``pretty'' names - ie more human readable ones
|
|
||||||
# This will slow ezmlm-web down a bit for large lists
|
|
||||||
$PRETTY_NAMES = 1;
|
|
||||||
|
|
||||||
# Do we want to allow the users to be allowed to upload a file containing
|
|
||||||
# lists of email addresses to subscribe?
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
# What switches to we want ezmlm-web to have on as default. The ezmlm-make
|
|
||||||
# defaults are aBDFGHIJKLMNOpQRSTUWX (small means enabled, CAPITALS mean
|
|
||||||
# disabled). The defaults below should be reasonable - I use them ;)
|
|
||||||
$DEFAULT_OPTIONS = 'aBDFGHiJkLMNOpQRSTUWx';
|
|
||||||
|
|
||||||
# Where do we find the nice little help icon - by default HELP_ICON_URL
|
|
||||||
# points to resources on http://rucus.ru.ac.za/. This will work, but we
|
|
||||||
# would appreciate it if you changed this to a local site.
|
|
||||||
$HELP_ICON_URL = 'http://rucus.ru.ac.za/icons/small/unknown.gif';
|
|
||||||
|
|
||||||
# Header for every page (.= concatinates)
|
|
||||||
$HTML_HEADER = '<TABLE BORDER="3" ALIGN="CENTER" CELLPADDING="5"><TR><TD BGCOLOR="#e0e0ff"><FONT SIZE=+3 COLOR=#000080><STRONG>E Z Mailing List Manager</STRONG></FONT></TD></TR></TABLE></CENTER><P>';
|
|
||||||
$HTML_HEADER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
|
|
||||||
# Footer for every page (.= concatinates)
|
|
||||||
$HTML_FOOTER = '</TD></TR></TABLE>';
|
|
||||||
$HTML_FOOTER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
$HTML_FOOTER .= '<FONT SIZE="-1"><A HREF="http://rucus.ru.ac.za/~guy/ezmlm/#ezmlm-web" TARGET="_blank">ezmlm-web</A> (v2.1) A web interface to <A HREF="http://www.ezmlm.org/" TARGET="_blank">ezmlm</A></FONT></TD></TR></TABLE>';
|
|
||||||
|
|
||||||
# What colour do we want the background to be?
|
|
||||||
$HTML_BGCOLOR = '#000080';
|
|
||||||
|
|
||||||
# What colour do we want text?
|
|
||||||
$HTML_TEXT = '#000000';
|
|
||||||
|
|
||||||
# What color do we want links?
|
|
||||||
$HTML_LINK = '#3333ff';
|
|
||||||
|
|
||||||
# What color to we want visited links?
|
|
||||||
$HTML_VLINK = '#8888ff';
|
|
||||||
|
|
||||||
# What is the title of this document?
|
|
||||||
$HTML_TITLE = 'E Z Mailing List Manager';
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# The meanings of the various ezmlm-make command line switches. The default
|
|
||||||
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
|
||||||
# own ezmlmrc. Removing options from this list makes them unavailable
|
|
||||||
# through ezmlm-web - this could be useful for things like -w
|
|
||||||
|
|
||||||
%EZMLM_LABELS = (
|
|
||||||
# option => ['Short Name',
|
|
||||||
# 'Long Help Description'],
|
|
||||||
|
|
||||||
a => ['Archived',
|
|
||||||
'Ezmlm will archive new messages'],
|
|
||||||
b => ['Block archive',
|
|
||||||
'Only moderators are allowed to access the archive'],
|
|
||||||
# c => config. This is implicity called, so is not defined here
|
|
||||||
d => ['Digest',
|
|
||||||
'Set up a digest list to disseminate digest of the list messages'],
|
|
||||||
# e => edit. Also implicity called, so not defined here
|
|
||||||
f => ['Prefix',
|
|
||||||
'Outgoing subject will be prefixed with the list name'],
|
|
||||||
g => ['Guard Archive',
|
|
||||||
'Archive access requests from unrecognized SENDERs will be rejected'],
|
|
||||||
h => ['Help subscription',
|
|
||||||
'Subscriptions do not require confirmation'],
|
|
||||||
i => ['Indexed',
|
|
||||||
'Indexed for WWW archive access'],
|
|
||||||
j => ['Jump off',
|
|
||||||
'Unsubscribe does not require confirmation'],
|
|
||||||
k => ['Kill',
|
|
||||||
'Posts from addresses in dir/deny/ are rejected'],
|
|
||||||
l => ['Subscriber List',
|
|
||||||
'Remote administrators can request a subscriber list'],
|
|
||||||
m => ['Message Moderation',
|
|
||||||
'All incoming messages are moderated'],
|
|
||||||
n => ['Text Editing',
|
|
||||||
'Allow remote administrators to edit files in dir/text/'],
|
|
||||||
o => ['Others rejected',
|
|
||||||
'Posts from addresses other than moderators are rejected'],
|
|
||||||
p => ['Public',
|
|
||||||
'List will respond to administrative requests and archive retrieval'],
|
|
||||||
q => ['Service Request Address',
|
|
||||||
'Process commands sent in the subject to local-request@host'],
|
|
||||||
r => ['Remote Admin',
|
|
||||||
'Enable remote adminstration of the list'],
|
|
||||||
s => ['Subscription Moderation',
|
|
||||||
'Subscriptions to the main list and digest will be moderated'],
|
|
||||||
t => ['Trailer',
|
|
||||||
'Add a trailer to outgoing messages'],
|
|
||||||
u => ['User Posts Only',
|
|
||||||
'Posts from unrecognized SENDER addresses will be rejected'],
|
|
||||||
# v => version. I doubt you will really need this ;-)
|
|
||||||
w => ['Remove Warn',
|
|
||||||
'Remove the ezmlm-warn(1) invocations from the list setup. It is assumed that ezmlm-warn(1) is run by other means'],
|
|
||||||
x => ['Extra',
|
|
||||||
'Strip certain mimetypes, etc'],
|
|
||||||
# y => not used
|
|
||||||
# z => not used
|
|
||||||
|
|
||||||
# These all take an extra argument, which is the default value to use
|
|
||||||
|
|
||||||
0 => ['Sublist',
|
|
||||||
'Make the list a sublist of list mainlist@host',
|
|
||||||
'mainlist@host'],
|
|
||||||
# 1 => not used
|
|
||||||
# 2 => not used
|
|
||||||
3 => ['From Address',
|
|
||||||
'Replace the "From:" header of the message with "From: fromarg"',
|
|
||||||
'fromarg'],
|
|
||||||
4 => ['Digest Options',
|
|
||||||
'Switches for ezmlm-tstdig(1)',
|
|
||||||
'-t24 -m30 -k64'],
|
|
||||||
5 => ['List Owner',
|
|
||||||
'The email address of the list owner',
|
|
||||||
''],
|
|
||||||
6 => ['SQL Database',
|
|
||||||
'SQL database connect information. Requires SQL support',
|
|
||||||
'host:port:user:password:datab:table'],
|
|
||||||
7 => ['Message Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
8 => ['Subscription Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
9 => ['Remote Admin Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path']
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This list defines most of the context sensitive help in ezmlm-web. What
|
|
||||||
# isn't defined here is the options, which are defined above ... You can
|
|
||||||
# alter these if you feel something else would make more sense to your users
|
|
||||||
# Just be careful of what can fit on a screen!
|
|
||||||
|
|
||||||
%HELPER = (
|
|
||||||
|
|
||||||
# These should be self explainitory
|
|
||||||
addaddress => 'You may enter any RFC822 compliant email address here, including the comment part. For example; J Random User <jru@on.web.za>',
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
moderator => 'Moderators: people who control who may subscribe or post to a list',
|
|
||||||
deny => 'Deny: A list of addresses that are _never_ allowed to mail the list',
|
|
||||||
allow => 'Allow: A list of address that are allowed to mail the list even if the configuration otherwise restricts it',
|
|
||||||
digest => 'Digest: People who will recieve a digest of all messages on the list',
|
|
||||||
webarch => 'View the web based archive of this list',
|
|
||||||
config => 'This lets you alter the way the list is set up',
|
|
||||||
listname => 'This is the name of the list as displayed on the Select Lists screen. It is also the name of the subdirectory that contains the list',
|
|
||||||
listadd => 'This is the email address of the list. Note that the defaults come from your qmail config. You should just update the local part (before the @)',
|
|
||||||
webusers => 'NB! At this stage, any users specified here must exist. User creation may be added in future versions',
|
|
||||||
prefix => 'Text to add to the subject line of all outgoing messages',
|
|
||||||
headerremove => 'This is a list of headers to remove from all outgoing mail',
|
|
||||||
headeradd => 'This is a list of headers to add to all outging mail',
|
|
||||||
mimeremove => 'All messages whose Content-Type matches these mime types will be bounced back to sender',
|
|
||||||
allowedit => 'Comma separated list of usernames, or <CODE>ALL</CODE> (all valid users)',
|
|
||||||
mysqlcreate => 'This will create the necessary MySQL tables if the list configuration above requires it'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
|
||||||
# you to configure them for your own language or taste. Since these are used
|
|
||||||
# by the switching algorithm it is important that every button has a unique
|
|
||||||
# caption - ie we can't have two 'Edit' buttons doing different things.
|
|
||||||
|
|
||||||
%BUTTON = (
|
|
||||||
|
|
||||||
# These MUST all be unique!
|
|
||||||
create => 'Create',
|
|
||||||
createlist => 'Create List',
|
|
||||||
edit => 'Edit',
|
|
||||||
delete => 'Delete',
|
|
||||||
deleteaddress => 'Delete Address',
|
|
||||||
addaddress => 'Add Address',
|
|
||||||
moderators => 'Moderators',
|
|
||||||
denylist => 'Deny List',
|
|
||||||
allowlist => 'Allow List',
|
|
||||||
digestsubscribers => 'Digest Subscribers',
|
|
||||||
configuration => 'Configuration',
|
|
||||||
yes => 'Yes',
|
|
||||||
no => 'No',
|
|
||||||
updateconfiguration => 'Update Configuration',
|
|
||||||
edittexts => 'Edit Texts',
|
|
||||||
editfile => 'Edit File',
|
|
||||||
savefile => 'Save File',
|
|
||||||
webarchive => 'Web Archive',
|
|
||||||
selectlist => 'Select List',
|
|
||||||
subscribers => 'Subscribers',
|
|
||||||
cancel => 'Cancel',
|
|
||||||
resetform => 'Reset Form',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
|
||||||
# these along with the button labels and help texts, you can convert ezmlm-web
|
|
||||||
# to another language :-) If anyone gets arround to doing complete templates
|
|
||||||
# for other languages I would appreciate a copy so that I can include it in
|
|
||||||
# future releases of ezmlm-web.
|
|
||||||
|
|
||||||
%LANGUAGE = (
|
|
||||||
nop => 'Action not yet implemented',
|
|
||||||
chooselistinfo => "<UL><LI>Choose a mailing list from the selection box or click on [$BUTTON{'create'}].<LI>Click on the [$BUTTON{'edit'}] button if you want to edit the selected list.<LI>Click on the [$BUTTON{'delete'}] button if you want to delete the selected list.</UL>",
|
|
||||||
confirmdelete => 'Confirm deletion of', # list name
|
|
||||||
subscribersto => 'Subscribers to', # list name
|
|
||||||
subscribers => 'subscribers',
|
|
||||||
additionalparts => 'Additional list parts',
|
|
||||||
posting => 'Posting',
|
|
||||||
subscription => 'Subscription',
|
|
||||||
remoteadmin => 'Remote Admin',
|
|
||||||
for => 'for', # as in; moderators for blahlist
|
|
||||||
createnew => 'Create a New List',
|
|
||||||
listname => 'List Name',
|
|
||||||
listaddress => 'List Address',
|
|
||||||
listoptions => 'List Options',
|
|
||||||
allowedtoedit => 'Users allowed to edit this list',
|
|
||||||
editconfiguration => 'Edit the List Configuration',
|
|
||||||
prefix => 'Subject prefex for outgoing messages',
|
|
||||||
headerremove => 'Headers to strip from all outgoing mail',
|
|
||||||
headeradd => 'Headers to add to all outgoing mail',
|
|
||||||
mimeremove => 'Mime types to strip from all outgoing mail',
|
|
||||||
edittextinfo => "The box on the left contains a list of files available in the<BR>DIR/text directory. These files are sent out in response to specfic user request, or as part of all outgoing messages<P>To edit a file, select its name from the box. Then click on the [$BUTTON{'editfile'}] button.<P>Press [$BUTTON{'cancel'}] when you have finished editing.",
|
|
||||||
editingfile => 'Editing File',
|
|
||||||
editfileinfo => '<BIG><STRONG>ezmlm-manage</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The subscription address<BR><TT><STRONG><#R#></STRONG></TT> The address a subscriber must reply to<P><BIG><STRONG>ezmlm-store</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The acceptance address<BR><TT><STRONG><#R#></STRONG></TT> The rejection address</UL>',
|
|
||||||
mysqlcreate => 'Create the MySQL database tables if necessary',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# === Configuration file ends ===
|
|
|
@ -1,9 +0,0 @@
|
||||||
#$Id: htaccess.sample,v 1.1 2000/01/29 11:35:40 guy Exp $
|
|
||||||
#
|
|
||||||
#order deny,allow
|
|
||||||
#deny from all
|
|
||||||
#allow from .ru.ac.za
|
|
||||||
AuthName "EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /etc/ezmlm/.htusers
|
|
||||||
require valid-user
|
|
|
@ -1,25 +0,0 @@
|
||||||
/* $Id: index.c,v 1.2 2000/09/25 18:14:12 guy Exp $ */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
|
||||||
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
|
||||||
/* See the README file in this distribution for copyright information */
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi");
|
|
||||||
|
|
||||||
/* Note that you could also use the following to allow a specific user
|
|
||||||
to store their mailing lists in a different directory defined by
|
|
||||||
/tmp/ezmlm-web-demo ... This over-rides the default . */
|
|
||||||
|
|
||||||
/* Look at the exec(3) man page if you don't understand how the arguments
|
|
||||||
list below works */
|
|
||||||
|
|
||||||
/*
|
|
||||||
char *switches[] = { "ezmlm-web.cgi", "-d", "/tmp/ezmlm-web-demo", NULL };
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi", switches);
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
comm: guy, arb
|
|
||||||
users: arb
|
|
||||||
members: ALL
|
|
||||||
ALL: root
|
|
Binary file not shown.
|
@ -1,91 +0,0 @@
|
||||||
$Id: CHANGES,v 1.2 2000/09/25 17:54:06 guy Exp $
|
|
||||||
|
|
||||||
REVISION HISTORY - ezmlm-web.cgi
|
|
||||||
================================
|
|
||||||
|
|
||||||
Version 0.1 - 10/04/98 (Not Released)
|
|
||||||
* University Vac - I was bored and started to play. The first version just
|
|
||||||
let people play with the subscribers list. No moderators, no nothing.
|
|
||||||
|
|
||||||
Version 0.2 - 13/04/98 (Not Released)
|
|
||||||
* Allow list creation
|
|
||||||
* Allowed users to edit moderators
|
|
||||||
|
|
||||||
Version 0.3 - 15/04/98
|
|
||||||
* Allow list deletion (for balin@moria.org)
|
|
||||||
* Made changes to allow it to run on RedHat 4.2 as well as FreeBSD 3.0
|
|
||||||
* Fixed some minor bugs (cosmetic irritaions really) that people noticed
|
|
||||||
* Sorted subscribers list into alphabetical order.
|
|
||||||
* Added command line switch to change list directory (for nxsy@moria.org)
|
|
||||||
* Wrote some documentation ...
|
|
||||||
|
|
||||||
Version 0.4 - 28/04/98
|
|
||||||
* Fixed up virtual domain (inlocal) stuff as spotted by bryan@rucus
|
|
||||||
* Allowed the list directory to be automatically created if necessary.
|
|
||||||
|
|
||||||
Version 0.5 - 12/05/98 (Not Released)
|
|
||||||
* More bug fixes. Mainly for mathew@graham.
|
|
||||||
|
|
||||||
Version 1.0 - 01/08/98
|
|
||||||
* Complete re-write to convert to perl5 and CGI.pm
|
|
||||||
* Removed a lot of dependancy on the OS. Use builtin functions instead :)
|
|
||||||
* Added support for ezmlm-idx
|
|
||||||
* Added a lot more command line option support (-adfgiklmnpqsrstux5)
|
|
||||||
* Added support for digests and digest subscribers
|
|
||||||
* Added support for blacklists
|
|
||||||
* Allowed users to edit the config of existing lists
|
|
||||||
* Allowed the user to edit headeradd and headerremove as well as mimeremove
|
|
||||||
* Allowed user to edit any of the files in DIR/text
|
|
||||||
* Revised interface to make it more user-friendly and ergonomic.
|
|
||||||
* Changed the background colour for Kether (clb@rucus) *gryn*
|
|
||||||
* Removed a big bug in the delete_list function that had gone unnoticed.
|
|
||||||
|
|
||||||
Version 1.0.1 - 10/08/98
|
|
||||||
* Fixed a bug in the way 1.0 re-configured virtual hosts (bryan@rucus)
|
|
||||||
* Made the script read the /var/qmail/control files instead of explicitly
|
|
||||||
setting variables (for david@summersoft)
|
|
||||||
|
|
||||||
Version 1.0.2 - 28/08/98
|
|
||||||
* Fixed the bug introduced in v1.0.1 :( (keith@rucus)
|
|
||||||
* Fixed the way we recreate config files (noticed by Glen Stewart)
|
|
||||||
* Made the script check return values of system calls properly
|
|
||||||
* Fixed some of the taint checking stuff ... reports less in the logs now.
|
|
||||||
|
|
||||||
Version 1.0.3 - 03/10/98
|
|
||||||
* Fixed the alias-alias-alias-list bug in inlocal (bryan@rucus)
|
|
||||||
* Added a bit of online help
|
|
||||||
* Fixed the & in list owner (bryan@rucus)
|
|
||||||
* Added multi-level access to lists (based on idea by Glen Stewart)
|
|
||||||
|
|
||||||
Version 2.0 - 01/01/00
|
|
||||||
* Rewrote most of the code to take advantage of Mail::Ezmlm
|
|
||||||
* Made the webuser file more functional (users can alter it)
|
|
||||||
* Now handles all current, and future command line options
|
|
||||||
* Changed the colours :)
|
|
||||||
* Added support for ezmlm-cgi web archives
|
|
||||||
* Made it -w and use strict clean
|
|
||||||
* Moved all user config to a separate file
|
|
||||||
* Fixed the way we worked out list config - now complete
|
|
||||||
* Allowed a user specific config over-ride ``ezmlmwebrc''
|
|
||||||
* Allowed the printing of `nice' usernames (for Rhodes CS Dept)
|
|
||||||
* Took account of non-standard paths for moderators
|
|
||||||
* Removed all system() and `` calls from ezmlm-web.cgi
|
|
||||||
* Made `look and feel' virtually all user configurable
|
|
||||||
* Added a lot more context sensitive help
|
|
||||||
* Made ezmlm-web 99% language configurable - but no other templates yet :(
|
|
||||||
* Added support for creating databases
|
|
||||||
|
|
||||||
Version 2.1 - 25/09/00
|
|
||||||
* Fixed the multiple delete thing - finally!
|
|
||||||
* Fixed the '-' in username problem - The '-' in hostnames problem is fixed
|
|
||||||
in the new version of Mail::Ezmlm
|
|
||||||
* Fixed the '_' in list names problem
|
|
||||||
* Added support for file uploads of email addresses (multiple subscribe)
|
|
||||||
* Made error handling more friendly
|
|
||||||
|
|
||||||
Version 2.2 - 26/01/02005
|
|
||||||
* German translation of the web interface - more translations can be added easily
|
|
||||||
* changed "ALT"-tags to "TITLE" - most browsers will display the tooltip texts now
|
|
||||||
* fixed security problems (permissions were not thoroughly check)
|
|
||||||
* user-based permission for creating lists (can be set in webusersrc)
|
|
||||||
* the location of the webusers file is now an option in ezmlmwebrc
|
|
|
@ -1,97 +0,0 @@
|
||||||
The following notes will guide you through the installation of ezmlm-web:
|
|
||||||
|
|
||||||
0. IMPORTANT: you need the perl module Mail::Ezmlm and others to use
|
|
||||||
ezmlm-web! The file README contains the list of necessary modules.
|
|
||||||
|
|
||||||
1. Get ezmlm-web and extract the archive:
|
|
||||||
tar xzf ezmlm-web-2.2.tar.gz
|
|
||||||
|
|
||||||
2. Copy ezmlm-web.cgi to some publically readable directory. It does not
|
|
||||||
have to be in a path accessible to your web server, but any user with a
|
|
||||||
mailing list must be able to run it (Check the read and execute rights
|
|
||||||
on both the file and directory). We put our copy in "/usr/local/bin".
|
|
||||||
|
|
||||||
At the top of ezmlm-web.gi you can will probably have to change the
|
|
||||||
$ENV{'PATH'} variable. Be careful about what you set as the path. Too
|
|
||||||
much is a security risk and too little will cause the script to
|
|
||||||
malfunction. Version 2.0 requires that the following programs be
|
|
||||||
accessible in your path: mv, rm
|
|
||||||
|
|
||||||
3. Edit the ezmlmwebrc file and alter the variables to suit your
|
|
||||||
particular system.
|
|
||||||
|
|
||||||
Be careful about the $LIST_DIR variable. This script assumes that all
|
|
||||||
users store their mailing lists in the same sub directory of the home
|
|
||||||
directory (eg ~/lists). You can override this for an individual user
|
|
||||||
by recompiling the C wrapper to call ezmlm-web.cgi with a -d option.
|
|
||||||
|
|
||||||
Other configurable options are documented in the ezmlmwebrc file
|
|
||||||
itself. I have tried to keep the amount of information that you need to
|
|
||||||
supply to a minimum and also make reasonable guesses about default
|
|
||||||
values.
|
|
||||||
|
|
||||||
Finally, copy the ezmlmwebrc file and the "lang" directory to one of
|
|
||||||
the following places:
|
|
||||||
- /etc/ezmlm
|
|
||||||
- the home directory of the user that runs ezmlm-web.cgi
|
|
||||||
- the directory, that contains your ezmlm-web.cgi file
|
|
||||||
|
|
||||||
4. Edit the index.c file and change the path to the path of your copy
|
|
||||||
of ezmlm-web.cgi. Then compile this file. You can do this by issuing
|
|
||||||
the command; gcc -o index.cgi index.c
|
|
||||||
|
|
||||||
5. For every user/virtual host that needs to manage mailing lists, you
|
|
||||||
need to create a SUID (user not root!!) copy of index.cgi (see
|
|
||||||
chmod(1) for details). These need to reside somewhere accessible by
|
|
||||||
the web server. I suggest that you put them in a sub directory (see
|
|
||||||
about security) of each user/virtual host's home directory (eg
|
|
||||||
/home/luser/public_html/ezmlm for Apache on Redhat).
|
|
||||||
|
|
||||||
The copies don't actually have to be called index.cgi, but it is nice
|
|
||||||
for web servers that can resolve a cgi script as an index page (see the
|
|
||||||
srm.conf file in Apache). It is important to make sure that whichever
|
|
||||||
directory you choose to put them can i: Execute CGI Scripts and ii: Be
|
|
||||||
access controlled (here I mean both web and user access) by some method
|
|
||||||
(eg .htaccess, access.conf for Apache).
|
|
||||||
|
|
||||||
6. Install some method of securing access to the page. The following
|
|
||||||
information is applicable to Apache web servers ... Detailed
|
|
||||||
information on user authentication can be obtained from the Apache
|
|
||||||
documentation (http://www.apache.org) and ApacheWeek
|
|
||||||
(http://www.apacheweek.com/features/userauth)
|
|
||||||
|
|
||||||
6.1 Ensure that your Apache setup will allow .htaccess file to control
|
|
||||||
access in the directory that contains. This is controlled by the
|
|
||||||
AllowOverride tag in access.conf. (Also ensure you have the
|
|
||||||
necessary Apache modules installed)
|
|
||||||
|
|
||||||
6.2 Create a htpasswd file. This is done using the htpasswd command that
|
|
||||||
comes with Apache. Its command line syntax is;
|
|
||||||
htpasswd [-c] passwordfile username
|
|
||||||
|
|
||||||
You need to put the passwordfile somewhere that is not accessible by
|
|
||||||
people through the web, and create an entry for each user you want
|
|
||||||
to have access ... See the ApacheWeek article for more details.
|
|
||||||
|
|
||||||
6.3 Create a .htaccess file in the directory that contains index.cgi.
|
|
||||||
Note that using Apache's built in access control, you can only control
|
|
||||||
access to directories, not individual files, hence the need for a
|
|
||||||
sub-directory in step 5.
|
|
||||||
|
|
||||||
The format of the .htaccess file should be along the lines of this;
|
|
||||||
|
|
||||||
AuthName EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /path/to/passwordfile
|
|
||||||
require valid-user # or require user username
|
|
||||||
|
|
||||||
Again, see the ApacheWeek article for details.
|
|
||||||
|
|
||||||
7. Test the installation through the web. You should be asked for a
|
|
||||||
username and password (supplied in 6.2) and then be presented with a
|
|
||||||
screen entitled EZ Mailing List Manger. You can then try to create and
|
|
||||||
edit mailing lists ... Have Fun :)
|
|
||||||
|
|
||||||
If you have any problems, then you can:
|
|
||||||
- take a look at https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
- send me an email: ezmlm-web@sumpfralle.de
|
|
|
@ -1,270 +0,0 @@
|
||||||
$Id: README,v 1.2 2000/09/25 17:57:21 guy Exp $
|
|
||||||
|
|
||||||
=================
|
|
||||||
| ezmlm-web-2.2 |
|
|
||||||
=================
|
|
||||||
|
|
||||||
If you only want to know how to install ezmlm-web, then you should
|
|
||||||
read INSTALL.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
I. Copyright Stuff
|
|
||||||
II. Some Background
|
|
||||||
III. Requirements
|
|
||||||
IV. Files
|
|
||||||
V. Notes
|
|
||||||
VI. Multi-level list access
|
|
||||||
VII. Language Portability
|
|
||||||
VIII. Bugs && Bug Reports
|
|
||||||
XI. Acknowledgements
|
|
||||||
X. Availability
|
|
||||||
|
|
||||||
|
|
||||||
I. Copyright Stuff - essentially the FreeBSD licence ...
|
|
||||||
==================
|
|
||||||
ezmlm-web - version 2.2 - 26/01/02005
|
|
||||||
|
|
||||||
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
|
||||||
Please send bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
Neither name Guy Antony Halse nor the names of any contributors may be used
|
|
||||||
to endorse or promote products derived from this software without specific
|
|
||||||
prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
|
|
||||||
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
II. Some Background
|
|
||||||
===================
|
|
||||||
The need for ezmlm-web arose from the fact that we host many student
|
|
||||||
societies on our system. These societies usually have a virtual host for web
|
|
||||||
and email, which is administered by a computer rep from the society. These
|
|
||||||
computer reps often have little or no knowledge of Unix and so we needed a
|
|
||||||
user friendly system that would let the create and maintain mailing lists
|
|
||||||
(such as members@foo.soc.ru.ac.za, committee@foo.soc.ru.ac.za, etc).
|
|
||||||
|
|
||||||
Since I am never keen to re-invent the wheel, I had a look at Steve Peterson's
|
|
||||||
script (http://virtation.com/qmail/ml-sub), which allows people to subscribe
|
|
||||||
and unsubscribe from mailing lists using a form->email gateway. This is fine
|
|
||||||
for putting on a web page saying "here come and join our mailing list", but
|
|
||||||
doesn't really allow you to administrate a list.
|
|
||||||
|
|
||||||
Security of mailing lists was a concern, as we really didn't want
|
|
||||||
unauthorised people to be able to alter some users list. Ezmlm-web itself
|
|
||||||
implements no security checks (apart from un-tainting input) and so relies
|
|
||||||
on the web server to do this (re-inventing the wheel again :). We use an
|
|
||||||
Apache webserver, so one can control access to a directory using a .htaccess
|
|
||||||
file or in the access.conf file. ApacheWeek have a good article on doing
|
|
||||||
this at http://www.apacheweek.com/features/userauth. I also give examples
|
|
||||||
later in this document.
|
|
||||||
|
|
||||||
This version of ezmlm-web is based to a large extent on previous
|
|
||||||
versions that I have developed. It has however been totally re-written to
|
|
||||||
make use of the Mail::Ezmlm perl module I wrote. At the same time it was
|
|
||||||
updated and extended to include the new features of ezmlm-idx. It includes
|
|
||||||
many new features that have been suggested to me over the last few months,
|
|
||||||
and hopefully is now useful to a much larger group of people.
|
|
||||||
|
|
||||||
Since 02005 ezmlm-web is maintained by Lars Kruse (ezmlm-web@sumpfralle.de).
|
|
||||||
Only minor improvements had to be implemented to keep the already fully
|
|
||||||
functional ezmlm-web up to date.
|
|
||||||
|
|
||||||
III. Requirements
|
|
||||||
=================
|
|
||||||
This version of ezmlm-web requires the following;
|
|
||||||
|
|
||||||
* qmail v1.03
|
|
||||||
* ezmlm v0.53 (idx v0.40)
|
|
||||||
* Perl v5.004 and the following modules;
|
|
||||||
+ Mail::Ezmlm v0.03
|
|
||||||
+ Mail::Address v1.15
|
|
||||||
+ CGI v2.6
|
|
||||||
+ CGI::Carp v1.06
|
|
||||||
+ DB_File v1.65
|
|
||||||
+ Getopt::Std v4.1
|
|
||||||
+ File::Find v?
|
|
||||||
+ File::Copy v2.02
|
|
||||||
|
|
||||||
The version number indicates the version of the module that ezmlm-web was
|
|
||||||
developed with. Earlier versions may work, but then they haven't been
|
|
||||||
tested. Have a look on http://www.CPAN.org/, http://www.qmail.org/, and
|
|
||||||
http://www.ezmlm.org/ for anything you are missing.
|
|
||||||
|
|
||||||
IV. Files
|
|
||||||
=========
|
|
||||||
In this distribution you should find 8 files;
|
|
||||||
|
|
||||||
README This file. Provides some background information.
|
|
||||||
Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
INSTALL Notes on installation. Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
CHANGES The change history. Not needed to run ezmlm-web
|
|
||||||
|
|
||||||
TODO This file is a list of things I intend doing in future
|
|
||||||
versions of ezmlm-web. Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
ezmlm-web.cgi The ezmlm-web script proper. This program requires that
|
|
||||||
you have perl5 installed on your machine and that your web
|
|
||||||
server is capable of running CGI scripts.
|
|
||||||
|
|
||||||
index.c A C wrapper to allow ezmlm-web.cgi to run suid. Not
|
|
||||||
strictly necessary if your setup allows perl scripts to
|
|
||||||
run suid, but I prefer using wrappers anyway. It needs to
|
|
||||||
be edited and compiled to suit your system. Not needed to
|
|
||||||
run ezmlm-web.
|
|
||||||
|
|
||||||
ezmlmwebrc This is the configuration file for ezmlm-web. All options
|
|
||||||
are explained in this example file. You will need this
|
|
||||||
file to run ezmlm-web.
|
|
||||||
|
|
||||||
htaccess.sample A sample Apache .htaccess file for controlling access to
|
|
||||||
the mailing lists. If you use another web server, you will
|
|
||||||
have to work this bit out for yourself.
|
|
||||||
|
|
||||||
webusers.sample A sample webusers file for multi-level access control.
|
|
||||||
|
|
||||||
The directory "lang" contains the language files. You will need at least the
|
|
||||||
one, that you have choosen in "ezmlmwebrc" by the option "HTML_LANGUAGE".
|
|
||||||
|
|
||||||
V. Notes
|
|
||||||
=========
|
|
||||||
* There is a function to delete mailing lists, but I really don't like the
|
|
||||||
idea. The only reason I put it in is that bvi@rucus asked for it.
|
|
||||||
If you set $UNSAFE_RD = 0 (the default) in the config section, the
|
|
||||||
ezmlm-web won't actually delete the list. In this case it moves the <list>
|
|
||||||
to .<list> and all the associated .qmail files to a sub-directory called
|
|
||||||
deleted.qmail/ (In the users home directory. This is by far a safer way
|
|
||||||
(since you can restore lists) and therefore I recommend it.
|
|
||||||
|
|
||||||
* The HTML interface has been tested using Nutscrape, Internet Exploder, and
|
|
||||||
Lynx. If anyone uses anything else and has problems, please let me know.
|
|
||||||
|
|
||||||
* I suggest that you make use of custom ezmlmwebrc files rather than using
|
|
||||||
the -d command line switches - it makes fault diagnosis easier ...
|
|
||||||
|
|
||||||
* Please see the section on languages below.
|
|
||||||
|
|
||||||
VI. Multi-Level Access
|
|
||||||
=======================
|
|
||||||
Ezmlm-web has a multi-level access system. This depends on a file called
|
|
||||||
webusers being present in $LIST_DIR. If the file is not present, then any
|
|
||||||
valid user has access to all lists. If, however, this file exists a number
|
|
||||||
of constraints come into place.
|
|
||||||
|
|
||||||
- The webusers file is scanned for either the list name (case insensitive) or
|
|
||||||
an ALL (case sensitive) entry.
|
|
||||||
- The list entry (or ALL) is scanned for the current user (as set in
|
|
||||||
$REMOTE_USER) or an ALL entry.
|
|
||||||
- If any valid match is made, then the user is allowed to edit the list.
|
|
||||||
Otherwise the user is politely told to go away ;-)
|
|
||||||
|
|
||||||
If list creation is allowed and the webusers file exists, then the person who
|
|
||||||
creates the list is the default owner. As of yet there is no way to create users
|
|
||||||
through the web interface, but I intend to do this eventually.
|
|
||||||
|
|
||||||
The format of a webusers file is as follows;
|
|
||||||
|
|
||||||
list1: user1, user2, user3
|
|
||||||
ALL: user1, user2
|
|
||||||
list2: ALL
|
|
||||||
|
|
||||||
ie; listname colon (:) and a comma (,) separated list of users. Spaces are
|
|
||||||
ignored but each list must appear on a new line.
|
|
||||||
|
|
||||||
Once this file exists, the ezmlm-web script will allow the list users to
|
|
||||||
configure their access lists along with any other options.
|
|
||||||
|
|
||||||
You can permit some users to create lists by adding a line similar to the
|
|
||||||
following to your webusers file:
|
|
||||||
|
|
||||||
ALLOW_CREATE: user2, user3
|
|
||||||
|
|
||||||
If there is no line starting with "ALLOW_CREATE:" in the webusers file, then
|
|
||||||
no one will be allowed to create lists. This behaviour is new for ezmlm-web
|
|
||||||
since version 2.2. To stay compatible to old installations, the commandline
|
|
||||||
option "-c" for ezmlm-web.cgi will still allow everyone to create lists. The
|
|
||||||
use of this option is deprecated, since the line "ALLOW_CREATE: ALL" provides
|
|
||||||
the same effect in a cleaner way.
|
|
||||||
|
|
||||||
VII. Language Portablity
|
|
||||||
=========================
|
|
||||||
One of the great new features of version 2.0 is that it is essentially
|
|
||||||
language independant (okay, not quite, but is 99% of the way there). Most of
|
|
||||||
the fixed strings, help, etc is defined in the files of lang directory.
|
|
||||||
Of course you can change them or create a new translation.
|
|
||||||
|
|
||||||
The language can be selected in ezmlmwebrc with the "HTML_LANGUAGE" option.
|
|
||||||
|
|
||||||
If anyone gets round to writing full templates for languages I would
|
|
||||||
appreciate it if you would do two things;
|
|
||||||
|
|
||||||
Firstly, make them public and announce them on the ezmlm@lists.cr.yp.to
|
|
||||||
mailing list so that others may benefit.
|
|
||||||
|
|
||||||
Secondly, please mail me a copy (ezmlm-web@sumpfralle.de) so that I may use
|
|
||||||
them in any future releases of ezmlm-web.
|
|
||||||
|
|
||||||
|
|
||||||
VIII. Bugs && Bug Reports
|
|
||||||
=======================
|
|
||||||
I don't know of any bugs, but then this is a rewrite and a first release. It
|
|
||||||
has been tested reasonably well, but not exhaustively. I know it works on
|
|
||||||
FreeBSD 4.0-STABLE, FreeBSD 3.4-RELEASE, RedHat 5.1 and Redhat 6.0 all using
|
|
||||||
an Apache web server, but I would be interested to know whether it works on
|
|
||||||
other OSs and with other web servers. This version is far less dependent on
|
|
||||||
the OS than previous versions so I don't see any reason why it shouldn't.
|
|
||||||
|
|
||||||
Please mail bug reports and comments to ezmlm-web@sumpfralle.de.
|
|
||||||
|
|
||||||
IX. Acknowledgements
|
|
||||||
===================
|
|
||||||
* Guy Antony Halse (guy-ezmlm@rucus.ru.ac.za) - He created ezmlm-web,
|
|
||||||
maintained it till 02005 and wrote nearly every line of code!
|
|
||||||
* Keith Burdis (keith@rucus.ru.ac.za) - For constantly bugging me and
|
|
||||||
ensuring that I actually got round to writing some code :)
|
|
||||||
* Bryan Kilian (bryan@rucus.ru.ac.za) and the administrators of the
|
|
||||||
Litestep mailing list - For helping beta test and putting up with me
|
|
||||||
pestering them.
|
|
||||||
* Several societies at Rhodes. For switching to my web interface and so
|
|
||||||
unknowingly helping to beta test it.
|
|
||||||
* Barry Irwin (bvi@moria.org) - For trusting me and moving the Grahamstown
|
|
||||||
Foundation over to qmail and ezmlm - yet another beta tester :-)
|
|
||||||
* David Summers (david@summersoft.fay.ar.us) - For some ideas. And for
|
|
||||||
offering to make up an RPM version. I hope the offer still exists for
|
|
||||||
version 2.0 :-)
|
|
||||||
* Glen Stewart (glen_stewart@associate.com) - For a multitude of ideas.
|
|
||||||
* Fred Lindberg (lindberg@id.wustl.edu) for his useful posts to the
|
|
||||||
mailing list, suggestions, help, etc
|
|
||||||
* Galen Johnson (gjohnson@totalsports.net) - For some ideas on bugfixes.
|
|
||||||
|
|
||||||
X. Availability
|
|
||||||
=================
|
|
||||||
More information on ezmlm-web and developments to ezmlm-web can be found at:
|
|
||||||
https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
|
|
||||||
The website of Guy Antony Halse (the author of ezmlm-web) is still at:
|
|
||||||
http://rucus.ru.ac.za/~guy/ezmlm/
|
|
||||||
|
|
||||||
The old ftp-archive of ezmlm-web is still available on:
|
|
||||||
ftp://rucus.ru.ac.za/pub/mail/ezmlm/
|
|
|
@ -1,8 +0,0 @@
|
||||||
$Id: TODO,v 1.3 2000/09/25 19:58:02 guy Exp $
|
|
||||||
|
|
||||||
TODO - ezmlm-web 2.2
|
|
||||||
|
|
||||||
- More Documentation
|
|
||||||
- Some nice install method. But then I use FreeBSD and ported it
|
|
||||||
so that might just count as my nice install method :)
|
|
||||||
- Option for a css-stylesheet
|
|
|
@ -1,39 +0,0 @@
|
||||||
$Id: UPGRADING,v 1.1 2000/09/25 19:24:20 guy Exp $
|
|
||||||
|
|
||||||
UPGRADING ezmlm-web 2.1 to ezmlm-web 2.2
|
|
||||||
|
|
||||||
1) Creating of new lists is now controlled by a line in the webusers file instead
|
|
||||||
of a commandline switch for ezmlm-web.cgi.
|
|
||||||
|
|
||||||
necessary changes:
|
|
||||||
- optional: remove switch "-c" when calling ezmlm-web.cgi (take a look at index.c)
|
|
||||||
- optional: add a line like "ALLOW_CREATE: john, myra" to the webusers file
|
|
||||||
|
|
||||||
2) The location of the webusers file is now defined in ezmlmwebrc. (default: $LIST_DIR/webusers)
|
|
||||||
|
|
||||||
necessary changes:
|
|
||||||
- optional: add a line like "$WEBUSERS_FILE = /home/ml/webusers" to ezmlmwebrc
|
|
||||||
|
|
||||||
3) A german translation is available.
|
|
||||||
|
|
||||||
- optional: include "lang/de.pm" in ezmlmwebrc (there you can also remove the english definitions)
|
|
||||||
or copy the new ezmlmwebrc :)
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
UPGRADING ezmlm-web 2.0 to ezmlm-web 2.1
|
|
||||||
|
|
||||||
There are no major changes that need to be made in order to upgrade. All
|
|
||||||
that is necessary is to add two new lines to your ezmlmwebrc ... In the top
|
|
||||||
section of the file add
|
|
||||||
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
and in the %HELPER section, you need to add
|
|
||||||
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
|
|
||||||
(or just copy the new ezmlmwebrc :)
|
|
||||||
|
|
||||||
Have a look for these two lines in the new ezmlmwebrc included in this
|
|
||||||
distribution if you are unsure of how/where to put these.
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,85 +0,0 @@
|
||||||
# $Id: ezmlmwebrc,v 1.5 2000/09/25 18:25:26 guy Exp $
|
|
||||||
# Configuration file for ezmlm-web 2.2
|
|
||||||
# ===========================================================================
|
|
||||||
|
|
||||||
# This file is not just an ordinary configuration file - it contains valid
|
|
||||||
# perl statements that are executed just like any other perl script. When
|
|
||||||
# editing this file, be careful that it is still valid perl when you have
|
|
||||||
# finished (perl -w ezmlmwebrc ;-)
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Where do we store lists on this server ... Try "$HOME_DIR/lists".
|
|
||||||
# This directory will automatically be created if needed.
|
|
||||||
$LIST_DIR = "$HOME_DIR/lists";
|
|
||||||
|
|
||||||
# Where is the webusers file for access-permissions
|
|
||||||
# defaults to "$LIST_DIR/webusers"
|
|
||||||
$WEBUSERS_FILE = "$LIST_DIR/webusers";
|
|
||||||
|
|
||||||
# Safe list deletion?
|
|
||||||
# 0 = move list to .list and the .qmails to deleted.qmail/. Recoverable :)
|
|
||||||
# 1 = allow user to delete list completely. No backup, therefore no recovery.
|
|
||||||
$UNSAFE_RM = 0;
|
|
||||||
|
|
||||||
# Who is the alias user on this system (usually alias ;)
|
|
||||||
$ALIAS_USER = 'alias';
|
|
||||||
|
|
||||||
# Where do the qmail control files live on this system ...
|
|
||||||
$QMAIL_BASE = $Mail::Ezmlm::QMAIL_BASE . '/control';
|
|
||||||
|
|
||||||
# The url to our web interface - so we can use ezmlm-cgi if necessary
|
|
||||||
$EZMLM_CGI_URL = 'http://some.server.that.has/cgi-bin/ezmlm-cgi';
|
|
||||||
|
|
||||||
# Where our ezcgirc file lives (probably /etc/ezmlm/ezcgirc)
|
|
||||||
$EZMLM_CGI_RC = '/etc/ezmlm/ezcgirc';
|
|
||||||
|
|
||||||
# Do we want to allow ``pretty'' names - ie more human readable ones
|
|
||||||
# This will slow ezmlm-web down a bit for large lists
|
|
||||||
$PRETTY_NAMES = 1;
|
|
||||||
|
|
||||||
# Do we want to allow the users to be allowed to upload a file containing
|
|
||||||
# lists of email addresses to subscribe?
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
# What switches to we want ezmlm-web to have on as default. The ezmlm-make
|
|
||||||
# defaults are aBDFGHIJKLMNOpQRSTUWX (small means enabled, CAPITALS mean
|
|
||||||
# disabled). The defaults below should be reasonable - I use them ;)
|
|
||||||
$DEFAULT_OPTIONS = 'aBDFGHiJkLMNOpQRSTUWx';
|
|
||||||
|
|
||||||
# Where do we find the nice little help icon - by default HELP_ICON_URL
|
|
||||||
# points to resources on http://rucus.ru.ac.za/. This will work, but we
|
|
||||||
# would appreciate it if you changed this to a local site.
|
|
||||||
$HELP_ICON_URL = 'http://rucus.ru.ac.za/icons/small/unknown.gif';
|
|
||||||
|
|
||||||
# Header for every page (.= concatinates)
|
|
||||||
$HTML_HEADER = '<TABLE BORDER="3" ALIGN="CENTER" CELLPADDING="5"><TR><TD BGCOLOR="#e0e0ff"><FONT SIZE=+3 COLOR=#000080><STRONG>E Z Mailing List Manager</STRONG></FONT></TD></TR></TABLE></CENTER><P>';
|
|
||||||
$HTML_HEADER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
|
|
||||||
# Footer for every page (.= concatinates)
|
|
||||||
$HTML_FOOTER = '</TD></TR></TABLE>';
|
|
||||||
$HTML_FOOTER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
$HTML_FOOTER .= '<FONT SIZE="-1"><A HREF="https://systemausfall.org/toolforge/ezmlm-web" TARGET="_blank">ezmlm-web</A> (v2.2) A web interface to <A HREF="http://www.ezmlm.org/" TARGET="_blank">ezmlm</A></FONT></TD></TR></TABLE>';
|
|
||||||
|
|
||||||
# What colour do we want the background to be?
|
|
||||||
$HTML_BGCOLOR = '#000080';
|
|
||||||
|
|
||||||
# What colour do we want text?
|
|
||||||
$HTML_TEXT = '#000000';
|
|
||||||
|
|
||||||
# What color do we want links?
|
|
||||||
$HTML_LINK = '#3333ff';
|
|
||||||
|
|
||||||
# What color to we want visited links?
|
|
||||||
$HTML_VLINK = '#8888ff';
|
|
||||||
|
|
||||||
# What is the title of this document?
|
|
||||||
$HTML_TITLE = 'E Z Mailing List Manager';
|
|
||||||
|
|
||||||
# choose a language (en|de)
|
|
||||||
$HTML_LANGUAGE = 'en';
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
# include language-specific definitions
|
|
||||||
require('./lang/' . $HTML_LANGUAGE . '.pm');
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
#$Id: htaccess.sample,v 1.1 2000/01/29 11:35:40 guy Exp $
|
|
||||||
#
|
|
||||||
#order deny,allow
|
|
||||||
#deny from all
|
|
||||||
#allow from .ru.ac.za
|
|
||||||
AuthName "EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /etc/ezmlm/.htusers
|
|
||||||
require valid-user
|
|
|
@ -1,25 +0,0 @@
|
||||||
/* $Id: index.c,v 1.2 2000/09/25 18:14:12 guy Exp $ */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
|
||||||
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
|
||||||
/* See the README file in this distribution for copyright information */
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi");
|
|
||||||
|
|
||||||
/* Note that you could also use the following to allow a specific user
|
|
||||||
to store their mailing lists in a different directory defined by
|
|
||||||
/tmp/ezmlm-web-demo ... This over-rides the default . */
|
|
||||||
|
|
||||||
/* Look at the exec(3) man page if you don't understand how the arguments
|
|
||||||
list below works */
|
|
||||||
|
|
||||||
/*
|
|
||||||
char *switches[] = { "ezmlm-web.cgi", "-d", "/tmp/ezmlm-web-demo", NULL };
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi", switches);
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,187 +0,0 @@
|
||||||
# language-specific definitions for ezmlm-web
|
|
||||||
# in english
|
|
||||||
|
|
||||||
# The meanings of the various ezmlm-make command line switches. The default
|
|
||||||
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
|
||||||
# own ezmlmrc. Removing options from this list makes them unavailable
|
|
||||||
# through ezmlm-web - this could be useful for things like -w
|
|
||||||
|
|
||||||
%EZMLM_LABELS = (
|
|
||||||
# option => ['Short Name',
|
|
||||||
# 'Long Help Description'],
|
|
||||||
|
|
||||||
a => ['archivieren',
|
|
||||||
'Ezmlm wird neue Nachrichten zum Archiv hinzufügen'],
|
|
||||||
b => ['Archiv nur für ModeratorInnen',
|
|
||||||
'Nur ModeratorInnen haben Zugriff zum Archiv'],
|
|
||||||
# c => config. This is implicity called, so is not defined here
|
|
||||||
d => ['Zusammenfassungen',
|
|
||||||
'Erstelle eine Mailing-Liste, an die regelmäßige Zusammenfassungen versandt werden'],
|
|
||||||
# e => edit. Also implicity called, so not defined here
|
|
||||||
f => ['Listenname als Präfix in Betreff einfügen',
|
|
||||||
'In die versandten Mails wird in der Betreff-Zeile ein Präfix eingefügt'],
|
|
||||||
g => ['Archiv nur für Mitglieder',
|
|
||||||
'Nur TeilnehmerInnen der Liste erhalten Zugriff zum Archiv'],
|
|
||||||
h => ['abonnieren ohne Bestätigung',
|
|
||||||
'Das Abonnieren der Liste erfordert keine Bestätigung durch die neue AbonnentIn'],
|
|
||||||
i => ['Web-Index erstellen',
|
|
||||||
'Den Zugriff auf das Archiv per Webinterface erlauben'],
|
|
||||||
j => ['abmelden ohne Bestätigung',
|
|
||||||
'Das Abbestellen der Liste erfordert keine Bestätigung durch die ehemalige AbonnentIn'],
|
|
||||||
k => ['Beachte Ausschlussliste',
|
|
||||||
'Einsendungen von Abonnenten, die inm deny-Verzeichnis enthalten sind, werden abgelehnt'],
|
|
||||||
l => ['Abonnenten-Auflistung für AdministratorInnen',
|
|
||||||
'Die AdministratorInnen können eine Liste aller AbonnentInnen anfordern'],
|
|
||||||
m => ['Moderation aktivieren',
|
|
||||||
'Alle eingehenden Nachrichten müssen durch eine ModeratorIn bestätigt werden'],
|
|
||||||
n => ['Anpassung der Textbausteine erlauben',
|
|
||||||
'Administratoren dürfen die Standard-Textbausteine im Unterverzeichnis text/ verändern'],
|
|
||||||
o => ['Nur ModeratorInnen dürfen einsenden',
|
|
||||||
'Nur eingehende Nachrichten von den ModeratorInnen werden akzeptiert'],
|
|
||||||
p => ['Öffentlich',
|
|
||||||
'Die öffentliche Einschreibung und Archiv-Anforderung ist erlaubt'],
|
|
||||||
q => ['Verarbeite Anforderungen',
|
|
||||||
'Mails an liste-request@domain werden verarbeitet'],
|
|
||||||
r => ['Administration per Mail erlauben',
|
|
||||||
'Die Verwaltung der Liste durch Mails der AdministratorInnen ist erlaubt'],
|
|
||||||
s => ['Abonnierung durch ModeratorIn bestätigen',
|
|
||||||
'Die Einschreibungen in die Liste und die Zusammenfassungs-Liste werden moderiert'],
|
|
||||||
t => ['Infotext an Mails anhängen',
|
|
||||||
'An alle ausgehenden Mails wird ein Anhang angefügt'],
|
|
||||||
u => ['Nur Abonnenten dürfen einsenden',
|
|
||||||
'Einsendungen von nicht-eingeschriebenen Mail-Adressen werden abgewiesen'],
|
|
||||||
# v => version. I doubt you will really need this ;-)
|
|
||||||
w => ['Warnung deaktivieren',
|
|
||||||
'Entferne den Aufruf von ezmlm-warn aus der Listen-Konfiguration - es wird angenommen, dass ezmlm-warn auf einem anderem Wege gestartet wird'],
|
|
||||||
x => ['Filtere Anhänge und Kopfzeilen',
|
|
||||||
'Mails mit den angegebenen Anhangs-Typen werden abgewiesen - die angegebenen Kopfzeilen werden aus den ausgehenden Mails entfernt'],
|
|
||||||
# y => not used
|
|
||||||
# z => not used
|
|
||||||
|
|
||||||
# These all take an extra argument, which is the default value to use
|
|
||||||
|
|
||||||
0 => ['Unterlisten',
|
|
||||||
'Diese Liste soll eine Unterliste einer anderen Hauptliste sein',
|
|
||||||
'hauptliste@domain'],
|
|
||||||
# 1 => not used
|
|
||||||
# 2 => not used
|
|
||||||
3 => ['Absender',
|
|
||||||
'Ersetze den Absender der ausgehenden Mails durch diese Adresse',
|
|
||||||
'Absender'],
|
|
||||||
4 => ['Zusammenfassungseinstellungen',
|
|
||||||
'Einstellungen for ezmlm-tstdig (nach "t" Stunden oder "m" Nachrichten oder "k" Kilobyte',
|
|
||||||
'-t24 -m30 -k64'],
|
|
||||||
5 => ['Adresse des Verantwortlichen der Liste',
|
|
||||||
'Mail-Adresse des Listen-Eigentümers',
|
|
||||||
'name@domain.org'],
|
|
||||||
6 => ['SQL-Datenbank',
|
|
||||||
'SQL-Datenbank-Zugangsinformationen (erfordert SQL-Unterstützung)',
|
|
||||||
'host:port:user:password:datab:table'],
|
|
||||||
7 => ['Listen-Moderations-Verzeichnis',
|
|
||||||
'Falls die Liste moderiert wird, ist der vollständige Verzeichnispfad zur Moderationsdatenbank erforderlich',
|
|
||||||
'/absoluter/pfad/zur/moderations/datenbank'],
|
|
||||||
8 => ['Einschreibungs-Moderations-Verzeichnis',
|
|
||||||
'Falls die Einschreibung in die Liste moderiert wird, ist der vollständige Verzeichnispfad zur Einschreibungs-Moderationsdatenbank erforderlich',
|
|
||||||
'/absoluter/pfad/zur/abonnenten/moderations/datenbank'],
|
|
||||||
9 => ['Administrations-Verzeichnis',
|
|
||||||
'Falls die Liste per Mail administriert wird, ist der vollständige Verzeichnispfad zur Administrationsdatenbank erforderlich',
|
|
||||||
'/absoluter/pfad/zur/administrations/datenbank'],
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This list defines most of the context sensitive help in ezmlm-web. What
|
|
||||||
# isn't defined here is the options, which are defined above ... You can
|
|
||||||
# alter these if you feel something else would make more sense to your users
|
|
||||||
# Just be careful of what can fit on a screen!
|
|
||||||
|
|
||||||
%HELPER = (
|
|
||||||
|
|
||||||
# These should be self explainitory
|
|
||||||
addaddress => 'Eine Mail-Adresse - auch in der Form \'Max Meier <max@meier.de>\'',
|
|
||||||
addaddressfile => 'alternativ ist auch eine Datei mit je einer Adresse pro Zeile möglich',
|
|
||||||
moderator => 'ModeratorInnen kontrollen, welche Mails weitegeleitet und welche AbonnentInnen akzeptiert werden',
|
|
||||||
deny => 'Ausschluss: die Mail-Adressen, die NIE an die Liste schreiben dürfen',
|
|
||||||
allow => 'Zulassung: die Mail-Adressen, die immer an die Liste schreiben dürfen',
|
|
||||||
digest => 'Zusammenfassung: diese Leute werden regeläßige Zusammenfassungen der Mailingliste erhalten',
|
|
||||||
webarch => 'Gehe zum Web-Archiv der Mailingliste',
|
|
||||||
config => 'Einstellungen zur Mailingliste',
|
|
||||||
listname => 'Dies ist der eindeutige Name der Mailingliste',
|
|
||||||
listadd => 'Die Adresse der Mailingliste - nur der lokale Teil kann geändert werden',
|
|
||||||
webusers => 'unfertig: derzeit können Listen-Administratoren nur manuell festgelegt werden',
|
|
||||||
prefix => 'Präfix der Betreffzeile',
|
|
||||||
headerremove => 'Diese Kopfzeilen werden aus den ausgehenden Mails entfernt',
|
|
||||||
headeradd => 'Diese Kopfzeilen werden zu jeder ausgehenden Mail hinzugefügt',
|
|
||||||
mimeremove => 'Alle Mails, die die genannten Anhangs-Typen beinhalten, werden abgewiesen',
|
|
||||||
allowedit => 'Komma-getrennte Liste von (existierenden) Nutzern oder <CODE>ALL</CODE>',
|
|
||||||
mysqlcreate => 'Anlegen der konfigurierten MySQL-Datenbank'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
|
||||||
# you to configure them for your own language or taste. Since these are used
|
|
||||||
# by the switching algorithm it is important that every button has a unique
|
|
||||||
# caption - ie we can't have two 'Edit' buttons doing different things.
|
|
||||||
|
|
||||||
%BUTTON = (
|
|
||||||
|
|
||||||
# These MUST all be unique!
|
|
||||||
create => 'Anlegen',
|
|
||||||
createlist => 'Liste anlegen',
|
|
||||||
edit => 'Bearbeiten',
|
|
||||||
delete => 'Entfernen',
|
|
||||||
deleteaddress => 'Entferne Adresse',
|
|
||||||
addaddress => 'Füge Adresse hinzu',
|
|
||||||
moderators => 'ModeratorInnen',
|
|
||||||
denylist => 'Ausschlussliste',
|
|
||||||
allowlist => 'Zulassungsliste',
|
|
||||||
digestsubscribers => 'Abonnenten der Zusammenfassungen',
|
|
||||||
configuration => 'Konfiguration',
|
|
||||||
yes => 'Ja',
|
|
||||||
no => 'Nein',
|
|
||||||
updateconfiguration => 'Speichere Konfiguration',
|
|
||||||
edittexts => 'Bearbeite Texte',
|
|
||||||
editfile => 'Bearbeite Datei',
|
|
||||||
savefile => 'Speichere Datei',
|
|
||||||
webarchive => 'Web-Archiv',
|
|
||||||
selectlist => 'Listenauswahl',
|
|
||||||
subscribers => 'AbonnentInnen',
|
|
||||||
cancel => 'Abbruch',
|
|
||||||
resetform => 'Reset',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
|
||||||
# these along with the button labels and help texts, you can convert ezmlm-web
|
|
||||||
# to another language :-) If anyone gets arround to doing complete templates
|
|
||||||
# for other languages I would appreciate a copy so that I can include it in
|
|
||||||
# future releases of ezmlm-web.
|
|
||||||
|
|
||||||
%LANGUAGE = (
|
|
||||||
nop => 'Diese Funktionalität ist noch nicht umgesetzt worden',
|
|
||||||
chooselistinfo => "<UL><LI>Markiere eine Liste in der Auswahlbox oder klicke auf [$BUTTON{'create'}].<LI>Klicke auf den [$BUTTON{'edit'}]-Schalter, falls du die markierte Liste bearbeiten möchtest.<LI>Klicke auf den [$BUTTON{'delete'}]-Schalter, falls du die markierte Liste löschen möchtest.</UL>",
|
|
||||||
confirmdelete => 'Bestätige die Löschung von ', # list name
|
|
||||||
subscribersto => 'Abonnenten von', # list name
|
|
||||||
subscribers => 'Abonnenten',
|
|
||||||
additionalparts => 'Weitere Listen-Bestandteile',
|
|
||||||
posting => 'Einsendungen',
|
|
||||||
subscription => 'Einschreibung',
|
|
||||||
remoteadmin => 'Entfernte AdministratorIn',
|
|
||||||
for => 'für', # as in; moderators for blahlist
|
|
||||||
createnew => 'Lege eine neue Liste an',
|
|
||||||
listname => 'Name der Liste',
|
|
||||||
listaddress => 'Adresse der Liste',
|
|
||||||
listoptions => 'Einstellungen der Liste',
|
|
||||||
allowedtoedit => 'Nutzer, die diese Liste bearbeiten dürfen',
|
|
||||||
editconfiguration => 'Einstellungen ändern',
|
|
||||||
prefix => 'Präfix der Betreff-Zeile ausgehender Nachrichten',
|
|
||||||
headerremove => 'zu entfernende Kopfzeilen',
|
|
||||||
headeradd => 'einzufügende Kopfzeilen',
|
|
||||||
mimeremove => 'abzuweisende Anhangs-Typen',
|
|
||||||
edittextinfo => "Das Auswahlfeld links enthält die Dateien des <BR>Verzeichnisses DIR/text/. Diese Dateien werden als Antwort auf spezifische Nutzer-Anfragen oder als Teil aller ausgehenden Nachrichten versandt.<P>Um diese Dateien zu verändern, wähle ihren Namen im Auswahlfeld an. Anschlißend klicke auf den [$BUTTON{'editfile'}] Schalter.<P>Betätige [$BUTTON{'cancel'}] um die Veränderung abzubrechen.",
|
|
||||||
editingfile => 'Bearbeite Datei',
|
|
||||||
editfileinfo => '<BIG><STRONG>ezmlm-manage</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> Der Name der Liste<BR><TT><STRONG><#A#></STRONG></TT> Die Anmeldungs-Adresse<BR><TT><STRONG><#R#></STRONG></TT> Die Bestätigungs-Adresse<P><BIG><STRONG>ezmlm-store</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> Der Name der Liste<BR><TT><STRONG><#A#></STRONG></TT> Die Zusage-Adresse<BR><TT><STRONG><#R#></STRONG></TT> Die Ablehungs-Adresse</UL>',
|
|
||||||
mysqlcreate => 'Lege die MySQL-Datenbank an, falls erforderlich',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# === Configuration file ends ===
|
|
|
@ -1,187 +0,0 @@
|
||||||
# language-specific definitions for ezmlm-web
|
|
||||||
# in english
|
|
||||||
|
|
||||||
# The meanings of the various ezmlm-make command line switches. The default
|
|
||||||
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
|
||||||
# own ezmlmrc. Removing options from this list makes them unavailable
|
|
||||||
# through ezmlm-web - this could be useful for things like -w
|
|
||||||
|
|
||||||
%EZMLM_LABELS = (
|
|
||||||
# option => ['Short Name',
|
|
||||||
# 'Long Help Description'],
|
|
||||||
|
|
||||||
a => ['Archived',
|
|
||||||
'Ezmlm will archive new messages'],
|
|
||||||
b => ['Block archive',
|
|
||||||
'Only moderators are allowed to access the archive'],
|
|
||||||
# c => config. This is implicity called, so is not defined here
|
|
||||||
d => ['Digest',
|
|
||||||
'Set up a digest list to disseminate digest of the list messages'],
|
|
||||||
# e => edit. Also implicity called, so not defined here
|
|
||||||
f => ['Prefix',
|
|
||||||
'Outgoing subject will be prefixed with the list name'],
|
|
||||||
g => ['Guard Archive',
|
|
||||||
'Archive access requests from unrecognized SENDERs will be rejected'],
|
|
||||||
h => ['Help subscription',
|
|
||||||
'Subscriptions do not require confirmation'],
|
|
||||||
i => ['Indexed',
|
|
||||||
'Indexed for WWW archive access'],
|
|
||||||
j => ['Jump off',
|
|
||||||
'Unsubscribe does not require confirmation'],
|
|
||||||
k => ['Kill',
|
|
||||||
'Posts from addresses in dir/deny/ are rejected'],
|
|
||||||
l => ['Subscriber List',
|
|
||||||
'Remote administrators can request a subscriber list'],
|
|
||||||
m => ['Message Moderation',
|
|
||||||
'All incoming messages are moderated'],
|
|
||||||
n => ['Text Editing',
|
|
||||||
'Allow remote administrators to edit files in dir/text/'],
|
|
||||||
o => ['Others rejected',
|
|
||||||
'Posts from addresses other than moderators are rejected'],
|
|
||||||
p => ['Public',
|
|
||||||
'List will respond to administrative requests and archive retrieval'],
|
|
||||||
q => ['Service Request Address',
|
|
||||||
'Process commands sent in the subject to local-request@host'],
|
|
||||||
r => ['Remote Admin',
|
|
||||||
'Enable remote adminstration of the list'],
|
|
||||||
s => ['Subscription Moderation',
|
|
||||||
'Subscriptions to the main list and digest will be moderated'],
|
|
||||||
t => ['Trailer',
|
|
||||||
'Add a trailer to outgoing messages'],
|
|
||||||
u => ['User Posts Only',
|
|
||||||
'Posts from unrecognized SENDER addresses will be rejected'],
|
|
||||||
# v => version. I doubt you will really need this ;-)
|
|
||||||
w => ['Remove Warn',
|
|
||||||
'Remove the ezmlm-warn(1) invocations from the list setup. It is assumed that ezmlm-warn(1) is run by other means'],
|
|
||||||
x => ['Extra',
|
|
||||||
'Strip certain mimetypes, etc'],
|
|
||||||
# y => not used
|
|
||||||
# z => not used
|
|
||||||
|
|
||||||
# These all take an extra argument, which is the default value to use
|
|
||||||
|
|
||||||
0 => ['Sublist',
|
|
||||||
'Make the list a sublist of list mainlist@host',
|
|
||||||
'mainlist@host'],
|
|
||||||
# 1 => not used
|
|
||||||
# 2 => not used
|
|
||||||
3 => ['From Address',
|
|
||||||
'Replace the "From:" header of the message with "From: fromarg"',
|
|
||||||
'fromarg'],
|
|
||||||
4 => ['Digest Options',
|
|
||||||
'Switches for ezmlm-tstdig(1)',
|
|
||||||
'-t24 -m30 -k64'],
|
|
||||||
5 => ['List Owner',
|
|
||||||
'The email address of the list owner',
|
|
||||||
''],
|
|
||||||
6 => ['SQL Database',
|
|
||||||
'SQL database connect information. Requires SQL support',
|
|
||||||
'host:port:user:password:datab:table'],
|
|
||||||
7 => ['Message Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
8 => ['Subscription Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
9 => ['Remote Admin Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path']
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This list defines most of the context sensitive help in ezmlm-web. What
|
|
||||||
# isn't defined here is the options, which are defined above ... You can
|
|
||||||
# alter these if you feel something else would make more sense to your users
|
|
||||||
# Just be careful of what can fit on a screen!
|
|
||||||
|
|
||||||
%HELPER = (
|
|
||||||
|
|
||||||
# These should be self explainitory
|
|
||||||
addaddress => 'You may enter any RFC822 compliant email address here, including the comment part. For example; J Random User <jru@on.web.za>',
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
moderator => 'Moderators: people who control who may subscribe or post to a list',
|
|
||||||
deny => 'Deny: A list of addresses that are _never_ allowed to mail the list',
|
|
||||||
allow => 'Allow: A list of address that are allowed to mail the list even if the configuration otherwise restricts it',
|
|
||||||
digest => 'Digest: People who will recieve a digest of all messages on the list',
|
|
||||||
webarch => 'View the web based archive of this list',
|
|
||||||
config => 'This lets you alter the way the list is set up',
|
|
||||||
listname => 'This is the name of the list as displayed on the Select Lists screen. It is also the name of the subdirectory that contains the list',
|
|
||||||
listadd => 'This is the email address of the list. Note that the defaults come from your qmail config. You should just update the local part (before the @)',
|
|
||||||
webusers => 'NB! At this stage, any users specified here must exist. User creation may be added in future versions',
|
|
||||||
prefix => 'Text to add to the subject line of all outgoing messages',
|
|
||||||
headerremove => 'This is a list of headers to remove from all outgoing mail',
|
|
||||||
headeradd => 'This is a list of headers to add to all outging mail',
|
|
||||||
mimeremove => 'All messages whose Content-Type matches these mime types will be bounced back to sender',
|
|
||||||
allowedit => 'Comma separated list of usernames, or <CODE>ALL</CODE> (all valid users)',
|
|
||||||
mysqlcreate => 'This will create the necessary MySQL tables if the list configuration above requires it'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
|
||||||
# you to configure them for your own language or taste. Since these are used
|
|
||||||
# by the switching algorithm it is important that every button has a unique
|
|
||||||
# caption - ie we can't have two 'Edit' buttons doing different things.
|
|
||||||
|
|
||||||
%BUTTON = (
|
|
||||||
|
|
||||||
# These MUST all be unique!
|
|
||||||
create => 'Create',
|
|
||||||
createlist => 'Create List',
|
|
||||||
edit => 'Edit',
|
|
||||||
delete => 'Delete',
|
|
||||||
deleteaddress => 'Delete Address',
|
|
||||||
addaddress => 'Add Address',
|
|
||||||
moderators => 'Moderators',
|
|
||||||
denylist => 'Deny List',
|
|
||||||
allowlist => 'Allow List',
|
|
||||||
digestsubscribers => 'Digest Subscribers',
|
|
||||||
configuration => 'Configuration',
|
|
||||||
yes => 'Yes',
|
|
||||||
no => 'No',
|
|
||||||
updateconfiguration => 'Update Configuration',
|
|
||||||
edittexts => 'Edit Texts',
|
|
||||||
editfile => 'Edit File',
|
|
||||||
savefile => 'Save File',
|
|
||||||
webarchive => 'Web Archive',
|
|
||||||
selectlist => 'Select List',
|
|
||||||
subscribers => 'Subscribers',
|
|
||||||
cancel => 'Cancel',
|
|
||||||
resetform => 'Reset Form',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
|
||||||
# these along with the button labels and help texts, you can convert ezmlm-web
|
|
||||||
# to another language :-) If anyone gets arround to doing complete templates
|
|
||||||
# for other languages I would appreciate a copy so that I can include it in
|
|
||||||
# future releases of ezmlm-web.
|
|
||||||
|
|
||||||
%LANGUAGE = (
|
|
||||||
nop => 'Action not yet implemented',
|
|
||||||
chooselistinfo => "<UL><LI>Choose a mailing list from the selection box or click on [$BUTTON{'create'}].<LI>Click on the [$BUTTON{'edit'}] button if you want to edit the selected list.<LI>Click on the [$BUTTON{'delete'}] button if you want to delete the selected list.</UL>",
|
|
||||||
confirmdelete => 'Confirm deletion of', # list name
|
|
||||||
subscribersto => 'Subscribers to', # list name
|
|
||||||
subscribers => 'subscribers',
|
|
||||||
additionalparts => 'Additional list parts',
|
|
||||||
posting => 'Posting',
|
|
||||||
subscription => 'Subscription',
|
|
||||||
remoteadmin => 'Remote Admin',
|
|
||||||
for => 'for', # as in; moderators for blahlist
|
|
||||||
createnew => 'Create a New List',
|
|
||||||
listname => 'List Name',
|
|
||||||
listaddress => 'List Address',
|
|
||||||
listoptions => 'List Options',
|
|
||||||
allowedtoedit => 'Users allowed to edit this list',
|
|
||||||
editconfiguration => 'Edit the List Configuration',
|
|
||||||
prefix => 'Subject prefex for outgoing messages',
|
|
||||||
headerremove => 'Headers to strip from all outgoing mail',
|
|
||||||
headeradd => 'Headers to add to all outgoing mail',
|
|
||||||
mimeremove => 'Mime types to strip from all outgoing mail',
|
|
||||||
edittextinfo => "The box on the left contains a list of files available in the<BR>DIR/text directory. These files are sent out in response to specfic user request, or as part of all outgoing messages<P>To edit a file, select its name from the box. Then click on the [$BUTTON{'editfile'}] button.<P>Press [$BUTTON{'cancel'}] when you have finished editing.",
|
|
||||||
editingfile => 'Editing File',
|
|
||||||
editfileinfo => '<BIG><STRONG>ezmlm-manage</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The subscription address<BR><TT><STRONG><#R#></STRONG></TT> The address a subscriber must reply to<P><BIG><STRONG>ezmlm-store</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The acceptance address<BR><TT><STRONG><#R#></STRONG></TT> The rejection address</UL>',
|
|
||||||
mysqlcreate => 'Create the MySQL database tables if necessary',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# === Configuration file ends ===
|
|
|
@ -1,5 +0,0 @@
|
||||||
comm: guy, arb
|
|
||||||
users: arb
|
|
||||||
members: ALL
|
|
||||||
ALL: root
|
|
||||||
ALLOW_CREATE: root, guy
|
|
|
@ -1,99 +0,0 @@
|
||||||
$Id: CHANGES,v 1.2 2000/09/25 17:54:06 guy Exp $
|
|
||||||
|
|
||||||
REVISION HISTORY - ezmlm-web.cgi
|
|
||||||
================================
|
|
||||||
|
|
||||||
Version 0.1 - 10/04/98 (Not Released)
|
|
||||||
* University Vac - I was bored and started to play. The first version just
|
|
||||||
let people play with the subscribers list. No moderators, no nothing.
|
|
||||||
|
|
||||||
Version 0.2 - 13/04/98 (Not Released)
|
|
||||||
* Allow list creation
|
|
||||||
* Allowed users to edit moderators
|
|
||||||
|
|
||||||
Version 0.3 - 15/04/98
|
|
||||||
* Allow list deletion (for balin@moria.org)
|
|
||||||
* Made changes to allow it to run on RedHat 4.2 as well as FreeBSD 3.0
|
|
||||||
* Fixed some minor bugs (cosmetic irritaions really) that people noticed
|
|
||||||
* Sorted subscribers list into alphabetical order.
|
|
||||||
* Added command line switch to change list directory (for nxsy@moria.org)
|
|
||||||
* Wrote some documentation ...
|
|
||||||
|
|
||||||
Version 0.4 - 28/04/98
|
|
||||||
* Fixed up virtual domain (inlocal) stuff as spotted by bryan@rucus
|
|
||||||
* Allowed the list directory to be automatically created if necessary.
|
|
||||||
|
|
||||||
Version 0.5 - 12/05/98 (Not Released)
|
|
||||||
* More bug fixes. Mainly for mathew@graham.
|
|
||||||
|
|
||||||
Version 1.0 - 01/08/98
|
|
||||||
* Complete re-write to convert to perl5 and CGI.pm
|
|
||||||
* Removed a lot of dependancy on the OS. Use builtin functions instead :)
|
|
||||||
* Added support for ezmlm-idx
|
|
||||||
* Added a lot more command line option support (-adfgiklmnpqsrstux5)
|
|
||||||
* Added support for digests and digest subscribers
|
|
||||||
* Added support for blacklists
|
|
||||||
* Allowed users to edit the config of existing lists
|
|
||||||
* Allowed the user to edit headeradd and headerremove as well as mimeremove
|
|
||||||
* Allowed user to edit any of the files in DIR/text
|
|
||||||
* Revised interface to make it more user-friendly and ergonomic.
|
|
||||||
* Changed the background colour for Kether (clb@rucus) *gryn*
|
|
||||||
* Removed a big bug in the delete_list function that had gone unnoticed.
|
|
||||||
|
|
||||||
Version 1.0.1 - 10/08/98
|
|
||||||
* Fixed a bug in the way 1.0 re-configured virtual hosts (bryan@rucus)
|
|
||||||
* Made the script read the /var/qmail/control files instead of explicitly
|
|
||||||
setting variables (for david@summersoft)
|
|
||||||
|
|
||||||
Version 1.0.2 - 28/08/98
|
|
||||||
* Fixed the bug introduced in v1.0.1 :( (keith@rucus)
|
|
||||||
* Fixed the way we recreate config files (noticed by Glen Stewart)
|
|
||||||
* Made the script check return values of system calls properly
|
|
||||||
* Fixed some of the taint checking stuff ... reports less in the logs now.
|
|
||||||
|
|
||||||
Version 1.0.3 - 03/10/98
|
|
||||||
* Fixed the alias-alias-alias-list bug in inlocal (bryan@rucus)
|
|
||||||
* Added a bit of online help
|
|
||||||
* Fixed the & in list owner (bryan@rucus)
|
|
||||||
* Added multi-level access to lists (based on idea by Glen Stewart)
|
|
||||||
|
|
||||||
Version 2.0 - 01/01/00
|
|
||||||
* Rewrote most of the code to take advantage of Mail::Ezmlm
|
|
||||||
* Made the webuser file more functional (users can alter it)
|
|
||||||
* Now handles all current, and future command line options
|
|
||||||
* Changed the colours :)
|
|
||||||
* Added support for ezmlm-cgi web archives
|
|
||||||
* Made it -w and use strict clean
|
|
||||||
* Moved all user config to a separate file
|
|
||||||
* Fixed the way we worked out list config - now complete
|
|
||||||
* Allowed a user specific config over-ride ``ezmlmwebrc''
|
|
||||||
* Allowed the printing of `nice' usernames (for Rhodes CS Dept)
|
|
||||||
* Took account of non-standard paths for moderators
|
|
||||||
* Removed all system() and `` calls from ezmlm-web.cgi
|
|
||||||
* Made `look and feel' virtually all user configurable
|
|
||||||
* Added a lot more context sensitive help
|
|
||||||
* Made ezmlm-web 99% language configurable - but no other templates yet :(
|
|
||||||
* Added support for creating databases
|
|
||||||
|
|
||||||
Version 2.1 - 25/09/00
|
|
||||||
* Fixed the multiple delete thing - finally!
|
|
||||||
* Fixed the '-' in username problem - The '-' in hostnames problem is fixed
|
|
||||||
in the new version of Mail::Ezmlm
|
|
||||||
* Fixed the '_' in list names problem
|
|
||||||
* Added support for file uploads of email addresses (multiple subscribe)
|
|
||||||
* Made error handling more friendly
|
|
||||||
|
|
||||||
Version 2.2 - 26/01/02005
|
|
||||||
* German translation of the web interface - more translations can be added easily
|
|
||||||
* changed "ALT"-tags to "TITLE" - most browsers will display the tooltip texts now
|
|
||||||
* fixed security problems (permissions were not thoroughly checked)
|
|
||||||
* user-based permission for creating lists (can be set in webusersrc)
|
|
||||||
* the location of the webusers file is now an option in ezmlmwebrc
|
|
||||||
|
|
||||||
Version 2.3 - ??/04/02005
|
|
||||||
* css styles are used instead of tables
|
|
||||||
* permission check for upload of files fixed
|
|
||||||
* removed some taint errors
|
|
||||||
* file upload typo fixed
|
|
||||||
* update of webusers file fixed
|
|
||||||
* moderator unsubscribe fixed
|
|
|
@ -1,97 +0,0 @@
|
||||||
The following notes will guide you through the installation of ezmlm-web:
|
|
||||||
|
|
||||||
0. IMPORTANT: you need the perl module Mail::Ezmlm and others to use
|
|
||||||
ezmlm-web! The file README contains the list of necessary modules.
|
|
||||||
|
|
||||||
1. Get ezmlm-web and extract the archive:
|
|
||||||
tar xzf ezmlm-web-2.2.tar.gz
|
|
||||||
|
|
||||||
2. Copy ezmlm-web.cgi to some publically readable directory. It does not
|
|
||||||
have to be in a path accessible to your web server, but any user with a
|
|
||||||
mailing list must be able to run it (Check the read and execute rights
|
|
||||||
on both the file and directory). We put our copy in "/usr/local/bin".
|
|
||||||
|
|
||||||
At the top of ezmlm-web.gi you can will probably have to change the
|
|
||||||
$ENV{'PATH'} variable. Be careful about what you set as the path. Too
|
|
||||||
much is a security risk and too little will cause the script to
|
|
||||||
malfunction. Version 2.0 requires that the following programs be
|
|
||||||
accessible in your path: mv, rm
|
|
||||||
|
|
||||||
3. Edit the ezmlmwebrc file and alter the variables to suit your
|
|
||||||
particular system.
|
|
||||||
|
|
||||||
Be careful about the $LIST_DIR variable. This script assumes that all
|
|
||||||
users store their mailing lists in the same sub directory of the home
|
|
||||||
directory (eg ~/lists). You can override this for an individual user
|
|
||||||
by recompiling the C wrapper to call ezmlm-web.cgi with a -d option.
|
|
||||||
|
|
||||||
Other configurable options are documented in the ezmlmwebrc file
|
|
||||||
itself. I have tried to keep the amount of information that you need to
|
|
||||||
supply to a minimum and also make reasonable guesses about default
|
|
||||||
values.
|
|
||||||
|
|
||||||
Finally, copy the ezmlmwebrc file and the "lang" directory to one of
|
|
||||||
the following places:
|
|
||||||
- /etc/ezmlm
|
|
||||||
- the home directory of the user that runs ezmlm-web.cgi
|
|
||||||
- the directory, that contains your ezmlm-web.cgi file
|
|
||||||
|
|
||||||
4. Edit the index.c file and change the path to the path of your copy
|
|
||||||
of ezmlm-web.cgi. Then compile this file. You can do this by issuing
|
|
||||||
the command; gcc -o index.cgi index.c
|
|
||||||
|
|
||||||
5. For every user/virtual host that needs to manage mailing lists, you
|
|
||||||
need to create a SUID (user not root!!) copy of index.cgi (see
|
|
||||||
chmod(1) for details). These need to reside somewhere accessible by
|
|
||||||
the web server. I suggest that you put them in a sub directory (see
|
|
||||||
about security) of each user/virtual host's home directory (eg
|
|
||||||
/home/luser/public_html/ezmlm for Apache on Redhat).
|
|
||||||
|
|
||||||
The copies don't actually have to be called index.cgi, but it is nice
|
|
||||||
for web servers that can resolve a cgi script as an index page (see the
|
|
||||||
srm.conf file in Apache). It is important to make sure that whichever
|
|
||||||
directory you choose to put them can i: Execute CGI Scripts and ii: Be
|
|
||||||
access controlled (here I mean both web and user access) by some method
|
|
||||||
(eg .htaccess, access.conf for Apache).
|
|
||||||
|
|
||||||
6. Install some method of securing access to the page. The following
|
|
||||||
information is applicable to Apache web servers ... Detailed
|
|
||||||
information on user authentication can be obtained from the Apache
|
|
||||||
documentation (http://www.apache.org) and ApacheWeek
|
|
||||||
(http://www.apacheweek.com/features/userauth)
|
|
||||||
|
|
||||||
6.1 Ensure that your Apache setup will allow .htaccess file to control
|
|
||||||
access in the directory that contains. This is controlled by the
|
|
||||||
AllowOverride tag in access.conf. (Also ensure you have the
|
|
||||||
necessary Apache modules installed)
|
|
||||||
|
|
||||||
6.2 Create a htpasswd file. This is done using the htpasswd command that
|
|
||||||
comes with Apache. Its command line syntax is;
|
|
||||||
htpasswd [-c] passwordfile username
|
|
||||||
|
|
||||||
You need to put the passwordfile somewhere that is not accessible by
|
|
||||||
people through the web, and create an entry for each user you want
|
|
||||||
to have access ... See the ApacheWeek article for more details.
|
|
||||||
|
|
||||||
6.3 Create a .htaccess file in the directory that contains index.cgi.
|
|
||||||
Note that using Apache's built in access control, you can only control
|
|
||||||
access to directories, not individual files, hence the need for a
|
|
||||||
sub-directory in step 5.
|
|
||||||
|
|
||||||
The format of the .htaccess file should be along the lines of this;
|
|
||||||
|
|
||||||
AuthName EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /path/to/passwordfile
|
|
||||||
require valid-user # or require user username
|
|
||||||
|
|
||||||
Again, see the ApacheWeek article for details.
|
|
||||||
|
|
||||||
7. Test the installation through the web. You should be asked for a
|
|
||||||
username and password (supplied in 6.2) and then be presented with a
|
|
||||||
screen entitled EZ Mailing List Manger. You can then try to create and
|
|
||||||
edit mailing lists ... Have Fun :)
|
|
||||||
|
|
||||||
If you have any problems, then you can:
|
|
||||||
- take a look at https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
- send me an email: ezmlm-web@sumpfralle.de
|
|
|
@ -1,270 +0,0 @@
|
||||||
$Id: README,v 1.2 2000/09/25 17:57:21 guy Exp $
|
|
||||||
|
|
||||||
=================
|
|
||||||
| ezmlm-web-2.2 |
|
|
||||||
=================
|
|
||||||
|
|
||||||
If you only want to know how to install ezmlm-web, then you should
|
|
||||||
read INSTALL.
|
|
||||||
|
|
||||||
Contents
|
|
||||||
========
|
|
||||||
I. Copyright Stuff
|
|
||||||
II. Some Background
|
|
||||||
III. Requirements
|
|
||||||
IV. Files
|
|
||||||
V. Notes
|
|
||||||
VI. Multi-level list access
|
|
||||||
VII. Language Portability
|
|
||||||
VIII. Bugs && Bug Reports
|
|
||||||
XI. Acknowledgements
|
|
||||||
X. Availability
|
|
||||||
|
|
||||||
|
|
||||||
I. Copyright Stuff - essentially the FreeBSD licence ...
|
|
||||||
==================
|
|
||||||
ezmlm-web - version 2.2 - 26/01/02005
|
|
||||||
|
|
||||||
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
|
||||||
Please send bug reports and comments to guy-ezmlm@rucus.ru.ac.za
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
Neither name Guy Antony Halse nor the names of any contributors may be used
|
|
||||||
to endorse or promote products derived from this software without specific
|
|
||||||
prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
|
|
||||||
IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
||||||
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
||||||
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
||||||
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
||||||
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
||||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
II. Some Background
|
|
||||||
===================
|
|
||||||
The need for ezmlm-web arose from the fact that we host many student
|
|
||||||
societies on our system. These societies usually have a virtual host for web
|
|
||||||
and email, which is administered by a computer rep from the society. These
|
|
||||||
computer reps often have little or no knowledge of Unix and so we needed a
|
|
||||||
user friendly system that would let the create and maintain mailing lists
|
|
||||||
(such as members@foo.soc.ru.ac.za, committee@foo.soc.ru.ac.za, etc).
|
|
||||||
|
|
||||||
Since I am never keen to re-invent the wheel, I had a look at Steve Peterson's
|
|
||||||
script (http://virtation.com/qmail/ml-sub), which allows people to subscribe
|
|
||||||
and unsubscribe from mailing lists using a form->email gateway. This is fine
|
|
||||||
for putting on a web page saying "here come and join our mailing list", but
|
|
||||||
doesn't really allow you to administrate a list.
|
|
||||||
|
|
||||||
Security of mailing lists was a concern, as we really didn't want
|
|
||||||
unauthorised people to be able to alter some users list. Ezmlm-web itself
|
|
||||||
implements no security checks (apart from un-tainting input) and so relies
|
|
||||||
on the web server to do this (re-inventing the wheel again :). We use an
|
|
||||||
Apache webserver, so one can control access to a directory using a .htaccess
|
|
||||||
file or in the access.conf file. ApacheWeek have a good article on doing
|
|
||||||
this at http://www.apacheweek.com/features/userauth. I also give examples
|
|
||||||
later in this document.
|
|
||||||
|
|
||||||
This version of ezmlm-web is based to a large extent on previous
|
|
||||||
versions that I have developed. It has however been totally re-written to
|
|
||||||
make use of the Mail::Ezmlm perl module I wrote. At the same time it was
|
|
||||||
updated and extended to include the new features of ezmlm-idx. It includes
|
|
||||||
many new features that have been suggested to me over the last few months,
|
|
||||||
and hopefully is now useful to a much larger group of people.
|
|
||||||
|
|
||||||
Since 02005 ezmlm-web is maintained by Lars Kruse (ezmlm-web@sumpfralle.de).
|
|
||||||
Only minor improvements had to be implemented to keep the already fully
|
|
||||||
functional ezmlm-web up to date.
|
|
||||||
|
|
||||||
III. Requirements
|
|
||||||
=================
|
|
||||||
This version of ezmlm-web requires the following;
|
|
||||||
|
|
||||||
* qmail v1.03
|
|
||||||
* ezmlm v0.53 (idx v0.40)
|
|
||||||
* Perl v5.004 and the following modules;
|
|
||||||
+ Mail::Ezmlm v0.03
|
|
||||||
+ Mail::Address v1.15
|
|
||||||
+ CGI v2.6
|
|
||||||
+ CGI::Carp v1.06
|
|
||||||
+ DB_File v1.65
|
|
||||||
+ Getopt::Std v4.1
|
|
||||||
+ File::Find v?
|
|
||||||
+ File::Copy v2.02
|
|
||||||
|
|
||||||
The version number indicates the version of the module that ezmlm-web was
|
|
||||||
developed with. Earlier versions may work, but then they haven't been
|
|
||||||
tested. Have a look on http://www.CPAN.org/, http://www.qmail.org/, and
|
|
||||||
http://www.ezmlm.org/ for anything you are missing.
|
|
||||||
|
|
||||||
IV. Files
|
|
||||||
=========
|
|
||||||
In this distribution you should find 8 files;
|
|
||||||
|
|
||||||
README This file. Provides some background information.
|
|
||||||
Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
INSTALL Notes on installation. Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
CHANGES The change history. Not needed to run ezmlm-web
|
|
||||||
|
|
||||||
TODO This file is a list of things I intend doing in future
|
|
||||||
versions of ezmlm-web. Not needed to run ezmlm-web.
|
|
||||||
|
|
||||||
ezmlm-web.cgi The ezmlm-web script proper. This program requires that
|
|
||||||
you have perl5 installed on your machine and that your web
|
|
||||||
server is capable of running CGI scripts.
|
|
||||||
|
|
||||||
index.c A C wrapper to allow ezmlm-web.cgi to run suid. Not
|
|
||||||
strictly necessary if your setup allows perl scripts to
|
|
||||||
run suid, but I prefer using wrappers anyway. It needs to
|
|
||||||
be edited and compiled to suit your system. Not needed to
|
|
||||||
run ezmlm-web.
|
|
||||||
|
|
||||||
ezmlmwebrc This is the configuration file for ezmlm-web. All options
|
|
||||||
are explained in this example file. You will need this
|
|
||||||
file to run ezmlm-web.
|
|
||||||
|
|
||||||
htaccess.sample A sample Apache .htaccess file for controlling access to
|
|
||||||
the mailing lists. If you use another web server, you will
|
|
||||||
have to work this bit out for yourself.
|
|
||||||
|
|
||||||
webusers.sample A sample webusers file for multi-level access control.
|
|
||||||
|
|
||||||
The directory "lang" contains the language files. You will need at least the
|
|
||||||
one, that you have choosen in "ezmlmwebrc" by the option "HTML_LANGUAGE".
|
|
||||||
|
|
||||||
V. Notes
|
|
||||||
=========
|
|
||||||
* There is a function to delete mailing lists, but I really don't like the
|
|
||||||
idea. The only reason I put it in is that bvi@rucus asked for it.
|
|
||||||
If you set $UNSAFE_RD = 0 (the default) in the config section, the
|
|
||||||
ezmlm-web won't actually delete the list. In this case it moves the <list>
|
|
||||||
to .<list> and all the associated .qmail files to a sub-directory called
|
|
||||||
deleted.qmail/ (In the users home directory. This is by far a safer way
|
|
||||||
(since you can restore lists) and therefore I recommend it.
|
|
||||||
|
|
||||||
* The HTML interface has been tested using Nutscrape, Internet Exploder, and
|
|
||||||
Lynx. If anyone uses anything else and has problems, please let me know.
|
|
||||||
|
|
||||||
* I suggest that you make use of custom ezmlmwebrc files rather than using
|
|
||||||
the -d command line switches - it makes fault diagnosis easier ...
|
|
||||||
|
|
||||||
* Please see the section on languages below.
|
|
||||||
|
|
||||||
VI. Multi-Level Access
|
|
||||||
=======================
|
|
||||||
Ezmlm-web has a multi-level access system. This depends on a file called
|
|
||||||
webusers being present in $LIST_DIR. If the file is not present, then any
|
|
||||||
valid user has access to all lists. If, however, this file exists a number
|
|
||||||
of constraints come into place.
|
|
||||||
|
|
||||||
- The webusers file is scanned for either the list name (case insensitive) or
|
|
||||||
an ALL (case sensitive) entry.
|
|
||||||
- The list entry (or ALL) is scanned for the current user (as set in
|
|
||||||
$REMOTE_USER) or an ALL entry.
|
|
||||||
- If any valid match is made, then the user is allowed to edit the list.
|
|
||||||
Otherwise the user is politely told to go away ;-)
|
|
||||||
|
|
||||||
If list creation is allowed and the webusers file exists, then the person who
|
|
||||||
creates the list is the default owner. As of yet there is no way to create users
|
|
||||||
through the web interface, but I intend to do this eventually.
|
|
||||||
|
|
||||||
The format of a webusers file is as follows;
|
|
||||||
|
|
||||||
list1: user1, user2, user3
|
|
||||||
ALL: user1, user2
|
|
||||||
list2: ALL
|
|
||||||
|
|
||||||
ie; listname colon (:) and a comma (,) separated list of users. Spaces are
|
|
||||||
ignored but each list must appear on a new line.
|
|
||||||
|
|
||||||
Once this file exists, the ezmlm-web script will allow the list users to
|
|
||||||
configure their access lists along with any other options.
|
|
||||||
|
|
||||||
You can permit some users to create lists by adding a line similar to the
|
|
||||||
following to your webusers file:
|
|
||||||
|
|
||||||
ALLOW_CREATE: user2, user3
|
|
||||||
|
|
||||||
If there is no line starting with "ALLOW_CREATE:" in the webusers file, then
|
|
||||||
no one will be allowed to create lists. This behaviour is new for ezmlm-web
|
|
||||||
since version 2.2. To stay compatible to old installations, the commandline
|
|
||||||
option "-c" for ezmlm-web.cgi will still allow everyone to create lists. The
|
|
||||||
use of this option is deprecated, since the line "ALLOW_CREATE: ALL" provides
|
|
||||||
the same effect in a cleaner way.
|
|
||||||
|
|
||||||
VII. Language Portablity
|
|
||||||
=========================
|
|
||||||
One of the great new features of version 2.0 is that it is essentially
|
|
||||||
language independant (okay, not quite, but is 99% of the way there). Most of
|
|
||||||
the fixed strings, help, etc is defined in the files of lang directory.
|
|
||||||
Of course you can change them or create a new translation.
|
|
||||||
|
|
||||||
The language can be selected in ezmlmwebrc with the "HTML_LANGUAGE" option.
|
|
||||||
|
|
||||||
If anyone gets round to writing full templates for languages I would
|
|
||||||
appreciate it if you would do two things;
|
|
||||||
|
|
||||||
Firstly, make them public and announce them on the ezmlm@lists.cr.yp.to
|
|
||||||
mailing list so that others may benefit.
|
|
||||||
|
|
||||||
Secondly, please mail me a copy (ezmlm-web@sumpfralle.de) so that I may use
|
|
||||||
them in any future releases of ezmlm-web.
|
|
||||||
|
|
||||||
|
|
||||||
VIII. Bugs && Bug Reports
|
|
||||||
=======================
|
|
||||||
I don't know of any bugs, but then this is a rewrite and a first release. It
|
|
||||||
has been tested reasonably well, but not exhaustively. I know it works on
|
|
||||||
FreeBSD 4.0-STABLE, FreeBSD 3.4-RELEASE, RedHat 5.1 and Redhat 6.0 all using
|
|
||||||
an Apache web server, but I would be interested to know whether it works on
|
|
||||||
other OSs and with other web servers. This version is far less dependent on
|
|
||||||
the OS than previous versions so I don't see any reason why it shouldn't.
|
|
||||||
|
|
||||||
Please mail bug reports and comments to ezmlm-web@sumpfralle.de.
|
|
||||||
|
|
||||||
IX. Acknowledgements
|
|
||||||
===================
|
|
||||||
* Guy Antony Halse (guy-ezmlm@rucus.ru.ac.za) - He created ezmlm-web,
|
|
||||||
maintained it till 02005 and wrote nearly every line of code!
|
|
||||||
* Keith Burdis (keith@rucus.ru.ac.za) - For constantly bugging me and
|
|
||||||
ensuring that I actually got round to writing some code :)
|
|
||||||
* Bryan Kilian (bryan@rucus.ru.ac.za) and the administrators of the
|
|
||||||
Litestep mailing list - For helping beta test and putting up with me
|
|
||||||
pestering them.
|
|
||||||
* Several societies at Rhodes. For switching to my web interface and so
|
|
||||||
unknowingly helping to beta test it.
|
|
||||||
* Barry Irwin (bvi@moria.org) - For trusting me and moving the Grahamstown
|
|
||||||
Foundation over to qmail and ezmlm - yet another beta tester :-)
|
|
||||||
* David Summers (david@summersoft.fay.ar.us) - For some ideas. And for
|
|
||||||
offering to make up an RPM version. I hope the offer still exists for
|
|
||||||
version 2.0 :-)
|
|
||||||
* Glen Stewart (glen_stewart@associate.com) - For a multitude of ideas.
|
|
||||||
* Fred Lindberg (lindberg@id.wustl.edu) for his useful posts to the
|
|
||||||
mailing list, suggestions, help, etc
|
|
||||||
* Galen Johnson (gjohnson@totalsports.net) - For some ideas on bugfixes.
|
|
||||||
|
|
||||||
X. Availability
|
|
||||||
=================
|
|
||||||
More information on ezmlm-web and developments to ezmlm-web can be found at:
|
|
||||||
https://systemausfall.org/toolforge/ezmlm-web
|
|
||||||
|
|
||||||
The website of Guy Antony Halse (the author of ezmlm-web) is still at:
|
|
||||||
http://rucus.ru.ac.za/~guy/ezmlm/
|
|
||||||
|
|
||||||
The old ftp-archive of ezmlm-web is still available on:
|
|
||||||
ftp://rucus.ru.ac.za/pub/mail/ezmlm/
|
|
|
@ -1,27 +0,0 @@
|
||||||
$Id: TODO,v 1.3 2000/09/25 19:58:02 guy Exp $
|
|
||||||
|
|
||||||
TODO - ezmlm-web 2.3
|
|
||||||
|
|
||||||
DOKU:
|
|
||||||
- mention in INSTALL, that a missing webusers-file deactivates access control
|
|
||||||
- more documentation
|
|
||||||
- webusers is not mentioned in INSTALL
|
|
||||||
|
|
||||||
ORG:
|
|
||||||
- change ./lang/ to /usr/local/share/ezmlm-web/lang
|
|
||||||
- move unknown.gif to systemausfall.org
|
|
||||||
- some nice install method
|
|
||||||
- easy-mode? - maybe with typical profiles - or: separation basic / expert
|
|
||||||
|
|
||||||
CODE:
|
|
||||||
- check and improve DEFAULT_HOST
|
|
||||||
- check virtual user testing
|
|
||||||
- implement ldap authorisation
|
|
||||||
- check: the textfields for paths are filled with the first set value
|
|
||||||
- line 472 - replace "return" by "if"-construct
|
|
||||||
|
|
||||||
LAYOUT:
|
|
||||||
- option for a css-stylesheet
|
|
||||||
- migrate header and footer in ezmlmwebrc to css
|
|
||||||
- improve css-design
|
|
||||||
- "prefix"-option should be next to its text field (as with all paths)
|
|
|
@ -1,39 +0,0 @@
|
||||||
$Id: UPGRADING,v 1.1 2000/09/25 19:24:20 guy Exp $
|
|
||||||
|
|
||||||
UPGRADING ezmlm-web 2.1 to ezmlm-web 2.2
|
|
||||||
|
|
||||||
1) Creating of new lists is now controlled by a line in the webusers file instead
|
|
||||||
of a commandline switch for ezmlm-web.cgi.
|
|
||||||
|
|
||||||
necessary changes:
|
|
||||||
- optional: remove switch "-c" when calling ezmlm-web.cgi (take a look at index.c)
|
|
||||||
- optional: add a line like "ALLOW_CREATE: john, myra" to the webusers file
|
|
||||||
|
|
||||||
2) The location of the webusers file is now defined in ezmlmwebrc. (default: $LIST_DIR/webusers)
|
|
||||||
|
|
||||||
necessary changes:
|
|
||||||
- optional: add a line like "$WEBUSERS_FILE = /home/ml/webusers" to ezmlmwebrc
|
|
||||||
|
|
||||||
3) A german translation is available.
|
|
||||||
|
|
||||||
- optional: include "lang/de.pm" in ezmlmwebrc (there you can also remove the english definitions)
|
|
||||||
or copy the new ezmlmwebrc :)
|
|
||||||
|
|
||||||
------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
UPGRADING ezmlm-web 2.0 to ezmlm-web 2.1
|
|
||||||
|
|
||||||
There are no major changes that need to be made in order to upgrade. All
|
|
||||||
that is necessary is to add two new lines to your ezmlmwebrc ... In the top
|
|
||||||
section of the file add
|
|
||||||
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
and in the %HELPER section, you need to add
|
|
||||||
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
|
|
||||||
(or just copy the new ezmlmwebrc :)
|
|
||||||
|
|
||||||
Have a look for these two lines in the new ezmlmwebrc included in this
|
|
||||||
distribution if you are unsure of how/where to put these.
|
|
|
@ -1,202 +0,0 @@
|
||||||
body {
|
|
||||||
background-color: #000080;
|
|
||||||
color: #000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #3333ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:visited {
|
|
||||||
color: #8888ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*********************** general **************************
|
|
||||||
|
|
||||||
used classes for containers:
|
|
||||||
title - heading of most pages (except main)
|
|
||||||
list - list of subscribers/mailinglists/moderators/...
|
|
||||||
add_remove - buttons and fields to manipulate such lists
|
|
||||||
info - explanations
|
|
||||||
question - buttons to answer a question
|
|
||||||
options - various possibilities (buttons)
|
|
||||||
input - group of form fields
|
|
||||||
container - includes all other containers on a page
|
|
||||||
|
|
||||||
low-level classes (for "span"):
|
|
||||||
button
|
|
||||||
formfield
|
|
||||||
checkbox
|
|
||||||
help
|
|
||||||
|
|
||||||
and a special div:
|
|
||||||
error
|
|
||||||
|
|
||||||
************************************************************/
|
|
||||||
|
|
||||||
div.container {
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.add_remove span.button {
|
|
||||||
width: auto;
|
|
||||||
margin-top: 0px;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.add_remove span.formfield {
|
|
||||||
width: auto;
|
|
||||||
margin: 0px;
|
|
||||||
margin-right: auto;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.add_remove span.formfield:before {
|
|
||||||
content: attr("<br>");
|
|
||||||
}
|
|
||||||
|
|
||||||
div.list {
|
|
||||||
margin: 1%;
|
|
||||||
margin-right: 3%;
|
|
||||||
text-align: center;
|
|
||||||
float: left;
|
|
||||||
margin-bottom: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.question {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
p.warning {
|
|
||||||
text-decoration: blink;
|
|
||||||
color: #ff0000;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.help {
|
|
||||||
font-size: small;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.button {
|
|
||||||
margin-left: 3px;
|
|
||||||
margin-right: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
span.formfield {
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************ main page ***********************
|
|
||||||
name of container: main
|
|
||||||
available classes: list info add_remove
|
|
||||||
**********************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************* confirm delete page *******************
|
|
||||||
name of container: delete
|
|
||||||
available classes: title button
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/************************* edit page ***********************
|
|
||||||
name of container: edit
|
|
||||||
availbale classes: title list add_remove options
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********* allow/deny/moderators/digests page **************
|
|
||||||
name of container: parts
|
|
||||||
available classes: title info list add_remove
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************* create list page **********************
|
|
||||||
name of container: create
|
|
||||||
available classes: title input question
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
#create div.input span.formfield {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: large;
|
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/********************* config page *************************
|
|
||||||
name of container: config
|
|
||||||
available classes: title info input question
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
#config div.info {
|
|
||||||
font-size: large;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#config div.input span.formfield {
|
|
||||||
font-weight: bold;
|
|
||||||
margin-left: 0px;
|
|
||||||
margin-right: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******************** textfiles ****************************
|
|
||||||
name of container: textfiles
|
|
||||||
available classes: list info question
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************** edittext *****************************
|
|
||||||
name of container: edittext
|
|
||||||
available classes: title input info question
|
|
||||||
***********************************************************/
|
|
||||||
|
|
||||||
#edittext div.input {
|
|
||||||
float:left;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************** error messages **************************/
|
|
||||||
|
|
||||||
div.error {
|
|
||||||
width: 99%;
|
|
||||||
padding: 5px;
|
|
||||||
text-align: center;
|
|
||||||
background-color: #e0e0ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.error h2 {
|
|
||||||
color: #ff0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.error p.msg {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,80 +0,0 @@
|
||||||
# $Id: ezmlmwebrc,v 1.5 2000/09/25 18:25:26 guy Exp $
|
|
||||||
# Configuration file for ezmlm-web 2.2
|
|
||||||
# ===========================================================================
|
|
||||||
|
|
||||||
# This file is not just an ordinary configuration file - it contains valid
|
|
||||||
# perl statements that are executed just like any other perl script. When
|
|
||||||
# editing this file, be careful that it is still valid perl when you have
|
|
||||||
# finished (perl -w ezmlmwebrc ;-)
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
|
|
||||||
# Where do we store lists on this server ... Try "$HOME_DIR/lists".
|
|
||||||
# This directory will automatically be created if needed.
|
|
||||||
$LIST_DIR = "$HOME_DIR/lists";
|
|
||||||
|
|
||||||
# Where is the webusers file for access-permissions
|
|
||||||
# defaults to "$LIST_DIR/webusers"
|
|
||||||
$WEBUSERS_FILE = "$LIST_DIR/webusers";
|
|
||||||
|
|
||||||
# Safe list deletion?
|
|
||||||
# 0 = move list to .list and the .qmails to deleted.qmail/. Recoverable :)
|
|
||||||
# 1 = allow user to delete list completely. No backup, therefore no recovery.
|
|
||||||
$UNSAFE_RM = 0;
|
|
||||||
|
|
||||||
# Who is the alias user on this system (usually alias ;)
|
|
||||||
$ALIAS_USER = 'alias';
|
|
||||||
|
|
||||||
# Where do the qmail control files live on this system ...
|
|
||||||
$QMAIL_BASE = $Mail::Ezmlm::QMAIL_BASE . '/control';
|
|
||||||
|
|
||||||
# The url to our web interface - so we can use ezmlm-cgi if necessary
|
|
||||||
$EZMLM_CGI_URL = 'http://some.server.that.has/cgi-bin/ezmlm-cgi';
|
|
||||||
|
|
||||||
# Where our ezcgirc file lives (probably /etc/ezmlm/ezcgirc)
|
|
||||||
$EZMLM_CGI_RC = '/etc/ezmlm/ezcgirc';
|
|
||||||
|
|
||||||
# Do we want to allow ``pretty'' names - ie more human readable ones
|
|
||||||
# This will slow ezmlm-web down a bit for large lists
|
|
||||||
$PRETTY_NAMES = 1;
|
|
||||||
|
|
||||||
# Do we want to allow the users to be allowed to upload a file containing
|
|
||||||
# lists of email addresses to subscribe?
|
|
||||||
$FILE_UPLOAD = 1;
|
|
||||||
|
|
||||||
# What switches to we want ezmlm-web to have on as default. The ezmlm-make
|
|
||||||
# defaults are aBDFGHIJKLMNOpQRSTUWX (small means enabled, CAPITALS mean
|
|
||||||
# disabled). The defaults below should be reasonable - I use them ;)
|
|
||||||
$DEFAULT_OPTIONS = 'aBDFGHiJkLMNOpQRSTUWx';
|
|
||||||
|
|
||||||
# Where do we find the nice little help icon - by default HELP_ICON_URL
|
|
||||||
# points to resources on http://rucus.ru.ac.za/. This will work, but we
|
|
||||||
# would appreciate it if you changed this to a local site.
|
|
||||||
$HELP_ICON_URL = 'http://rucus.ru.ac.za/icons/small/unknown.gif';
|
|
||||||
|
|
||||||
# Header for every page (.= concatinates)
|
|
||||||
$HTML_HEADER = '<TABLE BORDER="3" ALIGN="CENTER" CELLPADDING="5"><TR><TD BGCOLOR="#e0e0ff"><FONT SIZE=+3 COLOR=#000080><STRONG>E Z Mailing List Manager</STRONG></FONT></TD></TR></TABLE></CENTER><P>';
|
|
||||||
$HTML_HEADER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
|
|
||||||
# Footer for every page (.= concatinates)
|
|
||||||
$HTML_FOOTER = '</TD></TR></TABLE>';
|
|
||||||
$HTML_FOOTER .= '<TABLE BORDER="0" CELLPADDING="5" CELLSPACING="5" ALIGN="CENTER" WIDTH="99%"><TR><TD BGCOLOR="#e0e0ff">';
|
|
||||||
$HTML_FOOTER .= '<FONT SIZE="-1"><A HREF="https://systemausfall.org/toolforge/ezmlm-web" TARGET="_blank">ezmlm-web</A> (v2.2) A web interface to <A HREF="http://www.ezmlm.org/" TARGET="_blank">ezmlm</A></FONT></TD></TR></TABLE>';
|
|
||||||
|
|
||||||
# NEW:
|
|
||||||
# html properties (e.g. color, background-color) can be defined in a
|
|
||||||
# stylesheet (see HTML_CSS_FILE) since version 2.3
|
|
||||||
|
|
||||||
# What is the title of this document?
|
|
||||||
$HTML_TITLE = 'E Z Mailing List Manager';
|
|
||||||
|
|
||||||
# Optional: use a cascading style sheet (css)
|
|
||||||
$HTML_CSS_FILE = "css/default.css";
|
|
||||||
|
|
||||||
# choose a language (en|de)
|
|
||||||
$HTML_LANGUAGE = 'en';
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
|
||||||
# include language-specific definitions
|
|
||||||
require('./lang/' . $HTML_LANGUAGE . '.pm');
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
#$Id: htaccess.sample,v 1.1 2000/01/29 11:35:40 guy Exp $
|
|
||||||
#
|
|
||||||
#order deny,allow
|
|
||||||
#deny from all
|
|
||||||
#allow from .ru.ac.za
|
|
||||||
AuthName "EZ Mailing List Manager
|
|
||||||
AuthType Basic
|
|
||||||
AuthUserFile /etc/ezmlm/.htusers
|
|
||||||
require valid-user
|
|
|
@ -1,25 +0,0 @@
|
||||||
/* $Id: index.c,v 1.2 2000/09/25 18:14:12 guy Exp $ */
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
/* C wrapper to allow ezmlm-web.cgi to run suid */
|
|
||||||
/* Copyright (C) 1999/2000, Guy Antony Halse, All Rights Reserved */
|
|
||||||
/* See the README file in this distribution for copyright information */
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi");
|
|
||||||
|
|
||||||
/* Note that you could also use the following to allow a specific user
|
|
||||||
to store their mailing lists in a different directory defined by
|
|
||||||
/tmp/ezmlm-web-demo ... This over-rides the default . */
|
|
||||||
|
|
||||||
/* Look at the exec(3) man page if you don't understand how the arguments
|
|
||||||
list below works */
|
|
||||||
|
|
||||||
/*
|
|
||||||
char *switches[] = { "ezmlm-web.cgi", "-d", "/tmp/ezmlm-web-demo", NULL };
|
|
||||||
execv("/usr/local/bin/ezmlm-web.cgi", switches);
|
|
||||||
*/
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,187 +0,0 @@
|
||||||
# language-specific definitions for ezmlm-web
|
|
||||||
# in english
|
|
||||||
|
|
||||||
# The meanings of the various ezmlm-make command line switches. The default
|
|
||||||
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
|
||||||
# own ezmlmrc. Removing options from this list makes them unavailable
|
|
||||||
# through ezmlm-web - this could be useful for things like -w
|
|
||||||
|
|
||||||
%EZMLM_LABELS = (
|
|
||||||
# option => ['Short Name',
|
|
||||||
# 'Long Help Description'],
|
|
||||||
|
|
||||||
a => ['archivieren',
|
|
||||||
'Ezmlm wird neue Nachrichten zum Archiv hinzufuegen'],
|
|
||||||
b => ['Archiv nur fuer ModeratorInnen',
|
|
||||||
'Nur ModeratorInnen haben Zugriff zum Archiv'],
|
|
||||||
# c => config. This is implicity called, so is not defined here
|
|
||||||
d => ['Zusammenfassungen',
|
|
||||||
'Erstelle eine Mailing-Liste, an die regelmaessige Zusammenfassungen versandt werden'],
|
|
||||||
# e => edit. Also implicity called, so not defined here
|
|
||||||
f => ['Listenname als Praefix in Betreff einfuegen',
|
|
||||||
'In die versandten Mails wird in der Betreff-Zeile ein Praefix eingefuegt'],
|
|
||||||
g => ['Archiv nur fuer Mitglieder',
|
|
||||||
'Nur TeilnehmerInnen der Liste erhalten Zugriff zum Archiv'],
|
|
||||||
h => ['einschreiben ohne Bestaetigung',
|
|
||||||
'Das Abonnieren der Liste erfordert keine Bestaetigung durch die neue AbonnentIn'],
|
|
||||||
i => ['Web-Index erstellen',
|
|
||||||
'Den Zugriff auf das Archiv per Webinterface erlauben'],
|
|
||||||
j => ['abmelden ohne Bestaetigung',
|
|
||||||
'Das Abbestellen der Liste erfordert keine Bestaetigung durch die ehemalige AbonnentIn'],
|
|
||||||
k => ['Beachte Ausschlussliste',
|
|
||||||
'Einsendungen von Abonnenten, die inm deny-Verzeichnis enthalten sind, werden abgelehnt'],
|
|
||||||
l => ['Abonnenten-Auflistung fuer AdministratorInnen',
|
|
||||||
'Die AdministratorInnen koennen eine Liste aller AbonnentInnen anfordern'],
|
|
||||||
m => ['Moderation aktivieren',
|
|
||||||
'Alle eingehenden Nachrichten muessen durch eine ModeratorIn bestaetigt werden'],
|
|
||||||
n => ['Anpassung der Textbausteine erlauben',
|
|
||||||
'Administratoren duerfen die Standard-Textbausteine per Mail veraendern'],
|
|
||||||
o => ['Nur ModeratorInnen duerfen einsenden',
|
|
||||||
'Nur eingehende Nachrichten von den ModeratorInnen werden akzeptiert'],
|
|
||||||
p => ['oeffentlich',
|
|
||||||
'Die oeffentliche Einschreibung und Archiv-Anforderung ist erlaubt'],
|
|
||||||
q => ['Verarbeite Anforderungen',
|
|
||||||
'Mails an liste-request@domain werden verarbeitet'],
|
|
||||||
r => ['Administration per Mail erlauben',
|
|
||||||
'Die Verwaltung der Liste durch Mails der AdministratorInnen ist erlaubt'],
|
|
||||||
s => ['Einschreibung durch ModeratorIn bestaetigen',
|
|
||||||
'Die Einschreibungen in die Liste und die Zusammenfassungs-Liste werden moderiert'],
|
|
||||||
t => ['Infotext an Mails anhaengen',
|
|
||||||
'An alle ausgehenden Mails wird ein Anhang angefuegt (siehe Datei "text/trailer")'],
|
|
||||||
u => ['Nur Abonnenten duerfen einsenden',
|
|
||||||
'Einsendungen von nicht-eingeschriebenen Mail-Adressen werden abgewiesen'],
|
|
||||||
# v => version. I doubt you will really need this ;-)
|
|
||||||
w => ['Warnung deaktivieren',
|
|
||||||
'Entferne den Aufruf von ezmlm-warn aus der Listen-Konfiguration - es wird angenommen, dass ezmlm-warn auf einem anderem Wege gestartet wird'],
|
|
||||||
x => ['Filtere Anhaenge und Kopfzeilen',
|
|
||||||
'Mails mit den angegebenen Anhangs-Typen werden abgewiesen - die angegebenen Kopfzeilen werden aus den ausgehenden Mails entfernt'],
|
|
||||||
# y => not used
|
|
||||||
# z => not used
|
|
||||||
|
|
||||||
# These all take an extra argument, which is the default value to use
|
|
||||||
|
|
||||||
0 => ['Unterlisten',
|
|
||||||
'Diese Liste soll eine Unterliste einer anderen Hauptliste sein',
|
|
||||||
'hauptliste@domain'],
|
|
||||||
# 1 => not used
|
|
||||||
# 2 => not used
|
|
||||||
3 => ['Absender',
|
|
||||||
'Ersetze den Absender der ausgehenden Mails durch diese Adresse',
|
|
||||||
'Absender'],
|
|
||||||
4 => ['Zusammenfassungseinstellungen',
|
|
||||||
'Einstellungen for ezmlm-tstdig (nach "t" Stunden oder "m" Nachrichten oder "k" Kilobyte',
|
|
||||||
'-t24 -m30 -k64'],
|
|
||||||
5 => ['Adresse des Verantwortlichen der Liste',
|
|
||||||
'Mail-Adresse des Listen-Eigentuemers',
|
|
||||||
'name@domain.org'],
|
|
||||||
6 => ['SQL-Datenbank',
|
|
||||||
'SQL-Datenbank-Zugangsinformationen (erfordert SQL-Unterstuetzung)',
|
|
||||||
'host:port:user:password:datab:table'],
|
|
||||||
7 => ['Listen-Moderations-Verzeichnis',
|
|
||||||
'alternatives Verzeichnis zur Moderationsdatenbank',
|
|
||||||
'/absoluter/pfad/zur/moderations/datenbank'],
|
|
||||||
8 => ['Einschreibungs-Moderations-Verzeichnis',
|
|
||||||
'alternatives Verzeichnis zur Einschreibungs-Moderationsdatenbank',
|
|
||||||
'/absoluter/pfad/zur/abonnenten/moderations/datenbank'],
|
|
||||||
9 => ['Administrations-Verzeichnis',
|
|
||||||
'alternatives Verzeichnis zur Administrationsdatenbank',
|
|
||||||
'/absoluter/pfad/zur/administrations/datenbank'],
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This list defines most of the context sensitive help in ezmlm-web. What
|
|
||||||
# isn't defined here is the options, which are defined above ... You can
|
|
||||||
# alter these if you feel something else would make more sense to your users
|
|
||||||
# Just be careful of what can fit on a screen!
|
|
||||||
|
|
||||||
%HELPER = (
|
|
||||||
|
|
||||||
# These should be self explainitory
|
|
||||||
addaddress => 'Eine Mail-Adresse - auch in der Form \'Max Meier <max@meier.de>\'',
|
|
||||||
addaddressfile => 'alternativ ist auch eine Datei mit je einer Adresse pro Zeile moeglich',
|
|
||||||
moderator => 'ModeratorInnen kontrollen, welche Mails weitegeleitet und welche AbonnentInnen akzeptiert werden',
|
|
||||||
deny => 'Ausschluss: die Mail-Adressen, die NIE an die Liste schreiben duerfen',
|
|
||||||
allow => 'Zulassung: die Mail-Adressen, die immer an die Liste schreiben duerfen',
|
|
||||||
digest => 'Zusammenfassung: diese Leute werden regelaessge Zusammenfassungen der Mailingliste erhalten',
|
|
||||||
webarch => 'Gehe zum Web-Archiv der Mailingliste',
|
|
||||||
config => 'Einstellungen zur Mailingliste',
|
|
||||||
listname => 'Dies ist der eindeutige Name der Mailingliste',
|
|
||||||
listadd => 'Die Adresse der Mailingliste - nur der lokale Teil kann geaendert werden',
|
|
||||||
webusers => 'unfertig: derzeit koennen Listen-Administratoren nur manuell festgelegt werden',
|
|
||||||
prefix => 'Praefix der Betreffzeile',
|
|
||||||
headerremove => 'Diese Kopfzeilen werden aus den ausgehenden Mails entfernt',
|
|
||||||
headeradd => 'Diese Kopfzeilen werden zu jeder ausgehenden Mail hinzugefuegt',
|
|
||||||
mimeremove => 'Alle Mails, die die genannten Anhangs-Typen beinhalten, werden abgewiesen',
|
|
||||||
allowedit => 'Komma-getrennte Liste von (existierenden) Nutzern oder <CODE>ALL</CODE>',
|
|
||||||
mysqlcreate => 'Anlegen der konfigurierten MySQL-Datenbank'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
|
||||||
# you to configure them for your own language or taste. Since these are used
|
|
||||||
# by the switching algorithm it is important that every button has a unique
|
|
||||||
# caption - ie we can't have two 'Edit' buttons doing different things.
|
|
||||||
|
|
||||||
%BUTTON = (
|
|
||||||
|
|
||||||
# These MUST all be unique!
|
|
||||||
create => 'Anlegen',
|
|
||||||
createlist => 'Liste anlegen',
|
|
||||||
edit => 'Bearbeiten',
|
|
||||||
delete => 'Entfernen',
|
|
||||||
deleteaddress => 'Entferne Adresse',
|
|
||||||
addaddress => 'Fuege Adresse hinzu',
|
|
||||||
moderators => 'ModeratorInnen',
|
|
||||||
denylist => 'Ausschlussliste',
|
|
||||||
allowlist => 'Zulassungsliste',
|
|
||||||
digestsubscribers => 'Abonnenten der Zusammenfassungen',
|
|
||||||
configuration => 'Konfiguration',
|
|
||||||
yes => 'Ja',
|
|
||||||
no => 'Nein',
|
|
||||||
updateconfiguration => 'Speichere Konfiguration',
|
|
||||||
edittexts => 'Bearbeite Texte',
|
|
||||||
editfile => 'Bearbeite Datei',
|
|
||||||
savefile => 'Speichere Datei',
|
|
||||||
webarchive => 'Web-Archiv',
|
|
||||||
selectlist => 'Listenauswahl',
|
|
||||||
subscribers => 'AbonnentInnen',
|
|
||||||
cancel => 'Abbruch',
|
|
||||||
resetform => 'Reset',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
|
||||||
# these along with the button labels and help texts, you can convert ezmlm-web
|
|
||||||
# to another language :-) If anyone gets arround to doing complete templates
|
|
||||||
# for other languages I would appreciate a copy so that I can include it in
|
|
||||||
# future releases of ezmlm-web.
|
|
||||||
|
|
||||||
%LANGUAGE = (
|
|
||||||
nop => 'Diese Funktionalitaet ist noch nicht umgesetzt worden',
|
|
||||||
chooselistinfo => "<UL><LI>Markiere eine Liste in der Auswahlbox oder klicke auf [$BUTTON{'create'}].<LI>Klicke auf den [$BUTTON{'edit'}]-Schalter, falls du die markierte Liste bearbeiten moechtest.<LI>Klicke auf den [$BUTTON{'delete'}]-Schalter, falls du die markierte Liste loeschen moechtest.</UL>",
|
|
||||||
confirmdelete => 'Bestaetige die Loeschung von ', # list name
|
|
||||||
subscribersto => 'Abonnenten von', # list name
|
|
||||||
subscribers => 'Abonnenten',
|
|
||||||
additionalparts => 'Weitere Optionen',
|
|
||||||
posting => 'Einsendungen',
|
|
||||||
subscription => 'Einschreibung',
|
|
||||||
remoteadmin => 'Entfernte AdministratorIn',
|
|
||||||
for => 'fuer', # as in; moderators for blahlist
|
|
||||||
createnew => 'Lege eine neue Liste an',
|
|
||||||
listname => 'Name der Liste',
|
|
||||||
listaddress => 'Adresse der Liste',
|
|
||||||
listoptions => 'Einstellungen der Liste',
|
|
||||||
allowedtoedit => 'Nutzer, die diese Liste bearbeiten duerfen',
|
|
||||||
editconfiguration => 'Einstellungen aendern',
|
|
||||||
prefix => 'Praefix der Betreff-Zeile ausgehender Nachrichten',
|
|
||||||
headerremove => 'zu entfernende Kopfzeilen',
|
|
||||||
headeradd => 'einzufuegende Kopfzeilen',
|
|
||||||
mimeremove => 'abzuweisende Anhangs-Typen',
|
|
||||||
edittextinfo => "Das Auswahlfeld links enthaelt die Dateien des <BR>Verzeichnisses DIR/text/. Diese Dateien werden als Antwort auf spezifische Nutzer-Anfragen oder als Teil aller ausgehenden Nachrichten versandt.<P>Um diese Dateien zu veraendern, waehle ihren Namen im Auswahlfeld an. Anschliessend klicke auf den [$BUTTON{'editfile'}] Schalter.<P>BetäAege [$BUTTON{'cancel'}] um die Veraenderung zu beenden.",
|
|
||||||
editingfile => 'Bearbeite Datei',
|
|
||||||
editfileinfo => '<BIG><STRONG>ezmlm-manage</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> Der Name der Liste<BR><TT><STRONG><#A#></STRONG></TT> Die Anmeldungs-Adresse<BR><TT><STRONG><#R#></STRONG></TT> Die Bestaetigungs-Adresse<P><BIG><STRONG>ezmlm-store</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> Der Name der Liste<BR><TT><STRONG><#A#></STRONG></TT> Die Zusage-Adresse<BR><TT><STRONG><#R#></STRONG></TT> Die Ablehungs-Adresse</UL>',
|
|
||||||
mysqlcreate => 'Lege die MySQL-Datenbank an, falls erforderlich',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# === Configuration file ends ===
|
|
|
@ -1,187 +0,0 @@
|
||||||
# language-specific definitions for ezmlm-web
|
|
||||||
# in english
|
|
||||||
|
|
||||||
# The meanings of the various ezmlm-make command line switches. The default
|
|
||||||
# ones match the ezmlm-idx 0.4 default ezmlmrc ... Alter them to suit your
|
|
||||||
# own ezmlmrc. Removing options from this list makes them unavailable
|
|
||||||
# through ezmlm-web - this could be useful for things like -w
|
|
||||||
|
|
||||||
%EZMLM_LABELS = (
|
|
||||||
# option => ['Short Name',
|
|
||||||
# 'Long Help Description'],
|
|
||||||
|
|
||||||
a => ['Archived',
|
|
||||||
'Ezmlm will archive new messages'],
|
|
||||||
b => ['Block archive',
|
|
||||||
'Only moderators are allowed to access the archive'],
|
|
||||||
# c => config. This is implicity called, so is not defined here
|
|
||||||
d => ['Digest',
|
|
||||||
'Set up a digest list to disseminate digest of the list messages'],
|
|
||||||
# e => edit. Also implicity called, so not defined here
|
|
||||||
f => ['Prefix',
|
|
||||||
'Outgoing subject will be prefixed with the list name'],
|
|
||||||
g => ['Guard Archive',
|
|
||||||
'Archive access requests from unrecognized SENDERs will be rejected'],
|
|
||||||
h => ['Help subscription',
|
|
||||||
'Subscriptions do not require confirmation'],
|
|
||||||
i => ['Indexed',
|
|
||||||
'Indexed for WWW archive access'],
|
|
||||||
j => ['Jump off',
|
|
||||||
'Unsubscribe does not require confirmation'],
|
|
||||||
k => ['Kill',
|
|
||||||
'Posts from addresses in dir/deny/ are rejected'],
|
|
||||||
l => ['Subscriber List',
|
|
||||||
'Remote administrators can request a subscriber list'],
|
|
||||||
m => ['Message Moderation',
|
|
||||||
'All incoming messages are moderated'],
|
|
||||||
n => ['Text Editing',
|
|
||||||
'Allow remote administrators to edit files in dir/text/'],
|
|
||||||
o => ['Others rejected',
|
|
||||||
'Posts from addresses other than moderators are rejected'],
|
|
||||||
p => ['Public',
|
|
||||||
'List will respond to administrative requests and archive retrieval'],
|
|
||||||
q => ['Service Request Address',
|
|
||||||
'Process commands sent in the subject to local-request@host'],
|
|
||||||
r => ['Remote Admin',
|
|
||||||
'Enable remote adminstration of the list'],
|
|
||||||
s => ['Subscription Moderation',
|
|
||||||
'Subscriptions to the main list and digest will be moderated'],
|
|
||||||
t => ['Trailer',
|
|
||||||
'Add a trailer to outgoing messages'],
|
|
||||||
u => ['User Posts Only',
|
|
||||||
'Posts from unrecognized SENDER addresses will be rejected'],
|
|
||||||
# v => version. I doubt you will really need this ;-)
|
|
||||||
w => ['Remove Warn',
|
|
||||||
'Remove the ezmlm-warn(1) invocations from the list setup. It is assumed that ezmlm-warn(1) is run by other means'],
|
|
||||||
x => ['Extra',
|
|
||||||
'Strip certain mimetypes, etc'],
|
|
||||||
# y => not used
|
|
||||||
# z => not used
|
|
||||||
|
|
||||||
# These all take an extra argument, which is the default value to use
|
|
||||||
|
|
||||||
0 => ['Sublist',
|
|
||||||
'Make the list a sublist of list mainlist@host',
|
|
||||||
'mainlist@host'],
|
|
||||||
# 1 => not used
|
|
||||||
# 2 => not used
|
|
||||||
3 => ['From Address',
|
|
||||||
'Replace the "From:" header of the message with "From: fromarg"',
|
|
||||||
'fromarg'],
|
|
||||||
4 => ['Digest Options',
|
|
||||||
'Switches for ezmlm-tstdig(1)',
|
|
||||||
'-t24 -m30 -k64'],
|
|
||||||
5 => ['List Owner',
|
|
||||||
'The email address of the list owner',
|
|
||||||
''],
|
|
||||||
6 => ['SQL Database',
|
|
||||||
'SQL database connect information. Requires SQL support',
|
|
||||||
'host:port:user:password:datab:table'],
|
|
||||||
7 => ['Message Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
8 => ['Subscription Moderation Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path'],
|
|
||||||
9 => ['Remote Admin Path',
|
|
||||||
'Make /path the path to the database for message moderators, if the list is set up for message moderation',
|
|
||||||
'/some/full/path']
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This list defines most of the context sensitive help in ezmlm-web. What
|
|
||||||
# isn't defined here is the options, which are defined above ... You can
|
|
||||||
# alter these if you feel something else would make more sense to your users
|
|
||||||
# Just be careful of what can fit on a screen!
|
|
||||||
|
|
||||||
%HELPER = (
|
|
||||||
|
|
||||||
# These should be self explainitory
|
|
||||||
addaddress => 'You may enter any RFC822 compliant email address here, including the comment part. For example; J Random User <jru@on.web.za>',
|
|
||||||
addaddressfile => 'or you may enter the filename of a plain text file containing multiple RFC822 email addresses, one per line',
|
|
||||||
moderator => 'Moderators: people who control who may subscribe or post to a list',
|
|
||||||
deny => 'Deny: A list of addresses that are _never_ allowed to mail the list',
|
|
||||||
allow => 'Allow: A list of address that are allowed to mail the list even if the configuration otherwise restricts it',
|
|
||||||
digest => 'Digest: People who will recieve a digest of all messages on the list',
|
|
||||||
webarch => 'View the web based archive of this list',
|
|
||||||
config => 'This lets you alter the way the list is set up',
|
|
||||||
listname => 'This is the name of the list as displayed on the Select Lists screen. It is also the name of the subdirectory that contains the list',
|
|
||||||
listadd => 'This is the email address of the list. Note that the defaults come from your qmail config. You should just update the local part (before the @)',
|
|
||||||
webusers => 'NB! At this stage, any users specified here must exist. User creation may be added in future versions',
|
|
||||||
prefix => 'Text to add to the subject line of all outgoing messages',
|
|
||||||
headerremove => 'This is a list of headers to remove from all outgoing mail',
|
|
||||||
headeradd => 'This is a list of headers to add to all outging mail',
|
|
||||||
mimeremove => 'All messages whose Content-Type matches these mime types will be bounced back to sender',
|
|
||||||
allowedit => 'Comma separated list of usernames, or <CODE>ALL</CODE> (all valid users)',
|
|
||||||
mysqlcreate => 'This will create the necessary MySQL tables if the list configuration above requires it'
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the captions of each of the buttons in ezmlm-web, and allows
|
|
||||||
# you to configure them for your own language or taste. Since these are used
|
|
||||||
# by the switching algorithm it is important that every button has a unique
|
|
||||||
# caption - ie we can't have two 'Edit' buttons doing different things.
|
|
||||||
|
|
||||||
%BUTTON = (
|
|
||||||
|
|
||||||
# These MUST all be unique!
|
|
||||||
create => 'Create',
|
|
||||||
createlist => 'Create List',
|
|
||||||
edit => 'Edit',
|
|
||||||
delete => 'Delete',
|
|
||||||
deleteaddress => 'Delete Address',
|
|
||||||
addaddress => 'Add Address',
|
|
||||||
moderators => 'Moderators',
|
|
||||||
denylist => 'Deny List',
|
|
||||||
allowlist => 'Allow List',
|
|
||||||
digestsubscribers => 'Digest Subscribers',
|
|
||||||
configuration => 'Configuration',
|
|
||||||
yes => 'Yes',
|
|
||||||
no => 'No',
|
|
||||||
updateconfiguration => 'Update Configuration',
|
|
||||||
edittexts => 'Edit Texts',
|
|
||||||
editfile => 'Edit File',
|
|
||||||
savefile => 'Save File',
|
|
||||||
webarchive => 'Web Archive',
|
|
||||||
selectlist => 'Select List',
|
|
||||||
subscribers => 'Subscribers',
|
|
||||||
cancel => 'Cancel',
|
|
||||||
resetform => 'Reset Form',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# This defines the fixed text strings that are used in ezmlm-web. By editing
|
|
||||||
# these along with the button labels and help texts, you can convert ezmlm-web
|
|
||||||
# to another language :-) If anyone gets arround to doing complete templates
|
|
||||||
# for other languages I would appreciate a copy so that I can include it in
|
|
||||||
# future releases of ezmlm-web.
|
|
||||||
|
|
||||||
%LANGUAGE = (
|
|
||||||
nop => 'Action not yet implemented',
|
|
||||||
chooselistinfo => "<UL><LI>Choose a mailing list from the selection box or click on [$BUTTON{'create'}].<LI>Click on the [$BUTTON{'edit'}] button if you want to edit the selected list.<LI>Click on the [$BUTTON{'delete'}] button if you want to delete the selected list.</UL>",
|
|
||||||
confirmdelete => 'Confirm deletion of', # list name
|
|
||||||
subscribersto => 'Subscribers to', # list name
|
|
||||||
subscribers => 'subscribers',
|
|
||||||
additionalparts => 'Additional list parts',
|
|
||||||
posting => 'Posting',
|
|
||||||
subscription => 'Subscription',
|
|
||||||
remoteadmin => 'Remote Admin',
|
|
||||||
for => 'for', # as in; moderators for blahlist
|
|
||||||
createnew => 'Create a New List',
|
|
||||||
listname => 'List Name',
|
|
||||||
listaddress => 'List Address',
|
|
||||||
listoptions => 'List Options',
|
|
||||||
allowedtoedit => 'Users allowed to edit this list',
|
|
||||||
editconfiguration => 'Edit the List Configuration',
|
|
||||||
prefix => 'Subject prefex for outgoing messages',
|
|
||||||
headerremove => 'Headers to strip from all outgoing mail',
|
|
||||||
headeradd => 'Headers to add to all outgoing mail',
|
|
||||||
mimeremove => 'Mime types to strip from all outgoing mail',
|
|
||||||
edittextinfo => "The box on the left contains a list of files available in the<BR>DIR/text directory. These files are sent out in response to specfic user request, or as part of all outgoing messages<P>To edit a file, select its name from the box. Then click on the [$BUTTON{'editfile'}] button.<P>Press [$BUTTON{'cancel'}] when you have finished editing.",
|
|
||||||
editingfile => 'Editing File',
|
|
||||||
editfileinfo => '<BIG><STRONG>ezmlm-manage</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The subscription address<BR><TT><STRONG><#R#></STRONG></TT> The address a subscriber must reply to<P><BIG><STRONG>ezmlm-store</STRONG></BIG><BR><TT><STRONG><#l#></STRONG></TT> The list name<BR><TT><STRONG><#A#></STRONG></TT> The acceptance address<BR><TT><STRONG><#R#></STRONG></TT> The rejection address</UL>',
|
|
||||||
mysqlcreate => 'Create the MySQL database tables if necessary',
|
|
||||||
|
|
||||||
);
|
|
||||||
|
|
||||||
# === Configuration file ends ===
|
|
|
@ -1,5 +0,0 @@
|
||||||
comm: guy, arb
|
|
||||||
users: arb
|
|
||||||
members: ALL
|
|
||||||
ALL: root
|
|
||||||
ALLOW_CREATE: root, guy
|
|
|
@ -1,186 +0,0 @@
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
font: normal 100% sans-serif;
|
|
||||||
color: #606760;
|
|
||||||
}
|
|
||||||
|
|
||||||
font.ez {
|
|
||||||
font-style: italic;
|
|
||||||
color: #505050;
|
|
||||||
}
|
|
||||||
|
|
||||||
font.hint {
|
|
||||||
font-size: 85%;
|
|
||||||
}
|
|
||||||
|
|
||||||
font.feature {
|
|
||||||
#font-size: 110%;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-bar {
|
|
||||||
float: left;
|
|
||||||
width: 14%;
|
|
||||||
margin: 0.5%;
|
|
||||||
padding-bottom: 1%;
|
|
||||||
background-color: #c0c0b0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-group {
|
|
||||||
margin-top: 1%;
|
|
||||||
padding-bottom: 1%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-bar ul {
|
|
||||||
list-style: square;
|
|
||||||
color: #af8060;
|
|
||||||
margin: 0;
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-bar li {
|
|
||||||
margin-top: 0;
|
|
||||||
border-bottom: solid 1px #606070;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-bar a {
|
|
||||||
font: bold 85% sans-serif;
|
|
||||||
color: #2f4860;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-bar a:hover {
|
|
||||||
background-color: #d8d8d8;
|
|
||||||
color: #2f4860;
|
|
||||||
}
|
|
||||||
|
|
||||||
#news {
|
|
||||||
background: #e8947c;
|
|
||||||
color: #000000;
|
|
||||||
margin: 1%;
|
|
||||||
padding: 5px;
|
|
||||||
width: 30%;
|
|
||||||
float: right;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#news font.title {
|
|
||||||
font-style: italic;
|
|
||||||
font-size: 110%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#news ul.changes {
|
|
||||||
font-size: 90%;
|
|
||||||
margin-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:visited {
|
|
||||||
color: #005040;
|
|
||||||
}
|
|
||||||
|
|
||||||
#oben {
|
|
||||||
background-color: #2f4860;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1.oben {
|
|
||||||
text-align: left;
|
|
||||||
border-bottom: solid 2px #ffffff;
|
|
||||||
padding: 5px;
|
|
||||||
font-weight: bold;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
color: #ffffff;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#perm-nav {
|
|
||||||
float: right;
|
|
||||||
padding-right: 5px;
|
|
||||||
font-size: 100%;
|
|
||||||
color: #006760;
|
|
||||||
background-color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
#perm-nav a {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #ffffff;
|
|
||||||
padding-left: 2px;
|
|
||||||
padding-right: 2px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#perm-nav a:hover {
|
|
||||||
color: #ffcc00;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.lid {
|
|
||||||
margin: 0;
|
|
||||||
padding: 3px;
|
|
||||||
padding-left: 10px;
|
|
||||||
border-bottom: solid 1px #606070;
|
|
||||||
background-color: #c0c0b0;
|
|
||||||
font: bold 100% sans-serif;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#content {
|
|
||||||
# position: absolute;
|
|
||||||
# right: 0px;
|
|
||||||
# width: 85%;
|
|
||||||
font: normal 82% sans-serif;
|
|
||||||
background-color: #ffffff;
|
|
||||||
padding: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#content h2 {
|
|
||||||
margin: 5px;
|
|
||||||
margin-top: 10px;
|
|
||||||
margin-left: 0;
|
|
||||||
font-weight: normal;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
color: #2f4860;
|
|
||||||
}
|
|
||||||
|
|
||||||
.push {
|
|
||||||
margin: 5px;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.push p {
|
|
||||||
text-align: justify;
|
|
||||||
}
|
|
||||||
|
|
||||||
#info-title {
|
|
||||||
text-align: center;
|
|
||||||
background-color: #c0c0b0;
|
|
||||||
margin: 0.5%;
|
|
||||||
color: #ffffff;
|
|
||||||
font-size: 105%;
|
|
||||||
#font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#header {
|
|
||||||
text-align: right;
|
|
||||||
background-color: #2f4860;
|
|
||||||
font-size: 90%;
|
|
||||||
color: #ffffff;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#footer {
|
|
||||||
text-align: right;
|
|
||||||
background-color: #2f4860;
|
|
||||||
font-size: 90%;
|
|
||||||
color: #ffffff;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
#footer a:visited {
|
|
||||||
color: #a0d0b0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mail {
|
|
||||||
font-style: italic;
|
|
||||||
color: #2f4860;
|
|
||||||
}
|
|
|
@ -1,197 +0,0 @@
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
||||||
<link href="ezmlm-web.css" type="text/css" rel="stylesheet"/>
|
|
||||||
<meta name="description" content="ezmlm-web ezmlm web interface administration mailing lists mailinglists access control acl" />
|
|
||||||
<title>ezmlm-web - administration interface for ezmlm</title>
|
|
||||||
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<div id="container">
|
|
||||||
|
|
||||||
<div id="oben">
|
|
||||||
<div id="perm-nav"><a href="https://systemausfall.org">systemausfall.org</a></div>
|
|
||||||
<h1 class="oben">ezmlm-web</h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="nav-bar">
|
|
||||||
|
|
||||||
<div class="nav-group">
|
|
||||||
<div class="lid">ezmlm-web</div>
|
|
||||||
<ul>
|
|
||||||
<li><a href="download/">download</a></li>
|
|
||||||
<li><a href="http://rucus.ru.ac.za/~guy/ezmlm/">original project</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-group">
|
|
||||||
<div class="lid">ezmlm</div>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://ezmlm.org">ezmlm website</a></li>
|
|
||||||
<li><a href="http://www.de.ezmlm.org/ezmlm/archive/">ezmlm mailing list archive</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="nav-group">
|
|
||||||
<div class="lid">qmail</div>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://cr.yp.to/qmail.html">DJB's qmail</a></li>
|
|
||||||
<li><a href="http://www.lifewithqmail.org/">life with qmail</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="info-title">a web interface for mailing lists' administration</div>
|
|
||||||
|
|
||||||
<div id="content">
|
|
||||||
|
|
||||||
<div id="news">
|
|
||||||
|
|
||||||
<font class="title">02005/01/26 - <font class="ez">ezmlm-web</font> <a href="download/ezmlm-web-2.2.tar.gz" title="download ezmlm-web 2.2">Version 2.2 released</a></font>
|
|
||||||
<ul class="changes">
|
|
||||||
<li>german translation</li>
|
|
||||||
<li>security fixes</li>
|
|
||||||
<li>create-permissions per user</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<font class="title">02005/01/24 - the work of <a href="http://rucus.ru.ac.za/~guy/ezmlm/">Guy Antony Halse</a> will be continued ... here</font>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>Overview</h2>
|
|
||||||
|
|
||||||
<p><font class="ez">ezmlm-web</font> is a web interface for the administration of <a href="http://ezmlm.org">ezmlm</a> mailing lists. It allows complete control over their configuration by using a web browser. User-based access control relieves administrators from the burden of managing all their mailing lists on their own.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>History</h2>
|
|
||||||
<p>The original author of <font class="ez">ezmlm-web</font> is Guy Antony Halse. He maintained it up to
|
|
||||||
version 2.1. By then it was functionally complete and convenient.</p>
|
|
||||||
<p>Since September 02000 no new releases were published.</p>
|
|
||||||
<p>In January 02005 Guy allowed me to continue the project. I will try to incorporate the suggestions
|
|
||||||
that were sent to Guy so far. Additional security improvements and translations will be integrated.</p>
|
|
||||||
<p>Your suggestions are welcome and will improve <font class="ez">ezmlm-web</font> whenever possible.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>How can <font class="ez">ezmlm-web</font> help you?</h2>
|
|
||||||
<p><font class="ez"><a href="http://www.ezmlm.org">ezmlm</a></font> uses a mainly
|
|
||||||
command line interface for the creation and maintainence
|
|
||||||
of mailing lists. While this is very convenient for the average systems
|
|
||||||
administrator who is used to such interfaces, it restrains him from transferring
|
|
||||||
administrative work to users who want to manage a community on their own.</p>
|
|
||||||
|
|
||||||
<p><font class="ez">ezmlm-web</font> is an attempt to hide the complexities of managing a mailing list
|
|
||||||
behind and intuative, easy to use web based interface. The idea behind this
|
|
||||||
is threefold. Firstly just about everyone these days can use a web browser,
|
|
||||||
or can learn very quickly. Secondly it provides almost complete platform
|
|
||||||
independence on the client side - there are GUI web browsers available for
|
|
||||||
every major modern operating system. Thirdly, and perhaps more importantly,
|
|
||||||
it makes easy remote administration a real possibility.</p>
|
|
||||||
|
|
||||||
<p><font class="ez">ezmlm-web</font> allows the user to easily add and remove
|
|
||||||
mailing list subscribers, create and delete mailing lists as well as alter
|
|
||||||
the configuration of existing mailing lists. Almost every aspect of the
|
|
||||||
mailing list is controlable through the web front end, allowing the list
|
|
||||||
user to do most things without the assistance of the systems administrators.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>Features</h2>
|
|
||||||
Some of the important features that <font class="ez">ezmlm-web</font> offers are;
|
|
||||||
<ul>
|
|
||||||
<li><font class="feature">Full Virtual Host Support</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> hides the complexities of setting up virtually hosted mailing lists from your users.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Multi-Level Access</font>
|
|
||||||
- <font class="hint">You can control who has access to different mailing lists.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Name Association</font>
|
|
||||||
- <font class="hint">You can enter any RFC 822 email address, and it will display the nice name while refering to the email address.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Configurable Interface</font>
|
|
||||||
- <font class="hint">Most of the "look & feel" of <font class="ez">ezmlm-web</font> is configured through templates, allowing you to easily co-ordinate it with your existing website.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Language Independence</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> can be easily reconfigured for different locales and languages. For now you can only choose between english and german - your contribution for other languages is welcome.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Context Sensitive Help</font>
|
|
||||||
- <font class="hint">Context sensitive help is provided throughout <font class="ez">ezmlm-web</font> in the form of image <tt>TITLE</tt> tags, which serve as tooltips.</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Full support for all command line options</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> has been updated to take advantage of all the command line features of ezmlm-idx 0.40. And should be compatible with any further releases :-)</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Browser Independence</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> has been tested with <a href="http://mozilla.org">Mozilla</a> 1.73, <a href="http://mozilla.org">Firefox</a> 1.0, <a href="http://www.netscape.com/">Netscape Navigator</a> 4.7, <a href="http://lynx.browser.org/">Lynx</a> 2.8.3, <a href="http://ei5nazha.yz.yamagata-u.ac.jp/~aito/w3m/eng">w3m</a> 0.1.11-pre and <a href="http://www.microsoft.com">Internet Explorer</a> 5.0</font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Platform Independence</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> should run on any platform that can run <a href="http://www.ezmlm.org/">ezmlm</a> and <a href="http://www.perl.org/">Perl</a></font></li>
|
|
||||||
|
|
||||||
<li><font class="feature">Multiple Subscribes/Unsubscribes</font>
|
|
||||||
- <font class="hint"><font class="ez">ezmlm-web</font> supports file uploads for bulk subscription of email addresses, and multiple selects for bulk deletes.</font></li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>Requirements</h2>
|
|
||||||
<p> A full list of requirements is available in the <a href="http://rucus.ru.ac.za/~guy/ezmlm/ezmlm-web-2.1/README">README</a>
|
|
||||||
file in the distribution.</p>
|
|
||||||
|
|
||||||
<p>Basically, however, you require the following on your
|
|
||||||
system:</p>
|
|
||||||
<ul>
|
|
||||||
<li><a href="http://www.qmail.org">Qmail</a></li>
|
|
||||||
|
|
||||||
<li><a href="http://www.ezmlm.org">ezmlm</a></li>
|
|
||||||
|
|
||||||
<li><a href="http://www.perl.org">Perl 5</a></li>
|
|
||||||
|
|
||||||
<li>+ a few <a href="http://www.cpan.org">perl modules</a> <font class="hint">(including the <a href="http://rucus.ru.ac.za/~guy/ezmlm/#Mail::Ezmlm">Mail::Ezmlm</a> module from the author of <font class="ez">ezmlm-web</font>)</font></li>
|
|
||||||
|
|
||||||
<li>and a webserver such as <a href="http://www.apache.org">Apache</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>How you can contribute</h2>
|
|
||||||
<p>You can help to improve <font class="ez">ezmlm-web</font> in many ways. Some of them are:</p>
|
|
||||||
<ul>
|
|
||||||
<li>translate it to another language (this takes about an hour) - for now english and german are available</li>
|
|
||||||
<li>create a nice stylesheet to improve its appearance</li>
|
|
||||||
<li>send me patches you would like to see incorporated</li>
|
|
||||||
<li>tell me if you find evidences of my poor english tongue on this page</li>
|
|
||||||
</ul>
|
|
||||||
<p>If you are interested in the development code of <font class="ez">ezmlm-web</font>, then you may
|
|
||||||
anonymously checkout the subversion repository at
|
|
||||||
<a href="https://svn.systemausfall.org/svn/admin-tools/ezmlm-web">
|
|
||||||
https://svn.systemausfall.org/svn/admin-tools/ezmlm-web</a>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="push">
|
|
||||||
<h2>Some final words ...</h2>
|
|
||||||
<p>As I am no native english speaker, I will gladly accept every hint to improve the appearance of this website.</p>
|
|
||||||
<p>Nearly every line of <font class="ez">ezmlm-web</font> was written by <a href="http://rucus.ru.ac.za/~guy/ezmlm/">Guy Antony Halse</a> - thanks a lot for this work!</p>
|
|
||||||
<p>If you have any suggestions regarding <font class="ez">ezmlm-web</font>, please send a mail to <font class="mail">ezmlm-web[AT]sumpfralle.de</font>.</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div> <!-- content -->
|
|
||||||
|
|
||||||
|
|
||||||
<div id="footer">ezmlm-web was developed by <a href="http://rucus.ru.ac.za/~guy/ezmlm/">Guy Antony Halse</a></div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,31 +0,0 @@
|
||||||
1. creating the ipkg package
|
|
||||||
|
|
||||||
1.1 install ipkg-utils
|
|
||||||
|
|
||||||
- get it: ftp://ftp.handhelds.org/packages/ipkg-utils/
|
|
||||||
- unpack it
|
|
||||||
- make
|
|
||||||
- make install
|
|
||||||
|
|
||||||
Strangely the script ipkg-buildpackage does not get installed. You have to copy it manually
|
|
||||||
to /usr/local/bin/.
|
|
||||||
|
|
||||||
There is a problem with the choice of the archiver:
|
|
||||||
- tar
|
|
||||||
- ar
|
|
||||||
ipkg-build (which is called by ipkg-buildpackage) uses "ar" by default, but most busybox
|
|
||||||
installations do not include this archiver.
|
|
||||||
To change the default archiver for ipkg-build you could pass the option "-c" to it.
|
|
||||||
As it is called by ipkg-buildpackage you have to change this by hand:
|
|
||||||
- look for a line that starts with "ipkg-build " near to the end of ipkg-buildpackage
|
|
||||||
- insert "-c" after "ipkg-build"
|
|
||||||
|
|
||||||
|
|
||||||
1.2 create control files for the package
|
|
||||||
for detailed instructions see "http://handhelds.org/moin/moin.cgi/BuildingIpkgs"
|
|
||||||
(note: the directory "CONTROL" can be "ipkg" too)
|
|
||||||
|
|
||||||
|
|
||||||
1.3 package the software
|
|
||||||
fakeroot SOURCE_DIR ipkg-buildpackage
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
Version 0.2.1
|
|
||||||
* traffic counter added
|
|
||||||
--- 18. May 02005 - Lars Kruse ---
|
|
||||||
|
|
||||||
Version 0.2
|
|
||||||
* counter for returned packets added
|
|
||||||
* enhanced installation and removal
|
|
||||||
* DEBUG mode
|
|
||||||
--- 18. May 02005 - Lars Kruse ---
|
|
||||||
|
|
||||||
Version 0.1
|
|
||||||
* basic functionality provided
|
|
||||||
--- 17. May 02005 - Lars Kruse ---
|
|
|
@ -1,118 +0,0 @@
|
||||||
1. Licence
|
|
||||||
These shell scripts are licenced under the GPL Version 2.0
|
|
||||||
(or higher at your option). Details can be found in the file
|
|
||||||
COPYING or at http://www.fsf.org/licensing/licenses/gpl.html.
|
|
||||||
|
|
||||||
|
|
||||||
2. Overview
|
|
||||||
web-splash manipulates some iptables rules to redirect the
|
|
||||||
first web access of a client to a page you choose. This can
|
|
||||||
be used for open wireless networks that want to inform
|
|
||||||
anonymous users about the policy of the net.
|
|
||||||
Further http (and other) requests will be forwarded. You may
|
|
||||||
also restrict access to some services, if you want.
|
|
||||||
|
|
||||||
web-splash does also give you information about the traffic
|
|
||||||
consumption of every user. This can be used to limit the
|
|
||||||
traffic volume or speed with packages like "fairspeed"
|
|
||||||
(https://systemausfall.org/toolforge/fairspeed).
|
|
||||||
|
|
||||||
|
|
||||||
3. How does it work?
|
|
||||||
- clients retrieve an IP by your dhcp server
|
|
||||||
- of course, your router should be their default gateway
|
|
||||||
- the clients are allowed to use nameservice
|
|
||||||
- only DNS requests get forwarded while the client is not
|
|
||||||
registered
|
|
||||||
- the first request on port 80 (http) will get redirected
|
|
||||||
to the router itself
|
|
||||||
- each the index.html of the webserver's root and the
|
|
||||||
error-404-document should contain an http-refresh tag
|
|
||||||
leading to /www/cgi-bin/web-splash.cgi
|
|
||||||
- this cgi will register the client (that means: add a
|
|
||||||
iptable rule to allow forwarding for this client) and
|
|
||||||
show the page, that is set by the "SPLASH_DOCUMENT"
|
|
||||||
variable in /etc/web-splash.conf
|
|
||||||
- FUTURE: there will be a script that unregisters clients
|
|
||||||
after a specified idle time (so they will get redirected
|
|
||||||
to the login page again)
|
|
||||||
|
|
||||||
|
|
||||||
4. Installation
|
|
||||||
You may install web-splash with the ipkg package manager or
|
|
||||||
manually.
|
|
||||||
|
|
||||||
4.1 with ipkg
|
|
||||||
The package can be installed with the ipkg package management
|
|
||||||
(it was developd for embeded devices).
|
|
||||||
With ipkg you may just type:
|
|
||||||
ipkg install web-splash_???.ipk
|
|
||||||
|
|
||||||
Now you should take a look at /etc/web-splash.conf.
|
|
||||||
If you use thttpd as your webserver, then you should restart
|
|
||||||
it. Otherwise it will not see the new default page for a
|
|
||||||
404-error. This will be explained later in this document ...
|
|
||||||
|
|
||||||
4.2 manuallly
|
|
||||||
If you do use a distribution that does not include ipkg, then
|
|
||||||
you may install it manually.
|
|
||||||
|
|
||||||
1.) unpack the sources
|
|
||||||
tar xzf web-splash_???.tar.gz
|
|
||||||
|
|
||||||
2.) config file
|
|
||||||
cp web-splash.conf /etc
|
|
||||||
|
|
||||||
3.) functions "library"
|
|
||||||
cp web-splash-function.sh /usr/lib
|
|
||||||
|
|
||||||
4.) main script
|
|
||||||
cp web-splash.sh /usr/bin
|
|
||||||
|
|
||||||
5.) cgi script
|
|
||||||
cp web-splash.cgi /www/cgi-bin
|
|
||||||
|
|
||||||
6.) default web site
|
|
||||||
cp -r splash-site /www/web-splash
|
|
||||||
|
|
||||||
If you used different locations for these files, then
|
|
||||||
you need to change the settings in /etc/web-splash.conf too.
|
|
||||||
|
|
||||||
|
|
||||||
5. webserver configuration
|
|
||||||
It is necessary, that your webserver redirects all request to
|
|
||||||
the cgi of web-splash. This can be done by using an alias
|
|
||||||
directive (if your webserver supports this) or defining a
|
|
||||||
custom error-404-document in your webserver (thttpd can do this).
|
|
||||||
|
|
||||||
For thttpd your configuration is already complete if you
|
|
||||||
installed web-splash as described before.
|
|
||||||
|
|
||||||
|
|
||||||
6. splash page
|
|
||||||
Surely you want to replace the default page that was installed
|
|
||||||
with your own text (or change the SPLASH_DOCUMENT setting in
|
|
||||||
/etc/web-splash.conf).
|
|
||||||
This page could show some information that your users should
|
|
||||||
get before using the internet.
|
|
||||||
|
|
||||||
|
|
||||||
7. support open networks!
|
|
||||||
web-splash was designed for open (wireless) networks.
|
|
||||||
I hope that this software ease the work of their administrator's
|
|
||||||
to spread the word ...
|
|
||||||
(see http://freenetworks.org)
|
|
||||||
|
|
||||||
|
|
||||||
8. contact
|
|
||||||
Send me an email if you have questions or suggestions:
|
|
||||||
devel@sumpfralle.de
|
|
||||||
|
|
||||||
the project's homepage:
|
|
||||||
https://systemausfall.org/toolforge/web-splash
|
|
||||||
|
|
||||||
the subversion repository:
|
|
||||||
https://svn.systemausfall.org/svn/openwrt-packages
|
|
||||||
|
|
||||||
the bug tracker:
|
|
||||||
https://systemausfall.org/trac/openwrt-packages
|
|
|
@ -1,2 +0,0 @@
|
||||||
- add some useful links to the splash-site
|
|
||||||
- add some information (aka documentation) to the splash-site
|
|
|
@ -1 +0,0 @@
|
||||||
/etc/web-splash.conf
|
|
|
@ -1,23 +0,0 @@
|
||||||
Package: web-splash
|
|
||||||
Priority: optional
|
|
||||||
Version: 0.2.1
|
|
||||||
Architecture: mipsel
|
|
||||||
Maintainer: Lars Kruse <devel@sumpfralle.de>
|
|
||||||
Section: net
|
|
||||||
Source: https://systemausfall.org/toolforge/web-splash
|
|
||||||
Depends: grep, sed, iptables
|
|
||||||
Description: web-splash helps you administering an open access point
|
|
||||||
Users who want to access the internet with your access point will
|
|
||||||
at first retrieve a webpage that informs them about the net.
|
|
||||||
After viewing this page they are allowed to use the net for as long
|
|
||||||
as you define.
|
|
||||||
This allows you (the administrator) to inform the users about the free
|
|
||||||
service they use.
|
|
||||||
.
|
|
||||||
It is recommended to use this package with thttpd or any other webserver
|
|
||||||
that allows you to define a custom error-404-page or a webserver that
|
|
||||||
supports aliases with regular expression matching.
|
|
||||||
.
|
|
||||||
The package web-limit can be used with web-splash to define a traffic
|
|
||||||
limitation and decrease the available bandwith depending on the remaining
|
|
||||||
volume.
|
|
|
@ -1,10 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Starting web-splash ..."
|
|
||||||
/etc/init.d/S89web-splash start
|
|
||||||
echo
|
|
||||||
echo "Maybe you should:"
|
|
||||||
echo " 1) restart your webserver (thttpd needs this to see the new error-404-document)"
|
|
||||||
echo " 2) change the hostname in /www/index.html to the IP or name of the router"
|
|
||||||
echo
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -e /www/index.html.orig ]
|
|
||||||
then echo
|
|
||||||
echo "Restoring original /www/index.html.orig to /www/index.html"
|
|
||||||
mv /www/index.html.orig /www/index.html
|
|
||||||
fi
|
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ -e /www/index.html ]
|
|
||||||
then echo
|
|
||||||
echo "Renaming /www/index.html to /www/index.html.orig"
|
|
||||||
mv /www/index.html /www/index.html.orig
|
|
||||||
fi
|
|
|
@ -1,4 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo "Stopping web-splash ..."
|
|
||||||
/etc/init.d/S89web-splash stop || true
|
|
|
@ -1,37 +0,0 @@
|
||||||
#!/usr/bin/make -f
|
|
||||||
|
|
||||||
# DESTDIR should be defined
|
|
||||||
DESTDIR ?= /tmp/web-splash
|
|
||||||
|
|
||||||
|
|
||||||
build:
|
|
||||||
@echo "done"
|
|
||||||
|
|
||||||
|
|
||||||
install:
|
|
||||||
@# config files
|
|
||||||
@mkdir -p $(DESTDIR)/etc
|
|
||||||
@cp web-splash.conf $(DESTDIR)/etc
|
|
||||||
|
|
||||||
@# web site
|
|
||||||
@mkdir -p $(DESTDIR)/www/web-splash
|
|
||||||
@cp splash-site/* $(DESTDIR)/www/web-splash/
|
|
||||||
@mkdir -p $(DESTDIR)/www/cgi-bin
|
|
||||||
@cp web-splash.cgi $(DESTDIR)/www/cgi-bin/
|
|
||||||
@ln -s web-splash/index.html $(DESTDIR)/www/index.html
|
|
||||||
@mkdir -p $(DESTDIR)/www/errors
|
|
||||||
@ln -s ../index.html $(DESTDIR)/www/errors/err404.html
|
|
||||||
|
|
||||||
@# install binaries
|
|
||||||
@mkdir -p $(DESTDIR)/usr/lib
|
|
||||||
@cp web-splash-functions.inc $(DESTDIR)/usr/lib
|
|
||||||
@mkdir -p $(DESTDIR)/usr/bin
|
|
||||||
@cp web-splash.sh $(DESTDIR)/usr/bin
|
|
||||||
|
|
||||||
@# startup script
|
|
||||||
@mkdir -p $(DESTDIR)/etc/init.d
|
|
||||||
@echo -e "#!/bin/sh\n/usr/bin/web-splash.sh start" >$(DESTDIR)/etc/init.d/S89web-splash
|
|
||||||
@chmod +x $(DESTDIR)/etc/init.d/S89web-splash
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@echo "done"
|
|
|
@ -1,21 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="expires" content="0">
|
|
||||||
<meta http-equiv="refresh" content="0; URL=http://wrt/cgi-bin/web-splash.cgi">
|
|
||||||
<!-- the name of the host part of the URL does not really matter if you do not
|
|
||||||
use relative links within the SPLASH_DOCUMENT page
|
|
||||||
maybe you want to put the name (or IP) of your router here -->
|
|
||||||
<title>Umleitung des offenen Netzes</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
<p>If you do not get redirected, then please follow this <a href="http://wrt/cgi-bin/web-splash.cgi">link</a> to enable internet access.</p>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<p>Falls du nicht automatisch weitergeleitet wurdest, dann folge diesem <a href="http://wrt/cgi-bin/web-splash.cgi">Link</a>, um deine Internetverbindung freizuschalten.</p>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,13 +0,0 @@
|
||||||
<HTML>
|
|
||||||
<HEAD>
|
|
||||||
<TITLE>Willkommen im Offenen Netz</TITLE>
|
|
||||||
</HEAD>
|
|
||||||
|
|
||||||
<BODY>
|
|
||||||
|
|
||||||
<BR><BR><BR><BR>
|
|
||||||
|
|
||||||
<H1 ALIGN="CENTER">Deine Verbindung ins Internet wurde freigeschaltet ...</H1>
|
|
||||||
|
|
||||||
</BODY>
|
|
||||||
</HTML>
|
|
|
@ -1,129 +0,0 @@
|
||||||
# this skript is GPL software (http://www.fsf.org/licensing/licenses/gpl.html)
|
|
||||||
# suggestions and questions to: devel@sumpfralle.de
|
|
||||||
# homepage: https://systemausfall.org/toolforge/web-splash
|
|
||||||
#
|
|
||||||
# this file will be sourced by web-splash.sh
|
|
||||||
#
|
|
||||||
|
|
||||||
remove_old()
|
|
||||||
{
|
|
||||||
# remove the rules from PREROUTING
|
|
||||||
$IPT -t nat -F $CHAIN_FORWARD_CHECK 2>/dev/null && $IPT -t nat -D PREROUTING -i $IF_SRC -j $CHAIN_FORWARD_CHECK
|
|
||||||
$IPT -t nat -F $CHAIN_REDIRECT 2>/dev/null && $IPT -t nat -D PREROUTING -i $IF_SRC -j $CHAIN_REDIRECT
|
|
||||||
$IPT -t nat -F $CHAIN_SERVICES 2>/dev/null && $IPT -t nat -D PREROUTING -i $IF_SRC -j $CHAIN_SERVICES
|
|
||||||
|
|
||||||
# remove the rule from FORWARD
|
|
||||||
$IPT -F $CHAIN_RETURN 2>/dev/null && $IPT -D FORWARD -o $IF_SRC -j $CHAIN_RETURN
|
|
||||||
|
|
||||||
# empty and remove chains if they exist (from POSTROUTING)
|
|
||||||
for a in $CHAIN_FORWARD_ACTION $CHAIN_FORWARD_CHECK $CHAIN_REDIRECT $CHAIN_SERVICES
|
|
||||||
do $IPT -t nat -F $a 2>/dev/null && $IPT -t nat -X $a
|
|
||||||
true
|
|
||||||
done
|
|
||||||
|
|
||||||
# empty and remove chains if they exist (from FORWARD)
|
|
||||||
for a in $CHAIN_RETURN
|
|
||||||
do $IPT -F $a 2>/dev/null && $IPT -X $a
|
|
||||||
true
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
init_chains()
|
|
||||||
{
|
|
||||||
# create chains (in nat table)
|
|
||||||
for a in $CHAIN_FORWARD_ACTION $CHAIN_FORWARD_CHECK $CHAIN_REDIRECT $CHAIN_SERVICES
|
|
||||||
do $IPT -t nat -N $a
|
|
||||||
done
|
|
||||||
|
|
||||||
# create chains (in filter table)
|
|
||||||
for a in $CHAIN_RETURN
|
|
||||||
do $IPT -N $a
|
|
||||||
done
|
|
||||||
|
|
||||||
# all packets from the specified interface go to the web-splash-chains first
|
|
||||||
# "-I" means insert before every other chain -> inserting reverse ordered
|
|
||||||
$IPT -t nat -I PREROUTING -i $IF_SRC -j $CHAIN_REDIRECT
|
|
||||||
$IPT -t nat -I PREROUTING -i $IF_SRC -j $CHAIN_FORWARD_CHECK
|
|
||||||
$IPT -t nat -I PREROUTING -i $IF_SRC -j $CHAIN_SERVICES
|
|
||||||
|
|
||||||
# add a "counting" chain for return packets
|
|
||||||
# it does nothing - except providing a counter for returned bytes
|
|
||||||
$IPT -I FORWARD -o $IF_SRC -j $CHAIN_RETURN
|
|
||||||
|
|
||||||
# rules for CHAIN_REDIRECT
|
|
||||||
$IPT -t nat -A $CHAIN_REDIRECT -p tcp --dport 80 -j DNAT --to-destination $INTERN_IP
|
|
||||||
$IPT -t nat -A $CHAIN_REDIRECT -p tcp --dport 80 -j ACCEPT
|
|
||||||
$IPT -t nat -A $CHAIN_REDIRECT -j $REJECT_ACTION
|
|
||||||
|
|
||||||
# all registered senders are simply accepted
|
|
||||||
$IPT -t nat -A $CHAIN_FORWARD_ACTION -j ACCEPT
|
|
||||||
|
|
||||||
# allowed packets (services like dns, dhcp and ssh (to the router only))
|
|
||||||
$IPT -t nat -A $CHAIN_SERVICES -p udp --dport 53 -j ACCEPT
|
|
||||||
$IPT -t nat -A $CHAIN_SERVICES -p udp --dport 67 -j ACCEPT
|
|
||||||
$IPT -t nat -A $CHAIN_SERVICES -p tcp --dport 67 -j ACCEPT
|
|
||||||
$IPT -t nat -A $CHAIN_SERVICES -p tcp -d $INTERN_IP --dport 22 -j ACCEPT
|
|
||||||
|
|
||||||
# user defined "privileged" source IPs
|
|
||||||
for a in $ALLOW_IP_LIST
|
|
||||||
do $IPT -t nat -A $CHAIN_SERVICES -s $a -j ACCEPT
|
|
||||||
done
|
|
||||||
|
|
||||||
# user defined forbidden source IPs
|
|
||||||
for a in $DENY_IP_LIST
|
|
||||||
do $IPT -t nat -I $CHAIN_SERVICES -s $a -j $REJECT_ACTION
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
get_IP_list()
|
|
||||||
# prints out all active forwarding IPs
|
|
||||||
{
|
|
||||||
$IPT -t nat -L "$CHAIN_FORWARD_CHECK" -vnx | sed "1,2d; s/ */ /g" | cut -d " " -f 9
|
|
||||||
# get all active forward chains
|
|
||||||
# remove the first two lines
|
|
||||||
# remove multiple spaces
|
|
||||||
# take only the IP
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
register_IP()
|
|
||||||
# add a new allowed IP
|
|
||||||
{
|
|
||||||
if get_IP_list | grep -q "^$1$"
|
|
||||||
then echo "die IP $1 war bereits freigeschaltet!"
|
|
||||||
else eval `echo "$RULE_ADD" | sed "s/_IP_/$1/g"`
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
unregister_IP()
|
|
||||||
# remove the specified IP
|
|
||||||
{
|
|
||||||
if get_IP_list | grep -q "^$1$"
|
|
||||||
then eval `echo "$RULE_DEL" | sed "s/_IP_/$1/g"`
|
|
||||||
else echo "die IP $1 war nicht freigeschaltet!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
update_IP_list()
|
|
||||||
# remove inactive IPs from the forwarding list
|
|
||||||
{
|
|
||||||
local IP
|
|
||||||
get_IPs | while read IP
|
|
||||||
do [ `get_IP_traffic $IP` -gt 0 ] && unregister_IP "$IP"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
get_IP_traffic()
|
|
||||||
{
|
|
||||||
local IP="$1"
|
|
||||||
local out_traffic="`$IPT -t nat -L \"$CHAIN_FORWARD_CHECK\" -vnx | sed '1,2d; s/ */ /g' | cut -d ' ' -f 3,9 | grep \" $IP$\" | cut -d ' ' -f 1`"
|
|
||||||
local in_traffic="`$IPT -L \"$CHAIN_RETURN\" -vnx | sed '1,2d; s/ */ /g' | cut -d ' ' -f 3,9 | grep \" $IP$\" | cut -d ' ' -f 1`"
|
|
||||||
if [ -n "$in_traffic" -a -n "$out_traffic" ]
|
|
||||||
then echo $((in_traffic+out_traffic))
|
|
||||||
else echo 0
|
|
||||||
fi
|
|
||||||
}
|
|
|
@ -1,16 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# this skript is GPL software (http://www.fsf.org/licensing/licenses/gpl.html)
|
|
||||||
# suggestions and questions to: devel@sumpfralle.de
|
|
||||||
# homepage: https://systemausfall.org/toolforge/web-splash
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
. /etc/web-splash.conf
|
|
||||||
|
|
||||||
echo "Content-type: text/html"
|
|
||||||
echo
|
|
||||||
|
|
||||||
cat "$SPLASH_DOCUMENT"
|
|
||||||
|
|
||||||
"$SPLASH_BIN/web-splash.sh" register "$REMOTE_ADDR"
|
|
|
@ -1,49 +0,0 @@
|
||||||
# this file is not parsed, but simply sourced
|
|
||||||
#
|
|
||||||
# web-splash is GPL software (http://www.fsf.org/licensing/licenses/gpl.html)
|
|
||||||
# suggestions and questions to: devel@sumpfralle.de
|
|
||||||
# homepage: https://systemausfall.org/toolforge/web-splash
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
# the source interface (only these packets will be filtered)
|
|
||||||
IF_SRC=eth1
|
|
||||||
|
|
||||||
# intern IP address auf the network, where web-splash will be used
|
|
||||||
INTERN_IP=192.168.1.1
|
|
||||||
|
|
||||||
# name of the local file that should be displayed by the cgi
|
|
||||||
SPLASH_DOCUMENT=/www/web-splash/splash-info.html
|
|
||||||
|
|
||||||
# allowed and denied IPs - separated by spaces
|
|
||||||
ALLOW_IP_LIST=""
|
|
||||||
DENY_IP_LIST=""
|
|
||||||
|
|
||||||
# templates for the rules to manage forwarding rules (_IP_ will be substituted by the host's IP)
|
|
||||||
# the first line adds the PREROUTING-ACCEPT rule
|
|
||||||
# the second line adds the counter rule
|
|
||||||
RULE_ADD='$IPT -t nat -I $CHAIN_FORWARD_CHECK -s _IP_ -j $CHAIN_FORWARD_ACTION;
|
|
||||||
$IPT -I $CHAIN_RETURN -d _IP_'
|
|
||||||
RULE_DEL='$IPT -t nat -D $CHAIN_FORWARD_CHECK -s _IP_ -j $CHAIN_FORWARD_ACTION;
|
|
||||||
$IPT -D $CHAIN_RETURN -d _IP_'
|
|
||||||
|
|
||||||
# the iptables chain, that contains all forwarded ips
|
|
||||||
CHAIN_FORWARD_CHECK=web_splash_forward_check
|
|
||||||
CHAIN_FORWARD_ACTION=web_splash_forward_action
|
|
||||||
CHAIN_REDIRECT=web_splash_redirect
|
|
||||||
CHAIN_SERVICES=web_splash_services
|
|
||||||
CHAIN_RETURN=web_splash_return
|
|
||||||
|
|
||||||
# the iptables action for bad packets (e.g. DROP or REJECT)
|
|
||||||
REJECT_ACTION=DROP
|
|
||||||
|
|
||||||
# the location of the iptables program
|
|
||||||
IPT=/sbin/iptables
|
|
||||||
[ ! -x "$IPT" ] && IPT=/usr/sbin/iptables
|
|
||||||
|
|
||||||
# path to the web-splash scripts
|
|
||||||
SPLASH_LIB=/usr/lib
|
|
||||||
SPLASH_BIN=/usr/bin
|
|
||||||
|
|
||||||
# activate DEBUG mode 0/1 (only for testing - it produces ugly output)
|
|
||||||
SPLASH_DEBUG=0
|
|
|
@ -1,56 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# this skript is GPL software (http://www.fsf.org/licensing/licenses/gpl.html)
|
|
||||||
# suggestions and questions to: devel@sumpfralle.de
|
|
||||||
# homepage: https://systemausfall.org/toolforge/web-splash
|
|
||||||
#
|
|
||||||
|
|
||||||
|
|
||||||
set -ue
|
|
||||||
|
|
||||||
. /etc/web-splash.conf
|
|
||||||
. "$SPLASH_LIB/web-splash-functions.inc"
|
|
||||||
|
|
||||||
|
|
||||||
# check for DEBUG mode
|
|
||||||
[ "$SPLASH_DEBUG" -eq 1 ] && set -x
|
|
||||||
|
|
||||||
|
|
||||||
ACTION="--help"
|
|
||||||
[ $# -gt 0 ] && ACTION="$1"
|
|
||||||
|
|
||||||
case "$ACTION" in
|
|
||||||
start|restart )
|
|
||||||
remove_old
|
|
||||||
init_chains
|
|
||||||
;;
|
|
||||||
stop )
|
|
||||||
remove_old
|
|
||||||
;;
|
|
||||||
register )
|
|
||||||
[ $# -gt 2 ] && echo "[WEB_SPLASH] too many parameters: only one IP address is allowed" && exit 1
|
|
||||||
[ $# -lt 2 ] && echo "[WEB_SPLASH] you have to specify an IP address" && exit 2
|
|
||||||
register_IP "$2"
|
|
||||||
;;
|
|
||||||
unregister )
|
|
||||||
[ $# -gt 2 ] && echo "[WEB_SPLASH] too many parameters: only one IP address is allowed" && exit 1
|
|
||||||
[ $# -lt 2 ] && echo "[WEB_SPLASH] you have to specify an IP address" && exit 2
|
|
||||||
unregister_IP "$2"
|
|
||||||
;;
|
|
||||||
update )
|
|
||||||
update_IP_list
|
|
||||||
;;
|
|
||||||
traffic )
|
|
||||||
if [ $# -eq 1 ]
|
|
||||||
then get_IP_list | while read IP
|
|
||||||
do echo "$IP `get_IP_traffic \"$IP\"`"
|
|
||||||
done
|
|
||||||
else IP="$2"
|
|
||||||
get_IP_traffic "$IP"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
* )
|
|
||||||
echo "Syntax: $0 {start|stop|restart|register|unregister|update|traffic}"
|
|
||||||
echo
|
|
||||||
;;
|
|
||||||
esac
|
|
Loading…
Reference in a new issue