X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=gpgwww.c;h=0fc58fb3762f1b40b539e8bf80cd1352a8f7a149;hb=42977c5361ef21c99bc157e9c7edbba49243014f;hp=10b3806a5e7b1158e7038f86a370faf1140ec13c;hpb=1921fa44cfae203ae40e853ee9ecedb206fa9413;p=onak.git diff --git a/gpgwww.c b/gpgwww.c index 10b3806..0fc58fb 100644 --- a/gpgwww.c +++ b/gpgwww.c @@ -1,9 +1,19 @@ /* * gpgwww.c - www interface to path finder. - * - * Jonathan McDowell * - * Copyright 2001-2002 Project Purple. + * Copyright 2001-2004 Jonathan McDowell + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . */ #include @@ -11,10 +21,11 @@ #include #include +#include "build-config.h" + #include "armor.h" #include "charfuncs.h" #include "cleanup.h" -#include "config.h" #include "getcgi.h" #include "hash.h" #include "keydb.h" @@ -51,29 +62,25 @@ int parsecgistuff(char **cgiparams, uint64_t *from, uint64_t *to) return op; } -int getkeyspath(uint64_t have, uint64_t want, int count) +int getkeyspath(struct onak_dbctx *dbctx, + uint64_t have, uint64_t want, int count) { struct openpgp_publickey *publickey = NULL; struct openpgp_packet_list *packets = NULL; struct openpgp_packet_list *list_end = NULL; struct stats_key *keyinfoa, *keyinfob, *curkey; - uint64_t fullhave, fullwant; - int rec; int pathlen = 0; - fullhave = config.dbbackend->getfullkeyid(have); - fullwant = config.dbbackend->getfullkeyid(want); - /* * Make sure the keys we have and want are in the cache. */ - config.dbbackend->cached_getkeysigs(fullhave); - config.dbbackend->cached_getkeysigs(fullwant); + dbctx->cached_getkeysigs(dbctx, have); + dbctx->cached_getkeysigs(dbctx, want); - if ((keyinfoa = findinhash(fullhave)) == NULL) { + if ((keyinfoa = findinhash(have)) == NULL) { return 1; } - if ((keyinfob = findinhash(fullwant)) == NULL) { + if ((keyinfob = findinhash(want)) == NULL) { return 1; } @@ -82,7 +89,7 @@ int getkeyspath(uint64_t have, uint64_t want, int count) * Fill the tree info up. */ initcolour(true); - rec = findpath(keyinfoa, keyinfob); + findpath(dbctx, keyinfoa, keyinfob); keyinfob->parent = 0; if (keyinfoa->colour == 0) { pathlen = count; @@ -93,8 +100,8 @@ int getkeyspath(uint64_t have, uint64_t want, int count) */ curkey = findinhash(keyinfoa->parent); while (curkey != NULL && curkey->keyid != 0) { - if (curkey->keyid != fullwant && - config.dbbackend->fetch_key( + if (curkey->keyid != want && + dbctx->fetch_key_id(dbctx, curkey->keyid, &publickey, false)) { flatten_publickey(publickey, @@ -115,7 +122,7 @@ int getkeyspath(uint64_t have, uint64_t want, int count) /* * Add the destination key to the list of returned keys. */ - if (config.dbbackend->fetch_key(fullwant, &publickey, false)) { + if (dbctx->fetch_key_id(dbctx, want, &publickey, false)) { flatten_publickey(publickey, &packets, &list_end); @@ -135,6 +142,7 @@ int main(int argc, char *argv[]) char **cgiparams = NULL; /* Our CGI parameter block */ uint64_t from = 0, to = 0; int op = OP_UNKNOWN; + struct onak_dbctx *dbctx; cgiparams = getcgivars(argc, argv); @@ -154,14 +162,14 @@ int main(int argc, char *argv[]) } if (op != OP_GET) { - printf("

Looking for path from 0x%" PRIx64" to 0x%" PRIx64 - ".\n", + printf("

Looking for path from 0x%016" PRIX64" to 0x%016" + PRIX64 ".\n", from, to); - printf("Find reverse path\n", to, from); - printf("" "Get all keys listed

\n", from, @@ -171,27 +179,26 @@ int main(int argc, char *argv[]) readconfig(NULL); initlogthing("gpgwww", config.logfile); catchsignals(); - config.dbbackend->initdb(true); + dbctx = config.dbinit(config.backend, true); inithash(); - logthing(LOGTHING_NOTICE, "Looking for path from 0x%" PRIx64 " to 0x%" - PRIx64, + logthing(LOGTHING_NOTICE, "Looking for path from 0x%016" PRIX64 + " to 0x%016" + PRIX64, from, to); if (op == OP_GET) { - getkeyspath(from, to, 3); + getkeyspath(dbctx, from, to, 3); } else { - dofindpath(from, to, true, 3); + dofindpath(dbctx, from, to, true, 3); } destroyhash(); - config.dbbackend->cleanupdb(); + dbctx->cleanupdb(dbctx); cleanuplogthing(); cleanupconfig(); if (op != OP_GET) { puts("
"); - puts("Produced by gpgwww " PACKAGE_VERSION ", part of onak. " - "" - "Jonathan McDowell"); + puts("Produced by gpgwww " ONAK_VERSION ", part of onak. "); end_html(); }