diff --git a/INSTALL b/INSTALL index a99301f..638d3b3 100644 --- a/INSTALL +++ b/INSTALL @@ -64,10 +64,12 @@ OVERVIEW: Finally, copy the ezmlmwebrc file to one of the following places: 1) the home directory of the user that runs ezmlm-web.cgi (~/.ezmlmwebrc) - 2) the directory, that contains your cgi binary (index.cgi) - 3) /etc/ezmlm-web/ezmlmwebrc - 4) /etc/ezmlm/ezmlmwebrc [deprecated] + 2) /etc/ezmlm-web/ezmlmwebrc + 3) /etc/ezmlm/ezmlmwebrc [deprecated] (ezmlm-web will look for it in these places in the given order) + + See the manpage of ezmlmwebrc (5) for a complete description of all + configuration settings. 4. For every user/virtual host that needs to manage mailing lists, you @@ -86,6 +88,10 @@ OVERVIEW: i: Execute CGI Scripts and ii: Be access controlled (here I mean both web and user access) by some method (eg .htaccess for Apache). + + Alternatively you can also manage multiple domains/users/virtual hosts + with a single suid-wrapper. Take a look at examples/multidomain.conf for + details. 5. Install some method of securing access to the page. The following diff --git a/README b/README index 48e9d4b..98a6494 100644 --- a/README +++ b/README @@ -75,7 +75,7 @@ This version of ezmlm-web requires the following; + File::Copy v2.02 + File::Path v1.07 + Text::ParseWords v3.24 - + Locale::gettext v1.01 + + Encode (optional) 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 @@ -86,18 +86,17 @@ versions are expected to work as well. To install perl modules you may use the cpan command line interface. Just run "cpan" and type something like "install Mail::Ezmlm". -You can download clearsilver (a templating engine - it is required since -ezmlm-web v3.0) from http://clearsilver.net. +You can download clearsilver (a templating engine) from http://clearsilver.net. III. 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 + If you set $UNSAFE_RM = 0 (the default) in the config section, the ezmlm-web won't actually delete the list. In this case it moves the 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 + _deleted_lists/ (In the user's home directory. This is by far a safer way (since you can restore lists) and therefore I recommend it. * I suggest that you make use of custom ezmlmwebrc files rather than using @@ -150,6 +149,9 @@ 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. +You find the details of the format of webusers (5) file in the respective +manpage. + V. Language Portablity ====================== @@ -160,14 +162,8 @@ 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. +Please visit the translation center at http://translate.systemausfall.org +to contribute some strings translated to yoru native language. Thanks! VI. Encrypted mailing lists @@ -182,7 +178,7 @@ VII. Bugs && Bug Reports I don't know of any bugs ... Ezmlm-web has been tested reasonably well, but not exhaustively. I know it works on FreeBSD 4.0-STABLE, FreeBSD 3.4-RELEASE, RedHat 5.1, Redhat 6.0 and -Debian 3.0 all using an Apache web server, but I would be interested to know +Debian 3.1 all using an Apache web server, but I would be interested to know whether it works on other OSs and with other web servers. Please mail bug reports and comments to @@ -216,6 +212,7 @@ VIII. Acknowledgements * Reinin Ooyama (lenin@hasiru.net) - a japanese translation and bugixes for v2.3 * Henning Rieger (age@systemausfall.org) - he designed most of the new interface for v3.0 +* Clavdia Horvat - she designed the new color scheme of v3.2 IX. Availability diff --git a/TODO b/TODO index 9b672c8..25691e6 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ -Reply-To-Option +check the content of the Log file for automatic subscription Infos fuer Massen-Hosting: http://www.fbis.ch/index-de.php?page=14&frameset=4 diff --git a/UPGRADING b/UPGRADING index e7fb151..0fc46f9 100644 --- a/UPGRADING +++ b/UPGRADING @@ -4,15 +4,31 @@ This file contains some useful hints for upgrading from a previous version of ez UPGRADING ezmlm-web 3.1 to ezmlm-web 3.2 -1) the following dependencies were added: +1) the following dependency was added: - File::Path - - Locale::gettext -2) a new (optional) configuration setting is available: DOTQMAIL_DIR -It can be useful if you run a multi domain vpopmail setup. +2) design update + The css stylesheet file changed significantly. Please update your copy. + Additionally you should also copy the images of the directory www-data/ + to the directory of your local stylesheet file. 3) install Mail::Ezmlm::Gpg if you want to handle encrypted mailing lists -(see README.gnupg for details) + (see README.gnupg for details) + +4) possible locations of ezmlmwebrc + ezmlm-web does no longer search for a configuration file (ezmlmwebrc) in + the current directory, as this can be a security risk. + If you relied on this behavior (should be rare), then you have two options: + A) move your configuration file to one of the other possible locations + B) patch the source of ezmlm-web.cgi to include the deprecated + configuration file location. Do this on your own risk! + +5) renamed configuration setting + The configuration setting 'HTML_CSS_FILE' is replaced by 'HTML_CSS_URL' for + clarity. 'HTML_CSS_URL' falls back to the value of 'HTML_CSS_FILE' if it is + undefined. Thus your setup should work as before. But you are encouraged to + replace the setting, as it might break your setup in a future version of + ezmlm-web. ------------------------------------------------------------------------------ diff --git a/changelog b/changelog index 9911d58..34f1ce2 100644 --- a/changelog +++ b/changelog @@ -9,6 +9,7 @@ Version 3.2 - 04/14/02006 * user-specific interface selection (easy/default/expert) * simplified rules for subscribing, posting and archive access * support for more ezmlm-idx: 'headerkeep', 'mimekeep' and 'copylines' + * added configuration setting for site-specific links * script for creating binary suid wrappers added * handling of empty settings for ezmlm-idx 5.0 fixed (closes #21) * bug in MySQL support fixed diff --git a/debian/ezmlm-web.manpages b/debian/ezmlm-web.manpages index a4948fb..86e546f 100644 --- a/debian/ezmlm-web.manpages +++ b/debian/ezmlm-web.manpages @@ -1,3 +1,5 @@ man/ezmlm-web-make-suid.1 man/ezmlm-web.wrapper.1 blib/man1/ezmlm-web.cgi.1p +man/ezmlmwebrc.5 +man/webusers.5 diff --git a/examples/ezmlmwebrc.dist b/examples/ezmlmwebrc.dist index 09c64b3..e4d3cc7 100644 --- a/examples/ezmlmwebrc.dist +++ b/examples/ezmlmwebrc.dist @@ -1,10 +1,13 @@ -# Configuration file for ezmlm-web 2.3 +# Configuration file for ezmlm-web 3.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 ;-) +# +# See the manpage of ezmlmwebrc(5) for a list of all available configuration +# settings. # --------------------------------------------------------------------------- @@ -21,7 +24,7 @@ $LIST_DIR = "$HOME_DIR/lists"; # 1) copy examples/multidomain.conf.dist to /etc/ezmlm-web/multidomain.conf # 2) adjust /etc/ezmlm-web/multidomain.conf to your setup # 3) uncomment the following line -# 4) make sure that your multi domain settings are not overriden below +# 4) make sure that your multi domain settings are not overriden by settings below #warn "multidomain.conf failed" unless (defined do "/etc/ezmlm-web/multidomain.conf"); # Where do we store the dotqmail files of this user? @@ -76,11 +79,19 @@ $FILE_UPLOAD = 1; $DEFAULT_OPTIONS = "aBDFGHiJkLMNOpQRSTUWx"; # What is the title of this document? -$HTML_TITLE = "ezmlm-web - a mailinglists' administration interface"; +$HTML_TITLE = "ezmlm-web - a mailinglist administration interface"; -# Optional: use a cascading style sheet (css) +# Optional: some permanent links (visible in the top right corner) +#@HTML_LINKS = ( +# { name => 'ezmlm-web homepage', +# url => 'https://systemausfall.org/toolforge/ezmlm-web' }, +# { name => 'domain\'s root', +# url => '/'}, +# ); + +# use a cascading style sheet (css) # this is a URL - you have to copy the css file to the right location before -$HTML_CSS_FILE = "/ezmlm-web.css"; +$HTML_CSS_URL = "/ezmlm-web.css"; # the default interface language # can only be changed via the web interface if gettext support is available diff --git a/examples/ezmlmwebrc.minimal-dist b/examples/ezmlmwebrc.minimal-dist new file mode 100644 index 0000000..fa1043f --- /dev/null +++ b/examples/ezmlmwebrc.minimal-dist @@ -0,0 +1,26 @@ +# Configuration file for ezmlm-web 3.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 ;-) +# +# See the manpage of ezmlmwebrc(5) for a list of all available configuration +# settings. + +# --------------------------------------------------------------------------- + +# Where do we store lists on this server ... Try "$HOME_DIR/lists". +# This directory will automatically be created if needed. +# BEWARE: the (resulting) path MUST be absolute (starting with a slash)! +$LIST_DIR = "$HOME_DIR/lists"; + +# Where are the language files +# usually something like /usr/local/share/ezmlm-web/lang +$LANGUAGE_DIR = "/usr/local/share/ezmlm-web/lang"; + +# Where are the template files +# usually something like /usr/local/share/ezmlm-web/template +$TEMPLATE_DIR = "/usr/local/share/ezmlm-web/template"; + diff --git a/ezmlm-web.cgi b/ezmlm-web.cgi index 4e50f22..53287a1 100755 --- a/ezmlm-web.cgi +++ b/ezmlm-web.cgi @@ -22,14 +22,11 @@ use CGI; use IO::File; use POSIX; use English; -use Time::localtime (); -# gettext support is optional -my $GETTEXT_SUPPORT = 1; -unless (&safely_import_module("Locale::gettext")) { - $GETTEXT_SUPPORT = 0; - warn "Gettext support is not available - the multilingual web interface is not available!"; -} +# optional modules - they will be loaded later if they are available +#Encode +#Mail::Ezmlm::Gpg + # the Encode module is optional - we do not break if it is absent my $ENCODE_SUPPORT = 1; @@ -39,11 +36,6 @@ unless (&safely_import_module("Encode")) { } -# do not forget: we depend on Mail::Ezmlm::Gpg if the corresponding configuration -# setting is enabled - - - ################## some preparations at the beginning ################## @@ -75,13 +67,16 @@ use vars qw[$HOME_DIR]; $HOME_DIR=$tmp[7]; use vars qw[$DEFAULT_OPTIONS $UNSAFE_RM $ALIAS_USER $LIST_DIR]; use vars qw[$QMAIL_BASE $PRETTY_NAMES $DOTQMAIL_DIR]; use vars qw[$FILE_UPLOAD $WEBUSERS_FILE $MAIL_DOMAIN $HTML_TITLE]; -use vars qw[$HTML_CSS_FILE $TEMPLATE_DIR $LANGUAGE_DIR $HTML_LANGUAGE]; -use vars qw[$MAIL_ADDRESS_PREFIX]; +use vars qw[$HTML_CSS_URL $TEMPLATE_DIR $LANGUAGE_DIR $HTML_LANGUAGE]; +use vars qw[$MAIL_ADDRESS_PREFIX @HTML_LINKS]; # some settings for encrypted mailing lists use vars qw[$GPG_SUPPORT]; # settings for multi-domain setups use vars qw[%DOMAINS $CURRENT_DOMAIN]; +# deprecated settings +use vars qw[$HTML_CSS_FILE]; # replaced by HTML_CSS_URL since v3.2 + # some deprecated configuration settings - they have to be announced # otherwise old configuration files would break # for now there are no deprecated settings @@ -99,8 +94,6 @@ if (defined($opt_C)) { $config_file = $1; # Command Line } elsif (-e "$HOME_DIR/.ezmlmwebrc") { $config_file = "$HOME_DIR/.ezmlmwebrc"; # User -} elsif (-e "./ezmlmwebrc") { - $config_file = "./ezmlmwebrc"; # Install } elsif (-e "/etc/ezmlm-web/ezmlmwebrc") { $config_file = "/etc/ezmlm-web/ezmlmwebrc"; # System (new style - since v2.2) } elsif (-e "/etc/ezmlm/ezmlmwebrc") { @@ -138,6 +131,14 @@ if (defined($opt_d)) { $LIST_DIR = $1 if ($opt_d =~ /^([-\@\w.\/]+)$/); } +# check required configuration settings +&fatal_error("Configuration setting 'LIST_DIR' not specified!") + unless (defined($LIST_DIR)); +&fatal_error("Configuration setting 'LANGUAGE_DIR' not specified!") + unless (defined($LANGUAGE_DIR)); +&fatal_error("Configuration setting 'TEMPLATE_DIR' not specified!") + unless (defined($TEMPLATE_DIR)); + # If WEBUSERS_FILE is not defined in ezmlmwebrc (as before version 2.2), # then use former default value for compatibility $WEBUSERS_FILE = $LIST_DIR . '/webusers' unless (defined($WEBUSERS_FILE)); @@ -145,8 +146,24 @@ $WEBUSERS_FILE = $LIST_DIR . '/webusers' unless (defined($WEBUSERS_FILE)); # check for non-default dotqmail directory $DOTQMAIL_DIR = $HOME_DIR unless defined($DOTQMAIL_DIR); -# check optional stylesheet -$HTML_CSS_FILE = '' unless defined($HTML_CSS_FILE); +# check default options for new mailing lists +$DEFAULT_OPTIONS = 'aBDFGHiJkLMNOpQRSTUWx' unless defined($DEFAULT_OPTIONS); + +# check default language +$HTML_LANGUAGE = 'en' unless defined($HTML_LANGUAGE); + +# check stylesheet +# HTML_CSS_FILE was replaced by HTML_CSS_URL in v3.2 +unless (defined($HTML_CSS_URL)) { + # HTML_CSS_URL is undefined - we will check the deprecated setting first + if (defined($HTML_CSS_FILE)) { + # ok - we fall back to the deprecated setting + $HTML_CSS_URL = $HTML_CSS_FILE; + } else { + # nothing is defined - we use the default value + $HTML_CSS_URL = '/ezmlm-web.css'; + } +} # check template directory $TEMPLATE_DIR = 'template' unless defined($TEMPLATE_DIR); @@ -154,6 +171,24 @@ $TEMPLATE_DIR = 'template' unless defined($TEMPLATE_DIR); # check QMAIL_BASE $QMAIL_BASE = '/var/qmail/control' unless defined($QMAIL_BASE); +# check UNSAFE_RM +$UNSAFE_RM = 0 unless defined($UNSAFE_RM); + +# check PRETTY_NAMES +$PRETTY_NAMES = 0 unless defined($PRETTY_NAMES); + +# check FILE_UPLOAD +$FILE_UPLOAD = 1 unless defined($FILE_UPLOAD); + +# check ALIAS_USER +$ALIAS_USER = 'alias' unless defined($ALIAS_USER); + +# check HTML_TITLE +$HTML_TITLE = '' unless defined($HTML_TITLE); + +# check HTML_LINKS +@HTML_LINKS = () unless defined(@HTML_LINKS); + # determine MAIL_DOMAIN unless (defined($MAIL_DOMAIN) && ($MAIL_DOMAIN ne '')) { if ((-e "$QMAIL_BASE/virtualdomains") && open(VD, "<$QMAIL_BASE/virtualdomains")) { @@ -199,7 +234,7 @@ my $action = $q->param('action'); # This is where we decide what to do, depending on the form state and the # users chosen course of action ... # TODO: unify all these "is list param set?" checks ... -if ($action eq 'show_mime_examples') { +if (defined($action) && ($action eq 'show_mime_examples')) { &output_mime_examples(); exit 0; } elsif (%DOMAINS && (!defined($CURRENT_DOMAIN) || ($CURRENT_DOMAIN eq '') @@ -526,9 +561,16 @@ sub init_hdf { $hdf = &load_interface_language($hdf); $hdf->setValue("ScriptName", $ENV{SCRIPT_NAME}) if (defined($ENV{SCRIPT_NAME})); - $hdf->setValue("Stylesheet", "$HTML_CSS_FILE"); + $hdf->setValue("Stylesheet", "$HTML_CSS_URL"); $hdf->setValue("Config.PageTitle", "$HTML_TITLE"); + my $i; + for $i (0 .. $#HTML_LINKS) { + $hdf->setValue("Config.PageLinks.$i.name", $HTML_LINKS[$i]{name}); + $hdf->setValue("Config.PageLinks.$i.url", $HTML_LINKS[$i]{url}); + $i++; + } + # support for encrypted mailing lists? $hdf->setValue("Config.Features.Crypto", 1) if ($GPG_SUPPORT); @@ -1206,7 +1248,7 @@ sub set_pagedata_subscription_log { my ($listname) = @_; - my ($log_file, @event, $i, $epoch_seconds, $note, $address); + my ($log_file, @event, $i, $datetext, $epoch_seconds, $note, $address); $log_file = "$LIST_DIR/" . $q->param('list') . "/Log"; # break if there is no log_file @@ -1219,18 +1261,20 @@ sub set_pagedata_subscription_log { } $i = 0; - while () { chomp; - split; - @event = @_; + @event = split; if ($#event eq 2) { $epoch_seconds = $event[0]; - my $datetext = ctime($epoch_seconds); + $datetext = localtime($epoch_seconds); $note = $event[1]; $address = $event[2]; + # the date in gmt format - this should be sufficient $pagedata->setValue("Data.List.SubscribeLog.$i.date", $datetext); - $pagedata->setValue("Data.List.SubscribeLog.$i.text", $note); + # the first letter of 'note' should be +/- + $pagedata->setValue("Data.List.SubscribeLog.$i.action", substr($note,0,1)); + # manual/auto/mod - TODO: verify "auto" + $pagedata->setValue("Data.List.SubscribeLog.$i.details", substr($note,1)); $pagedata->setValue("Data.List.SubscribeLog.$i.address", $address); $i++; } @@ -1328,6 +1372,8 @@ sub untaint { next if ($params[$i] eq 'mailaddressfile'); next if ($params[$i] eq 'gnupg_key_file'); next if ($params[$i] eq 'content'); + # the button description may contain non-ascii characters - skip check + next if ($params[$i] eq 'send'); foreach $param ($q->param($params[$i])) { next if $param eq ''; if ($param =~ /^([#-\@\w\.\/\[\]\:\n\r\>\< _"']+)$/) { diff --git a/lang/en.hdf b/lang/en.hdf index 91fec5a..8acaa6f 100644 --- a/lang/en.hdf +++ b/lang/en.hdf @@ -282,6 +282,18 @@ Lang { normal = default expert = expert } + MailAddress = Mail address + SubscribeAction = Event + SubscribeActionDetails = Details + SubscribeActions { + remove = removed + add = added + mod = moderated + manual = manual + auto = automatical + unknown = unknown + } + Date = Date } diff --git a/man/ezmlmwebrc.5 b/man/ezmlmwebrc.5 new file mode 100644 index 0000000..6c96e8e --- /dev/null +++ b/man/ezmlmwebrc.5 @@ -0,0 +1,122 @@ +.TH ezmlmwebrc 5 "April 02007" "ezmlm-web" "configuration file" +.SH NAME +ezmlmwebrc \- configuration file for ezmlm-web +.SH DESCRIPTION +.PP +\fBezmlmwebrc\fR contains the configuration settings necessary for ezmlm-web. +.PP +The file is required for ezmlm-web and must exist in one of the following +locations: +.IP \fB~/.ezmlmwebrc\fR +user-specific configuration file +.IP \fB/etc/ezmlm-web/ezmlmwebrc\fR +system-wide default configuration file +.IP \fB/etc/ezmlm/ezmlmwebrc\fR +system-wide default configuration file (deprecated since v2.2) +.PP +Additionally the location of the configuration file may be overriden by the +command line switch \fB\-C\fR of \fIezmlm-web.cgi (1p)\fR. +.SH FILE FORMAT +.PP +The file itself is sourced by the perl script \fIezmlm-web.cgi\fR, so it is +required that the file conforms to the syntax of perl scripts. See the +manpage of perl (1) for details. +.PP +You should avoid to declare other variables than the settings described below. +Otherwise you may run into namespace conflicts. Just don't do it. +.PP +You may rely on the existence (and meaningful content) of the following +variables: +.IP \fI$USER\fR +the name of the owner of the current process +.IP \fI$HOME\fR +the home directory of the owner of the current process +.SH REQUIRED SETTINGS +.IP \fB$LIST_DIR\fR +This is the directory containing the lists, that you want to manage via +ezmlm-web. It will be created automatically if it does not exist yet. +The value \fI$HOME/lists\fR should be quite reasonable. +.IP \fB$LANGUAGE_DIR\fR +This directory contains the language files of ezmlm-web (e.g. \fIen.hdf\fR). +Usually this should be something like \fI/usr/local/share/ezmlm-web/lang\fR. +.IP \fB$TEMPLATE_DIR\fR +This directory contains the template files of ezmlm-web (e.g. \fImain.cs\fR). +Usually this should be something like +\fI/usr/local/share/ezmlm-web/template\fR. +.SH OPTIONAL SETTINGS +.IP \fB$DEFAULT_OPTIONS\fR +Specify the default options used for ezmlm-make (1) when creating a new list. +The default value is: \fIaBDFGHiJkLMNOpQRSTUWx\fR. See the manpage of +ezmlm-make (1) for details. +.IP \fB$ALIAS_USER\fR +The alias user of a qmail installation manages all mail addresses that are +not handled by specific dotqmail files or other definitions. It defaults to +\fIalias\fR. +.IP \fB$QMAIL_BASE\fR +This is the control directory of your qmail setup. It defaults to +\fI/var/qmail/control\fR. +.IP \fB$DOTQMAIL_DIR\fR +The directory of the dotqmail (5) files of the lists managed by ezmlm-web. +It defaults to the home directory of the owner of the current process +(\fI$HOME\fR). +.IP \fB$WEBUSERS_FILE\fR +This file contains the access rules for the lists managed by ezmlm-web. +Read the README file of ezmlm-web for details. This setting defaults to +\fI$LISTS/webusers\fR. +.IP \fB$MAIL_DOMAIN\fR +Specify the default domain name of new mailing lists. Leave it empty if you +want ezmlm-web to try to detect this value automatically. +.IP \fB$MAIL_ADDRESS_PREFIX\fR +Specify the default prefix for the local part of the addresses of new mailing +lists. By default it is empty (''). +.IP \fB$PRETTY_NAMES\fR +Do you want to store connections between real names and mail addresses if both +were provided when adding a new subscriber? This results in a file called +\fIwebnames\fR being created in every mailing list directory when necessary. +.IP \fB$FILE_UPLOAD\fR +Should the upload of subscriber files be possible? The default is \fI1\fR. +If you consider this as a security risk, then you should set it to \fI0\fR. +.IP \fB$UNSAFE_RM\fR +This setting defines, if list removal requested via the web interface should +be recoverable or not. The value \fI1\fR will make ezmlm-web remove the list +directory completely without any chance of recovery. The default value \fI0\fR +will just move deleted lists to a safe place. Thus deletion is recoverable. +.IP \fB$HTML_TITLE\fR +Print a reasonable name of the web interface to the left upper corner of every +page. By default this string is empty. +.IP \fB$HTML_CSS_URL\fR +This is the URL of the stylesheet file to be used by ezmlm-web. Make sure it is +actually available, as the design of the web interface will suffer a lot +without it. +.IP \fB@HTML_LINKS\fR +This array may contain hashes with the elements \fIname\fR and \fIurl\fR. +These links will be visible in the upper right corner of every page. +Please pay attention to the syntax of perl and use the example configuration +file distributed with ezmlm-web as a template. By default, this array is +empty. +.IP \fB$HTML_LANGUAGE\fR +Specify the defaut language of the web interface. This value will be overriden +when the browser requests an available language or when the user explicitly +selects a different language. The default value is \fIen\fR. +.IP \fB$GPG_SUPPORT\fR +Enable support for encrypted mailing lists. Currently this feature is still +considered as beta quality. User reports are warmly welcome! +.IP \fB%DOMAINS\fR +This hash of hashes (\fIname\fR associated with a hash of domain specific +information) can be used to define a multi-domain setup. See the example +configuration file (\fImultidomain.conf\fR) as distributed with ezmlm-web for +more details. +.SH EXAMPLES +.IP "A minimal example configuration file:" +.sp +.nf +$LIST_DIR = "$HOME_DIR/lists"; +$LANGUAGE_DIR = "/usr/local/share/ezmlm-web/lang"; +$TEMPLATE_DIR = "/usr/local/share/ezmlm-web/template"; +.SH AUTHOR +Written by Lars Kruse +.SH "REPORTING BUGS" +Report bugs to +.SH COPYRIGHT +Copyright \(co 02007 Lars Kruse + diff --git a/man/webusers.5 b/man/webusers.5 new file mode 100644 index 0000000..4561c06 --- /dev/null +++ b/man/webusers.5 @@ -0,0 +1,60 @@ +.TH webusers 5 "April 02007" "ezmlm-web" "access configuration file" +.SH NAME +webusers \- define the access permissions for a directory of lists +.SH DESCRIPTION +.PP +\fBwebusers\fR contains the access definitions for the lists below a certain +directory. +.PP +This file is optional. The actions of users are unrestricted, if the +\fBwebusers\fR file does not exist. Be careful when using this setting. +.PP +A webusers file is only useful if you can request some kind of authentication +from the user. Usually this should be done via http-authentication. See +the INSTALL file for more details. +.SH LOCATION +By default the \fBwebusers\fR file is located in the same directory as the +mailing lists. This can be adjusted with the setting \fIWEBUSERS_FILE\fR in +the configuration file ezmlmwebrc (5). Read its manpage for details. +.SH FILE FORMAT +.IP "The file consists of lines of the following form:" +.sp +.nf +LISTNAME: USER1 USER2 +.PP +Empty lines and lines starting with a '#' are ignored. The same goes for +invalid configuration lines. +.PP +If \fILISTNAME\fR equals the string \fIALL\fR, then the following users are +allowed to manage all existing mailing lists. +.PP +If \fILISTNAME\fR equals the string \fIALLOW_CREATE\fR, then the following +users are allowed to create new lists. +.PP +Otherwise the named users are allowed to manage only list \fILISTNAME\fR. +.PP +If one of the usernames equals the string \fIALL\fR, then every authenticated +user is allowed to perform the action specified by \fILISTNAME\fR. +.SH EXAMPLES +.IP "A minimal example access configuration file:" +.sp +.nf +comm: guy arb +users: arb +members: ALL +ALL: root +ALLOW_CREATE: root guy +.PP +In the example above, the users \fIroot\fR and \fIguy\fR are allowed to create +new lists. +.PP +Every authenticated user may configure the list \fImembers\fR. +.PP +The user \fIroot\fR can manage all mailing lists. +.SH AUTHOR +Written by Lars Kruse +.SH "REPORTING BUGS" +Report bugs to +.SH COPYRIGHT +Copyright \(co 02007 Lars Kruse + diff --git a/template/config_admin.cs b/template/config_admin.cs index bd35cd2..41b8c2c 100644 --- a/template/config_admin.cs +++ b/template/config_admin.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/config_all.cs b/template/config_all.cs index e292a4f..bc3e6a1 100644 --- a/template/config_all.cs +++ b/template/config_all.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/config_archive.cs b/template/config_archive.cs index 6b271e8..475c4bd 100644 --- a/template/config_archive.cs +++ b/template/config_archive.cs @@ -9,14 +9,15 @@
- + +
  • - +
-
+ diff --git a/template/config_encryption.cs b/template/config_encryption.cs index 0040e63..0b6c641 100644 --- a/template/config_encryption.cs +++ b/template/config_encryption.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/config_main.cs b/template/config_main.cs index b3c3eb7..bdcaf83 100644 --- a/template/config_main.cs +++ b/template/config_main.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/config_posting.cs b/template/config_posting.cs index 59dc3d5..7b7d807 100644 --- a/template/config_posting.cs +++ b/template/config_posting.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/config_processing.cs b/template/config_processing.cs index a531514..a7818e2 100644 --- a/template/config_processing.cs +++ b/template/config_processing.cs @@ -9,15 +9,17 @@
- + +
  • - +
+
diff --git a/template/config_subscription.cs b/template/config_subscription.cs index db3ab3c..9355e54 100644 --- a/template/config_subscription.cs +++ b/template/config_subscription.cs @@ -9,13 +9,14 @@
- + +
  • - +
diff --git a/template/gnupg_convert.cs b/template/gnupg_convert.cs index e245665..df902a1 100644 --- a/template/gnupg_convert.cs +++ b/template/gnupg_convert.cs @@ -9,7 +9,8 @@
- + +
  • @@ -19,6 +20,7 @@ var:html_escape(Lang.Buttons.GnupgConvertToEncrypted) ?> +
