interface for public key management added
This commit is contained in:
parent
11bae7c906
commit
440e9df0d2
|
@ -508,7 +508,7 @@ sub set_pagedata4list
|
||||||
# non-encrypted lists should not use this function
|
# non-encrypted lists should not use this function
|
||||||
sub set_pagedata4list_gnupg() {
|
sub set_pagedata4list_gnupg() {
|
||||||
my ($listname) = @_;
|
my ($listname) = @_;
|
||||||
my ($gpg_list, %config, $item, @gpg_keys, $gpg_key, %hash);
|
my ($gpg_list, %config, $item, @gpg_keys, $gpg_key);
|
||||||
|
|
||||||
$gpg_list = new Mail::Ezmlm::Gpg("$LIST_DIR/$listname");
|
$gpg_list = new Mail::Ezmlm::Gpg("$LIST_DIR/$listname");
|
||||||
|
|
||||||
|
@ -521,19 +521,20 @@ sub set_pagedata4list_gnupg() {
|
||||||
|
|
||||||
# retrieve the currently available public keys
|
# retrieve the currently available public keys
|
||||||
@gpg_keys = $gpg_list->get_public_keys();
|
@gpg_keys = $gpg_list->get_public_keys();
|
||||||
foreach $gpg_key (@gpg_keys) {
|
for (my $i = 0; $i < $#gpg_keys; $i++) {
|
||||||
%hash = $gpg_key;
|
$pagedata->setValue("Data.List.gnupg_keys.public.$i.id" , $gpg_keys[$i]{id});
|
||||||
$pagedata->setValue("Data.List.gnupg_keys.public." . $hash{id}, $hash{uid});
|
$pagedata->setValue("Data.List.gnupg_keys.public.$i.email" , $gpg_keys[$i]{email});
|
||||||
warn "pubkey: $hash{uid}";
|
$pagedata->setValue("Data.List.gnupg_keys.public.$i.name" , $gpg_keys[$i]{name});
|
||||||
|
$pagedata->setValue("Data.List.gnupg_keys.public.$i.expires" , $gpg_keys[$i]{expires});
|
||||||
}
|
}
|
||||||
|
|
||||||
# retrieve the currently available secret keys
|
# retrieve the currently available secret keys
|
||||||
@gpg_keys = $gpg_list->get_secret_keys();
|
@gpg_keys = $gpg_list->get_secret_keys();
|
||||||
foreach $gpg_key (@gpg_keys) {
|
for (my $i = 0; $i < $#gpg_keys; $i++) {
|
||||||
# TODO: %hash is broken!
|
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.id" , $gpg_keys[$i]{id});
|
||||||
%hash = $gpg_key;
|
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.email" , $gpg_keys[$i]{email});
|
||||||
$pagedata->setValue("Data.List.gnupg_keys.secret." . $hash{id}, $hash{uid});
|
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.name" , $gpg_keys[$i]{name});
|
||||||
warn "seckey: " . $hash{uid};
|
$pagedata->setValue("Data.List.gnupg_keys.secret.$i.expires" , $gpg_keys[$i]{expires});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
lang/de.hdf
17
lang/de.hdf
|
@ -19,10 +19,10 @@ Lang {
|
||||||
ConfigArchive = Archivierung
|
ConfigArchive = Archivierung
|
||||||
ConfigProcess = Verarbeitung
|
ConfigProcess = Verarbeitung
|
||||||
ConfigAll = Übersicht
|
ConfigAll = Übersicht
|
||||||
KeyManagement = Schlüsselverwaltung
|
Gnupg = Schlüsselverwaltung
|
||||||
KeysPublic = öffentliche Schlüssel
|
GnupgPublicKeys = öffentliche Schlüssel
|
||||||
KeysSecret = private Schlüssel
|
GnupgSecretKeys = private Schlüssel
|
||||||
KeysGenerate = Schlüssel anlegen
|
GnupgGenerateKey = Schlüssel anlegen
|
||||||
TextFiles = Texte
|
TextFiles = Texte
|
||||||
ListSelect = Auswahl einer Liste
|
ListSelect = Auswahl einer Liste
|
||||||
Properties = Eigenschaften von
|
Properties = Eigenschaften von
|
||||||
|
@ -64,6 +64,9 @@ Lang {
|
||||||
EditFile = Datei bearbeiten
|
EditFile = Datei bearbeiten
|
||||||
SaveFile = Datei speichern
|
SaveFile = Datei speichern
|
||||||
ResetFile = Angepassten Textbaustein verwerfen
|
ResetFile = Angepassten Textbaustein verwerfen
|
||||||
|
DeletePublicKey = Öffentliche(n) Schlüssel lälschen
|
||||||
|
DeleteSecretKey = Private(n) Schlüssel lälschen
|
||||||
|
GnupgImportKey = Schlüssel importieren
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -199,6 +202,9 @@ Lang {
|
||||||
ListLanguage = Sprache der Liste
|
ListLanguage = Sprache der Liste
|
||||||
ListCharset = Zeichensatz der Liste
|
ListCharset = Zeichensatz der Liste
|
||||||
ModSubOverridesRemote = Hinweis: falls sowohl die Datenbank der Einsende-ModeratorInnen als auch die der Fern-AdministratorInnen in einem nicht-Standard-Verzeichnis liegen, dann wird die Einsende-ModeratorInnen-Datenbank für beides verwendet
|
ModSubOverridesRemote = Hinweis: falls sowohl die Datenbank der Einsende-ModeratorInnen als auch die der Fern-AdministratorInnen in einem nicht-Standard-Verzeichnis liegen, dann wird die Einsende-ModeratorInnen-Datenbank für beides verwendet
|
||||||
|
NoPublicKeys = Es sind keine öffentlichen Schlüssel vorhanden.
|
||||||
|
NoSecretKeys = Es sind keine privaten Schlüssel vorhanden.
|
||||||
|
GnupgImportKey = Schlüssel aus einer Datei importieren:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -242,5 +248,8 @@ Lang {
|
||||||
TextFileReset = Auf die Vorgabe zurücksetzen
|
TextFileReset = Auf die Vorgabe zurücksetzen
|
||||||
TextFileInfo = Nützliche Platzhalter
|
TextFileInfo = Nützliche Platzhalter
|
||||||
AvailableLists = Verfügbare Listen
|
AvailableLists = Verfügbare Listen
|
||||||
|
GnupgPublicKeys = öffentliche Schlüssel dieser Liste
|
||||||
|
GnupgSecretKeys = Private Schlüssel dieser Liste
|
||||||
|
GnupgKeyImport = Schlüssel importieren
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
17
lang/en.hdf
17
lang/en.hdf
|
@ -19,10 +19,10 @@ Lang {
|
||||||
ConfigArchive = archive
|
ConfigArchive = archive
|
||||||
ConfigProcess = processing
|
ConfigProcess = processing
|
||||||
ConfigAll = overview
|
ConfigAll = overview
|
||||||
KeyManagement = Key management
|
Gnupg = Key management
|
||||||
KeysPublic = public keys
|
GnupgPublicKeys = public keys
|
||||||
KeysSecret = secret keys
|
GnupgSecretKeys = secret keys
|
||||||
KeysGenerate = generate key
|
GnupgGenerateKey = generate key
|
||||||
TextFiles = Text files
|
TextFiles = Text files
|
||||||
ListSelect = Choose a list
|
ListSelect = Choose a list
|
||||||
Properties = Properties of
|
Properties = Properties of
|
||||||
|
@ -64,6 +64,9 @@ Lang {
|
||||||
EditFile = Edit file
|
EditFile = Edit file
|
||||||
SaveFile = Save file
|
SaveFile = Save file
|
||||||
ResetFile = Remove customized file
|
ResetFile = Remove customized file
|
||||||
|
DeletePublicKey = Delete public key(s)
|
||||||
|
DeleteSecretKey = Delete secret key(s)
|
||||||
|
GnupgImportKey = Import key
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -199,6 +202,9 @@ Lang {
|
||||||
ListLanguage = Language of the list
|
ListLanguage = Language of the list
|
||||||
ListCharset = Charset of the list
|
ListCharset = Charset of the list
|
||||||
ModSubOverridesRemote = Hint: if both the database of subscripton moderators and of remote administrators use customized locations, then the database of subscription moderators will be used for both of them
|
ModSubOverridesRemote = Hint: if both the database of subscripton moderators and of remote administrators use customized locations, then the database of subscription moderators will be used for both of them
|
||||||
|
NoPublicKeys = There are no public keys available.
|
||||||
|
NoSecretKeys = There are no secret keys available.
|
||||||
|
GnupgImportKey = Import a new key from a file:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -242,5 +248,8 @@ Lang {
|
||||||
TextFileReset = Discard customized text
|
TextFileReset = Discard customized text
|
||||||
TextFileInfo = Useful placeholders
|
TextFileInfo = Useful placeholders
|
||||||
AvailableLists = Available lists
|
AvailableLists = Available lists
|
||||||
|
GnupgPublicKeys = Public keys of this list
|
||||||
|
GnupgSecretKeys = Secret keys of this list
|
||||||
|
GnupgKeyImport = Import a key
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,26 +7,72 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<fieldset class="form">
|
<fieldset class="form">
|
||||||
<legend><?cs var:html_escape(Lang.Legend.GnupgPublic) ?> </legend>
|
<legend><?cs var:html_escape(Lang.Legend.GnupgKeyImport) ?> </legend>
|
||||||
|
<form method="post" action="<?cs call:link("","","","","","") ?>"
|
||||||
|
enctype="application/x-www-form-urlencoded">
|
||||||
|
|
||||||
<form method="post" action="<?cs call:link("","","","","","") ?>" enctype="application/x-www-form-urlencoded">
|
|
||||||
<input type="hidden" name="gnupg_subset" value="public" />
|
<input type="hidden" name="gnupg_subset" value="public" />
|
||||||
|
|
||||||
<?cs call:show_options(UI.Options.Keymanagement.Public) ?>
|
<?cs call:show_options(UI.Options.Keymanagement.Public) ?>
|
||||||
|
|
||||||
<?cs if:subcount(Data.List.gnupg_keys.public) > 0 ?>
|
<td><form method="post" action="<?cs call:link("","","","","","") ?>"
|
||||||
<ul>
|
enctype="multipart/form-data">
|
||||||
|
<!-- this form has to be "multipart/form-data" to make file upload work -->
|
||||||
|
<input type="hidden" name="list" value="<?cs var:Data.List.Name ?>" />
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><?cs var:html_escape(Lang.Misc.GnupgImportKey) ?>
|
||||||
|
<ul><li><input type="file" name="gnupg_key_file" size="50"
|
||||||
|
maxlength="250" /></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<!-- include default form values -->
|
||||||
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
|
<input type="hidden" name="action" value="gnupg_import_key" />
|
||||||
|
<button type="submit" name="send" value="do"><?cs
|
||||||
|
var:html_escape(Lang.Buttons.GnupgImportKey) ?></button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<fieldset class="form">
|
||||||
|
<legend><?cs var:html_escape(Lang.Legend.GnupgPublicKeys) ?> </legend>
|
||||||
|
|
||||||
|
<?cs if:subcount(Data.List.gnupg_keys.public) > 0 ?>
|
||||||
|
|
||||||
|
<form method="post" action="<?cs call:link("","","","","","") ?>"
|
||||||
|
enctype="application/x-www-form-urlencoded">
|
||||||
|
<input type="hidden" name="gnupg_subset" value="public" />
|
||||||
|
|
||||||
|
<table>
|
||||||
<?cs each:key = Data.List.gnupg_keys.public
|
<?cs each:key = Data.List.gnupg_keys.public
|
||||||
?><li><?cs var:name(key) ?> - <?cs var:key ?></li>
|
?><tr><td><input type="checkbox" name="gnupg_key_<?cs var:key.id ?>"
|
||||||
<?cs /each ?>
|
id="gnupg_key_<?cs var:key.id ?>" /></td>
|
||||||
</ul><?cs /if ?>
|
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
|
||||||
|
var:html_escape(key.name) ?></label></td>
|
||||||
|
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
|
||||||
|
var:html_escape(key.email) ?></label></td>
|
||||||
|
<td><label for="gnupg_key_<?cs var:key.id ?>"><?cs
|
||||||
|
var:html_escape(key.expires) ?></label></td>
|
||||||
|
</tr>
|
||||||
|
<?cs /each ?>
|
||||||
|
</table>
|
||||||
|
|
||||||
<!-- include default form values -->
|
<!-- include default form values -->
|
||||||
<?cs include:TemplateDir + '/form_common.cs' ?>
|
<?cs include:TemplateDir + '/form_common.cs' ?>
|
||||||
|
|
||||||
<input type="hidden" name="action" value="gnupg_do" />
|
<input type="hidden" name="action" value="gnupg_do" />
|
||||||
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.UpdateGnupg) ?></button>
|
<button type="submit" name="send" value="do"><?cs var:html_escape(Lang.Buttons.DeletePublicKey) ?></button>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
<?cs else ?>
|
||||||
|
<p><? var:html_escape(Lang.Misc.NoPublicKeys ?></p>
|
||||||
|
<?cs /if ?>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
|
@ -110,31 +110,31 @@
|
||||||
var:html_escape(Lang.Menue.ConfigAll) ?></a></li><?cs /if ?>
|
var:html_escape(Lang.Menue.ConfigAll) ?></a></li><?cs /if ?>
|
||||||
</ul></li>
|
</ul></li>
|
||||||
|
|
||||||
<?cs if:subcount(UI.Navigation.Keymanagement) > 0
|
<?cs if:subcount(UI.Navigation.Gnupg) > 0
|
||||||
?><li><font class="no_link"><?cs var:html_escape(Lang.Menue.KeyManagement)
|
?><li><font class="no_link"><?cs var:html_escape(Lang.Menue.Gnupg)
|
||||||
?></font>
|
?></font>
|
||||||
<ul>
|
<ul>
|
||||||
<?cs if:UI.Navigation.Keymanagement.SecretKeys == 1
|
<?cs if:UI.Navigation.Gnupg.PublicKeys == 1
|
||||||
?><li><a <?cs if:(Data.Action == "gnupg_public")
|
?><li><a <?cs if:(Data.Action == "gnupg_public")
|
||||||
?> class="nav_active"<?cs /if ?>
|
?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
||||||
"gnupg_subset","public") ?>"
|
"gnupg_subset","public") ?>"
|
||||||
title="<?cs var:html_escape(Lang.Menue.KeysPublic) ?>"><?cs
|
title="<?cs var:html_escape(Lang.Menue.GnupgPublicKeys) ?>"><?cs
|
||||||
var:html_escape(Lang.Menue.KeysPublic) ?></a></li><?cs /if ?>
|
var:html_escape(Lang.Menue.GnupgPublicKeys) ?></a></li><?cs /if ?>
|
||||||
<?cs if:UI.Navigation.Keymanagement.SecretKeys == 1
|
<?cs if:UI.Navigation.Gnupg.SecretKeys == 1
|
||||||
?><li><a <?cs if:(Data.Action == "gnupg_secret")
|
?><li><a <?cs if:(Data.Action == "gnupg_secret")
|
||||||
?> class="nav_active"<?cs /if ?>
|
?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
||||||
"gnupg_subset","secret") ?>"
|
"gnupg_subset","secret") ?>"
|
||||||
title="<?cs var:html_escape(Lang.Menue.KeysSecret) ?>"><?cs
|
title="<?cs var:html_escape(Lang.Menue.GnupgSecretKeys) ?>"><?cs
|
||||||
var:html_escape(Lang.Menue.KeysSecret) ?></a></li><?cs /if ?>
|
var:html_escape(Lang.Menue.GnupgSecretKeys) ?></a></li><?cs /if ?>
|
||||||
<?cs if:UI.Navigation.Keymanagement.GenerateKey == 1
|
<?cs if:UI.Navigation.Gnupg.GenerateKey == 1
|
||||||
?><li><a <?cs if:(Data.Action == "gnupg_generate")
|
?><li><a <?cs if:(Data.Action == "gnupg_generate")
|
||||||
?> class="nav_active"<?cs /if ?>
|
?> class="nav_active"<?cs /if ?>
|
||||||
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
href="<?cs call:link("list",Data.List.Name,"action","gnupg_ask",
|
||||||
"gnupg_subset","generate") ?>"
|
"gnupg_subset","generate") ?>"
|
||||||
title="<?cs var:html_escape(Lang.Menue.KeysGenerate) ?>"><?cs
|
title="<?cs var:html_escape(Lang.Menue.GnupgGenerateKey) ?>"><?cs
|
||||||
var:html_escape(Lang.Menue.KeysGenerate) ?></a></li><?cs /if ?>
|
var:html_escape(Lang.Menue.GnupgGenerateKey) ?></a></li><?cs /if ?>
|
||||||
</ul></li><?cs /if ?>
|
</ul></li><?cs /if ?>
|
||||||
|
|
||||||
<?cs if:UI.Navigation.TextEdit == 1
|
<?cs if:UI.Navigation.TextEdit == 1
|
||||||
|
|
|
@ -11,7 +11,7 @@ UI {
|
||||||
Main = 1
|
Main = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
Keymanagement {
|
Gnupg {
|
||||||
PublicKeys = 1
|
PublicKeys = 1
|
||||||
SecretKeys = 1
|
SecretKeys = 1
|
||||||
GenerateKey = 1
|
GenerateKey = 1
|
||||||
|
@ -49,7 +49,7 @@ UI {
|
||||||
WebUsers = webusers
|
WebUsers = webusers
|
||||||
}
|
}
|
||||||
|
|
||||||
Keymanagement {
|
Gnupg {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue