ezmlm-web interface:
* move gnupg key generation process into the background if possible * declare non-configurable variables _after_ reading the configuration file, thus preventing them from being accidentaly "configured"
This commit is contained in:
parent
0afddf2487
commit
5b98b18ff9
116
ezmlm-web.cgi
116
ezmlm-web.cgi
|
@ -33,6 +33,7 @@ use MIME::QuotedPrint;
|
||||||
|
|
||||||
# optional modules - they will be loaded later if they are available
|
# optional modules - they will be loaded later if they are available
|
||||||
#Encode
|
#Encode
|
||||||
|
#POSIX
|
||||||
#Mail::Ezmlm::GpgEzmlm
|
#Mail::Ezmlm::GpgEzmlm
|
||||||
#Mail::Ezmlm::GpgKeyRing
|
#Mail::Ezmlm::GpgKeyRing
|
||||||
#Mail::Address OR Email::Address
|
#Mail::Address OR Email::Address
|
||||||
|
@ -70,7 +71,7 @@ $UID = $EUID;
|
||||||
$GID = $EGID;
|
$GID = $EGID;
|
||||||
|
|
||||||
my $VERSION;
|
my $VERSION;
|
||||||
$VERSION = '3.3~rc1';
|
$VERSION = '3.3.1';
|
||||||
|
|
||||||
my $q = new CGI;
|
my $q = new CGI;
|
||||||
$q->import_names('Q');
|
$q->import_names('Q');
|
||||||
|
@ -106,23 +107,12 @@ use vars qw[$DEFAULT_INTERFACE_TYPE];
|
||||||
use vars qw[$ENCRYPTION_SUPPORT $GPG_KEYRING_DEFAULT_LOCATION];
|
use vars qw[$ENCRYPTION_SUPPORT $GPG_KEYRING_DEFAULT_LOCATION];
|
||||||
# settings for multi-domain setups
|
# settings for multi-domain setups
|
||||||
use vars qw[%DOMAINS $CURRENT_DOMAIN];
|
use vars qw[%DOMAINS $CURRENT_DOMAIN];
|
||||||
# cached data
|
|
||||||
use vars qw[%CACHED_DATA];
|
|
||||||
# available features
|
|
||||||
use vars qw[%FEATURES];
|
|
||||||
|
|
||||||
# some deprecated configuration settings - they have to be registered
|
# some deprecated configuration settings - they have to be registered
|
||||||
# otherwise old configuration files would break
|
# otherwise old configuration files would break
|
||||||
use vars qw[$HTML_CSS_FILE]; # replaced by HTML_CSS_COMMON since v3.2
|
use vars qw[$HTML_CSS_FILE]; # replaced by HTML_CSS_COMMON since v3.2
|
||||||
|
|
||||||
|
|
||||||
# "pagedata" contains the hdf tree for clearsilver
|
|
||||||
# "pagename" refers to the template file that should be used
|
|
||||||
# "ui_template" is one of "basic", "normal" and "expert"
|
|
||||||
use vars qw[$pagedata $pagename];
|
|
||||||
use vars qw[$error $customError $warning $customWarning $success];
|
|
||||||
use vars qw[$ui_template $LOGIN_NAME];
|
|
||||||
|
|
||||||
# Get user configuration stuff
|
# Get user configuration stuff
|
||||||
my $config_file;
|
my $config_file;
|
||||||
if (defined($opt_C)) {
|
if (defined($opt_C)) {
|
||||||
|
@ -148,6 +138,22 @@ unless (my $return = do $config_file) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# define some more variables, that may not be manipulated via the config
|
||||||
|
# file
|
||||||
|
# "pagedata" contains the hdf tree for clearsilver
|
||||||
|
# "pagename" refers to the template file that should be used
|
||||||
|
# "ui_template" is one of "basic", "normal" and "expert"
|
||||||
|
use vars qw[$pagedata $pagename];
|
||||||
|
use vars qw[$error $customError $warning $customWarning $success];
|
||||||
|
use vars qw[$ui_template $LOGIN_NAME];
|
||||||
|
use vars qw[$posix_enabled $child_return];
|
||||||
|
|
||||||
|
# cached data
|
||||||
|
use vars qw[%CACHED_DATA];
|
||||||
|
# available features
|
||||||
|
use vars qw[%FEATURES];
|
||||||
|
|
||||||
|
|
||||||
####### validate configuration and apply some default settings ##########
|
####### validate configuration and apply some default settings ##########
|
||||||
|
|
||||||
# do we support encrypted mailing lists an keyring management?
|
# do we support encrypted mailing lists an keyring management?
|
||||||
|
@ -287,6 +293,9 @@ unless (defined($MAIL_ADDRESS_PREFIX)) {
|
||||||
# get the current login name advertised to the webserver (if it is defined)
|
# get the current login name advertised to the webserver (if it is defined)
|
||||||
$LOGIN_NAME = lc($ENV{'REMOTE_USER'});
|
$LOGIN_NAME = lc($ENV{'REMOTE_USER'});
|
||||||
|
|
||||||
|
# check if the POSIX module is available
|
||||||
|
$posix_enabled = &safely_import_module("POSIX");
|
||||||
|
|
||||||
|
|
||||||
###################### process a request ########################
|
###################### process a request ########################
|
||||||
|
|
||||||
|
@ -493,7 +502,10 @@ if (defined($action) && ($action eq 'show_mime_examples')) {
|
||||||
if (($subset =~ /^[\w]*$/)
|
if (($subset =~ /^[\w]*$/)
|
||||||
&& (-e "$TEMPLATE_DIR/gnupg_$subset" . ".cs")) {
|
&& (-e "$TEMPLATE_DIR/gnupg_$subset" . ".cs")) {
|
||||||
if ($action eq 'gnupg_do') {
|
if ($action eq 'gnupg_do') {
|
||||||
$success = 'UpdateGnupg' if (&manage_gnupg_keys($list));
|
if (&manage_gnupg_keys($list)) {
|
||||||
|
# some functions may set 'success' on their own
|
||||||
|
$success = 'UpdateGnupg' unless $success;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
# warnings are defined in the respective subs
|
# warnings are defined in the respective subs
|
||||||
$pagename = 'gnupg_' . $subset;
|
$pagename = 'gnupg_' . $subset;
|
||||||
|
@ -2104,10 +2116,21 @@ sub gnupg_import_key {
|
||||||
|
|
||||||
# ------------------------------------------------------------------------
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# cleanup child processes, that are finished
|
||||||
|
sub reap_child {
|
||||||
|
# we may not overwrite the current error setting
|
||||||
|
local $!;
|
||||||
|
wait();
|
||||||
|
$child_return = $?;
|
||||||
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------------------
|
||||||
|
|
||||||
sub gnupg_generate_key {
|
sub gnupg_generate_key {
|
||||||
|
|
||||||
my $list = shift;
|
my $list = shift;
|
||||||
my ($keyring, $key_name, $key_comment, $key_size, $key_expires);
|
my ($keyring, $key_name, $key_comment, $key_size, $key_expires);
|
||||||
|
my ($child_pid);
|
||||||
|
|
||||||
$keyring = get_keyring($list);
|
$keyring = get_keyring($list);
|
||||||
|
|
||||||
|
@ -2150,13 +2173,68 @@ sub gnupg_generate_key {
|
||||||
return (1==0);
|
return (1==0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($keyring->generate_private_key($key_name, $key_comment,
|
# do the key generation - preferably in the background
|
||||||
&get_listaddress($list), $key_size, $key_expires)) {
|
if ($posix_enabled) {
|
||||||
$pagename = 'gnupg_secret';
|
# we can try to put the key generation into the background
|
||||||
return (0==0);
|
$child_return = 0;
|
||||||
|
# we need to cleanup zombie processes
|
||||||
|
local $SIG{CHLD} = \&reap_child;
|
||||||
|
$child_pid = POSIX::fork();
|
||||||
|
if (!defined($child_pid)) {
|
||||||
|
# forking failed
|
||||||
|
warn "[ezmlm-web] failed to fork process for key generation: $!";
|
||||||
|
$error = 'GnupgGenerateKey';
|
||||||
|
return (0==1);
|
||||||
|
} elsif ($child_pid == 0) {
|
||||||
|
# this is the child process
|
||||||
|
# we will disconnect from the parent process and call gpg
|
||||||
|
# the following code is taken from "man perlipc"
|
||||||
|
chdir('/') or die "Can't chdir to /: $!";
|
||||||
|
open(STDIN, '/dev/null') or die "Can't read /dev/null: $!";
|
||||||
|
open(STDOUT, '>/dev/null') or die "Can't write to /dev/null: $!";
|
||||||
|
# the child continues ...
|
||||||
|
POSIX::setsid() or die "Can't start a new session: $!";
|
||||||
|
open(STDERR, '>&STDOUT') or die "Can't dup stdout: $!";
|
||||||
|
# now we are completely disconnected from the parent process
|
||||||
|
if ($keyring->generate_private_key($key_name, $key_comment,
|
||||||
|
&get_listaddress($list), $key_size, $key_expires)) {
|
||||||
|
# the child process finished its job
|
||||||
|
# avoid to call destructors and so on - just use "_exit" instead
|
||||||
|
# of "exit".
|
||||||
|
POSIX::_exit(0);
|
||||||
|
} else {
|
||||||
|
# report an eror back
|
||||||
|
POSIX::_exit(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# this is the parent process - we will wait for the child for about
|
||||||
|
# five seconds. If it still did not return an error, then the key
|
||||||
|
# generation seems to be running without problems.
|
||||||
|
sleep 5;
|
||||||
|
# check if the child process is still alive
|
||||||
|
if ($child_return == 0) {
|
||||||
|
# the child did return an error - it seems to run successfully
|
||||||
|
$pagename = 'gnupg_secret';
|
||||||
|
$success = 'GnupgGenerateKeyInBackground';
|
||||||
|
return (0==0);
|
||||||
|
} else {
|
||||||
|
# the child died with an error
|
||||||
|
$error = 'GnupgGenerateKey';
|
||||||
|
return (0==1);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
$error = 'GnupgGenerateKey';
|
# no POSIX module available - thus we will run the key generation
|
||||||
return (0==1);
|
# directly. This will most likely block the web interface for some time.
|
||||||
|
if ($keyring->generate_private_key($key_name, $key_comment,
|
||||||
|
&get_listaddress($list), $key_size, $key_expires)) {
|
||||||
|
$pagename = 'gnupg_secret';
|
||||||
|
$success = 'GnupgGenerateKey';
|
||||||
|
return (0==0);
|
||||||
|
} else {
|
||||||
|
$error = 'GnupgGenerateKey';
|
||||||
|
return (0==1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:33+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:33+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:33+0200\n"
|
||||||
"PO-Revision-Date: 2008-10-12 01:40+0200\n"
|
"PO-Revision-Date: 2008-10-12 01:40+0200\n"
|
||||||
"Last-Translator: Lars Kruse <lars@systemausfall.org>\n"
|
"Last-Translator: Lars Kruse <lars@systemausfall.org>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -512,6 +512,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "Der Schlüssel wurde importiert."
|
msgstr "Der Schlüssel wurde importiert."
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "Verschlüsselung für die Mailingliste ist nun aktiv."
|
msgstr "Verschlüsselung für die Mailingliste ist nun aktiv."
|
||||||
|
|
|
@ -498,6 +498,16 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "The key was successfully imported."
|
msgstr "The key was successfully imported."
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr "The key was created successfully."
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "Encryption is now enabled for this list."
|
msgstr "Encryption is now enabled for this list."
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web 3.3\n"
|
"Project-Id-Version: ezmlm-web 3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: 2008-09-13 19:51+0200\n"
|
"PO-Revision-Date: 2008-09-13 19:51+0200\n"
|
||||||
"Last-Translator: Jose Luis Martinez <jlmartinez@capside.com>\n"
|
"Last-Translator: Jose Luis Martinez <jlmartinez@capside.com>\n"
|
||||||
"Language-Team: <>\n"
|
"Language-Team: <>\n"
|
||||||
|
@ -510,6 +510,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "La clave se importó con éxito."
|
msgstr "La clave se importó con éxito."
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "La encriptación está habilitada para esta lista."
|
msgstr "La encriptación está habilitada para esta lista."
|
||||||
|
|
|
@ -492,6 +492,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:24+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: 2008-04-24 10:34+0200\n"
|
"PO-Revision-Date: 2008-04-24 10:34+0200\n"
|
||||||
"Last-Translator: Lionel <ouhaich@razzer.net>\n"
|
"Last-Translator: Lionel <ouhaich@razzer.net>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -506,6 +506,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: 2007-12-19 06:54+0000\n"
|
"PO-Revision-Date: 2007-12-19 06:54+0000\n"
|
||||||
"Last-Translator: kkk <kamu@hcf.hu>\n"
|
"Last-Translator: kkk <kamu@hcf.hu>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "A kulcs sikeresen importálva!"
|
msgstr "A kulcs sikeresen importálva!"
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "A titkosítás bekapcsolva a listára!"
|
msgstr "A titkosítás bekapcsolva a listára!"
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -508,6 +508,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: 2008-08-20 09:47+0200\n"
|
"PO-Revision-Date: 2008-08-20 09:47+0200\n"
|
||||||
"Last-Translator: kinneko <kinneko@gmail.com>\n"
|
"Last-Translator: kinneko <kinneko@gmail.com>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:34+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -509,6 +509,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -633,6 +633,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "Chave importada com sucesso"
|
msgstr "Chave importada com sucesso"
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -511,6 +511,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "Chave importada com sucesso"
|
msgstr "Chave importada com sucesso"
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "Criptografia está agora ativada na lista."
|
msgstr "Criptografia está agora ativada na lista."
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: 2008-05-22 10:27+0200\n"
|
"PO-Revision-Date: 2008-05-22 10:27+0200\n"
|
||||||
"Last-Translator: azlk <azlk@mail.ru>\n"
|
"Last-Translator: azlk <azlk@mail.ru>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -509,6 +509,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "Ключ успешно импортирован."
|
msgstr "Ключ успешно импортирован."
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "Шифрование для этого списка теперь включено."
|
msgstr "Шифрование для этого списка теперь включено."
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -511,6 +511,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr "Ključ je bil uspešno uvožen"
|
msgstr "Ključ je bil uspešno uvožen"
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr "Šifriranje za ta seznam je zdaj omogočeno "
|
msgstr "Šifriranje za ta seznam je zdaj omogočeno "
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: ezmlm-web v3.3\n"
|
"Project-Id-Version: ezmlm-web v3.3\n"
|
||||||
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
"Report-Msgid-Bugs-To: devel@sumpfralle.de\n"
|
||||||
"POT-Creation-Date: 2008-10-12 01:25+0200\n"
|
"POT-Creation-Date: 2008-10-14 02:35+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -507,6 +507,15 @@ msgstr ""
|
||||||
msgid "The key was successfully imported."
|
msgid "The key was successfully imported."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKey
|
||||||
|
msgid "The key was created successfully."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Lang.SuccessMessage.GnupgGenerateKeyInBackground
|
||||||
|
msgid ""
|
||||||
|
"The key is created in the background. It will be visible in a few minutes."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
#: Lang.SuccessMessage.GpgEzmlmConvertEnable
|
||||||
msgid "Encryption is now enabled for this list."
|
msgid "Encryption is now enabled for this list."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -150,6 +150,8 @@ Lang {
|
||||||
SaveFile = The file was saved.
|
SaveFile = The file was saved.
|
||||||
ResetFile = The customized text file was successfully removed. From now on, the system-wide default text file will be used instead of it.
|
ResetFile = The customized text file was successfully removed. From now on, the system-wide default text file will be used instead of it.
|
||||||
GnupgKeyImport = The key was successfully imported.
|
GnupgKeyImport = The key was successfully imported.
|
||||||
|
GnupgGenerateKey = The key was created successfully.
|
||||||
|
GnupgGenerateKeyInBackground = The key is created in the background. It will be visible in a few minutes.
|
||||||
GpgEzmlmConvertEnable = Encryption is now enabled for this list.
|
GpgEzmlmConvertEnable = Encryption is now enabled for this list.
|
||||||
GpgEzmlmConvertDisable = Encryption is now disabled for this list.
|
GpgEzmlmConvertDisable = Encryption is now disabled for this list.
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue