Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
srohatgi01
GitHub Repository: srohatgi01/cups
Path: blob/master/scheduler/conf.h
1090 views
1
/*
2
* Configuration file definitions for the CUPS scheduler.
3
*
4
* Copyright © 2021-2022 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_array_t *ServerAlias VALUE(NULL);
114
/* Alias names for server */
115
VAR int ServerNameIsIP VALUE(0);
116
/* Is the ServerName an IP address? */
117
VAR int NumSystemGroups VALUE(0);
118
/* Number of system group names */
119
VAR char *SystemGroups[MAX_SYSTEM_GROUPS]
120
VALUE({0});
121
/* System group names */
122
VAR gid_t SystemGroupIDs[MAX_SYSTEM_GROUPS]
123
VALUE({0});
124
/* System group IDs */
125
VAR char *AccessLog VALUE(NULL),
126
/* Access log filename */
127
*ErrorLog VALUE(NULL),
128
/* Error log filename */
129
*PageLog VALUE(NULL),
130
/* Page log filename */
131
*CacheDir VALUE(NULL),
132
/* Cache file directory */
133
*DataDir VALUE(NULL),
134
/* Data file directory */
135
*DefaultLanguage VALUE(NULL),
136
/* Default language encoding */
137
*DefaultLocale VALUE(NULL),
138
/* Default locale */
139
*DefaultPaperSize VALUE(NULL),
140
/* Default paper size */
141
*ErrorPolicy VALUE(NULL),
142
/* Default printer-error-policy */
143
*TempDir VALUE(NULL),
144
/* Temporary directory */
145
*Printcap VALUE(NULL),
146
/* Printcap file */
147
*RemoteRoot VALUE(NULL),
148
/* Remote root user */
149
*Classification VALUE(NULL);
150
/* Classification of system */
151
VAR cups_array_t *ReadyPaperSizes VALUE(NULL);
152
/* List of paper sizes to list as ready */
153
VAR uid_t User VALUE(1),
154
/* User ID for server */
155
RunUser VALUE(0);
156
/* User to run as, used for files */
157
VAR gid_t Group VALUE(0);
158
/* Group ID for server */
159
VAR cupsd_accesslog_t AccessLogLevel VALUE(CUPSD_ACCESSLOG_ACTIONS);
160
/* Access log level */
161
VAR int ClassifyOverride VALUE(0),
162
/* Allow overrides? */
163
LogDebugHistory VALUE(200),
164
/* Amount of automatic debug history */
165
FatalErrors VALUE(CUPSD_FATAL_CONFIG),
166
/* Which errors are fatal? */
167
StrictConformance VALUE(FALSE),
168
/* Require strict IPP conformance? */
169
SyncOnClose VALUE(FALSE);
170
/* Call fsync() when closing files? */
171
VAR mode_t ConfigFilePerm VALUE(0640U),
172
/* Permissions for config files */
173
LogFilePerm VALUE(0644U);
174
/* Permissions for log files */
175
VAR gid_t LogFileGroup VALUE(0);
176
/* Group ID for log files */
177
VAR cupsd_loglevel_t LogLevel VALUE(CUPSD_LOG_WARN);
178
/* Error log level */
179
VAR cupsd_time_t LogTimeFormat VALUE(CUPSD_TIME_STANDARD);
180
/* Log file time format */
181
VAR cups_file_t *LogStderr VALUE(NULL);
182
/* Stderr file, if any */
183
VAR cupsd_sandboxing_t Sandboxing VALUE(CUPSD_SANDBOXING_STRICT);
184
/* Sandboxing level */
185
VAR int UseSandboxing VALUE(1);
186
/* Use sandboxing for child procs? */
187
VAR int MaxClients VALUE(100),
188
/* Maximum number of clients */
189
MaxClientsPerHost VALUE(0),
190
/* Maximum number of clients per host */
191
MaxCopies VALUE(CUPS_DEFAULT_MAX_COPIES),
192
/* Maximum number of copies per job */
193
MaxLogSize VALUE(1024 * 1024),
194
/* Maximum size of log files */
195
MaxRequestSize VALUE(0),
196
/* Maximum size of IPP requests */
197
HostNameLookups VALUE(FALSE),
198
/* Do we do reverse lookups? */
199
Timeout VALUE(DEFAULT_TIMEOUT),
200
/* Timeout during requests */
201
KeepAlive VALUE(TRUE),
202
/* Support the Keep-Alive option? */
203
FileDevice VALUE(FALSE),
204
/* Allow file: devices? */
205
FilterLimit VALUE(0),
206
/* Max filter cost at any time */
207
FilterLevel VALUE(0),
208
/* Current filter level */
209
FilterNice VALUE(0),
210
/* Nice value for filters */
211
ReloadTimeout VALUE(DEFAULT_KEEPALIVE),
212
/* Timeout before reload from SIGHUP */
213
RootCertDuration VALUE(300),
214
/* Root certificate update interval */
215
PrintcapFormat VALUE(PRINTCAP_BSD),
216
/* Format of printcap file? */
217
DefaultShared VALUE(TRUE),
218
/* Share printers by default? */
219
MultipleOperationTimeout VALUE(DEFAULT_TIMEOUT),
220
/* multiple-operation-time-out value */
221
WebInterface VALUE(CUPS_DEFAULT_WEBIF);
222
/* Enable the web interface? */
223
VAR cups_file_t *AccessFile VALUE(NULL),
224
/* Access log file */
225
*ErrorFile VALUE(NULL),
226
/* Error log file */
227
*PageFile VALUE(NULL);
228
/* Page log file */
229
VAR char *PageLogFormat VALUE(NULL);
230
/* Page log format */
231
VAR mime_t *MimeDatabase VALUE(NULL);
232
/* MIME type database */
233
VAR int NumMimeTypes VALUE(0);
234
/* Number of MIME types */
235
VAR const char **MimeTypes VALUE(NULL);
236
/* Array of MIME types */
237
238
#ifdef HAVE_TLS
239
VAR int CreateSelfSignedCerts VALUE(TRUE);
240
/* Automatically create self-signed certs? */
241
VAR char *ServerKeychain VALUE(NULL);
242
/* Keychain holding cert + key */
243
#endif /* HAVE_TLS */
244
245
#ifdef HAVE_ONDEMAND
246
VAR int IdleExitTimeout VALUE(60);
247
/* Time after which an idle cupsd will exit */
248
#endif /* HAVE_ONDEMAND */
249
250
#ifdef HAVE_AUTHORIZATION_H
251
VAR char *SystemGroupAuthKey VALUE(NULL);
252
/* System group auth key */
253
#endif /* HAVE_AUTHORIZATION_H */
254
255
#ifdef HAVE_GSSAPI
256
VAR char *GSSServiceName VALUE(NULL);
257
/* GSS service name */
258
VAR int HaveServerCreds VALUE(0);
259
/* Do we have server credentials? */
260
VAR gss_cred_id_t ServerCreds; /* Server's GSS credentials */
261
#endif /* HAVE_GSSAPI */
262
263
264
/*
265
* Prototypes...
266
*/
267
268
extern void cupsdAddAlias(cups_array_t *aliases, const char *name);
269
extern int cupsdCheckLogFile(cups_file_t **lf, const char *logname);
270
extern int cupsdCheckPermissions(const char *filename,
271
const char *suffix, mode_t mode,
272
uid_t user, gid_t group, int is_dir,
273
int create_dir);
274
extern int cupsdCheckProgram(const char *filename, cupsd_printer_t *p);
275
extern int cupsdDefaultAuthType(void);
276
extern void cupsdFreeAliases(cups_array_t *aliases);
277
extern char *cupsdGetDateTime(struct timeval *t, cupsd_time_t format);
278
extern int cupsdLogClient(cupsd_client_t *con, int level, const char *message, ...) _CUPS_FORMAT(3, 4);
279
extern void cupsdLogFCMessage(void *context, _cups_fc_result_t result, const char *message);
280
#ifdef HAVE_GSSAPI
281
extern int cupsdLogGSSMessage(int level, OM_uint32 major_status, OM_uint32 minor_status, const char *message, ...) _CUPS_FORMAT(4, 5);
282
#endif /* HAVE_GSSAPI */
283
extern int cupsdLogJob(cupsd_job_t *job, int level, const char *message,
284
...) _CUPS_FORMAT(3, 4);
285
extern int cupsdLogMessage(int level, const char *message, ...) _CUPS_FORMAT(2, 3);
286
extern int cupsdLogPage(cupsd_job_t *job, const char *page);
287
extern int cupsdLogRequest(cupsd_client_t *con, http_status_t code);
288
extern int cupsdReadConfiguration(void);
289
extern int cupsdWriteErrorLog(int level, const char *message);
290
291