X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;f=onak-conf.h;h=5d39f6ab2a44bcdd06af245d178b4742474adb3f;hb=58ed9a0076feb9604154b99da6ed1907ca7df089;hp=f91057e321a67b2c11292864d578a049b32f4f68;hpb=340e776784a8902d43e6c4658c45254202e2779e;p=onak.git diff --git a/onak-conf.h b/onak-conf.h index f91057e..5d39f6a 100644 --- a/onak-conf.h +++ b/onak-conf.h @@ -1,57 +1,143 @@ -/* - * onak-conf.h - Routines related to runtime config. +/** + * @file onak-conf.h + * @brief Routines related to runtime config. * - * Jonathan McDowell + * Copyright 2002 Jonathan McDowell * - * Copyright 2002 Project Purple + * 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 . */ #ifndef __ONAK_CONF_H_ #define __ONAK_CONF_H_ -#define VERSION "0.0.4" +#include +#include -/* - * struct onak_config - Runtime configuration for onak. - * @maxkeys: The maximum number of keys a query should return. - * - * @db2_dbpath: The path to the directory containing the db2 files. - * - * @file_dbpath: The path to the flat file DB directory. +#include "keyarray.h" +#include "ll.h" + +/** + * @brief Backend database configuration. * - * @pg_dbhost: The host that Postgres is running on. - * @pg_dbname: The database name. - * @pg_dbuser: The user we should connect as. - * @pg_dbpass: The password for the user. + */ +struct onak_db_config { + /** Name, as used to refer to individual backend instances */ + char *name; + /** Backend type [e.g. db4, pg, fs, file] */ + char *type; + /** Location information; directory for file backed, DB name for DBs */ + char *location; + /** Database backend hostname, if appropriate */ + char *hostname; + /** Database backend username, if appropriate */ + char *username; + /** Database backend password, if appropriate */ + char *password; +}; + +/** + * @brief Runtime configuration for onak. * - * This structure holds various runtime configuration options for onak. It - * will eventually be populated from the config file. + * This structure holds various runtime configuration options for onak. It + * will eventually be populated from the config file. */ struct onak_config { - int maxkeys; - /* - * Options for the db2 file backend. + * Generic options. */ - char *db2_dbpath; + /** The maximum number of keys a query should return. */ + int maxkeys; + /** Our email address that servers sync with. */ + char *thissite; + /** The email address of the server admin. */ + char *adminemail; + /** The mta to invoke to send sync mails. */ + char *mta; + /** List of email address for sites we sync with via email */ + struct ll *syncsites; + /** A linked list of sites we sync with. */ + char *logfile; + + /** Set if we're using keyd as the backend. */ + bool use_keyd; + /** The path to the directory the keyd socket lives in. */ + char *sock_dir; + + /** List of backend configurations */ + struct ll *backends; + + /* The default backend to use */ + struct onak_db_config *backend; /* - * Options for the file backend. + * Options for the dynamic backend. */ - char *file_dbpath; - + /** Name of the DB backend we're using */ + char *db_backend; + /** Directory where backend .so files can be found */ + char *backends_dir; + + /** Pointer to the initialisation function for our loaded DB backend */ + struct onak_dbctx *(*dbinit)(struct onak_db_config *, bool); + + /** Blacklist of fingerprints to reject */ + struct keyarray blacklist; + + /** What policies should we use for cleaning keys? */ + uint64_t clean_policies; + /* - * Options for the Postgres backend. + * Options used by the email handling script. + * None of the C code uses this information, but we should be able + * to parse it. */ - char *pg_dbhost; - char *pg_dbname; - char *pg_dbuser; - char *pg_dbpass; + /** Location of the onak binary, so the mail script can find it. */ + char *bin_dir; + /** Where incoming mail gets queue, one file per mail. */ + char *mail_dir; }; -/* - * config - The variable containing our runtime config. +/** + * @brief The variable containing our runtime config. */ extern struct onak_config config; +/** + * @brief read the onak config. + * @param configfile the config file to read. + * + * Read in our config file. If config file is NULL read in the compile + * time default. + */ +void readconfig(const char *configfile); + +/** + * @brief write the onak config. + * @param configfile the config file to write to. + * + * Write out the config file. If config file is NULL write it to STDOUT. + */ +void writeconfig(const char *configfile); + +/** + * @brief clean up the config when we're shutting down. + */ +void cleanupconfig(void); + + +/** + * @brief Find a specified backend configuration by name. + */ +struct onak_db_config *find_db_backend_config(struct ll *backends, char *name); + #endif /* __ONAK_CONF_H_ */