4 * Scheduler control program for CUPS.
6 * Copyright 2007-2011 by Apple Inc.
7 * Copyright 2006-2007 by Easy Software Products.
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/".
15 * This file is subject to the Apple OS-Developed Software exception.
19 * main() - Get/set server settings.
20 * usage() - Show program usage.
24 * Include necessary headers...
27 #include <cups/cups-private.h>
28 #include <cups/adminutil.h>
35 static void usage(const char *opt
);
39 * 'main()' - Get/set server settings.
42 int /* O - Exit status */
43 main(int argc
, /* I - Number of command-line args */
44 char *argv
[]) /* I - Command-line arguments */
46 int i
, /* Looping var */
47 num_settings
; /* Number of settings */
48 cups_option_t
*settings
; /* Settings */
49 const char *opt
; /* Current option character */
50 http_t
*http
; /* Connection to server */
54 * Process the command-line...
62 for (i
= 1; i
< argc
; i
++)
64 if (argv
[i
][0] == '-')
66 if (argv
[i
][1] == '-')
68 if (!strcmp(argv
[i
], "--debug-logging"))
69 num_settings
= cupsAddOption(CUPS_SERVER_DEBUG_LOGGING
, "1",
70 num_settings
, &settings
);
71 else if (!strcmp(argv
[i
], "--no-debug-logging"))
72 num_settings
= cupsAddOption(CUPS_SERVER_DEBUG_LOGGING
, "0",
73 num_settings
, &settings
);
74 else if (!strcmp(argv
[i
], "--remote-admin"))
75 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_ADMIN
, "1",
76 num_settings
, &settings
);
77 else if (!strcmp(argv
[i
], "--no-remote-admin"))
78 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_ADMIN
, "0",
79 num_settings
, &settings
);
80 else if (!strcmp(argv
[i
], "--remote-any"))
81 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_ANY
, "1",
82 num_settings
, &settings
);
83 else if (!strcmp(argv
[i
], "--no-remote-any"))
84 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_ANY
, "0",
85 num_settings
, &settings
);
86 else if (!strcmp(argv
[i
], "--remote-printers"))
87 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS
, "1",
88 num_settings
, &settings
);
89 else if (!strcmp(argv
[i
], "--no-remote-printers"))
90 num_settings
= cupsAddOption(CUPS_SERVER_REMOTE_PRINTERS
, "0",
91 num_settings
, &settings
);
92 else if (!strcmp(argv
[i
], "--share-printers"))
93 num_settings
= cupsAddOption(CUPS_SERVER_SHARE_PRINTERS
, "1",
94 num_settings
, &settings
);
95 else if (!strcmp(argv
[i
], "--no-share-printers"))
96 num_settings
= cupsAddOption(CUPS_SERVER_SHARE_PRINTERS
, "0",
97 num_settings
, &settings
);
98 else if (!strcmp(argv
[i
], "--user-cancel-any"))
99 num_settings
= cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY
, "1",
100 num_settings
, &settings
);
101 else if (!strcmp(argv
[i
], "--no-user-cancel-any"))
102 num_settings
= cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY
, "0",
103 num_settings
, &settings
);
109 for (opt
= argv
[i
] + 1; *opt
; opt
++)
113 cupsSetEncryption(HTTP_ENCRYPT_REQUIRED
);
121 cupsSetUser(argv
[i
]);
129 cupsSetServer(argv
[i
]);
138 else if (strchr(argv
[i
], '='))
139 num_settings
= cupsParseOptions(argv
[i
], num_settings
, &settings
);
144 if (cupsGetOption("Listen", num_settings
, settings
) ||
145 cupsGetOption("Port", num_settings
, settings
))
147 _cupsLangPuts(stderr
, _("cupsctl: Cannot set Listen or Port directly.\n"));
152 * Connect to the server using the defaults...
155 if ((http
= httpConnectEncrypt(cupsServer(), ippPort(),
156 cupsEncryption())) == NULL
)
158 _cupsLangPrintf(stderr
, _("cupsctl: Unable to connect to server: %s"),
164 * Set the current configuration if we have anything on the command-line...
167 if (num_settings
> 0)
169 if (!cupsAdminSetServerSettings(http
, num_settings
, settings
))
171 _cupsLangPrintf(stderr
, "cupsctl: %s", cupsLastErrorString());
175 else if (!cupsAdminGetServerSettings(http
, &num_settings
, &settings
))
177 _cupsLangPrintf(stderr
, "cupsctl: %s", cupsLastErrorString());
182 for (i
= 0; i
< num_settings
; i
++)
183 _cupsLangPrintf(stdout
, "%s=%s", settings
[i
].name
, settings
[i
].value
);
186 cupsFreeOptions(num_settings
, settings
);
192 * 'usage()' - Show program usage.
196 usage(const char *opt
) /* I - Option character/string */
201 _cupsLangPrintf(stderr
, _("cupsctl: Unknown option \"%s\""), opt
);
203 _cupsLangPrintf(stderr
, _("cupsctl: Unknown option \"-%c\""), *opt
);
206 _cupsLangPuts(stdout
, _("Usage: cupsctl [options] [param=value ... "
208 _cupsLangPuts(stdout
, "");
209 _cupsLangPuts(stdout
, _("Options:"));
210 _cupsLangPuts(stdout
, "");
211 _cupsLangPuts(stdout
, _(" -E Enable encryption."));
212 _cupsLangPuts(stdout
, _(" -U username Specify username."));
213 _cupsLangPuts(stdout
, _(" -h server[:port] Specify server "
215 _cupsLangPuts(stdout
, "");
216 _cupsLangPuts(stdout
, _(" --[no-]debug-logging Turn debug logging "
218 _cupsLangPuts(stdout
, _(" --[no-]remote-admin Turn remote "
219 "administration on/off."));
220 _cupsLangPuts(stdout
, _(" --[no-]remote-any Allow/prevent access "
221 "from the Internet."));
222 _cupsLangPuts(stdout
, _(" --[no-]remote-printers Show/hide remote "
224 _cupsLangPuts(stdout
, _(" --[no-]share-printers Turn printer sharing "
226 _cupsLangPuts(stdout
, _(" --[no-]user-cancel-any Allow/prevent users to "