interface for public key management added

This commit is contained in:
lars 2006-04-03 11:00:12 +00:00
parent 11bae7c906
commit 440e9df0d2
6 changed files with 104 additions and 39 deletions

View file

@ -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});
} }
} }

View file

@ -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
} }
} }

View file

@ -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
} }
} }

View file

@ -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>

View file

@ -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

View file

@ -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 {
} }
} }