From dcc2ef9a56da0460bcbd1cada036316fe8fb00bf Mon Sep 17 00:00:00 2001 From: lars Date: Mon, 19 Mar 2007 18:42:31 +0000 Subject: [PATCH] removed obsolete clearsilver notes added initial stuff for gettext support added dependency: liblocale-gettext-perl --- INSTALL | 10 ++++---- README | 3 ++- README.clearsilver | 36 ----------------------------- TODO | 2 ++ changelog | 1 + debian/control | 2 +- ezmlm-web.cgi | 57 +++++++++++++++++++++++++++++++++------------- 7 files changed, 53 insertions(+), 58 deletions(-) delete mode 100644 README.clearsilver diff --git a/INSTALL b/INSTALL index 661e3ef..a6fbf2a 100644 --- a/INSTALL +++ b/INSTALL @@ -11,7 +11,8 @@ OVERVIEW: 5 - [optional] configure access control (http authentication) 6 - css stylesheet file 7 - final test - 8 - any problems? + 8 - troubleshooting + 9 - report problems ------------------------------------------------------------------------------ @@ -22,7 +23,7 @@ OVERVIEW: modules. Additionally (since v3.0) you have to install clearsilver (a templating - engine). See README.clearsilver for details. + engine). 1. Choose a distribution form @@ -137,11 +138,12 @@ OVERVIEW: If you do not see a colorful screen, then you did not set the HTML_CSS_FILE option correctly in ezmlmwebrc. Check it again. - If anything failes - take a look at the web server's error log + +8. If anything failes - take a look at the web server's error log (e.g. /var/log/apache/error.log). -8. If you have any problems: +9. If the error log of your web server did not help you to solve your problem: - take a look at https://systemausfall.org/toolforge/ezmlm-web - send me an email: ezmlm-web@sumpfralle.de - subscribe to the mailinglist: ezmlm-web-subscribe@lists.systemausfall.org diff --git a/README b/README index 37d8527..a76ede8 100644 --- a/README +++ b/README @@ -63,7 +63,7 @@ This version of ezmlm-web requires the following; * qmail v1.03 * ezmlm v0.53 (or ezmlm-idx v0.40) -* clearsilver v0.10.2 (only perl support is necessary) +* clearsilver v0.10.3 (only perl support is necessary) * Perl v5.004 and the following modules; + Mail::Ezmlm v0.07 (current version!) + Mail::Address v1.15 @@ -75,6 +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 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 diff --git a/README.clearsilver b/README.clearsilver deleted file mode 100644 index bbf9831..0000000 --- a/README.clearsilver +++ /dev/null @@ -1,36 +0,0 @@ -Short notes on how to install clearsilver for perl: -(you should read it, as step 4 is quite unusual) - -1) download & untar - http://clearsilver.net - - -2) configure - -The following configure options should be sufficient: - ./configure --enable-perl \ - --disable-python \ - --disable-ruby \ - --disable-java \ - --disable-csharp \ - --disable-apache \ - --disable-gettext \ - --disable-remote-debugger - -3) make - - -4) the tricky part :) - -As the installation directory of clearsilver-perl is configured incorrectly, -you should replace the existing SITEPREFIX line in perl/Makefile with the following: - SITEPREFIX = $(PREFIX) -(without the leading white space) - -This issue should be fixed in clearsilver 0.10.3. - - -5) make install - - -6) done diff --git a/TODO b/TODO index 24cd77c..6cb7022 100644 --- a/TODO +++ b/TODO @@ -2,6 +2,8 @@ clearsilver-Infos updaten die nicht-Abonnenten-Listen (allow/deny/mod) sagen trotzdem: "x AbonnentInnen" +multi-domain-Support? + charset support for idx <= 5.0 suppress success message, if no new subscriber addresses were selected for adding diff --git a/changelog b/changelog index a0ca8ed..2d733a1 100644 --- a/changelog +++ b/changelog @@ -7,6 +7,7 @@ Version 3.2 - 04/14/02006 * script for creating binary suid wrappers added * bug in MySQL support fixed * treatment of the special character "dot" in listname and list address fixed + * use gettext for translations (Locale::gettext is now required) Version 3.1.4 - 03/26/02006 * new setting: DOTQMAIL_DIR (useful for multi domain vpopmail setups) diff --git a/debian/control b/debian/control index 5e5f677..9a8a8c6 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Standards-Version: 3.6.2 Package: ezmlm-web Architecture: any -Depends: perl, httpd-cgi, libemail-address-perl, libemail-ezmlm-perl (>= 0.07) +Depends: perl, httpd-cgi, libemail-address-perl, liblocale-gettext-perl, libemail-ezmlm-perl (>= 0.07) Suggests: qmail-src, bash (>=2.0), gcc Description: Web interface for ezmlm-idx mailing list administration This web interface allows you to configure every part of an ezmlm-idx diff --git a/ezmlm-web.cgi b/ezmlm-web.cgi index 49deedc..52115cb 100755 --- a/ezmlm-web.cgi +++ b/ezmlm-web.cgi @@ -23,6 +23,7 @@ use IO::File; use POSIX qw(tmpnam); use Encode; use English; +use Locale::gettext; # do not forget: we depend on Mail::Ezmlm::Gpg if the corresponding configuration # setting is turned on @@ -70,16 +71,16 @@ use vars qw[$ui_set $ui_template]; # Get user configuration stuff my $config_file; -if(defined($opt_C)) { +if (defined($opt_C)) { $opt_C =~ /^([-\w.\/]+)$/; # security check by ooyama $config_file = $1; # Command Line -} elsif(-e "$HOME_DIR/.ezmlmwebrc") { +} elsif (-e "$HOME_DIR/.ezmlmwebrc") { $config_file = "$HOME_DIR/.ezmlmwebrc"; # User -} elsif(-e "./ezmlmwebrc") { +} elsif (-e "./ezmlmwebrc") { $config_file = "./ezmlmwebrc"; # Install -} elsif(-e "/etc/ezmlm-web/ezmlmwebrc") { +} elsif (-e "/etc/ezmlm-web/ezmlmwebrc") { $config_file = "/etc/ezmlm-web/ezmlmwebrc"; # System (new style) -} elsif(-e "/etc/ezmlm/ezmlmwebrc") { +} elsif (-e "/etc/ezmlm/ezmlmwebrc") { $config_file = "/etc/ezmlm/ezmlmwebrc"; # System (old style) } else { &fatal_error("Unable to find config file"); @@ -98,9 +99,10 @@ if (-e "$config_file" . ".gnupg") { $GPG_SUPPORT = 0; } } +$GPG_SUPPORT = 0 if (!defined($GPG_SUPPORT)); # Allow suid wrapper to over-ride default list directory ... -if(defined($opt_d)) { +if (defined($opt_d)) { $LIST_DIR = $1 if ($opt_d =~ /^([-\@\w.\/]+)$/); } @@ -489,6 +491,25 @@ sub load_interface_language } +# --------------------------------------------------------------------------- + +sub add_language_data +{ + my ($hdf, $lang) = @_; + $td = Locale::gettext->domain("ezmlm-web"); + $langdata = ClearSilver::HDF->new(); + $langdata->readFile("$LANGUAGE_DIR/en.hdf"); + #TODO: add translation + return $hdf; + +} + +# --------------------------------------------------------------------------- + +sub recurse_hdf_data +{ +} + # --------------------------------------------------------------------------- # look for preferred browser language setting @@ -550,14 +571,14 @@ sub set_pagedata() # username and hostname # Work out if this user has a virtual host and set input accordingly ... - if(-e "$QMAIL_BASE/virtualdomains") { + if (-e "$QMAIL_BASE/virtualdomains") { open(VD, "<$QMAIL_BASE/virtualdomains") || warn "Can't read virtual domains file: $!"; while() { - last if(($hostname) = /(.+?):$USER/); + last if (($hostname) = /(.+?):$USER/); } close VD; } - if(!defined($hostname)) { + if (!defined($hostname)) { $username = "$USER-" if ($USER ne $ALIAS_USER); $hostname = $DEFAULT_HOST; } @@ -730,7 +751,7 @@ sub set_pagedata4list_common() { $pagedata->setValue("Data.List.MsgSize.Min", "$2"); # TODO: this is definitely ugly - create a new sub! - if(open(WEBUSER, "<$WEBUSERS_FILE")) { + if (open(WEBUSER, "<$WEBUSERS_FILE")) { while() { last if (($webusers) = m{^$listname\s*\:\s*(.+)$}); } @@ -1024,8 +1045,9 @@ sub untaint { foreach $i (0 .. $#params) { my(@values); - next if($params[$i] eq 'mailaddressfile'); - next if($params[$i] eq 'gnupg_key_file'); + next if ($params[$i] eq 'mailaddressfile'); + next if ($params[$i] eq 'gnupg_key_file'); + next if ($params[$i] eq 'content'); foreach $param ($q->param($params[$i])) { next if $param eq ''; if ($param =~ /^([#-\@\w\.\/\[\]\:\n\r\>\< _"']+)$/) { @@ -1127,7 +1149,7 @@ sub add_address { && !($list->issub($add->address(), $part))) { # it seems, that we cannot trust the return value of "$list->sub" $list->sub($add->address(), $part); - if(defined($add->name()) && $PRETTY_NAMES) { + if (defined($add->name()) && $PRETTY_NAMES) { $pretty{$add->address()} = $add->name(); } } else { @@ -1160,7 +1182,7 @@ sub delete_address { return (1==0); } - if($PRETTY_NAMES) { + if ($PRETTY_NAMES) { my(%pretty, $add); tie %pretty, "DB_File", "$LIST_DIR/" . $q->param('list') . "/webnames"; foreach $add (@address) { @@ -1185,7 +1207,7 @@ sub set_pagedata4part_list { $pagedata->setValue("Data.List.PartType", "$part"); - if($part eq 'mod') { + if ($part eq 'mod') { # do we store things in different directories? my $config = $list->getconfig; # empty values represent default settings - everything else is considered as evil :) @@ -1271,7 +1293,7 @@ sub create_list { } # handle MySQL stuff - if(defined($q->param('setting_state_6')) && $options =~ m/-6\s+/) { + if (defined($q->param('setting_state_6')) && $options =~ m/-6\s+/) { $customWarning = $list->errmsg() unless($list->createsql()); } @@ -1707,6 +1729,9 @@ sub save_text { my ($content) = $q->param('content'); my ($charset) = split(':',$list->get_charset()); $charset = 'us-ascii' if ($charset eq ''); + # untaint 'content' unconditionally + $content =~ m/^(.*)$/; + $content = $1; my $content_encoded; eval { $content_encoded = Encode::encode($charset, $content); }; if ($@) {