view src/imap-urlauth/imap-urlauth-client.h @ 15066:d419aac7ab31

Added support for IMAP URLAUTH and URLAUTH=BINARY extensions Extends imap service with URLAUTH and URLAUTH=BINARY support: - Adds new commands URLFETCH, GENURLAUTH and RESETKEY. Creates imap-urlauth service in src/imap-urlauth. Functionality common to both the imap and imap-urlauth services is located in src/lib-imap-urlauth. TODO: - use mailbox GUIDs instead of names - doveadm command to delete stale urlauth entries? - add delay when attempting to access nonexistent user - create urlauth-worker queue, similar to how indexer-worker works (could we share code?..)
author Stephan Bosch <stephan@rename-it.nl>
date Sat, 15 Sep 2012 23:57:08 +0300
parents
children
line wrap: on
line source

#ifndef IMAP_URLAUTH_CLIENT_H
#define IMAP_URLAUTH_CLIENT_H

struct client;
struct mail_storage;

enum imap_urlauth_worker_state {
	IMAP_URLAUTH_WORKER_STATE_INACTIVE = 0,
	IMAP_URLAUTH_WORKER_STATE_CONNECTED,
	IMAP_URLAUTH_WORKER_STATE_ACTIVE,
};

struct client {
	struct client *prev, *next;

	int fd_in, fd_out, fd_ctrl;
	struct io *ctrl_io;
	struct ostream *output, *ctrl_output;
	struct istream *ctrl_input;
	struct timeout *to_idle;

	char *username;
	ARRAY_TYPE(const_string) access_apps;

	/* settings: */
	const struct imap_urlauth_settings *set;

	enum imap_urlauth_worker_state worker_state;

	unsigned int disconnected:1;
};

extern struct client *imap_urlauth_clients;
extern unsigned int imap_urlauth_client_count;

int client_create(const char *username, int fd_in, int fd_out,
		  const struct imap_urlauth_settings *set,
		  struct client **client_r);
void client_destroy(struct client *client, const char *reason);

void client_send_line(struct client *client, const char *fmt, ...)
	ATTR_FORMAT(2, 3);

void client_disconnect(struct client *client, const char *reason);

void clients_destroy_all(void);

#endif