Code sync
[external/cups.git] / scheduler / conf.h
1 /*
2  * "$Id: conf.h 9710 2011-04-22 17:47:03Z mike $"
3  *
4  *   Configuration file definitions for the CUPS scheduler.
5  *
6  *   Copyright 2007-2011 by Apple Inc.
7  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
8  *
9  *   These coded instructions, statements, and computer programs are the
10  *   property of Apple Inc. and are protected by Federal copyright
11  *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
12  *   which should have been included with this file.  If this file is
13  *   file is missing or damaged, see the license at "http://www.cups.org/".
14  */
15
16
17 /*
18  * Log levels...
19  */
20
21 typedef enum
22 {
23   CUPSD_LOG_PPD = -4,                   /* Used internally for PPD keywords */
24   CUPSD_LOG_ATTR,                       /* Used internally for attributes */
25   CUPSD_LOG_STATE,                      /* Used internally for state-reasons */
26   CUPSD_LOG_PAGE,                       /* Used internally for page logging */
27   CUPSD_LOG_NONE,
28   CUPSD_LOG_EMERG,                      /* Emergency issues */
29   CUPSD_LOG_ALERT,                      /* Something bad happened that needs attention */
30   CUPSD_LOG_CRIT,                       /* Critical error but server continues */
31   CUPSD_LOG_ERROR,                      /* Error condition */
32   CUPSD_LOG_WARN,                       /* Warning */
33   CUPSD_LOG_NOTICE,                     /* Normal condition that needs logging */
34   CUPSD_LOG_INFO,                       /* General information */
35   CUPSD_LOG_DEBUG,                      /* General debugging */
36   CUPSD_LOG_DEBUG2                      /* Detailed debugging */
37 } cupsd_loglevel_t;
38
39 typedef enum
40 {
41   CUPSD_ACCESSLOG_CONFIG,               /* Log config requests */
42   CUPSD_ACCESSLOG_ACTIONS,              /* Log config, print, and job management requests */
43   CUPSD_ACCESSLOG_ALL                   /* Log everything */
44 } cupsd_accesslog_t;
45
46 typedef enum
47 {
48   CUPSD_TIME_STANDARD,                  /* "Standard" Apache/CLF format */
49   CUPSD_TIME_USECS                      /* Standard format with microseconds */
50 } cupsd_time_t;
51
52
53 /*
54  * FatalErrors flags...
55  */
56
57 #define CUPSD_FATAL_NONE        0       /* No errors are fatal */
58 #define CUPSD_FATAL_BROWSE      1       /* Browse bind errors are fatal */
59 #define CUPSD_FATAL_CONFIG      2       /* Config file syntax errors are fatal */
60 #define CUPSD_FATAL_LISTEN      4       /* Listen/Port bind errors are fatal */
61 #define CUPSD_FATAL_LOG         8       /* Log file errors are fatal */
62 #define CUPSD_FATAL_PERMISSIONS 16      /* File permission errors are fatal */
63 #define CUPSD_FATAL_ALL         ~0      /* All errors are fatal */
64
65
66 /*
67  * Printcap formats...
68  */
69
70 #define PRINTCAP_BSD            0       /* Berkeley LPD format */
71 #define PRINTCAP_SOLARIS        1       /* Solaris lpsched format */
72 #define PRINTCAP_PLIST          2       /* Mac OS X plist format */
73
74
75 /*
76  * SSL options (bits)...
77  */
78
79 #define CUPSD_SSL_NONE          0       /* No special options */
80 #define CUPSD_SSL_NOEMPTY       1       /* Do not insert empty fragments */
81
82
83 /*
84  * ServerAlias data...
85  */
86
87 typedef struct
88 {
89   size_t        namelen;                /* Length of alias name */
90   char          name[1];                /* Alias name */
91 } cupsd_alias_t;
92
93
94 /*
95  * Globals...
96  */
97
98 VAR char                *ConfigurationFile      VALUE(NULL),
99                                         /* Configuration file to use */
100                         *ServerName             VALUE(NULL),
101                                         /* FQDN for server */
102                         *ServerAdmin            VALUE(NULL),
103                                         /* Administrator's email */
104                         *ServerRoot             VALUE(NULL),
105                                         /* Root directory for scheduler */
106                         *ServerBin              VALUE(NULL),
107                                         /* Root directory for binaries */
108                         *StateDir               VALUE(NULL),
109                                         /* Root directory for state data */
110                         *RequestRoot            VALUE(NULL),
111                                         /* Directory for request files */
112                         *DocumentRoot           VALUE(NULL);
113                                         /* Root directory for documents */
114 VAR cups_array_t        *ServerAlias            VALUE(NULL);
115                                         /* Alias names for server */
116 VAR int                 ServerNameIsIP          VALUE(0);
117                                         /* Is the ServerName an IP address? */
118 VAR int                 NumSystemGroups         VALUE(0);
119                                         /* Number of system group names */
120 VAR char                *SystemGroups[MAX_SYSTEM_GROUPS]
121                                                 VALUE({0});
122                                         /* System group names */
123 VAR gid_t               SystemGroupIDs[MAX_SYSTEM_GROUPS]
124                                                 VALUE({0});
125                                         /* System group IDs */
126 VAR char                *AccessLog              VALUE(NULL),
127                                         /* Access log filename */
128                         *ErrorLog               VALUE(NULL),
129                                         /* Error log filename */
130                         *PageLog                VALUE(NULL),
131                                         /* Page log filename */
132                         *CacheDir               VALUE(NULL),
133                                         /* Cache file directory */
134                         *DataDir                VALUE(NULL),
135                                         /* Data file directory */
136                         *DefaultLanguage        VALUE(NULL),
137                                         /* Default language encoding */
138                         *DefaultLocale          VALUE(NULL),
139                                         /* Default locale */
140                         *DefaultPaperSize       VALUE(NULL),
141                                         /* Default paper size */
142                         *ErrorPolicy            VALUE(NULL),
143                                         /* Default printer-error-policy */
144                         *RIPCache               VALUE(NULL),
145                                         /* Amount of memory for RIPs */
146                         *TempDir                VALUE(NULL),
147                                         /* Temporary directory */
148                         *Printcap               VALUE(NULL),
149                                         /* Printcap file */
150                         *PrintcapGUI            VALUE(NULL),
151                                         /* GUI program to use for IRIX */
152                         *FontPath               VALUE(NULL),
153                                         /* Font search path */
154                         *RemoteRoot             VALUE(NULL),
155                                         /* Remote root user */
156                         *Classification         VALUE(NULL);
157                                         /* Classification of system */
158 VAR uid_t               User                    VALUE(1);
159                                         /* User ID for server */
160 VAR gid_t               Group                   VALUE(0);
161                                         /* Group ID for server */
162 VAR cupsd_accesslog_t   AccessLogLevel          VALUE(CUPSD_ACCESSLOG_ACTIONS);
163                                         /* Access log level */
164 VAR int                 ClassifyOverride        VALUE(0),
165                                         /* Allow overrides? */
166                         ConfigFilePerm          VALUE(0640),
167                                         /* Permissions for config files */
168                         LogDebugHistory         VALUE(99999),
169                                         /* Amount of automatic debug history */
170                         FatalErrors             VALUE(CUPSD_FATAL_CONFIG),
171                                         /* Which errors are fatal? */
172                         LogFilePerm             VALUE(0644);
173                                         /* Permissions for log files */
174 VAR cupsd_loglevel_t    LogLevel                VALUE(CUPSD_LOG_WARN);
175                                         /* Error log level */
176 VAR cupsd_time_t        LogTimeFormat           VALUE(CUPSD_TIME_STANDARD);
177                                         /* Log file time format */
178 VAR int                 MaxClients              VALUE(100),
179                                         /* Maximum number of clients */
180                         MaxClientsPerHost       VALUE(0),
181                                         /* Maximum number of clients per host */
182                         MaxCopies               VALUE(CUPS_DEFAULT_MAX_COPIES),
183                                         /* Maximum number of copies per job */
184                         MaxLogSize              VALUE(1024 * 1024),
185                                         /* Maximum size of log files */
186                         MaxRequestSize          VALUE(0),
187                                         /* Maximum size of IPP requests */
188                         HostNameLookups         VALUE(FALSE),
189                                         /* Do we do reverse lookups? */
190                         Timeout                 VALUE(DEFAULT_TIMEOUT),
191                                         /* Timeout during requests */
192                         KeepAlive               VALUE(TRUE),
193                                         /* Support the Keep-Alive option? */
194                         KeepAliveTimeout        VALUE(DEFAULT_KEEPALIVE),
195                                         /* Timeout between requests */
196                         ImplicitClasses         VALUE(TRUE),
197                                         /* Are classes implicitly created? */
198                         ImplicitAnyClasses      VALUE(FALSE),
199                                         /* Create AnyPrinter classes? */
200                         HideImplicitMembers     VALUE(TRUE),
201                                         /* Hide implicit class members? */
202                         FileDevice              VALUE(FALSE),
203                                         /* Allow file: devices? */
204                         FilterLimit             VALUE(0),
205                                         /* Max filter cost at any time */
206                         FilterLevel             VALUE(0),
207                                         /* Current filter level */
208                         FilterNice              VALUE(0),
209                                         /* Nice value for filters */
210                         ReloadTimeout           VALUE(DEFAULT_KEEPALIVE),
211                                         /* Timeout before reload from SIGHUP */
212                         RootCertDuration        VALUE(300),
213                                         /* Root certificate update interval */
214                         RunUser                 VALUE(0),
215                                         /* User to run as, used for files */
216                         PrintcapFormat          VALUE(PRINTCAP_BSD),
217                                         /* Format of printcap file? */
218                         DefaultShared           VALUE(TRUE),
219                                         /* Share printers by default? */
220                         MultipleOperationTimeout VALUE(DEFAULT_TIMEOUT),
221                                         /* multiple-operation-time-out value */
222                         WebInterface            VALUE(CUPS_DEFAULT_WEBIF);
223                                         /* Enable the web interface? */
224 VAR cups_file_t         *AccessFile             VALUE(NULL),
225                                         /* Access log file */
226                         *ErrorFile              VALUE(NULL),
227                                         /* Error log file */
228                         *PageFile               VALUE(NULL);
229                                         /* Page log file */
230 VAR char                *PageLogFormat          VALUE(NULL);
231                                         /* Page log format */
232 VAR mime_t              *MimeDatabase           VALUE(NULL);
233                                         /* MIME type database */
234 VAR int                 NumMimeTypes            VALUE(0);
235                                         /* Number of MIME types */
236 VAR const char          **MimeTypes             VALUE(NULL);
237                                         /* Array of MIME types */
238
239 #ifdef HAVE_SSL
240 VAR char                *ServerCertificate      VALUE(NULL);
241                                         /* Server certificate file */
242 #  if defined(HAVE_LIBSSL) || defined(HAVE_GNUTLS)
243 VAR char                *ServerKey              VALUE(NULL);
244                                         /* Server key file */
245 #  endif /* HAVE_LIBSSL || HAVE_GNUTLS */
246 VAR int                 SSLOptions              VALUE(CUPSD_SSL_NONE);
247                                         /* SSL/TLS options */
248 #endif /* HAVE_SSL */
249 VAR char                *PidFile                VALUE(NULL);
250                                         /* Debian CUPS pid file */
251
252 #ifdef HAVE_LAUNCHD
253 VAR int                 LaunchdTimeout          VALUE(DEFAULT_KEEPALIVE);
254                                         /* Time after which an idle cupsd will exit */
255 #endif /* HAVE_LAUNCHD */
256
257 #ifdef HAVE_AUTHORIZATION_H
258 VAR char                *SystemGroupAuthKey     VALUE(NULL);
259                                         /* System group auth key */
260 #endif /* HAVE_AUTHORIZATION_H */
261
262
263 /*
264  * Prototypes...
265  */
266
267 extern void     cupsdAddAlias(cups_array_t *aliases, const char *name);
268 extern int      cupsdCheckLogFile(cups_file_t **lf, const char *logname);
269 extern int      cupsdCheckPermissions(const char *filename,
270                                       const char *suffix, int mode,
271                                       int user, int group, int is_dir,
272                                       int create_dir);
273 extern int      cupsdCheckProgram(const char *filename, cupsd_printer_t *p);
274 extern void     cupsdFreeAliases(cups_array_t *aliases);
275 extern char     *cupsdGetDateTime(struct timeval *t, cupsd_time_t format);
276 extern void     cupsdLogFCMessage(void *context, _cups_fc_result_t result,
277                                   const char *message);
278 #ifdef HAVE_GSSAPI
279 extern int      cupsdLogGSSMessage(int level, int major_status,
280                                    int minor_status,
281                                    const char *message, ...);
282 #endif /* HAVE_GSSAPI */
283 extern int      cupsdLogJob(cupsd_job_t *job, int level, const char *message, ...)
284 #ifdef __GNUC__
285 __attribute__ ((__format__ (__printf__, 3, 4)))
286 #endif /* __GNUC__ */
287 ;
288 extern int      cupsdLogMessage(int level, const char *message, ...)
289 #ifdef __GNUC__
290 __attribute__ ((__format__ (__printf__, 2, 3)))
291 #endif /* __GNUC__ */
292 ;
293 extern int      cupsdLogPage(cupsd_job_t *job, const char *page);
294 extern int      cupsdLogRequest(cupsd_client_t *con, http_status_t code);
295 extern int      cupsdReadConfiguration(void);
296 extern int      cupsdWriteErrorLog(int level, const char *message);
297
298
299 /*
300  * End of "$Id: conf.h 9710 2011-04-22 17:47:03Z mike $".
301  */