annotate src/login-common/client-common.c @ 3863:55df57c028d4 HEAD

Added "bool" type and changed all ints that were used as booleans to bool.
author Timo Sirainen <tss@iki.fi>
date Fri, 13 Jan 2006 22:25:57 +0200
parents 51ffafcee2b8
children cbbe2377f591
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
1 /* Copyright (C) 2002-2005 Timo Sirainen */
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
2
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3 #include "common.h"
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
4 #include "hostpid.h"
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
5 #include "str.h"
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
6 #include "str-sanitize.h"
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
7 #include "var-expand.h"
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 #include "client-common.h"
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
10 #include <stdlib.h>
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
11
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
12 static const struct var_expand_table *
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
13 get_var_expand_table(struct client *client)
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
14 {
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
15 static struct var_expand_table static_tab[] = {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
16 { 'u', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
17 { 'n', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
18 { 'd', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
19 { 's', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
20 { 'h', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
21 { 'l', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
22 { 'r', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
23 { 'p', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
24 { 'm', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
25 { 'c', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
26 { '\0', NULL }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
27 };
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
28 struct var_expand_table *tab;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
29
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
30 tab = t_malloc(sizeof(static_tab));
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
31 memcpy(tab, static_tab, sizeof(static_tab));
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
32
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
33 if (client->virtual_user != NULL) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
34 tab[0].value = client->virtual_user;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
35 tab[1].value = t_strcut(client->virtual_user, '@');
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
36 tab[2].value = strchr(client->virtual_user, '@');
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
37 if (tab[2].value != NULL) tab[2].value++;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
38 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
39 tab[3].value = login_protocol;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
40 tab[4].value = getenv("HOME");
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
41 tab[5].value = net_ip2addr(&client->local_ip);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
42 tab[6].value = net_ip2addr(&client->ip);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
43 tab[7].value = my_pid;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
44 tab[8].value = client->auth_mech_name == NULL ? NULL :
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
45 str_sanitize(client->auth_mech_name, MAX_MECH_NAME);
3501
51ffafcee2b8 We printed "SSL" to log for localhost connections. Use "secured" instead.
Timo Sirainen <tss@iki.fi>
parents: 3384
diff changeset
46 tab[9].value = client->tls ? "TLS" :
51ffafcee2b8 We printed "SSL" to log for localhost connections. Use "secured" instead.
Timo Sirainen <tss@iki.fi>
parents: 3384
diff changeset
47 client->secured ? "secured" : NULL;
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
48
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
49 return tab;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
50 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
51
3863
55df57c028d4 Added "bool" type and changed all ints that were used as booleans to bool.
Timo Sirainen <tss@iki.fi>
parents: 3501
diff changeset
52 static bool have_key(const struct var_expand_table *table, const char *str)
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
53 {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
54 char key;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
55 unsigned int i;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
56
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
57 key = var_get_key(str);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
58 for (i = 0; table[i].key != '\0'; i++) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
59 if (table[i].key == key) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
60 return table[i].value != NULL &&
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
61 table[i].value[0] != '\0';
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
62 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
63 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
64 return FALSE;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
65 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
66
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
67 void client_syslog(struct client *client, const char *msg)
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
68 {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
69 static struct var_expand_table static_tab[3] = {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
70 { 's', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
71 { '$', NULL },
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
72 { '\0', NULL }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
73 };
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
74 const struct var_expand_table *var_expand_table;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
75 struct var_expand_table *tab;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
76 const char *p, *const *e;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
77 string_t *str;
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
78
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
79 t_push();
3384
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
80 var_expand_table = get_var_expand_table(client);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
81
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
82 tab = t_malloc(sizeof(static_tab));
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
83 memcpy(tab, static_tab, sizeof(static_tab));
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
84
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
85 str = t_str_new(256);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
86 for (e = log_format_elements; *e != NULL; e++) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
87 for (p = *e; *p != '\0'; p++) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
88 if (*p != '%' || p[1] == '\0')
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
89 continue;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
90
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
91 p++;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
92 if (have_key(var_expand_table, p)) {
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
93 if (str_len(str) > 0)
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
94 str_append(str, ", ");
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
95 var_expand(str, *e, var_expand_table);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
96 break;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
97 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
98 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
99 }
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
100
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
101 tab[0].value = t_strdup(str_c(str));
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
102 tab[1].value = msg;
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
103 str_truncate(str, 0);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
104
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
105 var_expand(str, log_format, tab);
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
106 i_info("%s", str_c(str));
3b75956d20c4 Added configurable logging for login process. Added configurable pop3 logout
Timo Sirainen <tss@iki.fi>
parents: 2737
diff changeset
107
2737
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
108 t_pop();
134ad6e8cd42 forgot to add
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 }