10 #include "auto_qmail.h"
26 if ((ch < 32) || (ch > 126)) ch = '?';
27 substdio_put(subfdout,&ch,1);
33 void do_int(fn,def,pre,post)
40 substdio_puts(subfdout,"\n");
41 substdio_puts(subfdout,fn);
42 substdio_puts(subfdout,": ");
43 switch(control_readint(&i,fn)) {
45 substdio_puts(subfdout,"(Default.) ");
46 substdio_puts(subfdout,pre);
47 substdio_puts(subfdout,def);
48 substdio_puts(subfdout,post);
49 substdio_puts(subfdout,".\n");
53 substdio_puts(subfdout,pre);
54 substdio_put(subfdout,num,fmt_uint(num,i));
55 substdio_puts(subfdout,post);
56 substdio_puts(subfdout,".\n");
59 substdio_puts(subfdout,"Oops! Trouble reading this file.\n");
64 void do_str(fn,flagme,def,pre)
70 substdio_puts(subfdout,"\n");
71 substdio_puts(subfdout,fn);
72 substdio_puts(subfdout,": ");
73 switch(control_readline(&line,fn)) {
75 substdio_puts(subfdout,"(Default.) ");
76 if (!stralloc_copys(&line,def)) {
77 substdio_puts(subfdout,"Oops! Out of memory.\n");
81 if (!stralloc_copy(&line,&me)) {
82 substdio_puts(subfdout,"Oops! Out of memory.\n");
86 substdio_puts(subfdout,pre);
87 safeput(line.s,line.len);
88 substdio_puts(subfdout,".\n");
91 substdio_puts(subfdout,"Oops! Trouble reading this file.\n");
96 void do_lst(fn,def,pre,post)
105 substdio_puts(subfdout,"\n");
106 substdio_puts(subfdout,fn);
107 substdio_puts(subfdout,": ");
108 switch(control_readfile(&line,fn)) {
110 substdio_puts(subfdout,"(Default.) ");
111 substdio_puts(subfdout,def);
112 substdio_puts(subfdout,"\n");
115 substdio_puts(subfdout,"\n");
117 for (j = 0;j < line.len;++j)
119 substdio_puts(subfdout,pre);
120 safeput(line.s + i,j - i);
121 substdio_puts(subfdout,post);
122 substdio_puts(subfdout,"\n");
127 substdio_puts(subfdout,"Oops! Trouble reading this file.\n");
137 substdio_puts(subfdout,"The qmail control files are stored in ");
138 substdio_puts(subfdout,auto_qmail);
139 substdio_puts(subfdout,"/control.\n");
141 if (chdir(auto_qmail) == -1) {
142 substdio_puts(subfdout,"Oops! Unable to chdir to ");
143 substdio_puts(subfdout,auto_qmail);
144 substdio_puts(subfdout,".\n");
145 substdio_flush(subfdout);
148 if (chdir("control") == -1) {
149 substdio_puts(subfdout,"Oops! Unable to chdir to control.\n");
150 substdio_flush(subfdout);
156 substdio_puts(subfdout,"Oops! Unable to open current directory.\n");
157 substdio_flush(subfdout);
161 meok = control_readline(&me,"me");
163 substdio_puts(subfdout,"Oops! Trouble reading control/me.");
164 substdio_flush(subfdout);
168 do_lst("badmailfrom","Any MAIL FROM is allowed.",""," not accepted in MAIL FROM.");
169 do_str("bouncefrom",0,"MAILER-DAEMON","Bounce user name is ");
170 do_str("bouncehost",1,"bouncehost","Bounce host name is ");
171 do_int("concurrencylocal","10","Local concurrency is ","");
172 do_int("concurrencyremote","20","Remote concurrency is ","");
173 do_str("defaultdomain",1,"defaultdomain","Default domain name is ");
174 do_str("defaulthost",1,"defaulthost","Default host name is ");
175 do_str("doublebouncehost",1,"doublebouncehost","2B recipient host: ");
176 do_str("doublebounceto",0,"postmaster","2B recipient user: ");
177 do_str("envnoathost",1,"envnoathost","Presumed domain name is ");
178 do_str("helohost",1,"helohost","SMTP client HELO host name is ");
179 do_str("idhost",1,"idhost","Message-ID host name is ");
180 do_str("localiphost",1,"localiphost","Local IP address becomes ");
181 do_lst("locals","Messages for me are delivered locally.","Messages for "," are delivered locally.");
182 do_str("me",0,"undefined! Uh-oh","My name is ");
183 do_lst("percenthack","The percent hack is not allowed.","The percent hack is allowed for user%host@",".");
184 do_str("plusdomain",1,"plusdomain","Plus domain name is ");
185 do_int("queuelifetime","604800","Message lifetime in the queue is "," seconds");
186 do_lst("rcpthosts","SMTP clients may send messages to any recipient.","SMTP clients may send messages to recipients at ",".");
187 do_lst("recipientmap","No redirections.","Redirection: ","");
188 do_lst("relayhosts","No relayhosts","Relay host: ","");
189 do_str("smtpgreeting",1,"smtpgreeting","SMTP greeting: 220 ");
190 do_lst("smtproutes","No artificial SMTP routes.","SMTP route: ","");
191 do_int("timeoutconnect","60","SMTP client connection timeout is "," seconds");
192 do_int("timeoutremote","1200","SMTP client data timeout is "," seconds");
193 do_int("timeoutsmtpd","1200","SMTP server data timeout is "," seconds");
194 do_lst("virtualdomains","No virtual domains.","Virtual domain: ","");
196 while (d = readdir(dir)) {
197 if (str_equal(d->d_name,".")) continue;
198 if (str_equal(d->d_name,"..")) continue;
199 if (str_equal(d->d_name,"bouncefrom")) continue;
200 if (str_equal(d->d_name,"bouncehost")) continue;
201 if (str_equal(d->d_name,"badmailfrom")) continue;
202 if (str_equal(d->d_name,"bouncefrom")) continue;
203 if (str_equal(d->d_name,"bouncehost")) continue;
204 if (str_equal(d->d_name,"concurrencylocal")) continue;
205 if (str_equal(d->d_name,"concurrencyremote")) continue;
206 if (str_equal(d->d_name,"defaultdomain")) continue;
207 if (str_equal(d->d_name,"defaulthost")) continue;
208 if (str_equal(d->d_name,"doublebouncehost")) continue;
209 if (str_equal(d->d_name,"doublebounceto")) continue;
210 if (str_equal(d->d_name,"envnoathost")) continue;
211 if (str_equal(d->d_name,"helohost")) continue;
212 if (str_equal(d->d_name,"idhost")) continue;
213 if (str_equal(d->d_name,"localiphost")) continue;
214 if (str_equal(d->d_name,"locals")) continue;
215 if (str_equal(d->d_name,"me")) continue;
216 if (str_equal(d->d_name,"percenthack")) continue;
217 if (str_equal(d->d_name,"plusdomain")) continue;
218 if (str_equal(d->d_name,"queuelifetime")) continue;
219 if (str_equal(d->d_name,"rcpthosts")) continue;
220 if (str_equal(d->d_name,"recipientmap")) continue;
221 if (str_equal(d->d_name,"relayhosts")) continue;
222 if (str_equal(d->d_name,"smtpgreeting")) continue;
223 if (str_equal(d->d_name,"smtproutes")) continue;
224 if (str_equal(d->d_name,"timeoutconnect")) continue;
225 if (str_equal(d->d_name,"timeoutremote")) continue;
226 if (str_equal(d->d_name,"timeoutsmtpd")) continue;
227 if (str_equal(d->d_name,"virtualdomains")) continue;
228 substdio_puts(subfdout,"\n");
229 substdio_puts(subfdout,d->d_name);
230 substdio_puts(subfdout,": I have no idea what this file does.\n");
233 substdio_flush(subfdout);