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 }