annotate src/conf.c @ 246:4cff8638dd9b

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