annotate src/conf.c @ 221:8742d2cee364

added a note to the long vs. int question in md5.h Solar Designer explained to me in privat conversation that the int had performed much better on some systems and that 16bit ints are very rare. Still I like using the long.
author meillo@marmaro.de
date Fri, 23 Jul 2010 10:53:04 +0200
parents 0241aaccfcdb
children 8cddc65765bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
1 /* MasqMail
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
2 Copyright (C) 1999-2001 Oliver Kurth
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
3
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
6 the Free Software Foundation; either version 2 of the License, or
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
7 (at your option) any later version.
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
8
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
12 GNU General Public License for more details.
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
13
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
15 along with this program; if not, write to the Free Software
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
16 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
17 */
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
18
13
49dab67fe461 code beautifying
meillo@marmaro.de
parents: 10
diff changeset
19 #include <pwd.h>
49dab67fe461 code beautifying
meillo@marmaro.de
parents: 10
diff changeset
20 #include <grp.h>
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
21
13
49dab67fe461 code beautifying
meillo@marmaro.de
parents: 10
diff changeset
22 #include "masqmail.h"
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
23
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
24 masqmail_conf conf;
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
25
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
26 void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
27 init_conf()
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
28 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
29 struct passwd *passwd;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
30 struct group *group;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
31
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
32 memset(&conf, 0, sizeof(masqmail_conf));
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
33
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
34 conf.orig_uid = getuid();
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
35 conf.orig_gid = getgid();
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
36
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
37 if ((passwd = getpwnam(DEF_MAIL_USER)))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
38 conf.mail_uid = passwd->pw_uid;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
39 else {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
40 fprintf(stderr, "user %s not found! (terminating)\n", DEF_MAIL_USER);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
41 exit(EXIT_FAILURE);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
42 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
43 if ((group = getgrnam(DEF_MAIL_GROUP)))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
44 conf.mail_gid = group->gr_gid;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
45 else {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
46 fprintf(stderr, "group %s not found! (terminating)\n", DEF_MAIL_GROUP);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
47 exit(EXIT_FAILURE);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
48 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
49 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
50
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
51 static gchar* true_strings[] = {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
52 "yes", "on", "true", NULL
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
53 };
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
54
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
55 static gchar *false_strings[] = {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
56 "no", "off", "false", NULL
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
57 };
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
58
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
59 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
60 parse_boolean(gchar * rval)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
61 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
62 gchar **str;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
63
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
64 DEBUG(6) fprintf(stderr, "parse_boolean: %s\n", rval);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
65
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
66 str = true_strings;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
67 while (*str) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
68 if (strncasecmp(*str, rval, strlen(*str)) == 0)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
69 return TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
70 str++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
71 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
72
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
73 str = false_strings;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
74 while (*str) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
75 if (strncasecmp(*str, rval, strlen(*str)) == 0)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
76 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
77 str++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
78 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
79
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
80 fprintf(stderr, "cannot parse value '%s'\n", rval);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
81 exit(EXIT_FAILURE);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
82 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
83
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
84 /* make a list from each line in a file */
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
85 static GList*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
86 parse_list_file(gchar * fname)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
87 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
88 GList *list = NULL;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
89 FILE *fptr;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
90
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
91 if ((fptr = fopen(fname, "rt")) == NULL) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
92 logwrite(LOG_ALERT, "could not open %s for reading: %s\n", fname, strerror(errno));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
93 exit(EXIT_FAILURE);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
94 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
95
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
96 gchar buf[256];
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
97
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
98 while (!feof(fptr)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
99 fgets(buf, 255, fptr);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
100 if (buf[0] && (buf[0] != '#') && (buf[0] != '\n')) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
101 g_strchomp(buf);
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
102 DEBUG(6) fprintf(stderr,"parse_list_file: item = %s\n", buf);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
103 list = g_list_append(list, g_strdup(buf));
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
104 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
105 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
106 fclose(fptr);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
107
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
108 return list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
109 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
110
13
49dab67fe461 code beautifying
meillo@marmaro.de
parents: 10
diff changeset
111 /* given a semicolon separated string, this function makes a GList out of it. */
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
112 GList*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
113 parse_list(gchar * line, gboolean read_file)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
114 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
115 GList *list = NULL;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
116 gchar buf[256];
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
117 gchar *p, *q;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
118
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
119 DEBUG(6) fprintf(stderr, "parsing list %s, file?:%d\n", line, read_file);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
120
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
121 p = line;
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
122 while (*p != '\0') {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
123 q = buf;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
124
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
125 while (*p && (*p != ';') && (q < buf + 255))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
126 *(q++) = *(p++);
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
127 *q = '\0';
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
128
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
129 if ((buf[0] == '/') && (read_file))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
130 /* item is a filename, include its contents */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
131 list = g_list_concat(list, parse_list_file(buf));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
132 else
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
133 /* just a normal item */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
134 list = g_list_append(list, g_strdup(buf));
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
135
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
136 DEBUG(6) fprintf(stderr, "item = %s\n", buf);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
137
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
138 if (*p)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
139 p++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
140 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
141 return list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
142 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
143
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
144 static GList*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
145 parse_address_list(gchar * line, gboolean read_file)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
146 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
147 GList *plain_list = parse_list(line, read_file);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
148 GList *node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
149 GList *list = NULL;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
150
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
151 foreach(plain_list, node) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
152 gchar *item = (gchar *) (node->data);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
153 address *addr = create_address(item, TRUE);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
154 if (addr)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
155 list = g_list_append(list, addr);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
156 g_free(item);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
157 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
158 g_list_free(plain_list);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
159
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
160 return list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
161 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
162
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
163 static GList*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
164 parse_resolve_list(gchar * line)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
165 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
166 GList *list;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
167 GList *list_node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
168 GList *res_list = NULL;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
169
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
170 list = parse_list(line, FALSE);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
171 if (!list) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
172 return NULL;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
173 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
174
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
175 foreach(list, list_node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
176 gchar *item = (gchar *) (list_node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
177 if (strcmp(item, "byname") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
178 res_list = g_list_append(res_list, resolve_byname);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
179 #ifdef ENABLE_RESOLVER
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
180 } else if (strcmp(item, "dns_a") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
181 res_list = g_list_append(res_list, resolve_dns_a);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
182 } else if (strcmp(item, "dns_mx") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
183 res_list = g_list_append(res_list, resolve_dns_mx);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
184 #endif
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
185 } else {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
186 logwrite(LOG_ALERT, "unknown resolver %s\n", item);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
187 exit(EXIT_FAILURE);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
188 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
189 g_free(item);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
190 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
191 g_list_free(list);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
192 return res_list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
193 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
194
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
195 static interface*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
196 parse_interface(gchar * line, gint def_port)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
197 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
198 gchar buf[256];
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
199 gchar *p, *q;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
200 interface *iface;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
201
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
202 DEBUG(6) fprintf(stderr, "parse_interface: %s\n", line);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
203
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
204 p = line;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
205 q = buf;
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
206 while ((*p != '\0') && (*p != ':') && (q < buf + 255))
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
207 *(q++) = *(p++);
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
208 *q = '\0';
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
209
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
210 iface = g_malloc(sizeof(interface));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
211 iface->address = g_strdup(buf);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
212
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
213 if (*p) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
214 p++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
215 iface->port = atoi(p);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
216 } else
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
217 iface->port = def_port;
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
218 DEBUG(6) fprintf(stderr,"rval=%s, address:port=%s:%i\n",line, iface->address, iface->port);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
219
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
220 return iface;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
221 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
222
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
223 #ifdef ENABLE_IDENT /* so far used for that only */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
224 static struct in_addr*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
225 parse_network(gchar * line, gint def_port)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
226 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
227 gchar buf[256];
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
228 gchar *p, *q;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
229 struct in_addr addr, mask_addr, net_addr, *p_net_addr;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
230 guint n;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
231
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
232 DEBUG(6) fprintf(stderr, "parse_network: %s\n", line);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
233
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
234 p = line;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
235 q = buf;
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
236 while ((*p != '\0') && (*p != '/') && (q < buf + 255))
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
237 *(q++) = *(p++);
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
238 *q = '\0';
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
239
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
240 if ((addr.s_addr = inet_addr(buf)) == INADDR_NONE) {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
241 fprintf(stderr, "'%s' is not a valid address (must be ip)\n", buf);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
242 exit(EXIT_FAILURE);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
243 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
244
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
245 if (*p) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
246 guint i;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
247 p++;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
248 i = atoi(p);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
249 if ((i >= 0) && (i <= 32))
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
250 n = i ? ~((1 << (32 - i)) - 1) : 0;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
251 else {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
252 fprintf(stderr, "'%d' is not a valid net mask (must be >= 0 and <= 32)\n", i);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
253 exit(EXIT_FAILURE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
254 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
255 } else
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
256 n = 0;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
257
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
258 mask_addr.s_addr = htonl(n);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
259 net_addr.s_addr = mask_addr.s_addr & addr.s_addr;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
260
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
261 p_net_addr = g_malloc(sizeof(struct in_addr));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
262 p_net_addr->s_addr = net_addr.s_addr;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
263 return p_net_addr;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
264 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
265 #endif
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
266
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
267 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
268 eat_comments(FILE * in)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
269 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
270 gint c;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
271
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
272 for (c = fgetc(in); (c == '#' || isspace(c)) && c != EOF;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
273 c = fgetc(in)) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
274 if (c == '#') {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
275 gint c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
276 for (c = fgetc(in); (c != '\n') && (c != EOF); c = fgetc(in));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
277 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
278 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
279 if (c == EOF)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
280 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
281 ungetc(c, in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
282 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
283 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
284
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
285 /* after parsing, eat trailing character until LF */
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
286 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
287 eat_line_trailing(FILE * in)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
288 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
289 gint c;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
290
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
291 for (c = fgetc(in); c != EOF && c != '\n'; c = fgetc(in));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
292 if (c == EOF)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
293 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
294 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
295 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
296
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
297 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
298 eat_spaces(FILE * in)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
299 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
300 gint c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
301
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
302 for (c = fgetc(in); c != EOF && isspace(c); c = fgetc(in)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
303 /* empty */
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
304 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
305 if (c == EOF)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
306 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
307 ungetc(c, in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
308 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
309 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
310
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
311 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
312 read_lval(FILE * in, gchar * buf, gint size)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
313 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
314 gint c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
315 gchar *ptr = buf;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
316
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
317 DEBUG(6) fprintf(stderr, "read_lval()\n");
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
318
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
319 if (!eat_spaces(in))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
320 return FALSE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
321
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
322 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
323 DEBUG(6) fprintf(stderr, "read_lval() 2\n");
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
324 while ((isalnum(c) || c == '_' || c == '-' || c == '.')
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
325 && (ptr < buf + size - 1)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
326 && (c != EOF)) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
327 *ptr = c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
328 ptr++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
329 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
330 }
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
331 *ptr = '\0';
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
332 ungetc(c, in);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
333
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
334 if (c == EOF) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
335 fprintf(stderr, "unexpected EOF after %s\n", buf);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
336 return FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
337 } else if (ptr >= buf + size - 1) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
338 fprintf(stderr, "lval too long\n");
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
339 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
340
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
341 eat_spaces(in);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
342
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
343 DEBUG(6) fprintf(stderr, "lval = %s\n", buf);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
344
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
345 return buf[0] != '\0';
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
346 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
347
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
348 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
349 read_rval(FILE * in, gchar * buf, gint size)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
350 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
351 gint c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
352 gchar *ptr = buf;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
353
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
354 DEBUG(6) fprintf(stderr, "read_rval()\n");
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
355
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
356 if (!eat_spaces(in))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
357 return FALSE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
358
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
359 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
360 if (c != '\"') {
115
315773f814f7 allow `:' unquoted too; updated masqmail.conf.5 (Thanks to Paolo)
meillo@marmaro.de
parents: 114
diff changeset
361 while ((isalnum(c) || c == '_' || c == '-' || c == '.'
315773f814f7 allow `:' unquoted too; updated masqmail.conf.5 (Thanks to Paolo)
meillo@marmaro.de
parents: 114
diff changeset
362 || c == '/' || c == '@' || c == ';' || c == ':')
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
363 && (ptr < buf + size - 1)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
364 && (c != EOF)) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
365 *ptr = c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
366 ptr++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
367 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
368 }
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
369 *ptr = '\0';
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
370 ungetc(c, in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
371 } else {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
372 gboolean escape = FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
373 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
374 while (((c != '\"') || escape) && (ptr < buf + size - 1)) {
13
49dab67fe461 code beautifying
meillo@marmaro.de
parents: 10
diff changeset
375 if (c != '\n') { /* ignore line breaks */
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
376 if ((c == '\\') && (!escape)) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
377 escape = TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
378 } else {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
379 *ptr = c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
380 ptr++;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
381 escape = FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
382 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
383 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
384 c = fgetc(in);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
385 }
14
a8f3424347dc replaced number 0 with character \0 where appropriate
meillo@marmaro.de
parents: 13
diff changeset
386 *ptr = '\0';
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
387 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
388
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
389 eat_line_trailing(in);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
390
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
391 DEBUG(6) fprintf(stderr, "rval = %s\n", buf);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
392
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
393 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
394 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
395
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
396 static gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
397 read_statement(FILE * in, gchar * lval, gint lsize, gchar * rval, gint rsize)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
398 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
399 gint c;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
400
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
401 DEBUG(6) fprintf(stderr, "read_statement()\n");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
402
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
403 /* eat comments and empty lines: */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
404 if (!eat_comments(in))
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
405 return FALSE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
406
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
407 if (!read_lval(in, lval, lsize)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
408 return FALSE;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
409 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
410
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
411 DEBUG(6) fprintf(stderr, " lval = %s\n", lval);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
412 if ((c = fgetc(in) == '=')) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
413 if (read_rval(in, rval, rsize)) {
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
414 DEBUG(6) fprintf(stderr, " rval = %s\n", rval);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
415 return TRUE;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
416 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
417 } else {
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
418 DEBUG(6) fprintf(stderr," '=' expected after %s, char was '%c'\n", lval, c);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
419 fprintf(stderr, "'=' expected after %s, char was '%c'\n", lval, c);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
420 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
421 return FALSE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
422 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
423
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
424 gboolean
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
425 read_conf(gchar * filename)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
426 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
427 FILE *in;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
428
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
429 conf.log_max_pri = 7;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
430 conf.do_relay = TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
431 conf.alias_local_cmp = strcmp;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
432 conf.max_defer_time = 86400 * 4; /* 4 days */
120
cd59a5b4d3dd added support for SMTP SIZE 0 (unlimited)
meillo@marmaro.de
parents: 117
diff changeset
433 conf.max_msg_size = 0; /* no limit on msg size */
151
e20fe8c9936a default values for logdir and spooldir
meillo@marmaro.de
parents: 131
diff changeset
434 conf.spool_dir = SPOOL_DIR;
152
dfb6143e7832 mail_dir defaults to /var/mail now
meillo@marmaro.de
parents: 151
diff changeset
435 conf.mail_dir = "/var/mail";
206
0241aaccfcdb default listen_addresses: use 127.0.0.1 instead of `localhost'
meillo@marmaro.de
parents: 205
diff changeset
436 /* we use 127.0.0.1 because `localhost' could be bound to some
0241aaccfcdb default listen_addresses: use 127.0.0.1 instead of `localhost'
meillo@marmaro.de
parents: 205
diff changeset
437 other IP address. This is unlikely but could be. Using
0241aaccfcdb default listen_addresses: use 127.0.0.1 instead of `localhost'
meillo@marmaro.de
parents: 205
diff changeset
438 127.0.0.1 is more safe. See mailing list for details */
0241aaccfcdb default listen_addresses: use 127.0.0.1 instead of `localhost'
meillo@marmaro.de
parents: 205
diff changeset
439 conf.listen_addresses = g_list_append(NULL, parse_interface("127.0.0.1", 25));
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
440
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
441 if ((in = fopen(filename, "r")) == NULL) {
155
b5ab9cb2f18a shut down on errors reading config file
meillo@marmaro.de
parents: 153
diff changeset
442 logwrite(LOG_ALERT, "could not open config file %s: %s\n", filename, strerror(errno));
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
443 return FALSE;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
444 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
445
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
446 gchar lval[256], rval[2048];
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
447 while (read_statement(in, lval, 256, rval, 2048)) {
114
a80ebfa16cd5 better debugging output (thanks to Paolo)
meillo@marmaro.de
parents: 28
diff changeset
448 DEBUG(6) fprintf(stderr,"read_conf(): lval=%s\n", lval);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
449 if (strcmp(lval, "debug_level") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
450 conf.debug_level = atoi(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
451 else if (strcmp(lval, "run_as_user") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
452 if (!conf.run_as_user) /* you should not be able to reset that flag */
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
453 conf.run_as_user = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
454 } else if (strcmp(lval, "use_syslog") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
455 conf.use_syslog = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
456 else if (strcmp(lval, "mail_dir") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
457 conf.mail_dir = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
458 else if (strcmp(lval, "lock_dir") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
459 conf.lock_dir = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
460 else if (strcmp(lval, "spool_dir") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
461 conf.spool_dir = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
462 else if (strcmp(lval, "log_dir") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
463 conf.log_dir = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
464 else if (strcmp(lval, "host_name") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
465 if (rval[0] != '/')
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
466 conf.host_name = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
467 else {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
468 char buf[256];
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
469 FILE *fptr = fopen(rval, "rt");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
470 if (fptr) {
155
b5ab9cb2f18a shut down on errors reading config file
meillo@marmaro.de
parents: 153
diff changeset
471 logwrite(LOG_ALERT, "could not open %s: %s\n", rval, strerror(errno));
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
472 return FALSE;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
473 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
474 fgets(buf, 255, fptr);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
475 g_strchomp(buf);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
476 conf.host_name = g_strdup(buf);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
477 fclose(fptr);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
478 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
479 } else if (strcmp(lval, "local_hosts") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
480 conf.local_hosts = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
481 else if (strcmp(lval, "local_addresses") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
482 conf.local_addresses = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
483 else if (strcmp(lval, "not_local_addresses") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
484 conf.not_local_addresses = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
485 else if (strcmp(lval, "local_nets") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
486 conf.local_nets = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
487 else if (strcmp(lval, "do_save_envelope_to") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
488 conf.do_save_envelope_to = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
489 else if (strcmp(lval, "defer_all") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
490 conf.defer_all = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
491 else if (strcmp(lval, "do_relay") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
492 conf.do_relay = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
493 else if (strcmp(lval, "alias_file") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
494 conf.alias_file = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
495 } else if (strcmp(lval, "alias_local_caseless") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
496 conf.alias_local_cmp = parse_boolean(rval) ? strcasecmp : strcmp;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
497 } else if (strcmp(lval, "mbox_default") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
498 conf.mbox_default = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
499 } else if (strcmp(lval, "mbox_users") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
500 conf.mbox_users = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
501 } else if (strcmp(lval, "mda_users") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
502 conf.mda_users = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
503 } else if (strcmp(lval, "mda") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
504 conf.mda = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
505 } else if (strcmp(lval, "mda_fromline") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
506 conf.mda_fromline = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
507 } else if (strcmp(lval, "mda_fromhack") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
508 conf.mda_fromhack = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
509 } else if (strcmp(lval, "pipe_fromline") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
510 conf.pipe_fromline = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
511 } else if (strcmp(lval, "pipe_fromhack") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
512 conf.pipe_fromhack = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
513 } else if (strcmp(lval, "listen_addresses") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
514 GList *node;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
515 GList *tmp_list = parse_list(rval, FALSE);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
516
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
517 conf.listen_addresses = NULL;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
518 foreach(tmp_list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
519 conf.listen_addresses = g_list_append(conf.listen_addresses, parse_interface((gchar *) (node-> data), 25));
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
520 g_free(node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
521 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
522 g_list_free(tmp_list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
523 } else if (strcmp(lval, "ident_trusted_nets") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
524 #ifdef ENABLE_IDENT
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
525 GList *node;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
526 GList *tmp_list = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
527
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
528 conf.ident_trusted_nets = NULL;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
529 foreach(tmp_list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
530 conf.ident_trusted_nets = g_list_append(conf.ident_trusted_nets, parse_network((gchar *) (node->data), 25));
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
531 g_free(node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
532 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
533 g_list_free(tmp_list);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
534 #else
155
b5ab9cb2f18a shut down on errors reading config file
meillo@marmaro.de
parents: 153
diff changeset
535 logwrite(LOG_WARNING, "%s ignored: not compiled with ident support\n", lval);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
536 #endif
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
537 } else if ((strncmp(lval, "connect_route.", 14) == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
538 || (strncmp(lval, "online_routes.", 14) == 0)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
539 GList *file_list = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
540 table_pair *pair = create_pair(&(lval[14]), file_list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
541 conf.connect_routes = g_list_append(conf.connect_routes, pair);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
542 } else if (strcmp(lval, "local_net_route") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
543 conf.local_net_routes = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
544 } else if (strcmp(lval, "online_detect") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
545 conf.online_detect = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
546 else if (strcmp(lval, "online_file") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
547 conf.online_file = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
548 else if (strcmp(lval, "online_pipe") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
549 conf.online_pipe = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
550 else if (strcmp(lval, "do_queue") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
551 conf.do_queue = parse_boolean(rval);
192
89f951be358f REMOVED POP3 SUPPORT
meillo@marmaro.de
parents: 190
diff changeset
552 else if (strcmp(lval, "errmsg_file") == 0)
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
553 conf.errmsg_file = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
554 else if (strcmp(lval, "warnmsg_file") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
555 conf.warnmsg_file = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
556 else if (strcmp(lval, "warn_intervals") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
557 conf.warn_intervals = parse_list(rval, FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
558 else if (strcmp(lval, "max_defer_time") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
559 gint dummy;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
560 gint ival = time_interval(rval, &dummy);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
561 if (ival < 0)
155
b5ab9cb2f18a shut down on errors reading config file
meillo@marmaro.de
parents: 153
diff changeset
562 logwrite(LOG_WARNING, "invalid time interval for 'max_defer_time': %s\n", rval);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
563 else
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
564 conf.max_defer_time = ival;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
565 } else if (strcmp(lval, "log_user") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
566 conf.log_user = g_strdup(rval);
117
5ec5e6637049 added server-side SMTP SIZE support (patch by Paolo)
meillo@marmaro.de
parents: 115
diff changeset
567 else if(strcmp(lval, "max_msg_size") == 0) {
5ec5e6637049 added server-side SMTP SIZE support (patch by Paolo)
meillo@marmaro.de
parents: 115
diff changeset
568 conf.max_msg_size = atol(rval);
5ec5e6637049 added server-side SMTP SIZE support (patch by Paolo)
meillo@marmaro.de
parents: 115
diff changeset
569 DEBUG(6) fprintf(stderr,"rval=%s, conf.max_msg_size=%ld\n",
5ec5e6637049 added server-side SMTP SIZE support (patch by Paolo)
meillo@marmaro.de
parents: 115
diff changeset
570 rval, conf.max_msg_size);
5ec5e6637049 added server-side SMTP SIZE support (patch by Paolo)
meillo@marmaro.de
parents: 115
diff changeset
571 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
572 else
155
b5ab9cb2f18a shut down on errors reading config file
meillo@marmaro.de
parents: 153
diff changeset
573 logwrite(LOG_WARNING, "var '%s' not (yet) known, ignored\n", lval);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
574 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
575 fclose(in);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
576
156
ee2afbf92428 require host_name to be set in config file
meillo@marmaro.de
parents: 155
diff changeset
577 if (!conf.host_name) {
ee2afbf92428 require host_name to be set in config file
meillo@marmaro.de
parents: 155
diff changeset
578 logwrite(LOG_ALERT, "`host_name' MUST be set in masqmail.conf. See man page\n");
ee2afbf92428 require host_name to be set in config file
meillo@marmaro.de
parents: 155
diff changeset
579 return FALSE;
ee2afbf92428 require host_name to be set in config file
meillo@marmaro.de
parents: 155
diff changeset
580 }
ee2afbf92428 require host_name to be set in config file
meillo@marmaro.de
parents: 155
diff changeset
581
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
582 if (conf.errmsg_file == NULL)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
583 conf.errmsg_file = g_strdup(DATA_DIR "/tpl/failmsg.tpl");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
584 if (conf.warnmsg_file == NULL)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
585 conf.warnmsg_file = g_strdup(DATA_DIR "/tpl/warnmsg.tpl");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
586
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
587 if (conf.lock_dir == NULL)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
588 conf.lock_dir = g_strdup_printf("%s/lock/", conf.spool_dir);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
589
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
590 if (conf.mbox_default == NULL)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
591 conf.mbox_default = g_strdup("mbox");
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
592
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
593 if (conf.warn_intervals == NULL)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
594 conf.warn_intervals = parse_list("1h;4h;8h;1d;2d;3d", FALSE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
595
157
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
596 if (!conf.local_hosts) {
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
597 char* shortname = strdup(conf.host_name);
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
598 char* p = strchr(shortname, '.');
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
599 if (p) {
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
600 *p = '\0';
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
601 }
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
602 /* we don't care if shortname and conf.host_name are the same */
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
603 char* local_hosts_str = g_strdup_printf("localhost;%s;%s", shortname, conf.host_name);
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
604 conf.local_hosts = parse_list(local_hosts_str, FALSE);
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
605 free(shortname);
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
606 free(local_hosts_str);
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
607 }
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
608
586f001f5bbd local_hosts defaults to localhost;foo;foo.example.org now
meillo@marmaro.de
parents: 156
diff changeset
609
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
610 return TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
611 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
612
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
613 connect_route*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
614 read_route(gchar * filename, gboolean is_local_net)
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
615 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
616 gboolean ok = FALSE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
617 FILE *in;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
618
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
619 connect_route *route = g_malloc(sizeof(connect_route));
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
620 memset(route, 0, sizeof(connect_route));
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
621
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
622 DEBUG(5) debugf("read_route, filename = %s\n", filename);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
623
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
624 route->filename = g_strdup(filename);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
625 route->name = g_strdup(filename); /* quick hack */
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
626
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
627 route->protocol = g_strdup("smtp");
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
628 route->expand_h_sender_address = TRUE;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
629
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
630 route->is_local_net = is_local_net;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
631
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
632 route->do_pipelining = TRUE;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
633
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
634 if ((in = fopen(route->filename, "r")) == NULL) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
635 logwrite(LOG_ALERT, "could not open route file %s: %s\n", route->filename, strerror(errno));
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
636 g_free(route);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
637 return NULL;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
638 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
639
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
640 gchar lval[256], rval[2048];
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
641 while (read_statement(in, lval, 256, rval, 2048)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
642 if (strcmp(lval, "protocol") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
643 route->protocol = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
644 else if (strcmp(lval, "mail_host") == 0)
178
91f8ee6514f5 removed `remote_port' config option
meillo@marmaro.de
parents: 164
diff changeset
645 route->mail_host = parse_interface(rval, 25);
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
646 else if (strcmp(lval, "helo_name") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
647 route->helo_name = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
648 else if (strcmp(lval, "wrapper") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
649 route->wrapper = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
650 else if (strcmp(lval, "connect_error_fail") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
651 route->connect_error_fail = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
652 else if (strcmp(lval, "do_correct_helo") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
653 route->do_correct_helo = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
654 else if (strcmp(lval, "do_pipelining") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
655 route->do_pipelining = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
656 else if (strcmp(lval, "allowed_return_paths") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
657 route->allowed_return_paths = parse_address_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
658 else if (strcmp(lval, "allowed_mail_locals") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
659 route->allowed_mail_locals = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
660 else if (strcmp(lval, "not_allowed_return_paths") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
661 route->not_allowed_return_paths = parse_address_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
662 else if (strcmp(lval, "not_allowed_mail_locals") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
663 route->not_allowed_mail_locals = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
664 else if (strcmp(lval, "allowed_rcpt_domains") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
665 route->allowed_rcpt_domains = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
666 else if (strcmp(lval, "not_allowed_rcpt_domains") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
667 route->not_allowed_rcpt_domains = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
668 else if (strcmp(lval, "set_h_from_domain") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
669 route->set_h_from_domain = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
670 else if (strcmp(lval, "set_h_reply_to_domain") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
671 route->set_h_reply_to_domain = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
672 else if (strcmp(lval, "set_return_path_domain") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
673 route->set_return_path_domain = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
674 else if (strcmp(lval, "map_return_path_addresses") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
675 GList *node, *list;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
676
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
677 list = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
678 foreach(list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
679 gchar *item = (gchar *) (node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
680 table_pair *pair = parse_table_pair(item, ':');
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
681 address *addr = create_address((gchar *) (pair->value), TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
682 g_free(pair->value);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
683 pair->value = (gpointer *) addr;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
684 route->map_return_path_addresses = g_list_append(route->map_return_path_addresses, pair);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
685 g_free(item);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
686 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
687 g_list_free(list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
688 } else if (strcmp(lval, "map_h_from_addresses") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
689 GList *list, *node;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
690
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
691 list = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
692 foreach(list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
693 gchar *item = (gchar *) (node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
694 table_pair *pair = parse_table_pair(item, ':');
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
695 route->map_h_from_addresses = g_list_append(route->map_h_from_addresses, pair);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
696 g_free(item);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
697 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
698 g_list_free(list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
699 } else if (strcmp(lval, "map_h_reply_to_addresses") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
700 GList *list, *node;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
701
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
702 list = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
703 foreach(list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
704 gchar *item = (gchar *) (node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
705 table_pair *pair = parse_table_pair(item, ':');
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
706 route->map_h_reply_to_addresses = g_list_append(route->map_h_reply_to_addresses, pair);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
707 g_free(item);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
708 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
709 g_list_free(list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
710 } else if (strcmp(lval, "map_h_mail_followup_to_addresses") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
711 GList *list, *node;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
712
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
713 list = parse_list(rval, TRUE);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
714 foreach(list, node) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
715 gchar *item = (gchar *) (node->data);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
716 table_pair *pair = parse_table_pair(item, ':');
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
717 route->map_h_mail_followup_to_addresses = g_list_append(route->map_h_mail_followup_to_addresses, pair);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
718 g_free(item);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
719 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
720 g_list_free(list);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
721 } else if (strcmp(lval, "expand_h_sender_domain") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
722 route->expand_h_sender_domain = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
723 } else if (strcmp(lval, "expand_h_sender_address") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
724 route->expand_h_sender_address = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
725 } else if (strcmp(lval, "resolve_list") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
726 route->resolve_list = parse_resolve_list(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
727 else if (strcmp(lval, "do_ssl") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
728 /* we ignore this. This option is used by sqilconf */
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
729 ;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
730 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
731 #ifdef ENABLE_AUTH
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
732 else if (strcmp(lval, "auth_name") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
733 route->auth_name = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
734 } else if (strcmp(lval, "auth_login") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
735 route->auth_login = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
736 } else if (strcmp(lval, "auth_secret") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
737 route->auth_secret = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
738 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
739 #else
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
740 else if ((strcmp(lval, "auth_name") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
741 || (strcmp(lval, "auth_login") == 0)
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
742 || (strcmp(lval, "auth_secret") == 0)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
743 logwrite(LOG_WARNING, "%s ignored: not compiled with auth support.\n", lval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
744 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
745 #endif
190
6b4a101a2455 forgot to remove the pop3_login option in conf.c in the last commit
meillo@marmaro.de
parents: 178
diff changeset
746 else if (strcmp(lval, "pipe") == 0) {
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
747 route->pipe = g_strdup(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
748 } else if (strcmp(lval, "pipe_fromline") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
749 route->pipe_fromline = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
750 } else if (strcmp(lval, "pipe_fromhack") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
751 route->pipe_fromhack = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
752 } else if (strcmp(lval, "last_route") == 0) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
753 route->last_route = parse_boolean(rval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
754 } else
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
755 logwrite(LOG_WARNING, "var '%s' not (yet) known, ignored\n", lval);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
756 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
757
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
758 if (route->resolve_list == NULL) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
759 if (is_local_net) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
760 route->resolve_list = g_list_append(NULL, resolve_byname);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
761 } else {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
762 #ifdef ENABLE_RESOLVER
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
763 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_mx);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
764 route->resolve_list = g_list_append(route->resolve_list, resolve_dns_a);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
765 #endif
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
766 route->resolve_list = g_list_append(route->resolve_list, resolve_byname);
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
767 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
768 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
769 fclose(in);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
770 ok = TRUE;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
771
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
772 /* warn user about misconfigurations: */
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
773 if ((route->map_h_from_addresses != NULL) && (route->set_h_from_domain != NULL)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
774 logwrite(LOG_WARNING, "'map_h_from_addresses' overrides 'set_h_from_domain'\n");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
775 g_free(route->set_h_from_domain);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
776 route->set_h_from_domain = NULL;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
777 }
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
778 if ((route->map_h_reply_to_addresses != NULL) && (route->set_h_reply_to_domain != NULL)) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
779 logwrite(LOG_WARNING, "'map_h_reply_to_addresses' overrides 'set_h_reply_to_domain'\n");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
780 g_free(route->set_h_reply_to_domain);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
781 route->set_h_reply_to_domain = NULL;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
782 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
783
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
784 if (!ok) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
785 g_free(route);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
786 route = NULL;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
787 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
788
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
789 return route;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
790 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
791
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
792 static void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
793 _g_list_free_all(GList * list)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
794 {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
795 GList *node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
796 if (list) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
797 foreach(list, node)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
798 g_free(node->data);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
799 g_list_free(list);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
800 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
801 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
802
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
803 void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
804 destroy_route(connect_route * r)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
805 {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
806 if (r->filename)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
807 g_free(r->filename);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
808 if (r->protocol)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
809 g_free(r->protocol);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
810 if (r->mail_host) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
811 g_free(r->mail_host->address);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
812 g_free(r->mail_host);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
813 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
814 if (r->wrapper)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
815 g_free(r->wrapper);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
816 if (r->helo_name)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
817 g_free(r->helo_name);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
818 _g_list_free_all(r->allowed_mail_locals);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
819 _g_list_free_all(r->not_allowed_mail_locals);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
820 _g_list_free_all(r->allowed_rcpt_domains);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
821 _g_list_free_all(r->not_allowed_rcpt_domains);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
822 if (r->set_h_from_domain)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
823 g_free(r->set_h_from_domain);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
824 if (r->set_h_reply_to_domain)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
825 g_free(r->set_h_reply_to_domain);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
826 if (r->set_return_path_domain)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
827 g_free(r->set_return_path_domain);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
828 if (r->map_h_reply_to_addresses)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
829 destroy_table(r->map_h_reply_to_addresses);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
830 if (r->resolve_list)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
831 g_list_free(r->resolve_list);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
832 #ifdef ENABLE_AUTH
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
833 if (r->auth_name)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
834 g_free(r->auth_name);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
835 if (r->auth_login)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
836 g_free(r->auth_login);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
837 if (r->auth_secret)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
838 g_free(r->auth_secret);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
839 #endif
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
840 if (r->pipe)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
841 g_free(r->pipe);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
842 g_free(r);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
843 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
844
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
845 GList*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
846 read_route_list(GList * rf_list, gboolean is_local_net)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
847 {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
848 GList *list = NULL;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
849 GList *node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
850 uid_t saved_uid, saved_gid;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
851
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
852 if (!conf.run_as_user) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
853 set_euidgid(0, 0, &saved_uid, &saved_gid);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
854 }
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
855
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
856 foreach(rf_list, node) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
857 gchar *fname = (gchar *) (node->data);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
858 connect_route *route = read_route(fname, is_local_net);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
859 if (route)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
860 list = g_list_append(list, route);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
861 else
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
862 logwrite(LOG_ALERT, "could not read route configuration %s\n", fname);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
863 }
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
864
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
865 /* set uid and gid back */
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
866 if (!conf.run_as_user) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
867 set_euidgid(saved_uid, saved_gid, NULL, NULL);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
868 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
869
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
870 return list;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
871 }
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
872
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
873 void
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
874 destroy_route_list(GList * list)
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
875 {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
876 GList *node;
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
877
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
878 foreach(list, node) {
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
879 connect_route *route = (connect_route *) (node->data);
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
880 destroy_route(route);
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
881 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
882 g_list_free(list);
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
883 }
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
884
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
885 connect_route*
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
886 create_local_route()
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
887 {
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
888 connect_route *route;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
889
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
890 route = g_malloc(sizeof(connect_route));
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
891 if (!route) {
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
892 return NULL;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
893 }
28
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
894 memset(route, 0, sizeof(connect_route));
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
895 route->protocol = g_strdup("smtp");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
896 route->is_local_net = TRUE;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
897 route->name = g_strdup("local_net (default)");
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
898 route->expand_h_sender_address = TRUE;
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
899 route->resolve_list = g_list_append(NULL, resolve_byname);
71605f542ecc flattened conditional nesting
meillo@marmaro.de
parents: 14
diff changeset
900 route->connect_error_fail = TRUE;
10
26e34ae9a3e3 changed indention and line wrapping to a more consistent style
meillo@marmaro.de
parents: 0
diff changeset
901 return route;
0
08114f7dcc23 this is masqmail-0.2.21 from oliver kurth
meillo@marmaro.de
parents:
diff changeset
902 }