support for encrypted mailing lists finished
small stylesheet improvements language detection language selection implemented (prepared for release 3.2)
This commit is contained in:
parent
9eb084e460
commit
88072eec38
18 changed files with 345 additions and 59 deletions
9
README
9
README
|
@ -1,6 +1,6 @@
|
|||
===================
|
||||
| ezmlm-web-3.1.1 |
|
||||
===================
|
||||
=================
|
||||
| ezmlm-web-3.2 |
|
||||
=================
|
||||
|
||||
If you only want to know how to install ezmlm-web, then you should
|
||||
read INSTALL.
|
||||
|
@ -21,9 +21,10 @@ VIII. Bugs && Bug Reports
|
|||
|
||||
I. Copyright Stuff - essentially the FreeBSD licence ...
|
||||
==================
|
||||
ezmlm-web - version 3.1.1 - 01/19/02006
|
||||
ezmlm-web - version 3.2 - 04/14/02006
|
||||
|
||||
Copyright (C) 1998, Guy Antony Halse, All Rights Reserved.
|
||||
Copyright (C) 02005-02006, Lars Kruse, All Rights Reserved.
|
||||
|
||||
Please send bug reports and comments to ezmlm-web@sumpfralle.de
|
||||
|
||||
|
|
|
@ -2,13 +2,16 @@ This file contains some useful hints for upgrading from a previous version of ez
|
|||
|
||||
##############################################################################
|
||||
|
||||
UPGRADING ezmlm-web 3.1 to ezmlm-web 3.1.4
|
||||
UPGRADING ezmlm-web 3.1 to ezmlm-web 3.2
|
||||
|
||||
1) install the perl module File::Path
|
||||
|
||||
2) a new (optional) configuration setting is available: DOTQMAIL_DIR
|
||||
Use it, if you run a multi domain vpopmail setup.
|
||||
|
||||
3) install Mail::Ezmlm::Gpg if you want to handle encrypted mailing lists
|
||||
(see README.gnupg for details)
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
UPGRADING ezmlm-web 3.0 to ezmlm-web 3.1
|
||||
|
|
|
@ -1,3 +1,10 @@
|
|||
Version 3.2 - 04/14/02006
|
||||
* support for encrypted mailing lists
|
||||
(http://www.synacklabs.net/projects/crypt-ml/)
|
||||
* detect preferred interface language
|
||||
* user-specific interface language selection
|
||||
* handling of empty settings for ezmlm-idx 5.0 fixed (closes #21)
|
||||
|
||||
Version 3.1.4 - 03/26/02006
|
||||
* new setting: DOTQMAIL_DIR (useful for multi domain vpopmail setups)
|
||||
[suggested by Maurits Lamers]
|
||||
|
|
|
@ -30,8 +30,19 @@ font.feature {
|
|||
padding-top: 1.5%;
|
||||
padding-bottom: 1.5%;
|
||||
background-color: #c0c0b0;
|
||||
border-style: solid;
|
||||
border-width: 2px 2px 1px 1px;
|
||||
border-color: white;
|
||||
}
|
||||
|
||||
#nav_bar hr {
|
||||
color: #707770;
|
||||
background-color: #707770;
|
||||
margin: 10px 30px 10px 10px;
|
||||
align: center;
|
||||
}
|
||||
|
||||
|
||||
.nav_group {
|
||||
margin-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
|
@ -50,6 +61,12 @@ font.feature {
|
|||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
v_bar ul li ul {
|
||||
/* small space between middle level entries */
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
|
||||
#nav_bar ul li ul li {
|
||||
/* no space between lower level entries */
|
||||
margin-bottom: 0;
|
||||
|
@ -74,6 +91,28 @@ font.feature {
|
|||
color: #2f4860;
|
||||
}
|
||||
|
||||
#nav_bar form.select select {
|
||||
background-color: #c8c8b8;
|
||||
border-width: 1px;
|
||||
border-style: dotted;
|
||||
border-color: #b0b0a0;
|
||||
color: #2f4860;
|
||||
}
|
||||
|
||||
#nav_bar form.select button {
|
||||
background-color: #c4c4b4;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
#nav_bar form.select button:hover {
|
||||
background-color: #d8d8d8;
|
||||
color: #2f4860;
|
||||
}
|
||||
|
||||
#nav_bar form.select {
|
||||
margin: 7px 0px 7px 0px;
|
||||
}
|
||||
|
||||
#main_content {
|
||||
margin-left: 22%;
|
||||
padding-left: 3%;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
Package: ezmlm-web
|
||||
Version: 3.1.1-1
|
||||
Version: 3.2-1
|
||||
Section: admin
|
||||
Priority: extra
|
||||
Architecture: all
|
||||
|
@ -17,5 +17,5 @@ Description: Web interface for ezmlm-idx mailing list administration
|
|||
* ezmlm-idx - http://ezmlm.org/
|
||||
* clearsilver for perl (>= 0.10.2) - http://www.clearsilver.net/downloads/
|
||||
* Mail::Ezmlm perl module via cpan or as debian package from
|
||||
https://systemausfall.org/toolforge/debian
|
||||
https://systemausfall.org/toolforge/debian
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
ezmlm-web (0.3.1-1) unstable; urgency=low
|
||||
ezmlm-web (0.3.2-1) unstable; urgency=low
|
||||
* Initial release
|
||||
-- Lars Kruse <devel@sumpfralle.de> Sat, 07 Jan 2006 00:45:47 +0100
|
||||
-- Lars Kruse <devel@sumpfralle.de> Fri, 14 Apr 2006 14:36:47 +0100
|
||||
|
|
195
ezmlm-web.cgi
195
ezmlm-web.cgi
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/perl
|
||||
#===========================================================================
|
||||
# ezmlm-web.cgi - version 3.1.1
|
||||
# ezmlm-web.cgi - version 3.2
|
||||
# ==========================================================================
|
||||
# All user configuration happens in the config file ``ezmlmwebrc''
|
||||
# POD documentation is at the end of this file
|
||||
|
@ -21,11 +21,16 @@ use CGI;
|
|||
use IO::File;
|
||||
use POSIX qw(tmpnam);
|
||||
use Encode qw/ from_to /; # add by ooyama for char convert
|
||||
use English; # for dropping privileges
|
||||
|
||||
# do not forget: we depend on Mail::Ezmlm::Gpg if the corresponding configuration
|
||||
# setting is turned on
|
||||
|
||||
|
||||
# drop privileges (necessary for calling gpg)
|
||||
$UID = $EUID;
|
||||
$GID = $EGID;
|
||||
|
||||
my $q = new CGI;
|
||||
$q->import_names('Q');
|
||||
use vars qw[$opt_c $opt_d $opt_C];
|
||||
|
@ -80,8 +85,8 @@ do $config_file;
|
|||
|
||||
# do we support encrypted mailing lists?
|
||||
# see http://www.synacklabs.net/projects/crypt-ml/
|
||||
if (-e "$config_file" . ".encrypted") {
|
||||
do "$config_file.encrypted";
|
||||
if (-e "$config_file" . ".gnupg") {
|
||||
do "$config_file.gnupg";
|
||||
# the config file should include "use Mail::Ezmlm::Gpg" as the use-line may not
|
||||
# be used here
|
||||
if (defined($GPG_SUPPORT) && ($GPG_SUPPORT)) {
|
||||
|
@ -138,6 +143,12 @@ unless (&check_permission_for_action) {
|
|||
elsif ($action eq '' || $action eq 'list_select') {
|
||||
# Default action. Present a list of available lists to the user ...
|
||||
$pagename = 'list_select';
|
||||
} elsif ($action eq 'show_page') {
|
||||
$pagename = $q->param('pagename');
|
||||
unless (-e "$TEMPLATE_DIR/$pagename.cs") {
|
||||
$pagename = 'list_select';
|
||||
$error = 'UnknownAction';
|
||||
}
|
||||
} elsif ($action eq 'subscribers') {
|
||||
# display list (or part list) subscribers
|
||||
if (defined($q->param('list'))) {
|
||||
|
@ -219,16 +230,30 @@ elsif ($action eq '' || $action eq 'list_select') {
|
|||
$error = 'ParameterMissing';
|
||||
$pagename = 'list_select';
|
||||
}
|
||||
} elsif ($action eq 'gnupg_convert') {
|
||||
} elsif ($GPG_SUPPORT && ($action eq 'gnupg_convert_ask')) {
|
||||
$pagename = 'gnupg_convert';
|
||||
} elsif ($GPG_SUPPORT && ($action eq 'gnupg_convert_do')) {
|
||||
my $tlist = new Mail::Ezmlm::Gpg("$LIST_DIR/" . $q->param('list'));
|
||||
if ($tlist->convert()) {
|
||||
$pagename = 'subscribers';
|
||||
$success = 'GnupgConvert';
|
||||
if ($tlist->is_gpg()) {
|
||||
if ($tlist->convert_to_plaintext()) {
|
||||
$pagename = 'subscribers';
|
||||
$success = 'GnupgConvert';
|
||||
} else {
|
||||
warn $tlist->errmsg();
|
||||
$pagename = 'gnupg_convert';
|
||||
$warning = 'GnupgConvert';
|
||||
}
|
||||
} else {
|
||||
$pagename = 'subscribers';
|
||||
$warning = 'GnupgConvert';
|
||||
if ($tlist->convert_to_encrypted()) {
|
||||
$pagename = 'gnupg_generate_key';
|
||||
$success = 'GnupgConvert';
|
||||
} else {
|
||||
warn $tlist->errmsg();
|
||||
$pagename = 'gnupg_convert';
|
||||
$warning = 'GnupgConvert';
|
||||
}
|
||||
}
|
||||
} elsif (($action eq 'gnupg_ask') || ($action eq 'gnupg_do')) {
|
||||
} elsif ($GPG_SUPPORT && (($action eq 'gnupg_ask') || ($action eq 'gnupg_do'))) {
|
||||
# User wants to manage keys (only for encrypted mailing lists)
|
||||
my $subset = $q->param('gnupg_subset');
|
||||
if (defined($q->param('list')) && ($subset ne '')) {
|
||||
|
@ -248,7 +273,7 @@ elsif ($action eq '' || $action eq 'list_select') {
|
|||
$error = 'ParameterMissing';
|
||||
$pagename = 'list_select';
|
||||
}
|
||||
} elsif ($action eq 'gnupg_export') {
|
||||
} elsif ($GPG_SUPPORT && ($action eq 'gnupg_export')) {
|
||||
if (defined($q->param('list')) && defined($q->param('gnupg_keyid'))) {
|
||||
if (&gnupg_export_key($q->param('list'), $q->param('gnupg_keyid'))) {
|
||||
exit 0;
|
||||
|
@ -362,16 +387,21 @@ sub load_hdf {
|
|||
&fatal_error("Template dir ($TEMPLATE_DIR) not found!") unless (-e $TEMPLATE_DIR);
|
||||
$hdf->setValue("TemplateDir", "$TEMPLATE_DIR/");
|
||||
|
||||
# TODO: put some language detection and "web_lang" handling here
|
||||
$hdf->readFile($LANGUAGE_DIR . '/' . $HTML_LANGUAGE . '.hdf');
|
||||
|
||||
# "normal", "basic" and "expert" should be supported
|
||||
# TODO: should be selected via web interface
|
||||
$ui_template = "normal";
|
||||
$ui_set = "default"; # may be overwritten later
|
||||
$hdf->setValue("Config.UI.LinkAttrs.web_lang", $HTML_LANGUAGE);
|
||||
$hdf->setValue("Config.UI.LinkAttrs.template", $ui_template);
|
||||
|
||||
# retrieve available languages and add them to the dataset
|
||||
my %languages = &get_available_interface_languages();
|
||||
my $lang;
|
||||
foreach $lang (keys %languages) {
|
||||
$hdf->setValue("Config.UI.Languages.$lang", $languages{$lang});
|
||||
}
|
||||
|
||||
$hdf = &load_interface_language($hdf);
|
||||
|
||||
$hdf->setValue("ScriptName", $ENV{'SCRIPT_NAME'});
|
||||
$hdf->setValue("Stylesheet", "$HTML_CSS_FILE");
|
||||
$hdf->setValue("Config.PageTitle", "$HTML_TITLE");
|
||||
|
@ -417,6 +447,75 @@ sub output_page {
|
|||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
sub load_interface_language
|
||||
{
|
||||
my ($data) = @_;
|
||||
my $config_language;
|
||||
|
||||
# load $HTML_LANGUAGE - this is necessary, if a translation is incomplete
|
||||
$data->readFile("$LANGUAGE_DIR/$HTML_LANGUAGE" . ".hdf");
|
||||
|
||||
# set default language
|
||||
$config_language = 'en';
|
||||
$config_language = $HTML_LANGUAGE
|
||||
unless (&check_interface_language($HTML_LANGUAGE));
|
||||
|
||||
# check for preferred browser language, if the box was not initialized yet
|
||||
my $prefLang = &get_browser_language();
|
||||
# take it, if a supported browser language was found
|
||||
$config_language = $prefLang unless ($prefLang eq '');
|
||||
|
||||
######### temporary language setting? ############
|
||||
# the default language can be overriden by the language selection form
|
||||
if ($q->param('web_lang')) {
|
||||
my $weblang = $q->param('web_lang');
|
||||
if (&check_interface_language($weblang)) {
|
||||
# load the data
|
||||
$config_language = "$weblang";
|
||||
} else {
|
||||
# no valid language was selected - so you may ignore it
|
||||
$warning = 'InvalidLanguage';
|
||||
}
|
||||
}
|
||||
# add the setting to every link
|
||||
$data->setValue('Config.UI.LinkAttrs.web_lang', "$config_language");
|
||||
|
||||
# import the configured resp. the temporarily selected language
|
||||
$data->readFile("$LANGUAGE_DIR/$config_language" . ".hdf");
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
# look for preferred browser language setting
|
||||
# this code was adapted from Per Cederberg
|
||||
# http://www.percederberg.net/home/perl/select.perl
|
||||
# it returns an empty string, if no supported language was found
|
||||
sub get_browser_language
|
||||
{
|
||||
my ($str, @langs, @res);
|
||||
|
||||
# Use language preference settings
|
||||
if ($ENV{'HTTP_ACCEPT_LANGUAGE'} ne '')
|
||||
{
|
||||
@langs = split(/,/, $ENV{'HTTP_ACCEPT_LANGUAGE'});
|
||||
foreach (@langs)
|
||||
{
|
||||
# get the first part of the language setting
|
||||
($str) = ($_ =~ m/([a-z]+)/);
|
||||
# check, if it is available
|
||||
$res[$#res+1] = $str if check_interface_language($str);
|
||||
}
|
||||
}
|
||||
|
||||
# if everything fails - return empty string
|
||||
$res[0] = "" if ($#res lt 0);
|
||||
return $res[0];
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
sub set_pagedata_list_of_lists()
|
||||
{
|
||||
my (@files, $i, $num);
|
||||
|
@ -521,10 +620,12 @@ sub set_pagedata4list
|
|||
if (&is_list_gnupg($listname)) {
|
||||
# some encryption specific stuff
|
||||
&set_pagedata4list_gnupg($listname);
|
||||
$pagedata->setValue("Data.List.Type","gnupg");
|
||||
$ui_set = "gnupg";
|
||||
} else {
|
||||
# do the non-encryption configuration
|
||||
&set_pagedata4list_normal($listname, $part_type);
|
||||
$pagedata->setValue("Data.List.Type","default");
|
||||
$ui_set = "default";
|
||||
}
|
||||
|
||||
|
@ -542,15 +643,14 @@ sub set_pagedata4list_gnupg() {
|
|||
$gpg_list = new Mail::Ezmlm::Gpg("$LIST_DIR/$listname");
|
||||
|
||||
# read the configuration
|
||||
my %config = $gpg_list->getconfig();
|
||||
my $item;
|
||||
%config = $gpg_list->getconfig();
|
||||
foreach $item (keys %config) {
|
||||
$pagedata->setValue("Data.List.Options.gnupg_$item", $config{$item});
|
||||
}
|
||||
|
||||
# retrieve the currently available public keys
|
||||
@gpg_keys = $gpg_list->get_public_keys();
|
||||
for (my $i = 0; $i <= $#gpg_keys; $i++) {
|
||||
for (my $i = 0; $i < @gpg_keys; $i++) {
|
||||
$pagedata->setValue("Data.List.gnupg_keys.public.$i.id" , $gpg_keys[$i]{id});
|
||||
$pagedata->setValue("Data.List.gnupg_keys.public.$i.email" , $gpg_keys[$i]{email});
|
||||
$pagedata->setValue("Data.List.gnupg_keys.public.$i.name" , $gpg_keys[$i]{name});
|
||||
|
@ -559,7 +659,7 @@ sub set_pagedata4list_gnupg() {
|
|||
|
||||
# retrieve the currently available secret keys
|
||||
@gpg_keys = $gpg_list->get_secret_keys();
|
||||
for (my $i = 0; $i <= $#gpg_keys; $i++) {
|
||||
for (my $i = 0; $i < @gpg_keys; $i++) {
|
||||
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.id" , $gpg_keys[$i]{id});
|
||||
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.email" , $gpg_keys[$i]{email});
|
||||
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.name" , $gpg_keys[$i]{name});
|
||||
|
@ -810,7 +910,9 @@ sub get_dotqmail_files {
|
|||
# get list of existing files (remove empty entries)
|
||||
@files = grep {/./} map { (-e "$qmail_prefix$_")? "$qmail_prefix$_" : undef } (
|
||||
'',
|
||||
'.no-gpg',
|
||||
'-default',
|
||||
'-default.no-gpg',
|
||||
'-owner',
|
||||
'-return-default',
|
||||
'-reject-default',
|
||||
|
@ -1144,7 +1246,7 @@ sub create_list {
|
|||
}
|
||||
|
||||
if (defined($q->param('list_language')) && ($q->param('list_language') ne 'default')) {
|
||||
if (&check_language($list, $q->param('list_language'))) {
|
||||
if (&check_list_language($list, $q->param('list_language'))) {
|
||||
$list->set_lang($q->param('list_language'));
|
||||
} else {
|
||||
$warning = 'InvalidListLanguage';
|
||||
|
@ -1268,9 +1370,29 @@ sub gnupg_export_key()
|
|||
{
|
||||
my ($listname, $keyid) = @_;
|
||||
my $list = new Mail::Ezmlm::Gpg("$LIST_DIR/$listname");
|
||||
|
||||
# get the name of the key (for the download filename)
|
||||
my @all_keys = $list->get_public_keys();
|
||||
my ($i, $key, $name);
|
||||
for ($i = 0; $i < @all_keys; $i++) {
|
||||
$name = $all_keys[$i]{name} if ($keyid == $all_keys[$i]{id});
|
||||
}
|
||||
warn "vorher: $name";
|
||||
if ($name) {
|
||||
$name =~ s/\W+/_/g;
|
||||
$name .= '.asc';
|
||||
} else {
|
||||
$name = "public_key.asc";
|
||||
}
|
||||
warn "nachher: $name";
|
||||
|
||||
my $key_armor;
|
||||
if ($key_armor = $list->export_key($keyid)) {
|
||||
print "Content-Type: application/pgp\n\n";
|
||||
print "Content-Type: application/pgp\n";
|
||||
# suggest a download filename
|
||||
# (taken from http://www.bewley.net/perl/download.pl)
|
||||
print "Content-Disposition: attachment; filename=$name\n";
|
||||
print "Content-Description: exported key";
|
||||
print $key_armor;
|
||||
return (0==0);
|
||||
} else {
|
||||
|
@ -1485,7 +1607,7 @@ sub update_config {
|
|||
# update language
|
||||
# this _must_ happen after set_charset to avaoid accidently overriding default charset
|
||||
if (defined($q->param('list_language'))) {
|
||||
if (&check_language($list, $q->param('list_language'))) {
|
||||
if (&check_list_language($list, $q->param('list_language'))) {
|
||||
$list->set_lang($q->param('list_language'));
|
||||
} else {
|
||||
$warning = 'InvalidListLanguage';
|
||||
|
@ -1647,7 +1769,34 @@ sub webauth_create_allowed {
|
|||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
sub check_language {
|
||||
sub get_available_interface_languages {
|
||||
my (%languages, @files, $file);
|
||||
opendir(DIR, $LANGUAGE_DIR)
|
||||
or &fatal_error ("Language directory ($LANGUAGE_DIR) not accessible!");
|
||||
@files = sort grep { /.*\.hdf$/ } readdir(DIR);
|
||||
close(DIR);
|
||||
|
||||
foreach $file (@files) {
|
||||
my $hdf = ClearSilver::HDF->new();
|
||||
$hdf->readFile("$LANGUAGE_DIR/$file");
|
||||
substr($file, -4) = "";
|
||||
my $lang_name = $hdf->getValue("Lang.Name", "$file");
|
||||
$languages{$file} = $lang_name;
|
||||
}
|
||||
return %languages;
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
sub check_interface_language {
|
||||
my ($language) = @_;
|
||||
my %languages = &get_available_interface_languages();
|
||||
return defined($languages{$language});
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
sub check_list_language {
|
||||
my ($list, $lang) = @_;
|
||||
my $found = 0;
|
||||
my $item;
|
||||
|
|
12
ezmlmwebrc.gnupg
Normal file
12
ezmlmwebrc.gnupg
Normal file
|
@ -0,0 +1,12 @@
|
|||
# sample configuration file for encrypted mailing list support
|
||||
|
||||
# BEWARE: enable the following line ONLY if you installed the
|
||||
# Mail::Ezmlm::Gpg module - otherwise ezmlm-web will not work!
|
||||
#use Mail::Ezmlm::Gpg;
|
||||
|
||||
# turn support for encrypted mailing lists on or off
|
||||
# defaults to 0 (off)
|
||||
# you MUST enable the "use" line above, if you turn on the gpg support
|
||||
$GPG_SUPPORT = 0;
|
||||
|
||||
|
6
index.c
6
index.c
|
@ -10,12 +10,6 @@
|
|||
|
||||
int main(void) {
|
||||
|
||||
/* Set the (real) uid to the same value, as the effective uid.
|
||||
This is necesary, as (the suid) gpg tries to run on behalf of www-data
|
||||
instead of the presumed user.
|
||||
I hope, that this will not break on non-linux systems ... */
|
||||
setreuid(getuid(), -1);
|
||||
|
||||
/* Change this path to wherever you decided to put ezmlm-web.cgi */
|
||||
execv("/usr/local/bin/ezmlm-web.cgi", NULL);
|
||||
|
||||
|
|
26
lang/de.hdf
26
lang/de.hdf
|
@ -1,9 +1,10 @@
|
|||
LanguageID = de
|
||||
|
||||
LanguageName = Deutsch
|
||||
|
||||
Lang {
|
||||
|
||||
ID = de
|
||||
|
||||
Name = Deutsch
|
||||
|
||||
|
||||
Menue {
|
||||
ListCreate = Neue Liste anlegen
|
||||
ListDelete = Liste löschen
|
||||
|
@ -23,10 +24,11 @@ Lang {
|
|||
GnupgPublicKeys = öffentliche Schlüssel
|
||||
GnupgSecretKeys = private Schlüssel
|
||||
GnupgGenerateKey = Schlüssel anlegen
|
||||
GnupgConvert = Verschlüsselung aktivieren
|
||||
GnupgConvert = Verschlüsselung
|
||||
TextFiles = Texte
|
||||
ListSelect = Auswahl einer Liste
|
||||
Properties = Eigenschaften von
|
||||
Language = Sprache
|
||||
Help = Hilfe (extern)
|
||||
}
|
||||
|
||||
|
@ -49,6 +51,7 @@ Lang {
|
|||
ListDelete = Löschung von
|
||||
FileSelect = Auswählen eines Textbausteins
|
||||
FileEdit = Bearbeitung des Textbausteins
|
||||
GnupgConvert = Verschlüsselung
|
||||
GnupgPublic = Öffentliche Schlüssel
|
||||
GnupgSecret = Private Schlüssel
|
||||
GnupgGenerate = Erzeugen eines Schlüssels
|
||||
|
@ -65,8 +68,11 @@ Lang {
|
|||
EditFile = Datei bearbeiten
|
||||
SaveFile = Datei speichern
|
||||
ResetFile = Angepassten Textbaustein verwerfen
|
||||
DeletePublicKey = Öffentliche(n) Schlüssel lälschen
|
||||
DeleteSecretKey = Private(n) Schlüssel lälschen
|
||||
LanguageSet = wählen
|
||||
DeletePublicKey = Öffentliche(n) Schlüssel löschen
|
||||
DeleteSecretKey = Private(n) Schlüssel löschen
|
||||
GnupgConvertToEncrypted = Wandle in eine verschlüsselte Liste um
|
||||
GnupgConvertToNormal = Wandle in eine unverschlüsselte Liste um
|
||||
GnupgImportKey = Schlüssel importieren
|
||||
GnupgGenerateKey = Schlüsselpaar erzeugen
|
||||
GnupgExportKey = exportieren
|
||||
|
@ -120,7 +126,7 @@ Lang {
|
|||
GnupgInvalidExpiration = Das Verfallsdatum is ungültig!
|
||||
GnupgInvalidKeySize = Die Schlüssellänge ist ungültig!
|
||||
GnupgExportKey = Fehler beim Exportieren des Schlüssels!
|
||||
GnupgConvert = Beim umwandeln in eine verschlüsselte Mailingliste trat ein Fehler auf!
|
||||
GnupgConvert = Beim Umwandeln trat ein Fehler auf!
|
||||
}
|
||||
|
||||
|
||||
|
@ -253,7 +259,8 @@ Lang {
|
|||
TextFiles = Das Auswahlfeld beinhaltet die Liste aller verfügbaren Textbausteine im Texte-Verzeichnis der Liste. Diese Textbausteine werden zur Erstellung der automatischen Antworten der Mailingliste benutzt.
|
||||
EditTextFile = Passe den Textbaustein an die Erfordernisse der Liste an. Eventuell möchtest du dafür auch einige der reservierten Platzhalter verwenden, die am Ende dieser Seite aufgeführt sind.
|
||||
ResetTextFile = Der Textbaustein wurde spezifisch an diese Liste angepasst. Um stattdessen den vorgegebenen Baustein der eingestellten Sprache zu verwenden, kannst du diesen listenspezifischen Baustein entfernen.
|
||||
GnupgGenerateKey = Um eine verschlüsselte Mailingliste verwenden zu können, ist es erforderlich, einen Schlüssel für die Liste zu erzeugen (oder zu importieren). Nachdem du das folgende Formular ausgefüllt und abgeschickt hast, wird es (abhängig von der Schlüssellänge) eine Weile dauern, bis der Schlüssel fertig ist. Sei also bitte geduldig.
|
||||
GnupgConvert = Du kannst eine normale Mailingliste in eine verschlüsselte umwandeln und umgekehrt.
|
||||
GnupgGenerateKey = Um eine verschlüsselte Mailingliste verwenden zu können, ist es erforderlich, einen Schlüssel für die Liste zu erzeugen (oder zu importieren). Nachdem du das folgende Formular ausgefüllt und abgeschickt hast, wird es eine Weile (bis zu mehreren Minuten) dauern, bis der Schlüssel fertig ist. Sei also bitte geduldig.
|
||||
}
|
||||
|
||||
Legend {
|
||||
|
@ -277,6 +284,7 @@ Lang {
|
|||
TextFileReset = Auf die Vorgabe zurücksetzen
|
||||
TextFileInfo = Nützliche Platzhalter
|
||||
AvailableLists = Verfügbare Listen
|
||||
GnupgConvert = Verschlüsselungsunterstützung
|
||||
GnupgPublicKeys = öffentliche Schlüssel dieser Liste
|
||||
GnupgSecretKeys = Private Schlüssel dieser Liste
|
||||
GnupgKeyImport = Schlüssel importieren
|
||||
|
|
19
lang/en.hdf
19
lang/en.hdf
|
@ -1,9 +1,9 @@
|
|||
LanguageID = en
|
||||
|
||||
LanguageName = English
|
||||
|
||||
Lang {
|
||||
|
||||
ID = en
|
||||
|
||||
Name = English
|
||||
|
||||
Menue {
|
||||
ListCreate = Create new list
|
||||
ListDelete = Delete list
|
||||
|
@ -23,10 +23,11 @@ Lang {
|
|||
GnupgPublicKeys = public keys
|
||||
GnupgSecretKeys = secret keys
|
||||
GnupgGenerateKey = generate key
|
||||
GnupgConvert = Enable encryption
|
||||
GnupgConvert = Encryption
|
||||
TextFiles = Text files
|
||||
ListSelect = Choose a list
|
||||
Properties = Properties of
|
||||
Language = Language
|
||||
Help = Help (external)
|
||||
}
|
||||
|
||||
|
@ -49,6 +50,7 @@ Lang {
|
|||
ListDelete = Delete list
|
||||
FileSelect = Choose a file for editing
|
||||
FileEdit = Editing file
|
||||
GnupgConvert = Encryption
|
||||
GnupgPublic = Public keys
|
||||
GnupgSecret = Secret keys
|
||||
GnupgGenerate = Generate a new keypair
|
||||
|
@ -65,6 +67,9 @@ Lang {
|
|||
EditFile = Edit file
|
||||
SaveFile = Save file
|
||||
ResetFile = Remove customized file
|
||||
LanguageSet = select
|
||||
GnupgConvertToEncrypted = Convert to an encrypted mailinglist
|
||||
GnupgConvertToNormal = Convert to a plaintext mainlinglist
|
||||
DeletePublicKey = Delete public key(s)
|
||||
DeleteSecretKey = Delete secret key(s)
|
||||
GnupgImportKey = Import key
|
||||
|
@ -253,7 +258,8 @@ Lang {
|
|||
TextFiles = The selection box contains a list of files available in the DIR/text directory. These files are sent out in response to specfic user requests or as part of all outgoing messages. Edit them as necessary.
|
||||
EditTextFile = Change this text according to your needs. Maybe you would like to use some of the reserved tags, that are described at the bottom of this page.
|
||||
ResetTextFile = This text file was customized for this list. If you want to use the system-wide default text file of the choosen language instead, you may remove this customized file.
|
||||
GnupgGenerateKey = Every encrypted mailing list needs a secret key. You can import this key or create it with the form below. After submitting the form, you have to be patient, as it takes some time to create a key.
|
||||
GnupgConvert = You can convert a normal mailinglist to an encrypted list and vice versa.
|
||||
GnupgGenerateKey = Every encrypted mailing list needs a secret key. You can import this key or create it using the form below. After submitting the form, you have to be patient, as it takes some time (up to several minutes) to create a key.
|
||||
}
|
||||
|
||||
Legend {
|
||||
|
@ -277,6 +283,7 @@ Lang {
|
|||
TextFileReset = Discard customized text
|
||||
TextFileInfo = Useful placeholders
|
||||
AvailableLists = Available lists
|
||||
GnupgConvert = Encryption support
|
||||
GnupgPublicKeys = Public keys of this list
|
||||
GnupgSecretKeys = Secret keys of this list
|
||||
GnupgKeyImport = Import a key
|
||||
|
|
|
@ -4,6 +4,7 @@ LanguageDir
|
|||
Stylesheet
|
||||
HelpIconURL
|
||||
Config.Title
|
||||
Config.UI.Languages.[names]
|
||||
Config.UI.LinkAttrs.web_lang
|
||||
Config.UI.LinkAttrs.template
|
||||
|
||||
|
@ -38,6 +39,7 @@ Data.List.Settings.[0-9].state
|
|||
Data.List.SubModPath
|
||||
Data.List.Subscribers.*
|
||||
Data.List.TrailingText
|
||||
Data.List.Type ("default" or "gnupg")
|
||||
Data.List.WebUsers
|
||||
Data.Lists.[0-9]+
|
||||
Data.ListsCount
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
<div id="footer">
|
||||
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a> (v3.1.1) - <?cs var:html_escape(Lang.Misc.FooterText) ?> <a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
|
||||
<a href="https://systemausfall.org/toolforge/ezmlm-web">ezmlm-web</a> (v3.2) - <?cs var:html_escape(Lang.Misc.FooterText) ?> <a href="http://www.ezmlm.org/" target="_blank">ezmlm</a>
|
||||
<br />
|
||||
</div>
|
||||
|
||||
|
|
24
template/gnupg_convert.cs
Normal file
24
template/gnupg_convert.cs
Normal file
|
@ -0,0 +1,24 @@
|
|||
<div class="title">
|
||||
<h1><?cs var:html_escape(Lang.Title.GnupgConvert) ?></h1>
|
||||
</div>
|
||||
|
||||
<div class="introduction">
|
||||
<p><?cs var:html_escape(Lang.Introduction.GnupgConvert) ?></p>
|
||||
</div>
|
||||
|
||||
<fieldset class="form">
|
||||
<legend><?cs var:html_escape(Lang.Legend.GnupgConvert) ?> </legend>
|
||||
|
||||
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||
|
||||
<input type="hidden" name="action" value="gnupg_convert_do" />
|
||||
<button type="submit" name="send" value="do"><?cs
|
||||
if:Data.List.Type == "gnupg" ?><?cs
|
||||
var:html_escape(Lang.Buttons.GnupgConvertToNormal) ?><?cs
|
||||
else ?><?cs
|
||||
var:html_escape(Lang.Buttons.GnupgConvertToEncrypted) ?><?cs
|
||||
/if ?></button>
|
||||
</form>
|
||||
|
||||
</fieldset>
|
23
template/language_select.cs
Normal file
23
template/language_select.cs
Normal file
|
@ -0,0 +1,23 @@
|
|||
<!-- allows the user to change the interface language (not of the list!) -->
|
||||
<?cs if:subcount(Config.UI.Languages) > 0 ?>
|
||||
|
||||
<form class="select" method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
||||
|
||||
<?cs if:Data.List.Name ?><input type="hidden" name="list" value="<?cs
|
||||
var:Data.List.Name ?>" /><?cs /if ?>
|
||||
|
||||
<input type="hidden" name="action" value="show_page" />
|
||||
<input type="hidden" name="pagename" value="<?cs var:Data.Action ?>" />
|
||||
<font class="no_link"><?cs
|
||||
var:html_escape(Lang.Menue.Language) ?>:</font><br/>
|
||||
<select name="web_lang" size="0">
|
||||
<?cs each: tlang = Config.UI.Languages
|
||||
?><option value="<?cs var:name(tlang) ?>"<?cs
|
||||
if:name(tlang) == Config.UI.LinkAttrs.web_lang
|
||||
?> selected="selected"<?cs /if?>><?cs
|
||||
var:html_escape(tlang) ?></option>
|
||||
<?cs /each ?>
|
||||
</select> <button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.LanguageSet) ?></button>
|
||||
</form>
|
||||
|
||||
<?cs /if ?>
|
|
@ -8,13 +8,18 @@
|
|||
title="<?cs var:html_escape(Lang.Menue.ListSelect) ?>"><?cs var:html_escape(Lang.Menue.ListSelect) ?></a>
|
||||
</li>
|
||||
<?cs /if ?>
|
||||
<?cs if:Data.Permissions.Create && (UI.Navigation.ListCreate == 1) ?>
|
||||
<?cs if:Data.Permissions.Create && (UI.Navigation.ListCreate == 1) ?>
|
||||
<li><a <?cs if:(Data.Action == "list_create") ?> class="nav_active"<?cs /if ?>
|
||||
href="<?cs call:link("action","list_create_ask","","","","") ?>"
|
||||
title="<?cs var:html_escape(Lang.Menue.ListCreate) ?>"><?cs var:html_escape(Lang.Menue.ListCreate) ?></a>
|
||||
</li>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:((subcount(Data.Lists) > 0) && (UI.Navigation.ListSelect == 1))
|
||||
|| (Data.Permissions.Create && (UI.Navigation.ListCreate == 1)) ?>
|
||||
<hr/>
|
||||
<?cs /if ?>
|
||||
|
||||
|
||||
<?cs if:Data.List.Name ?>
|
||||
|
||||
|
@ -145,8 +150,9 @@
|
|||
var:html_escape(Lang.Menue.TextFiles) ?></a></li><?cs /if ?>
|
||||
|
||||
<?cs if:UI.Navigation.GnupgConvert == 1
|
||||
?><li><a <?cs if:Data.Action == "gnupg_convert" ?> class="nav_active"<?cs /if ?>
|
||||
href="<?cs call:link("list",Data.List.Name,"action","gnupg_convert","","") ?>"
|
||||
?><li><a <?cs if:(Data.Action == "gnupg_convert_ask") ||
|
||||
(Data.Action == "gnupg_convert_do") ?> class="nav_active"<?cs /if ?>
|
||||
href="<?cs call:link("list",Data.List.Name,"action","gnupg_convert_ask","","") ?>"
|
||||
title="<?cs var:html_escape(Lang.Menue.GnupgConvert) ?>"><?cs
|
||||
var:html_escape(Lang.Menue.GnupgConvert) ?></a></li><?cs /if ?>
|
||||
|
||||
|
@ -158,8 +164,16 @@
|
|||
|
||||
</ul></li>
|
||||
|
||||
<hr/>
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:UI.Navigation.Language
|
||||
?><li><?cs include:TemplateDir + '/language_select.cs' ?></li>
|
||||
|
||||
<hr/>
|
||||
|
||||
<?cs /if ?>
|
||||
|
||||
<?cs if:UI.Navigation.Help
|
||||
?><li><a href="http://www.ezmlm.org/ezman/index.html#toc1" target="_blank"
|
||||
title="<?cs var:html_escape(Lang.Misc.HelpLink) ?>"><?cs
|
||||
|
|
|
@ -24,7 +24,8 @@ UI {
|
|||
TextEdit = 1
|
||||
ListDelete = 1
|
||||
GnupgConvert = 1
|
||||
|
||||
Language = 1
|
||||
Interface = 1
|
||||
Help = 1
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,9 @@ UI {
|
|||
|
||||
TextEdit = 1
|
||||
ListDelete = 1
|
||||
|
||||
GnupgConvert = 1
|
||||
Language = 1
|
||||
Interface = 1
|
||||
Help = 1
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue