X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/3dcacadf03a7cf272f1618b981b08121504e131a..24b8c863b154e1bee674597ffcd818d4d959c9a1:/onak.c diff --git a/onak.c b/onak.c index 4e63720..b3cc27e 100644 --- a/onak.c +++ b/onak.c @@ -21,7 +21,6 @@ #include "charfuncs.h" #include "cleankey.h" #include "cleanup.h" -#include "config.h" #include "keydb.h" #include "keyid.h" #include "keyindex.h" @@ -32,6 +31,7 @@ #include "onak-conf.h" #include "parsekey.h" #include "photoid.h" +#include "version.h" void find_keys(char *search, uint64_t keyid, bool ishex, bool fingerprint, bool exact, bool verbose) @@ -40,9 +40,9 @@ void find_keys(char *search, uint64_t keyid, bool ishex, int count = 0; if (ishex) { - count = fetch_key(keyid, &publickey, false); + count = config.dbbackend->fetch_key(keyid, &publickey, false); } else { - count = fetch_key_text(search, &publickey); + count = config.dbbackend->fetch_key_text(search, &publickey); } if (publickey != NULL) { key_index(publickey, verbose, fingerprint, false); @@ -74,7 +74,7 @@ void dump_func(void *ctx, struct openpgp_publickey *key) state = (struct dump_ctx *) ctx; - if (state->fd == -1 || state->count > state->maxcount) { + if (state->fd == -1 || state->count++ > state->maxcount) { if (state->fd != -1) { close(state->fd); state->fd = -1; @@ -93,13 +93,13 @@ void dump_func(void *ctx, struct openpgp_publickey *key) } void usage(void) { - puts("onak " PACKAGE_VERSION " - an OpenPGP keyserver.\n"); + puts("onak " ONAK_VERSION " - an OpenPGP keyserver.\n"); puts("Usage:\n"); puts("\tonak [options] \n"); puts("\tCommands:\n"); puts("\tadd - read armored OpenPGP keys from stdin and add to the" " keyserver"); - puts("\tclean - read armored OpenPGP keys from stdin, run the " + puts("\tclean - read armored OpenPGP keys from stdin, run the" " cleaning\n\t routines against them and dump to" " stdout"); puts("\tdelete - delete a given key from the keyserver"); @@ -159,17 +159,17 @@ int main(int argc, char *argv[]) if ((argc - optind) < 1) { usage(); } else if (!strcmp("dump", argv[optind])) { - initdb(true); + config.dbbackend->initdb(true); dumpstate.count = dumpstate.filenum = 0; - dumpstate.maxcount = 1000000; + dumpstate.maxcount = 100000; dumpstate.fd = -1; dumpstate.filebase = "keydump.%d.pgp"; - iterate_keys(dump_func, &dumpstate); + config.dbbackend->iterate_keys(dump_func, &dumpstate); if (dumpstate.fd != -1) { close(dumpstate.fd); dumpstate.fd = -1; } - cleanupdb(); + config.dbbackend->cleanupdb(); } else if (!strcmp("add", argv[optind])) { if (binary) { result = read_openpgp_stream(stdin_getchar, NULL, @@ -190,9 +190,10 @@ int main(int argc, char *argv[]) logthing(LOGTHING_INFO, "%d keys cleaned.", result); - initdb(false); + config.dbbackend->initdb(false); logthing(LOGTHING_NOTICE, "Got %d new keys.", - update_keys(&keys, false)); + config.dbbackend->update_keys(&keys, + false)); if (keys != NULL && update) { flatten_publickey(keys, &packets, @@ -209,7 +210,7 @@ int main(int argc, char *argv[]) free_packet_list(packets); packets = NULL; } - cleanupdb(); + config.dbbackend->cleanupdb(); } else { rc = 1; logthing(LOGTHING_NOTICE, "No keys read."); @@ -279,7 +280,7 @@ int main(int argc, char *argv[]) ishex = true; } } - initdb(false); + config.dbbackend->initdb(false); if (!strcmp("index", argv[optind])) { find_keys(search, keyid, ishex, fingerprint, false, false); @@ -290,7 +291,8 @@ int main(int argc, char *argv[]) if (!ishex) { puts("Can't get a key on uid text." " You must supply a keyid."); - } else if (fetch_key(keyid, &keys, false)) { + } else if (config.dbbackend->fetch_key(keyid, &keys, + false)) { unsigned char *photo = NULL; size_t length = 0; @@ -306,27 +308,36 @@ int main(int argc, char *argv[]) puts("Key not found"); } } else if (!strcmp("delete", argv[optind])) { - delete_key(getfullkeyid(keyid), false); + config.dbbackend->delete_key( + config.dbbackend->getfullkeyid(keyid), + false); } else if (!strcmp("get", argv[optind])) { if (!ishex) { puts("Can't get a key on uid text." " You must supply a keyid."); - } else if (fetch_key(keyid, &keys, false)) { + } else if (config.dbbackend->fetch_key(keyid, &keys, + false)) { logthing(LOGTHING_INFO, "Got key."); flatten_publickey(keys, &packets, &list_end); free_publickey(keys); - armor_openpgp_stream(stdout_putchar, + if (binary) { + write_openpgp_stream(stdout_putchar, NULL, packets); + } else { + armor_openpgp_stream(stdout_putchar, + NULL, + packets); + } free_packet_list(packets); packets = NULL; } else { puts("Key not found"); } } - cleanupdb(); + config.dbbackend->cleanupdb(); } else { usage(); }