annotate src/conf.c @ 162:52c82d755215

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