1
/* Copyright (c) 2011-2012 Dovecot authors, see the included COPYING file */
4
#include "restrict-access.h"
5
#include "mail-storage-service.h"
6
#include "mail-storage-settings.h"
7
#include "master-service.h"
8
#include "master-service-settings.h"
9
#include "master-connection.h"
11
static struct master_connection *master_conn;
12
static struct mail_storage_service_ctx *storage_service;
14
static void client_connected(struct master_service_connection *conn)
16
if (master_conn != NULL) {
17
i_error("indexer-worker must be configured with client_limit=1");
21
master_service_client_connection_accept(conn);
22
master_conn = master_connection_create(conn->fd, storage_service);
25
static void drop_privileges(void)
27
struct restrict_access_settings set;
30
/* by default we don't drop any privileges, but keep running as root. */
31
restrict_access_get_env(&set);
33
/* open config connection before dropping privileges */
34
struct master_service_settings_input input;
35
struct master_service_settings_output output;
37
memset(&input, 0, sizeof(input));
38
input.module = "mail";
39
input.service = "indexer-worker";
40
(void)master_service_settings_read(master_service,
41
&input, &output, &error);
43
restrict_access_by_env(NULL, FALSE);
46
int main(int argc, char *argv[])
48
enum mail_storage_service_flags storage_service_flags =
49
MAIL_STORAGE_SERVICE_FLAG_DISALLOW_ROOT |
50
MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP |
51
MAIL_STORAGE_SERVICE_FLAG_TEMP_PRIV_DROP |
52
MAIL_STORAGE_SERVICE_FLAG_NO_IDLE_TIMEOUT;
55
master_service = master_service_init("indexer-worker", 0,
57
while ((c = master_getopt(master_service)) > 0) {
60
storage_service_flags |=
61
MAIL_STORAGE_SERVICE_FLAG_ENABLE_CORE_DUMPS;
69
master_service_init_log(master_service, "indexer-worker: ");
70
master_service_init_finish(master_service);
72
storage_service = mail_storage_service_init(master_service, NULL,
73
storage_service_flags);
74
restrict_access_allow_coredumps(TRUE);
76
master_service_run(master_service, client_connected);
78
if (master_conn != NULL)
79
master_connection_destroy(&master_conn);
80
mail_storage_service_deinit(&storage_service);
81
master_service_deinit(&master_service);