]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * Configuration file definitions for the CUPS scheduler. | |
3 | * | |
4 | * Copyright © 2020-2025 by OpenPrinting. | |
5 | * Copyright © 2007-2018 by Apple Inc. | |
6 | * Copyright © 1997-2007 by Easy Software Products, all rights reserved. | |
7 | * | |
8 | * Licensed under Apache License v2.0. See the file "LICENSE" for more | |
9 | * information. | |
10 | */ | |
11 | ||
12 | ||
13 | /* | |
14 | * Log levels... | |
15 | */ | |
16 | ||
17 | typedef enum | |
18 | { | |
19 | CUPSD_LOG_PPD = -5, /* Used internally for PPD keywords */ | |
20 | CUPSD_LOG_ATTR, /* Used internally for attributes */ | |
21 | CUPSD_LOG_STATE, /* Used internally for printer-state-reasons */ | |
22 | CUPSD_LOG_JOBSTATE, /* Used internally for job-state-reasons */ | |
23 | CUPSD_LOG_PAGE, /* Used internally for page logging */ | |
24 | CUPSD_LOG_NONE, | |
25 | CUPSD_LOG_EMERG, /* Emergency issues */ | |
26 | CUPSD_LOG_ALERT, /* Something bad happened that needs attention */ | |
27 | CUPSD_LOG_CRIT, /* Critical error but server continues */ | |
28 | CUPSD_LOG_ERROR, /* Error condition */ | |
29 | CUPSD_LOG_WARN, /* Warning */ | |
30 | CUPSD_LOG_NOTICE, /* Normal condition that needs logging */ | |
31 | CUPSD_LOG_INFO, /* General information */ | |
32 | CUPSD_LOG_DEBUG, /* General debugging */ | |
33 | CUPSD_LOG_DEBUG2 /* Detailed debugging */ | |
34 | } cupsd_loglevel_t; | |
35 | ||
36 | typedef enum | |
37 | { | |
38 | CUPSD_ACCESSLOG_NONE, /* Log no requests */ | |
39 | CUPSD_ACCESSLOG_CONFIG, /* Log config requests */ | |
40 | CUPSD_ACCESSLOG_ACTIONS, /* Log config, print, and job management requests */ | |
41 | CUPSD_ACCESSLOG_ALL /* Log everything */ | |
42 | } cupsd_accesslog_t; | |
43 | ||
44 | typedef enum | |
45 | { | |
46 | CUPSD_TIME_STANDARD, /* "Standard" Apache/CLF format */ | |
47 | CUPSD_TIME_USECS /* Standard format with microseconds */ | |
48 | } cupsd_time_t; | |
49 | ||
50 | typedef enum | |
51 | { | |
52 | CUPSD_SANDBOXING_OFF, /* No sandboxing */ | |
53 | CUPSD_SANDBOXING_RELAXED, /* Relaxed sandboxing */ | |
54 | CUPSD_SANDBOXING_STRICT /* Strict sandboxing */ | |
55 | } cupsd_sandboxing_t; | |
56 | ||
57 | ||
58 | /* | |
59 | * FatalErrors flags... | |
60 | */ | |
61 | ||
62 | #define CUPSD_FATAL_NONE 0 /* No errors are fatal */ | |
63 | #define CUPSD_FATAL_BROWSE 1 /* Browse bind errors are fatal */ | |
64 | #define CUPSD_FATAL_CONFIG 2 /* Config file syntax errors are fatal */ | |
65 | #define CUPSD_FATAL_LISTEN 4 /* Listen/Port bind errors are fatal */ | |
66 | #define CUPSD_FATAL_LOG 8 /* Log file errors are fatal */ | |
67 | #define CUPSD_FATAL_PERMISSIONS 16 /* File permission errors are fatal */ | |
68 | #define CUPSD_FATAL_ALL ~0 /* All errors are fatal */ | |
69 | ||
70 | ||
71 | /* | |
72 | * Printcap formats... | |
73 | */ | |
74 | ||
75 | #define PRINTCAP_BSD 0 /* Berkeley LPD format */ | |
76 | #define PRINTCAP_SOLARIS 1 /* Solaris lpsched format */ | |
77 | #define PRINTCAP_PLIST 2 /* macOS plist format */ | |
78 | ||
79 | ||
80 | /* | |
81 | * ServerAlias data... | |
82 | */ | |
83 | ||
84 | typedef struct | |
85 | { | |
86 | size_t namelen; /* Length of alias name */ | |
87 | char name[1]; /* Alias name */ | |
88 | } cupsd_alias_t; | |
89 | ||
90 | ||
91 | /* | |
92 | * Globals... | |
93 | */ | |
94 | ||
95 | VAR char *ConfigurationFile VALUE(NULL), | |
96 | /* cupsd.conf file to use */ | |
97 | *CupsFilesFile VALUE(NULL), | |
98 | /* cups-files.conf file to use */ | |
99 | *ServerName VALUE(NULL), | |
100 | /* FQDN for server */ | |
101 | *ServerAdmin VALUE(NULL), | |
102 | /* Administrator's email */ | |
103 | *ServerRoot VALUE(NULL), | |
104 | /* Root directory for scheduler */ | |
105 | *ServerBin VALUE(NULL), | |
106 | /* Root directory for binaries */ | |
107 | *StateDir VALUE(NULL), | |
108 | /* Root directory for state data */ | |
109 | *RequestRoot VALUE(NULL), | |
110 | /* Directory for request files */ | |
111 | *DocumentRoot VALUE(NULL); | |
112 | /* Root directory for documents */ | |
113 | VAR cups_lang_t *Languages VALUE(NULL); | |
114 | /* Languages that cupsd is providing */ | |
115 | VAR cups_array_t *ServerAlias VALUE(NULL); | |
116 | /* Alias names for server */ | |
117 | VAR int ServerNameIsIP VALUE(0); | |
118 | /* Is the ServerName an IP address? */ | |
119 | VAR int NumSystemGroups VALUE(0); | |
120 | /* Number of system group names */ | |
121 | VAR char *SystemGroups[MAX_SYSTEM_GROUPS] | |
122 | VALUE({0}); | |
123 | /* System group names */ | |
124 | VAR gid_t SystemGroupIDs[MAX_SYSTEM_GROUPS] | |
125 | VALUE({0}); | |
126 | /* System group IDs */ | |
127 | VAR char *AccessLog VALUE(NULL), | |
128 | /* Access log filename */ | |
129 | *ErrorLog VALUE(NULL), | |
130 | /* Error log filename */ | |
131 | *PageLog VALUE(NULL), | |
132 | /* Page log filename */ | |
133 | *CacheDir VALUE(NULL), | |
134 | /* Cache file directory */ | |
135 | *DataDir VALUE(NULL), | |
136 | /* Data file directory */ | |
137 | *DefaultLanguage VALUE(NULL), | |
138 | /* Default language encoding */ | |
139 | *DefaultLocale VALUE(NULL), | |
140 | /* Default locale */ | |
141 | *DefaultPaperSize VALUE(NULL), | |
142 | /* Default paper size */ | |
143 | *ErrorPolicy VALUE(NULL), | |
144 | /* Default printer-error-policy */ | |
145 | *TempDir VALUE(NULL), | |
146 | /* Temporary directory */ | |
147 | *Printcap VALUE(NULL), | |
148 | /* Printcap file */ | |
149 | *RemoteRoot VALUE(NULL), | |
150 | /* Remote root user */ | |
151 | *Classification VALUE(NULL); | |
152 | /* Classification of system */ | |
153 | VAR cups_array_t *ReadyPaperSizes VALUE(NULL); | |
154 | /* List of paper sizes to list as ready */ | |
155 | VAR uid_t User VALUE(1), | |
156 | /* User ID for server */ | |
157 | RunUser VALUE(0); | |
158 | /* User to run as, used for files */ | |
159 | VAR gid_t Group VALUE(0); | |
160 | /* Group ID for server */ | |
161 | VAR cupsd_accesslog_t AccessLogLevel VALUE(CUPSD_ACCESSLOG_ACTIONS); | |
162 | /* Access log level */ | |
163 | VAR int ClassifyOverride VALUE(0), | |
164 | /* Allow overrides? */ | |
165 | LogDebugHistory VALUE(200), | |
166 | /* Amount of automatic debug history */ | |
167 | FatalErrors VALUE(CUPSD_FATAL_CONFIG), | |
168 | /* Which errors are fatal? */ | |
169 | StrictConformance VALUE(FALSE), | |
170 | /* Require strict IPP conformance? */ | |
171 | SyncOnClose VALUE(FALSE); | |
172 | /* Call fsync() when closing files? */ | |
173 | VAR mode_t ConfigFilePerm VALUE(0640U), | |
174 | /* Permissions for config files */ | |
175 | LogFilePerm VALUE(0644U); | |
176 | /* Permissions for log files */ | |
177 | VAR gid_t LogFileGroup VALUE(0); | |
178 | /* Group ID for log files */ | |
179 | VAR cupsd_loglevel_t LogLevel VALUE(CUPSD_LOG_WARN); | |
180 | /* Error log level */ | |
181 | VAR int StripUserDomain VALUE(FALSE); | |
182 | /* Strip domain in local username? */ | |
183 | VAR cupsd_time_t LogTimeFormat VALUE(CUPSD_TIME_STANDARD); | |
184 | /* Log file time format */ | |
185 | VAR cups_file_t *LogStderr VALUE(NULL); | |
186 | /* Stderr file, if any */ | |
187 | VAR cupsd_sandboxing_t Sandboxing VALUE(CUPSD_SANDBOXING_STRICT); | |
188 | /* Sandboxing level */ | |
189 | VAR int UseSandboxing VALUE(1); | |
190 | /* Use sandboxing for child procs? */ | |
191 | VAR int MaxClients VALUE(100), | |
192 | /* Maximum number of clients */ | |
193 | MaxClientsPerHost VALUE(0), | |
194 | /* Maximum number of clients per host */ | |
195 | MaxCopies VALUE(CUPS_DEFAULT_MAX_COPIES), | |
196 | /* Maximum number of copies per job */ | |
197 | MaxLogSize VALUE(1024 * 1024), | |
198 | /* Maximum size of log files */ | |
199 | MaxRequestSize VALUE(0), | |
200 | /* Maximum size of IPP requests */ | |
201 | HostNameLookups VALUE(FALSE), | |
202 | /* Do we do reverse lookups? */ | |
203 | Timeout VALUE(DEFAULT_TIMEOUT), | |
204 | /* Timeout during requests */ | |
205 | KeepAlive VALUE(TRUE), | |
206 | /* Support the Keep-Alive option? */ | |
207 | FileDevice VALUE(FALSE), | |
208 | /* Allow file: devices? */ | |
209 | FilterLimit VALUE(0), | |
210 | /* Max filter cost at any time */ | |
211 | FilterLevel VALUE(0), | |
212 | /* Current filter level */ | |
213 | FilterNice VALUE(0), | |
214 | /* Nice value for filters */ | |
215 | ReloadTimeout VALUE(DEFAULT_KEEPALIVE), | |
216 | /* Timeout before reload from SIGHUP */ | |
217 | RootCertDuration VALUE(300), | |
218 | /* Root certificate update interval */ | |
219 | PrintcapFormat VALUE(PRINTCAP_BSD), | |
220 | /* Format of printcap file? */ | |
221 | DefaultShared VALUE(TRUE), | |
222 | /* Share printers by default? */ | |
223 | MultipleOperationTimeout VALUE(DEFAULT_TIMEOUT), | |
224 | /* multiple-operation-time-out value */ | |
225 | WebInterface VALUE(CUPS_DEFAULT_WEBIF); | |
226 | /* Enable the web interface? */ | |
227 | VAR cups_file_t *AccessFile VALUE(NULL), | |
228 | /* Access log file */ | |
229 | *ErrorFile VALUE(NULL), | |
230 | /* Error log file */ | |
231 | *PageFile VALUE(NULL); | |
232 | /* Page log file */ | |
233 | VAR char *PageLogFormat VALUE(NULL); | |
234 | /* Page log format */ | |
235 | VAR mime_t *MimeDatabase VALUE(NULL); | |
236 | /* MIME type database */ | |
237 | VAR int NumMimeTypes VALUE(0); | |
238 | /* Number of MIME types */ | |
239 | VAR const char **MimeTypes VALUE(NULL); | |
240 | /* Array of MIME types */ | |
241 | ||
242 | VAR int CreateSelfSignedCerts VALUE(TRUE); | |
243 | /* Automatically create self-signed certs? */ | |
244 | VAR char *ServerKeychain VALUE(NULL); | |
245 | /* Keychain holding cert + key */ | |
246 | ||
247 | #ifdef HAVE_ONDEMAND | |
248 | VAR int IdleExitTimeout VALUE(60); | |
249 | /* Time after which an idle cupsd will exit */ | |
250 | #endif /* HAVE_ONDEMAND */ | |
251 | ||
252 | #ifdef HAVE_AUTHORIZATION_H | |
253 | VAR char *SystemGroupAuthKey VALUE(NULL); | |
254 | /* System group auth key */ | |
255 | #endif /* HAVE_AUTHORIZATION_H */ | |
256 | ||
257 | #ifdef HAVE_GSSAPI | |
258 | VAR char *GSSServiceName VALUE(NULL); | |
259 | /* GSS service name */ | |
260 | VAR int HaveServerCreds VALUE(0); | |
261 | /* Do we have server credentials? */ | |
262 | VAR gss_cred_id_t ServerCreds; /* Server's GSS credentials */ | |
263 | #endif /* HAVE_GSSAPI */ | |
264 | ||
265 | ||
266 | /* | |
267 | * Prototypes... | |
268 | */ | |
269 | ||
270 | extern void cupsdAddAlias(cups_array_t *aliases, const char *name); | |
271 | extern int cupsdCheckLogFile(cups_file_t **lf, const char *logname); | |
272 | extern int cupsdCheckPermissions(const char *filename, | |
273 | const char *suffix, mode_t mode, | |
274 | uid_t user, gid_t group, int is_dir, | |
275 | int create_dir); | |
276 | extern int cupsdCheckProgram(const char *filename, cupsd_printer_t *p); | |
277 | extern int cupsdDefaultAuthType(void); | |
278 | extern void cupsdFreeAliases(cups_array_t *aliases); | |
279 | extern char *cupsdGetDateTime(struct timeval *t, cupsd_time_t format); | |
280 | extern int cupsdLogClient(cupsd_client_t *con, int level, const char *message, ...) _CUPS_FORMAT(3, 4); | |
281 | extern void cupsdLogFCMessage(void *context, _cups_fc_result_t result, const char *message); | |
282 | #ifdef HAVE_GSSAPI | |
283 | extern int cupsdLogGSSMessage(int level, OM_uint32 major_status, OM_uint32 minor_status, const char *message, ...) _CUPS_FORMAT(4, 5); | |
284 | #endif /* HAVE_GSSAPI */ | |
285 | extern int cupsdLogJob(cupsd_job_t *job, int level, const char *message, | |
286 | ...) _CUPS_FORMAT(3, 4); | |
287 | extern int cupsdLogMessage(int level, const char *message, ...) _CUPS_FORMAT(2, 3); | |
288 | extern int cupsdLogPage(cupsd_job_t *job, const char *page); | |
289 | extern int cupsdLogPrinter(cupsd_printer_t *p, int level, const char *message, ...) _CUPS_FORMAT(3, 4); | |
290 | extern int cupsdLogRequest(cupsd_client_t *con, http_status_t code); | |
291 | extern int cupsdReadConfiguration(void); | |
292 | extern int cupsdWriteErrorLog(int level, const char *message); | |
293 | extern void cupsdWriteStrings(void); |