X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/1534798322db09b0f676ab5096ba5a3351b57c6c..HEAD:/gpgwww.c diff --git a/gpgwww.c b/gpgwww.c index 570f1a8..84f00e4 100644 --- a/gpgwww.c +++ b/gpgwww.c @@ -1,11 +1,20 @@ /* * gpgwww.c - www interface to path finder. - * - * Jonathan McDowell * - * Copyright 2001-2002 Project Purple. + * Copyright 2001-2004 Jonathan McDowell * - * $Id: gpgwww.c,v 1.14 2004/05/26 18:53:14 noodles Exp $ + * 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, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include @@ -15,6 +24,7 @@ #include "armor.h" #include "charfuncs.h" +#include "cleanup.h" #include "getcgi.h" #include "hash.h" #include "keydb.h" @@ -23,6 +33,7 @@ #include "onak-conf.h" #include "parsekey.h" #include "stats.h" +#include "version.h" #define OP_UNKNOWN 0 #define OP_GET 1 @@ -58,17 +69,16 @@ int getkeyspath(uint64_t have, uint64_t want, int count) struct openpgp_packet_list *list_end = NULL; struct stats_key *keyinfoa, *keyinfob, *curkey; uint64_t fullhave, fullwant; - int rec; int pathlen = 0; - fullhave = getfullkeyid(have); - fullwant = getfullkeyid(want); + fullhave = config.dbbackend->getfullkeyid(have); + fullwant = config.dbbackend->getfullkeyid(want); /* * Make sure the keys we have and want are in the cache. */ - cached_getkeysigs(fullhave); - cached_getkeysigs(fullwant); + config.dbbackend->cached_getkeysigs(fullhave); + config.dbbackend->cached_getkeysigs(fullwant); if ((keyinfoa = findinhash(fullhave)) == NULL) { return 1; @@ -77,12 +87,12 @@ int getkeyspath(uint64_t have, uint64_t want, int count) return 1; } - while (pathlen < count) { + while ((!cleanup()) && (pathlen < count)) { /* * Fill the tree info up. */ initcolour(true); - rec = findpath(keyinfoa, keyinfob); + findpath(keyinfoa, keyinfob); keyinfob->parent = 0; if (keyinfoa->colour == 0) { pathlen = count; @@ -93,9 +103,10 @@ int getkeyspath(uint64_t have, uint64_t want, int count) */ curkey = findinhash(keyinfoa->parent); while (curkey != NULL && curkey->keyid != 0) { - if (curkey->keyid != fullwant && fetch_key( - curkey->keyid & 0xFFFFFFFF, - &publickey, false)) { + if (curkey->keyid != fullwant && + config.dbbackend->fetch_key( + curkey->keyid, + &publickey, false)) { flatten_publickey(publickey, &packets, &list_end); @@ -114,7 +125,7 @@ int getkeyspath(uint64_t have, uint64_t want, int count) /* * Add the destination key to the list of returned keys. */ - if (fetch_key(fullwant & 0xFFFFFFFF, &publickey, false)) { + if (config.dbbackend->fetch_key(fullwant, &publickey, false)) { flatten_publickey(publickey, &packets, &list_end); @@ -153,13 +164,15 @@ int main(int argc, char *argv[]) } if (op != OP_GET) { - printf("

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

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

\n", from, to); @@ -167,9 +180,12 @@ int main(int argc, char *argv[]) readconfig(NULL); initlogthing("gpgwww", config.logfile); - initdb(true); + catchsignals(); + config.dbbackend->initdb(true); inithash(); - logthing(LOGTHING_NOTICE, "Looking for path from 0x%llX to 0x%llX.", + logthing(LOGTHING_NOTICE, "Looking for path from 0x%016" PRIX64 + " to 0x%016" + PRIX64, from, to); if (op == OP_GET) { @@ -178,15 +194,13 @@ int main(int argc, char *argv[]) dofindpath(from, to, true, 3); } destroyhash(); - cleanupdb(); + config.dbbackend->cleanupdb(); cleanuplogthing(); cleanupconfig(); if (op != OP_GET) { puts("
"); - puts("Produced by gpgwww " VERSION ", part of onak. " - "" - "Jonathan McDowell"); + puts("Produced by gpgwww " ONAK_VERSION ", part of onak. "); end_html(); }