#ifndef INCLUDED_GLOBAL_H
#define INCLUDED_GLOBAL_H
#include <sasl/sasl.h>
#include "libconfig.h"
#include "auth.h"
#include "mboxname.h"
#include "signals.h"
enum {
CYRUSINIT_NODB = (1<<0)
};
extern int cyrus_init(const char *alt_config, const char *ident,
unsigned flags);
extern void global_sasl_init(int client, int server,
const sasl_callback_t *callbacks);
extern void cyrus_done();
extern int mysasl_config(void *context,
const char *plugin_name,
const char *option,
const char **result,
unsigned *len);
extern sasl_security_properties_t *mysasl_secprops(int flags);
extern char *canonify_userid(char *user, char *loginid, int *domain_from_ip);
extern int is_userid_anonymous(const char *user);
extern int mysasl_canon_user(sasl_conn_t *conn,
void *context,
const char *user, unsigned ulen,
unsigned flags,
const char *user_realm,
char *out_user,
unsigned out_max, unsigned *out_ulen);
extern int mysasl_proxy_policy(sasl_conn_t *conn,
void *context,
const char *requested_user, unsigned rlen,
const char *auth_identity, unsigned alen,
const char *def_realm __attribute__((unused)),
unsigned urlen __attribute__((unused)),
struct propctx *propctx __attribute__((unused)));
extern int global_authisa(struct auth_state *authstate,
enum imapopt opt);
struct protstream;
struct buf {
char *s;
int len;
int alloc;
};
struct proxy_context {
int use_acl;
int proxy_servers;
struct auth_state **authstate;
int *userisadmin;
int *userisproxyadmin;
};
int getword(struct protstream *in, struct buf *buf);
enum string_types { IMAP_ASTRING,
IMAP_BIN_ASTRING,
IMAP_NSTRING,
IMAP_QSTRING,
IMAP_STRING };
int getxstring(struct protstream *pin, struct protstream *pout,
struct buf *buf, int type);
#define getastring(pin, pout, buf) getxstring((pin), (pout), (buf), IMAP_ASTRING)
#define getbastring(pin, pout, buf) getxstring((pin), (pout), (buf), IMAP_BIN_ASTRING)
#define getnstring(pin, pout, buf) getxstring((pin), (pout), (buf), IMAP_NSTRING)
#define getqstring(pin, pout, buf) getxstring((pin), (pout), (buf), IMAP_QSTRING)
#define getstring(pin, pout, buf) getxstring((pin), (pout), (buf), IMAP_STRING)
void freebuf(struct buf *buf);
void eatline(struct protstream *pin, int c);
extern void cyrus_ctime(time_t date, char *datebuf);
extern int shutdown_file(char *buf, int size);
extern int config_implicitrights;
extern struct cyrusdb_backend *config_mboxlist_db;
extern struct cyrusdb_backend *config_quota_db;
extern struct cyrusdb_backend *config_subscription_db;
extern struct cyrusdb_backend *config_annotation_db;
extern struct cyrusdb_backend *config_seenstate_db;
extern struct cyrusdb_backend *config_duplicate_db;
extern struct cyrusdb_backend *config_tlscache_db;
#ifdef WITH_PTS
extern struct cyrusdb_backend *config_ptscache_db;
#endif
#endif