ALT Linux repositórios
S: | 2.4.7-alt1 |
5.0: | 1.3.10-alt1 |
4.1: | 1.3.10-alt0.M41.4 |
+updates: | 1.3.9-alt1.M41.1 |
4.0: | 1.2.12-alt6.M40.9 |
+updates: | 1.2.12-alt6.M40.8 |
3.0: | 1.1.20-alt14.1 |
Group :: Sistema/Servidores
RPM: cups
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: cups-1.1.20-alt-izvrat.path
Download
Download
diff -Naur cups-1.1.20/conf/cupsd.conf.in cups-1.1.20.new/conf/cupsd.conf.in
--- cups-1.1.20/conf/cupsd.conf.in 2004-02-10 16:36:34 +0300
+++ cups-1.1.20.new/conf/cupsd.conf.in 2004-02-10 16:25:27 +0300
@@ -352,6 +352,15 @@
Group @CUPS_GROUP@
#
+# Izvrat Mode options
+# RunAsUser - always run CUPS under yser
+# NoIzvrat - turn on classic CUPS mode
+#
+
+#RunAsUser no
+#NoIzvrat yes
+
+#
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
diff -Naur cups-1.1.20/scheduler/conf.c cups-1.1.20.new/scheduler/conf.c
--- cups-1.1.20/scheduler/conf.c 2003-11-07 22:41:25 +0300
+++ cups-1.1.20.new/scheduler/conf.c 2004-02-10 16:26:53 +0300
@@ -128,6 +128,7 @@
{ "RequestRoot", &RequestRoot, VAR_STRING },
{ "RIPCache", &RIPCache, VAR_STRING },
{ "RunAsUser", &RunAsUser, VAR_BOOLEAN },
+ { "NoIzvrat", &NoIzvrat, VAR_BOOLEAN },
{ "RootCertDuration", &RootCertDuration, VAR_INTEGER },
{ "ServerAdmin", &ServerAdmin, VAR_STRING },
{ "ServerBin", &ServerBin, VAR_STRING },
@@ -355,7 +356,8 @@
MaxPrinterHistory = 10;
MaxRequestSize = 0;
RootCertDuration = 300;
- RunAsUser = FALSE;
+// RunAsUser = FALSE;
+ NoIzvrat = FALSE;
Timeout = DEFAULT_TIMEOUT;
BrowseInterval = DEFAULT_INTERVAL;
diff -Naur cups-1.1.20/scheduler/conf.h cups-1.1.20.new/scheduler/conf.h
--- cups-1.1.20/scheduler/conf.h 2003-10-09 23:13:30 +0400
+++ cups-1.1.20.new/scheduler/conf.h 2004-02-10 16:25:27 +0300
@@ -150,6 +150,8 @@
/* Root certificate update interval */
RunAsUser VALUE(FALSE),
/* Run as unpriviledged user? */
+ NoIzvrat VALUE(FALSE),
+ /* Izvrat ALT's mode? */
PrintcapFormat VALUE(PRINTCAP_BSD);
/* Format of printcap file? */
VAR cups_file_t *AccessFile VALUE(NULL),
diff -Naur cups-1.1.20/scheduler/ipp.c cups-1.1.20.new/scheduler/ipp.c
--- cups-1.1.20/scheduler/ipp.c 2003-10-22 18:21:36 +0400
+++ cups-1.1.20.new/scheduler/ipp.c 2004-02-10 16:25:27 +0300
@@ -334,7 +334,210 @@
/*
* Then try processing the operation...
*/
-
+ /*
+ *Operations splitted into administrator and user tasks
+ */
+ {
+ int need_default = 1;
+ /*global switch*/
+ switch(con->request->request.op.operation_id){/*we allow get methods to all type of users*/
+ case IPP_GET_JOB_ATTRIBUTES :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 16");
+ get_job_attrs(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_GET_JOBS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 17");
+ get_jobs(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_GET_PRINTER_ATTRIBUTES :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 18");
+ get_printer_attrs(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_GET_DEFAULT :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 23");
+ get_default(con);
+ need_default = 0;
+ break;
+
+ case CUPS_GET_PRINTERS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 24");
+ get_printers(con, 0);
+ need_default = 0;
+ break;
+
+ case CUPS_GET_CLASSES :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 25");
+ get_printers(con, CUPS_PRINTER_CLASS);
+ need_default = 0;
+ break;
+
+ case CUPS_GET_DEVICES :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 26");
+ get_devices(con);
+ need_default = 0;
+ break;
+
+ case CUPS_GET_PPDS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 27");
+ get_ppds(con);
+ need_default = 0;
+ break;
+ default:
+ break;
+
+ }
+ if (!RunAsUser || NoIzvrat)
+ {/*administrator tasks*/
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: process administrator tasks only");
+ switch(con->request->request.op.operation_id){
+ case IPP_PAUSE_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 1");
+ stop_printer(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_RESUME_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 2");
+ start_printer(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_PURGE_JOBS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 3");
+ cancel_all_jobs(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_ADD_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 4");
+ add_printer(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_DELETE_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 5");
+ delete_printer(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_ADD_CLASS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 6");
+ add_class(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_DELETE_CLASS :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 7");
+ delete_printer(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_ACCEPT_JOBS :
+ case IPP_ENABLE_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 8");
+ accept_jobs(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_REJECT_JOBS :
+ case IPP_DISABLE_PRINTER :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 9");
+ reject_jobs(con, uri);
+ need_default = 0;
+ break;
+
+ case CUPS_SET_DEFAULT :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 10");
+ set_default(con, uri);
+ need_default = 0;
+ break;
+
+ default:
+ break;
+
+ }
+ }
+ if (RunAsUser || NoIzvrat){/*user tasks*/
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: process user tasks only");
+ switch(con->request->request.op.operation_id){
+ case IPP_PRINT_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 11");
+ print_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_VALIDATE_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 12");
+ validate_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_CREATE_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 13");
+ create_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_SEND_DOCUMENT :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 14");
+ send_document(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_CANCEL_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 15");
+ cancel_job(con, uri);
+ need_default = 0;
+ break;
+
+
+ case IPP_HOLD_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 19");
+ hold_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_RELEASE_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 20");
+ release_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_RESTART_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 21");
+ restart_job(con, uri);
+ need_default = 0;
+ break;
+
+ case IPP_SET_JOB_ATTRIBUTES :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 22");
+ set_job_attrs(con, uri);
+ need_default = 0;
+ break;
+
+
+ case CUPS_MOVE_JOB :
+ LogMessage(L_DEBUG2, "ProcessIPPRequest: 28");
+ move_job(con, uri);
+ need_default = 0;
+ break;
+
+ default:
+ break;
+
+ }
+ }
+ if (need_default){
+ send_ipp_error(con, IPP_OPERATION_NOT_SUPPORTED);
+ }
+ }
+/*
switch (con->request->request.op.operation_id)
{
case IPP_PRINT_JOB :
@@ -454,6 +657,7 @@
default :
send_ipp_error(con, IPP_OPERATION_NOT_SUPPORTED);
}
+ */
}
}
}
diff -Naur cups-1.1.20/scheduler/main.c cups-1.1.20.new/scheduler/main.c
--- cups-1.1.20/scheduler/main.c 2003-11-19 19:52:14 +0300
+++ cups-1.1.20.new/scheduler/main.c 2004-02-10 16:25:27 +0300
@@ -117,6 +117,7 @@
*/
fg = 0;
+ RunAsUser = FALSE;
for (i = 1; i < argc; i ++)
if (argv[i][0] == '-')
@@ -157,7 +158,9 @@
case 'F' : /* Run in foreground, but still disconnect from terminal... */
fg = -1;
break;
-
+ case 'u' : /* Run as user... */
+ RunAsUser = TRUE;
+ break;
default : /* Unknown option */
fprintf(stderr, "cupsd: Unknown option \'%c\' - aborting!\n", *opt);
usage();