Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37721857
en ru br
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


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();
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009