1/*	$Id$ */
2/*
3 * Copyright (c) 1990-1996 Sam Leffler
4 * Copyright (c) 1991-1996 Silicon Graphics, Inc.
5 * HylaFAX is a trademark of Silicon Graphics
6 *
7 * Permission to use, copy, modify, distribute, and sell this software and
8 * its documentation for any purpose is hereby granted without fee, provided
9 * that (i) the above copyright notices and this permission notice appear in
10 * all copies of the software and related documentation, and (ii) the names of
11 * Sam Leffler and Silicon Graphics may not be used in any advertising or
12 * publicity relating to the software without the specific, prior written
13 * permission of Sam Leffler and Silicon Graphics.
14 *
15 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
16 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
17 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
18 *
19 * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
20 * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
21 * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
22 * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
23 * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
24 * OF THIS SOFTWARE.
25 */
26
27/*
28 * Warning, this file was automatically created by the HylaFAX configure script
29 *
30 * VERSION:	@VERSION@
31 * DATE:	@DATE@
32 * TARGET:	@TARGET@
33 * CCOMPILER:	@CCOMPILER@
34 * CXXCOMPILER:	@CXXCOMPILER@
35 */
36#ifndef _CONFIG_
37#define	_CONFIG_
38#include "port.h"
39
40/*
41 * HylaFAX version number string
42 */
43#define HYLAFAX_VERSION HYLAFAX_VERSION_STRING
44
45#define	FAX_SPOOLDIR	"@SPOOL@"	/* pathname to top of spooling area */
46#define FAX_CLIENTBIN	"@BIN@"		/* place for client apps */
47#define FAX_LIBEXEC	"@LIBEXEC@"	/* place for lib executables */
48#define	FAX_LIBDATA	"@LIBDATA@"	/* place for lib data files */
49
50/*
51 * Client-server configuration definitions.
52 *
53 * There are currently 2 possible transport methods: INET
54 * (TCP/IP sockets), and Unix (Unix-domain sockets).
55 * The latter has some limitations but may be useful to folks
56 * not working in a network environment.
57 *
58 * NB: The Unix-domain support is unfinished.
59 */
60#define	FAX_USER	"@FAXUID@"	/* account name of the ``fax user'' */
61#define	FAX_SERVICE	"hylafax"	/* client-server service name */
62#define	FAX_PROTONAME	"tcp"		/* protocol used by client+server */
63#define	FAX_DEFPORT	4559		/* port to use if service is unknown */
64#define	FAX_DEFHOST	"localhost"	/* default host for inet-service */
65#define	FAX_DEFUNIX	"/tmp/hyla.unix"/* default Unix-domain socket */
66
67#ifndef CONFIG_INETTRANSPORT
68#define	CONFIG_INETTRANSPORT	1	/* support for TCP/IP sockets */
69#endif
70#ifndef CONFIG_UNIXTRANSPORT
71#define	CONFIG_UNIXTRANSPORT	0	/* support for Unix domain sockets */
72#endif
73
74#define	FAX_TYPERULES	"typerules"	/* file type and conversion rules */
75#define	FAX_DIALRULES	"dialrules"	/* client dialstring conversion rules */
76#define	FAX_PAGESIZES	"pagesizes"	/* page size database */
77#define	FAX_COVER	"faxcover.ps"	/* prototype cover sheet file */
78
79/*
80 * System-wide configuration files for client applications (and
81 * the hfaxd process) are located in the LIBDATA directory.  Apps
82 * look first for FAX_SYSCONF, possibly followed by an
83 * application-specific configuration file (e.g. sendfax.conf),
84 * followed by a per-user configuration file located (by default)
85 * in the user's home directory (~).  This multi-level scheme
86 * is intended to simplify both site and user customization.
87 */
88#define	FAX_SYSCONF	FAX_LIBDATA "/hyla.conf"
89#define	FAX_USERCONF	"~/.hylarc"	/* per-user configuration file */
90
91/*
92 * Server configuration definitions.
93 *
94 * The master spooling directory is broken up into several
95 * subdirectories to isolate information that should be
96 * protected (e.g. documents) and to minimize the number
97 * of files in a single directory (e.g. the send queue).
98 */
99#define	FAX_ARCHDIR	"archive"	/* subdir for archived jobs */
100#define	FAX_BINDIR	"bin"		/* subdir for server helper cmds */
101#define	FAX_CLIENTDIR	"client"	/* subdir for client FIFO files */
102#define	FAX_DOCDIR	"docq"		/* subdir for documents to send */
103#define	FAX_DONEDIR	"doneq"		/* subdir for completed jobs */
104#define	FAX_ETCDIR	"etc"		/* subdir for configuration files  */
105#define	FAX_INFODIR	"info"		/* subdir for remote machine info */
106#define	FAX_LOGDIR	"log"		/* subdir for log files */
107#define	FAX_POLLDIR	"pollq"		/* subdir for pollable documents */
108#define	FAX_RECVDIR	"recvq"		/* subdir for received facsimiles  */
109#define	FAX_SENDDIR	"sendq"		/* subdir for send description files */
110#define	FAX_STATUSDIR	"status"	/* subdir for server status files */
111#define	FAX_TMPDIR	"tmp"		/* subdir for temp copies of docs */
112
113/*
114 * Files that reside in FAX_DOCDIR, FAX_SENDDIR, FAX_RECVDIR,
115 * FAX_POLLDIR, and FAX_ARCHDIR are named using sequence number
116 * information that is kept in a sequence file in the specific
117 * directory (e.g. docq/seqf for document files).
118 */
119#define	FAX_SEQF	"seqf"		/* sequencing info filename */
120
121/*
122 * Job description files that reside in FAX_SENDDIR and
123 * FAX_DONEDIR are named using the job identifier and a
124 * prefix string (``q'' currently).
125 */
126#define FAX_QFILEPREF	"q"		/* prefix for job queue file */
127
128/*
129 * Configuration files that reside in the spooling area
130 * are all named with a ``config'' prefix to uniquely
131 * identify them.
132 */
133#define	FAX_CONFIG	FAX_ETCDIR "/config"
134
135/*
136 * Send/recv logging information is written to an xferfaxlog
137 * file; currently in an ASCII format designed for processing
138 * by programs like awk and perl.
139 */
140#define	FAX_XFERLOG	FAX_ETCDIR "/xferfaxlog"
141
142/*
143 * Client access to services on the server machine is controlled
144 * by information in the ``hosts.hfaxd'' file.  This is actually a
145 * minsomer; the file has much more information than host names
146 * (but it used to only have host-related information).
147 */
148#define	FAX_PERMFILE	FAX_ETCDIR "/hosts.hfaxd"
149
150/*
151 * Server processes write various status information to files
152 * that reside in the ``status'' directory.  These files are
153 * named, by convention using their device identifier ad an
154 * ``info'' suffix (e.g. ttyf2.info).
155 */
156#define	FAX_INFOSUF	"info"		/* suffix for server info files */
157
158#define	FAX_FIFO	"FIFO"		/* FIFO file for talking to daemon */
159#define	MODEM_ANY	"any"		/* any modem acceptable identifier */
160
161/* NB: all times are given in seconds */
162#define	FAX_REQBUSY	(3*60)		/* requeue interval on busy answer */
163#define	FAX_REQPROTO	(1*60)		/* requeue interval on protocol error */
164#define	FAX_REQUEUE	(5*60)		/* requeue interval on other */
165#define FAX_RETBUSY	(u_int)-1		/* retry maximum on busy answer */
166#define FAX_RETRY	(u_int)-1		/* retry maximum for others */
167#define	FAX_RETRIES	3		/* number times to retry send */
168#define	FAX_REDIALS	12		/* number times to dial phone */
169#define	FAX_TIMEOUT	"now + 3 hours"	/* default job timeout (at syntax) */
170#define	FAX_DEFVRES	@DEFVRES@	/* default vertical resolution */
171					/* default is no email notification */
172#define	FAX_DEFNOTIFY	SendFaxJob::no_notice
173#define	FAX_DEFPRIORITY	127		/* default job priority */
174
175/*
176 * UUCP lock file support exists for both ASCII-style and
177 * binary-style files.  The difference refers to whether
178 * the process ID's written to the lock file are written
179 * in ASCII or binary.  HylaFAX server programs can be
180 * configured to use either through the configuration files
181 * and there is also support for certain lock file naming
182 * conventions required by different systems such as SCO
183 * and SVR4.  Consult the documentation for more details.
184 */
185#define	UUCP_LOCKDIR	"@UUCP_LOCKDIR@" /* directory for UUCP lock files */
186#define	UUCP_LOCKTYPE	"@UUCP_LOCKTYPE@"		/* UUCP lock file type */
187#define	UUCP_LOCKMODE	0444		/* UUCP lock file creation mode */
188#define	UUCP_PIDDIGITS	10		/* # digits to write to lock file */
189/*
190 * HylaFAX server processes that create UUCP lock files
191 * check that the lock file owner exists and if they do
192 * not they can be configured to automatically purge the
193 * lock file.  This operation is only done for lock files
194 * that appear to be orphaned longer than some period of
195 * time.  The default value for this interval is 30 seconds
196 * but it can be changed through the configuration files.
197 * Setting this value to 0 disables this automatic purging
198 * of UUCP lock files.
199 */
200#define	UUCP_LCKTIMEOUT	30		/* UUCP lock auto-expiration (secs) */
201
202/*
203 * Default syslog facility.  This value can be redefined
204 * through the LogFaclity configuration parameters read
205 * by all the server programs.
206 */
207#define	LOG_FAX		"daemon"	/* logging identity */
208
209/*
210 * The pathnames of the getty, vgetty, and egetty programs
211 * invoked by faxgetty to handle inbound data and voice
212 * calls and for doing adaptive call type deduction.  These
213 * parameters are compiled into the binary to avoid possible
214 * security problems.
215 */
216#ifndef _PATH_GETTY
217#define	_PATH_GETTY	"@PATHGETTY@"	/* getty program for data call */
218#endif
219#ifndef _PATH_VGETTY
220#define	_PATH_VGETTY	"@PATHVGETTY@"	/* vgetty program for voice call */
221#endif
222#ifndef _PATH_EGETTY
223#define	_PATH_EGETTY	"@PATHEGETTY@"	/* egetty for deducing call type */
224#endif
225
226/*
227 * The default pathname for the Fontmap(s) file
228 * is compiled into util/TextFormat.o but can be overridden
229 * through configuration files.
230 */
231#ifndef _PATH_FONTMAP
232#define	_PATH_FONTMAP	"@FONTMAP@"	/* location of Fontmap(s) */
233#endif
234
235/*
236 * The default pathname for the location of the fonts
237 * is compiled into util/TextFormat.o but can be overridden
238 * through configuration files.
239 */
240#ifndef _PATH_AFM
241#define	_PATH_AFM	"@FONTPATH@"	/* location of Fonts */
242#endif
243
244/*
245 * The following commands are invoked by server processes
246 * to do work that might need to be customized.  Typically
247 * these ``commands'' are shell scripts, but there's nothing
248 * to stop them from being something else.
249 *
250 * Note that non-absolute pathnames must be given relative
251 * to the top of the spooling area.
252 */
253#define	FAX_NOTIFYCMD	FAX_BINDIR "/notify"	/* cmd to do job notification */
254#define	FAX_TRANSCMD	FAX_BINDIR "/transcript"/* cmd to return transcript */
255#define	FAX_FAXRCVDCMD	FAX_BINDIR "/faxrcvd"	/* cmd to process a recvd fax */
256#define	FAX_POLLRCVDCMD	FAX_BINDIR "/pollrcvd"	/* cmd to process a recvd fax */
257#define FAX_PS2FAXCMD	FAX_BINDIR "/ps2fax"	/* cmd to convert postscript */
258#define FAX_PDF2FAXCMD	FAX_BINDIR "/pdf2fax"	/* cmd to convert PDF */
259#define FAX_PCL2FAXCMD	FAX_BINDIR "/pcl2fax"	/* cmd to convert PCL */
260#define FAX_TIFF2FAXCMD	FAX_BINDIR "/tiff2fax"	/* cmd to convert TIFF */
261#define	FAX_COVERCMD	FAX_BINDIR "/mkcover"	/* cmd to make cont coverpage */
262#define	FAX_WEDGEDCMD	FAX_BINDIR "/wedged"	/* cmd to handle wedged modem */
263
264/*
265 * SNPP-related client-server definitions.
266 */
267#define	SNPP_SERVICE	"snpp"		/* Simple Network Pager Protocol */
268#define	SNPP_PROTONAME	"tcp"		/* protocol used by client+server */
269#define	SNPP_DEFPORT	444		/* port to use if service is unknown */
270#define	SNPP_DEFHOST	"localhost"	/* default host for SNPP service */
271/* default values for SNPP job scheduling and handling */
272#define	SNPP_DEFQUEUE	false		/* default is synchronous delivery */
273#define	SNPP_DEFLEVEL	1		/* default service level */
274#define	SNPP_DEFRETRIES	3		/* number times to retry send */
275#define	SNPP_DEFREDIALS	12		/* number times to dial phone */
276#define	SNPP_DEFNOTIFY	"none"		/* default is no email notification */
277#define	SNPP_DEFPRIORITY 127		/* default job priority */
278
279/*
280 * Sequence numbers are assigned for jobs and documents
281 * stored in the fax filesystem.  We no longer constrain these
282 * numbers to be 16-bit values.
283 */
284#define	MAXSEQNUM	999999999
285#define	NEXTSEQNUM(x)	(((x)+1) % MAXSEQNUM)
286
287/*
288 * PAM Authentication
289 */
290@HAVE_PAM@
291
292/*
293 * JBIG library support
294 */
295@HAVE_JBIG@
296@HAVE_JBIGTIFF@
297
298/*
299 * i18n support
300 */
301@ENABLE_NLS@
302#define LOCALEDIR "@LOCALEDIR@"
303#define LOCALE_DOMAIN "@LOCALE_DOMAIN@"
304
305#endif
306
307#if defined(__DragonFly__)
308    #define HAS_UTMPX 1
309    #define HAS_EXIT_STATUS 1
310#endif
311