]>
git.ipfire.org Git - thirdparty/cups.git/blob - cgi-bin/jobs.c
da4f1357cdb6956b03289ab8cfe7d5408ac63930
2 * "$Id: jobs.c 6649 2007-07-11 21:46:42Z mike $"
4 * Job status CGI for the Common UNIX Printing System (CUPS).
6 * Copyright 2007 by Apple Inc.
7 * Copyright 1997-2006 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/".
17 * main() - Main entry for CGI.
18 * do_job_op() - Do a job operation.
22 * Include necessary headers...
25 #include "cgi-private.h"
32 static void do_job_op(http_t
*http
, int job_id
, ipp_op_t op
);
36 * 'main()' - Main entry for CGI.
39 int /* O - Exit status */
40 main(int argc
, /* I - Number of command-line arguments */
41 char *argv
[]) /* I - Command-line arguments */
43 http_t
*http
; /* Connection to the server */
44 const char *op
; /* Operation name */
45 const char *job_id_var
; /* Job ID form variable */
46 int job_id
; /* Job ID */
50 * Get any form variables...
56 * Set the web interface section...
59 cgiSetVariable("SECTION", "jobs");
62 * Connect to the HTTP server...
65 http
= httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
68 * Get the job ID, if any...
71 if ((job_id_var
= cgiGetVariable("JOB_ID")) != NULL
)
72 job_id
= atoi(job_id_var
);
80 if ((op
= cgiGetVariable("OP")) != NULL
&& job_id
> 0)
86 if (!strcmp(op
, "cancel-job"))
87 do_job_op(http
, job_id
, IPP_CANCEL_JOB
);
88 else if (!strcmp(op
, "hold-job"))
89 do_job_op(http
, job_id
, IPP_HOLD_JOB
);
90 else if (!strcmp(op
, "move-job"))
91 cgiMoveJobs(http
, NULL
, job_id
);
92 else if (!strcmp(op
, "release-job"))
93 do_job_op(http
, job_id
, IPP_RELEASE_JOB
);
94 else if (!strcmp(op
, "restart-job"))
95 do_job_op(http
, job_id
, IPP_RESTART_JOB
);
99 * Bad operation code... Display an error...
102 cgiStartHTML(cgiText(_("Jobs")));
103 cgiCopyTemplateLang("error-op.tmpl");
110 * Show a list of jobs...
113 cgiStartHTML(cgiText(_("Jobs")));
114 cgiShowJobs(http
, NULL
);
119 * Close the HTTP server connection...
125 * Return with no errors...
133 * 'do_job_op()' - Do a job operation.
137 do_job_op(http_t
*http
, /* I - HTTP connection */
138 int job_id
, /* I - Job ID */
139 ipp_op_t op
) /* I - Operation to perform */
141 ipp_t
*request
; /* IPP request */
142 char uri
[HTTP_MAX_URI
]; /* Job URI */
143 const char *user
; /* Username */
147 * Build a job request, which requires the following
151 * attributes-natural-language
152 * job-uri or printer-uri (purge-jobs)
153 * requesting-user-name
156 request
= ippNewRequest(op
);
158 snprintf(uri
, sizeof(uri
), "ipp://localhost/jobs/%d", job_id
);
160 ippAddString(request
, IPP_TAG_OPERATION
, IPP_TAG_URI
, "job-uri",
163 if ((user
= getenv("REMOTE_USER")) == NULL
)
166 ippAddString(request
, IPP_TAG_OPERATION
, IPP_TAG_NAME
,
167 "requesting-user-name", NULL
, user
);
170 * Do the request and get back a response...
173 ippDelete(cupsDoRequest(http
, request
, "/jobs"));
175 if (cupsLastError() <= IPP_OK_CONFLICT
&& getenv("HTTP_REFERER"))
178 * Redirect successful updates back to the parent page...
181 char url
[1024]; /* Encoded URL */
184 strcpy(url
, "5;URL=");
185 cgiFormEncode(url
+ 6, getenv("HTTP_REFERER"), sizeof(url
) - 6);
186 cgiSetVariable("refresh_page", url
);
189 cgiStartHTML(cgiText(_("Jobs")));
191 if (cupsLastError() > IPP_OK_CONFLICT
)
192 cgiShowIPPError(_("Job operation failed:"));
193 else if (op
== IPP_CANCEL_JOB
)
194 cgiCopyTemplateLang("job-cancel.tmpl");
195 else if (op
== IPP_HOLD_JOB
)
196 cgiCopyTemplateLang("job-hold.tmpl");
197 else if (op
== IPP_RELEASE_JOB
)
198 cgiCopyTemplateLang("job-release.tmpl");
199 else if (op
== IPP_RESTART_JOB
)
200 cgiCopyTemplateLang("job-restart.tmpl");
207 * End of "$Id: jobs.c 6649 2007-07-11 21:46:42Z mike $".