Mercurial > dovecot > original-hg > dovecot-1.2
comparison src/auth/main.c @ 0:3b1985cbc908 HEAD
Initial revision
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 09 Aug 2002 12:15:38 +0300 |
parents | |
children | 82b7de533f98 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:3b1985cbc908 |
---|---|
1 /* Copyright (C) 2002 Timo Sirainen */ | |
2 | |
3 #include "common.h" | |
4 #include "ioloop.h" | |
5 #include "network.h" | |
6 #include "lib-signals.h" | |
7 #include "restrict-access.h" | |
8 #include "auth.h" | |
9 #include "cookie.h" | |
10 #include "login-connection.h" | |
11 #include "userinfo.h" | |
12 | |
13 #include <stdlib.h> | |
14 #include <syslog.h> | |
15 | |
16 void master_init(void); | |
17 void master_deinit(void); | |
18 | |
19 IOLoop ioloop; | |
20 static IO io_listen; | |
21 | |
22 static void sig_quit(int signo __attr_unused__) | |
23 { | |
24 io_loop_stop(ioloop); | |
25 } | |
26 | |
27 static void auth_accept(void *user_data __attr_unused__, int listen_fd, | |
28 IO io __attr_unused__) | |
29 { | |
30 int fd; | |
31 | |
32 fd = net_accept(listen_fd, NULL, NULL); | |
33 if (fd != -1) | |
34 (void)login_connection_create(fd); | |
35 } | |
36 | |
37 static void main_init(void) | |
38 { | |
39 const char *logfile; | |
40 | |
41 lib_init_signals(sig_quit); | |
42 | |
43 logfile = getenv("IMAP_LOGFILE"); | |
44 if (logfile == NULL) { | |
45 /* open the syslog immediately so chroot() won't | |
46 break logging */ | |
47 openlog("imap-auth", LOG_NDELAY, LOG_MAIL); | |
48 | |
49 i_set_panic_handler(i_syslog_panic_handler); | |
50 i_set_fatal_handler(i_syslog_fatal_handler); | |
51 i_set_error_handler(i_syslog_error_handler); | |
52 i_set_warning_handler(i_syslog_warning_handler); | |
53 } else { | |
54 /* log failures into specified log file */ | |
55 i_set_failure_file(logfile, "imap-auth"); | |
56 i_set_failure_timestamp_format(DEFAULT_FAILURE_STAMP_FORMAT); | |
57 } | |
58 | |
59 restrict_access_by_env(); | |
60 | |
61 auth_init(); | |
62 cookies_init(); | |
63 login_connections_init(); | |
64 master_init(); | |
65 userinfo_init(); | |
66 | |
67 io_listen = io_add(LOGIN_LISTEN_FD, IO_READ, auth_accept, NULL); | |
68 } | |
69 | |
70 static void main_deinit(void) | |
71 { | |
72 if (lib_signal_kill != 0) | |
73 i_warning("Killed with signal %d", lib_signal_kill); | |
74 | |
75 io_remove(io_listen); | |
76 | |
77 userinfo_deinit(); | |
78 master_deinit(); | |
79 login_connections_deinit(); | |
80 cookies_deinit(); | |
81 auth_deinit(); | |
82 | |
83 closelog(); | |
84 } | |
85 | |
86 int main(int argc __attr_unused__, char *argv[] __attr_unused__) | |
87 { | |
88 /* NOTE: we start rooted, so keep the code minimal until | |
89 restrict_access_by_env() is called */ | |
90 lib_init(); | |
91 ioloop = io_loop_create(); | |
92 | |
93 main_init(); | |
94 io_loop_run(ioloop); | |
95 main_deinit(); | |
96 | |
97 io_loop_destroy(ioloop); | |
98 lib_deinit(); | |
99 | |
100 return 0; | |
101 } |