]> git.sommitrealweird.co.uk Git - onak.git/blobdiff - keydb_db2.c
cscvs to tla changeset 18
[onak.git] / keydb_db2.c
index 6aa47c099b34973ac319cd61e02965ad41101f15..3d66c5a18ca0095f0bcebd565c317dbc6504ed00 100644 (file)
@@ -21,9 +21,9 @@
 #include "keyindex.h"
 #include "keystructs.h"
 #include "mem.h"
+#include "onak-conf.h"
 #include "parsekey.h"
 
-#define DBDIR "/community/pgp-keyserver/db-copy"
 #define KEYDB_KEYID_BYTES 4
 
 /**
@@ -111,7 +111,8 @@ void initdb(void)
         */
        db2_env.mp_size = 20 * 1024 * 1024;
 
-       ret = db_appinit(DBDIR, NULL, &db2_env, DB_INIT_MPOOL|DB_INIT_LOCK);
+       ret = db_appinit(config.db2_dbpath, NULL,
+                       &db2_env, DB_INIT_MPOOL|DB_INIT_LOCK);
        if (!ret) {
                db2_keydbfiles = (DB **) malloc(sizeof (DB *) * db2_numdb);
                memset(&keydbinfo, 0, sizeof(keydbinfo));
@@ -154,10 +155,33 @@ void cleanupdb(void)
        db_appexit(&db2_env);
 }
 
+/**
+ *     starttrans - Start a transaction.
+ *
+ *     Start a transaction. Intended to be used if we're about to perform many
+ *     operations on the database to help speed it all up, or if we want
+ *     something to only succeed if all relevant operations are successful.
+ */
+bool starttrans(void)
+{
+       return true;
+}
+
+/**
+ *     endtrans - End a transaction.
+ *
+ *     Ends a transaction.
+ */
+void endtrans(void)
+{
+       return;
+}
+
 /**
  *     fetch_key - Given a keyid fetch the key from storage.
  *     @keyid: The keyid to fetch.
  *     @publickey: A pointer to a structure to return the key in.
+ *     @intrans: If we're already in a transaction.
  *
  *     We use the hex representation of the keyid as the filename to fetch the
  *     key from. The key is stored in the file as a binary OpenPGP stream of
@@ -165,7 +189,8 @@ void cleanupdb(void)
  *     in and then parse_keys() to parse the packets into a publickey
  *     structure.
  */
-int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey)
+int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey,
+               bool intrans)
 {
        struct openpgp_packet_list *packets = NULL;
        int ret;
@@ -186,7 +211,6 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey)
 
        ret = (*(keydb(&key)->get))(keydb(&key), NULL, &key, &data, 0);
        if (ret == 0) {
-               //do stuff with data.
                fetchbuf.buffer = data.data;
                fetchbuf.offset = 0;
                fetchbuf.size = data.size;
@@ -197,16 +221,31 @@ int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey)
        return (!ret);
 }
 
+/**
+ *     fetch_key_text - Trys to find the keys that contain the supplied text.
+ *     @search: The text to search for.
+ *     @publickey: A pointer to a structure to return the key in.
+ *
+ *     This function searches for the supplied text and returns the keys that
+ *     contain it.
+ */
+int fetch_key_text(const char *search, struct openpgp_publickey **publickey)
+{
+       return 0;
+}
+
 /**
  *     store_key - Takes a key and stores it.
  *     @publickey: A pointer to the public key to store.
+ *     @intrans: If we're already in a transaction.
+ *     @update: If true the key exists and should be updated.
  *
  *     Again we just use the hex representation of the keyid as the filename
  *     to store the key to. We flatten the public key to a list of OpenPGP
  *     packets and then use write_openpgp_stream() to write the stream out to
  *     the file.
  */
-int store_key(struct openpgp_publickey *publickey)
+int store_key(struct openpgp_publickey *publickey, bool intrans, bool update)
 {
        return 0;
 }
@@ -214,11 +253,12 @@ int store_key(struct openpgp_publickey *publickey)
 /**
  *     delete_key - Given a keyid delete the key from storage.
  *     @keyid: The keyid to delete.
+ *     @intrans: If we're already in a transaction.
  *
  *     This function deletes a public key from whatever storage mechanism we
  *     are using. Returns 0 if the key existed.
  */
-int delete_key(uint64_t keyid)
+int delete_key(uint64_t keyid, bool intrans)
 {
        return (1);
 }
@@ -226,4 +266,7 @@ int delete_key(uint64_t keyid)
 /*
  * Include the basic keydb routines.
  */
+#define NEED_KEYID2UID 1
+#define NEED_GETKEYSIGS 1
+#define NEED_GETFULLKEYID 1
 #include "keydb.c"