diff --git a/template/gnupg_generate_key.cs b/template/gnupg_generate_key.cs index 46585d4..26fe78f 100644 --- a/template/gnupg_generate_key.cs +++ b/template/gnupg_generate_key.cs @@ -9,14 +9,15 @@
- + +
  • - +
diff --git a/template/gnupg_import.cs b/template/gnupg_import.cs index 61498d0..66692ec 100644 --- a/template/gnupg_import.cs +++ b/template/gnupg_import.cs @@ -1,6 +1,6 @@
- + - - - + + +
    +
@@ -36,10 +36,13 @@ ?> -
+ - - +
  • + +
  • + diff --git a/template/gnupg_secret.cs b/template/gnupg_secret.cs index 3ab8866..5d574b9 100644 --- a/template/gnupg_secret.cs +++ b/template/gnupg_secret.cs @@ -13,10 +13,10 @@ 0 ?> - - + - +
      +
    @@ -36,10 +36,14 @@ ?> -
    + - - +
  • + + +
  • + diff --git a/template/header.cs b/template/header.cs index 49a5d9b..6311cc5 100644 --- a/template/header.cs +++ b/template/header.cs @@ -16,10 +16,23 @@ -
    -
    - -
    -

    ezmlm-web

    -
    + + + +
    +

    ezmlm-web

    +

    +
    + 0 ?>

    #0 ?> | +

    + + + +
    diff --git a/template/interface_select.cs b/template/interface_select.cs index 6b02c7c..d7f5e61 100644 --- a/template/interface_select.cs +++ b/template/interface_select.cs @@ -1,21 +1,39 @@ - - 0 ?> - - - - + + 0) && UI.Top.Interface) + || ((subcount(Config.UI.Languages) > 0) && UI.Top.Language) ?> + 0 ?> :
    + var:html_escape(Lang.Menue.Language) ?>: + + 0 ?> + :   + + diff --git a/template/language_select.cs b/template/language_select.cs index 0fed23b..1c03818 100644 --- a/template/language_select.cs +++ b/template/language_select.cs @@ -1,7 +1,7 @@ 0 ?> - + diff --git a/template/list_create.cs b/template/list_create.cs index bd58912..83a9e1f 100644 --- a/template/list_create.cs +++ b/template/list_create.cs @@ -5,12 +5,14 @@
    - - + + +
    • - +
    diff --git a/template/list_delete.cs b/template/list_delete.cs index faab3f5..59bea42 100644 --- a/template/list_delete.cs +++ b/template/list_delete.cs @@ -9,10 +9,14 @@
    -

    - - - + +
      +
    • +
    • + +
    • +
    diff --git a/template/macros.cs b/template/macros.cs index f3f26b2..9352b3a 100644 --- a/template/macros.cs +++ b/template/macros.cs @@ -101,14 +101,15 @@ def:link(attr1, value1, attr2, value2, attr3, value3) /def ?>
    0) && (UI.Navigation.ListSelect == 1)) - || (Data.Permissions.Create && (UI.Navigation.ListCreate == 1)) ?> + || (Data.Permissions.Create && (UI.Navigation.ListCreate == 1)) + || ((subcount(Data.Domains) > 0) && (UI.Navigation.DomainSelect == 1)) ?>

  • @@ -189,18 +190,6 @@

  • - - -
  • - - -
  • - - -

  • - - -
  • 0 ?> - - +
    - - - + + + + - + + + + + + + + - +

  • diff --git a/template/subscribers.cs b/template/subscribers.cs index 067090b..9914567 100644 --- a/template/subscribers.cs +++ b/template/subscribers.cs @@ -36,7 +36,7 @@
    - + @@ -75,7 +75,7 @@ 0 ?> - + ?> + + -
    + @@ -98,19 +98,20 @@
  • -
      -
    • + +
      • -
    + diff --git a/template/textfile_edit.cs b/template/textfile_edit.cs index 9ae2d42..afc0df6 100644 --- a/template/textfile_edit.cs +++ b/template/textfile_edit.cs @@ -16,7 +16,7 @@ - + @@ -28,7 +28,7 @@
    - +