1 kumpf 1.1 //%/////////////////////////////////////////////////////////////////////////////
2 //
|
3 kumpf 1.17 // Copyright (c) 2000, 2001, 2002 BMC Software, Hewlett-Packard Company, IBM,
|
4 kumpf 1.1 // The Open Group, Tivoli Systems
5 //
6 // Permission is hereby granted, free of charge, to any person obtaining a copy
7 // of this software and associated documentation files (the "Software"), to
8 // deal in the Software without restriction, including without limitation the
9 // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
10 // sell copies of the Software, and to permit persons to whom the Software is
11 // furnished to do so, subject to the following conditions:
|
12 kumpf 1.17 //
|
13 kumpf 1.1 // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
14 // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
15 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
16 // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
17 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 //
22 //==============================================================================
23 //
24 // Author: Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)
25 //
|
26 kumpf 1.4 // Modified By: Sushma Fernandes, Hewlett-Packard Company
27 // (sushma_fernandes@hp.com)
|
28 kumpf 1.18 // Carol Ann Krug Graves, Hewlett-Packard Company
29 // (carolann_graves@hp.com)
|
30 kumpf 1.20 // Yi Zhou, Hewlett-Packard Company (yi_zhou@hp.com)
|
31 kumpf 1.1 //
32 //%/////////////////////////////////////////////////////////////////////////////
33
|
34 sage 1.2 #include <Pegasus/Common/Config.h>
|
35 kumpf 1.9 #include <Pegasus/Common/Constants.h>
|
36 kumpf 1.1 #include <Pegasus/Security/UserManager/UserManager.h>
37 #include <Pegasus/Common/HTTPMessage.h>
38 #include <Pegasus/Common/Destroyer.h>
39 #include <Pegasus/Common/XmlWriter.h>
40 #include <Pegasus/Common/Tracer.h>
41 #include "CIMOperationRequestAuthorizer.h"
42
|
43 mday 1.23.4.2 // l10n
44 #include <Pegasus/Common/MessageLoader.h>
45
|
46 kumpf 1.1 PEGASUS_NAMESPACE_BEGIN
47
48 PEGASUS_USING_STD;
49
50
51 CIMOperationRequestAuthorizer::CIMOperationRequestAuthorizer(
|
52 mday 1.16 MessageQueueService* outputQueue)
|
53 mday 1.5 :
|
54 kumpf 1.13 Base(PEGASUS_QUEUENAME_OPREQAUTHORIZER),
|
55 mday 1.3 _outputQueue(outputQueue),
56 _serverTerminating(false)
|
57 kumpf 1.1 {
|
58 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER, "CIMOperationRequestAuthorizer::"
59 "CIMOperationRequestAuthorizer");
|
60 kumpf 1.1
|
61 kumpf 1.10 PEG_METHOD_EXIT();
|
62 kumpf 1.1 }
63
64 CIMOperationRequestAuthorizer::~CIMOperationRequestAuthorizer()
65 {
|
66 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER, "CIMOperationRequestAuthorizer::"
67 "~CIMOperationRequestAuthorizer");
|
68 kumpf 1.1
|
69 kumpf 1.10 PEG_METHOD_EXIT();
|
70 kumpf 1.1 }
71
72 void CIMOperationRequestAuthorizer::sendResponse(
|
73 mday 1.5 Uint32 queueId,
74 Array<Sint8>& message)
|
75 kumpf 1.1 {
|
76 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER, "CIMOperationRequestAuthorizer::sendResponse");
|
77 kumpf 1.1
|
78 mday 1.5 MessageQueue* queue = MessageQueue::lookup(queueId);
|
79 kumpf 1.1
|
80 mday 1.5 if (queue)
81 {
82 HTTPMessage* httpMessage = new HTTPMessage(message);
83 queue->enqueue(httpMessage);
84 }
|
85 kumpf 1.10 PEG_METHOD_EXIT();
|
86 kumpf 1.1 }
87
|
88 kumpf 1.7 // Code is duplicated in CIMOperationRequestDecoder
89 void CIMOperationRequestAuthorizer::sendIMethodError(
|
90 mday 1.5 Uint32 queueId,
|
91 kumpf 1.19 HttpMethod httpMethod,
|
92 mday 1.5 const String& messageId,
|
93 kumpf 1.18 const CIMName& iMethodName,
|
94 kumpf 1.12 const CIMException& cimException)
|
95 kumpf 1.1 {
|
96 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER,
97 "CIMOperationRequestAuthorizer::sendIMethodError");
|
98 kumpf 1.1
|
99 kumpf 1.7 Array<Sint8> message;
|
100 kumpf 1.8 message = XmlWriter::formatSimpleIMethodErrorRspMessage(
101 iMethodName,
102 messageId,
|
103 kumpf 1.19 httpMethod,
|
104 kumpf 1.12 cimException);
|
105 kumpf 1.7
|
106 kumpf 1.8 sendResponse(queueId, message);
|
107 kumpf 1.1
|
108 kumpf 1.10 PEG_METHOD_EXIT();
|
109 kumpf 1.1 }
110
|
111 kumpf 1.23 // Code is duplicated in CIMOperationRequestDecoder
112 void CIMOperationRequestAuthorizer::sendMethodError(
113 Uint32 queueId,
114 HttpMethod httpMethod,
115 const String& messageId,
116 const CIMName& methodName,
117 const CIMException& cimException)
118 {
119 PEG_METHOD_ENTER(TRC_SERVER,
120 "CIMOperationRequestAuthorizer::sendMethodError");
121
122 Array<Sint8> message;
123 message = XmlWriter::formatSimpleMethodErrorRspMessage(
124 methodName,
125 messageId,
126 httpMethod,
127 cimException);
128
129 sendResponse(queueId, message);
130
131 PEG_METHOD_EXIT();
132 kumpf 1.23 }
133
|
134 kumpf 1.1 ////////////////////////////////////////////////////////////////////////////////
135
|
136 mday 1.5
137 void CIMOperationRequestAuthorizer::handleEnqueue(Message *request)
|
138 kumpf 1.1 {
139
|
140 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER, "CIMOperationRequestAuthorizer::handleEnqueue");
|
141 mday 1.5
142 if (!request)
143 {
|
144 kumpf 1.10 PEG_METHOD_EXIT();
|
145 mday 1.5 return;
146 }
147
148 //
149 // Get the HTTPConnection queue id
150 //
151 QueueIdStack qis = ((CIMRequestMessage*)request)->queueIds.copyAndPop();
152
153 Uint32 queueId = qis.top();
154
|
155 mday 1.23.4.1 // l10n
156 // Set the client's requested language into this service thread.
157 // This will allow functions in this service to return messages
158 // in the correct language.
159 CIMMessage * req = dynamic_cast<CIMMessage *>(request);
160 if (req != NULL)
161 {
162 AcceptLanguages *langs =
163 new AcceptLanguages(req->acceptLanguages);
164 Thread::setLanguages(langs);
165 }
166 else
167 {
168 Thread::clearLanguages();
169 }
170
|
171 kumpf 1.12 //
172 // If CIMOM is shutting down, return "Service Unavailable" response
173 //
174 if (_serverTerminating)
175 {
176 Array<Sint8> message;
177 message = XmlWriter::formatHttpErrorRspMessage(
178 HTTP_STATUS_SERVICEUNAVAILABLE,
179 String::EMPTY,
|
180 kumpf 1.14 "CIM Server is shutting down.");
|
181 kumpf 1.12
182 sendResponse(queueId, message);
183 PEG_METHOD_EXIT();
184 return;
185 }
186
|
187 mday 1.5 String userName = String::EMPTY;
188 String authType = String::EMPTY;
|
189 kumpf 1.18 CIMNamespaceName nameSpace;
|
190 mday 1.5 String cimMethodName = String::EMPTY;
191
192 switch (request->getType())
193 {
194 case CIM_GET_CLASS_REQUEST_MESSAGE:
195 userName = ((CIMGetClassRequestMessage*)request)->userName;
196 authType =
197 ((CIMGetClassRequestMessage*)request)->authType;
198 nameSpace = ((CIMGetClassRequestMessage*)request)->nameSpace;
199 cimMethodName = "GetClass";
200 break;
201
202 case CIM_GET_INSTANCE_REQUEST_MESSAGE:
203 userName = ((CIMGetInstanceRequestMessage*)request)->userName;
204 authType =
205 ((CIMGetInstanceRequestMessage*)request)->authType;
206 nameSpace = ((CIMGetInstanceRequestMessage*)request)->nameSpace;
207 cimMethodName = "GetInstance";
208 break;
209
210 case CIM_DELETE_CLASS_REQUEST_MESSAGE:
211 mday 1.5 userName = ((CIMDeleteClassRequestMessage*)request)->userName;
212 authType =
213 ((CIMDeleteClassRequestMessage*)request)->authType;
214 nameSpace = ((CIMDeleteClassRequestMessage*)request)->nameSpace;
215 cimMethodName = "DeleteClass";
216 break;
217
218 case CIM_DELETE_INSTANCE_REQUEST_MESSAGE:
219 userName = ((CIMDeleteInstanceRequestMessage*)request)->userName;
220 authType =
221 ((CIMDeleteInstanceRequestMessage*)request)->authType;
222 nameSpace = ((CIMDeleteInstanceRequestMessage*)request)->nameSpace;
223 cimMethodName = "DeleteInstance";
224 break;
225
226 case CIM_CREATE_CLASS_REQUEST_MESSAGE:
227 userName = ((CIMCreateClassRequestMessage*)request)->userName;
228 authType =
229 ((CIMCreateClassRequestMessage*)request)->authType;
230 nameSpace = ((CIMCreateClassRequestMessage*)request)->nameSpace;
231 cimMethodName = "CreateClass";
232 mday 1.5 break;
233
234 case CIM_CREATE_INSTANCE_REQUEST_MESSAGE:
235 userName = ((CIMCreateInstanceRequestMessage*)request)->userName;
236 authType =
237 ((CIMCreateInstanceRequestMessage*)request)->authType;
238 nameSpace = ((CIMCreateInstanceRequestMessage*)request)->nameSpace;
239 cimMethodName = "CreateInstance";
240 break;
241
242 case CIM_MODIFY_CLASS_REQUEST_MESSAGE:
243 userName = ((CIMModifyClassRequestMessage*)request)->userName;
244 authType =
245 ((CIMModifyClassRequestMessage*)request)->authType;
246 nameSpace = ((CIMModifyClassRequestMessage*)request)->nameSpace;
247 cimMethodName = "ModifyClass";
248 break;
249
250 case CIM_MODIFY_INSTANCE_REQUEST_MESSAGE:
251 userName = ((CIMModifyInstanceRequestMessage*)request)->userName;
252 authType =
253 mday 1.5 ((CIMModifyInstanceRequestMessage*)request)->authType;
254 nameSpace = ((CIMModifyInstanceRequestMessage*)request)->nameSpace;
255 cimMethodName = "ModifyInstance";
256 break;
257
258 case CIM_ENUMERATE_CLASSES_REQUEST_MESSAGE:
259 userName = ((CIMEnumerateClassesRequestMessage*)request)->userName;
260 authType = ((CIMEnumerateClassesRequestMessage*)request)->authType;
261 nameSpace = ((CIMEnumerateClassesRequestMessage*)request)->nameSpace;
262 cimMethodName = "EnumerateClasses";
263 break;
264
265 case CIM_ENUMERATE_CLASS_NAMES_REQUEST_MESSAGE:
266 userName = ((CIMEnumerateClassNamesRequestMessage*)request)->userName;
267 authType =
268 ((CIMEnumerateClassNamesRequestMessage*)request)->authType;
269 nameSpace = ((CIMEnumerateClassNamesRequestMessage*)request)->nameSpace;
270 cimMethodName = "EnumerateClassNames";
271 break;
272
273 case CIM_ENUMERATE_INSTANCES_REQUEST_MESSAGE:
274 mday 1.5 userName = ((CIMEnumerateInstancesRequestMessage*)request)->userName;
275 authType = ((CIMEnumerateInstancesRequestMessage*)request)->authType;
276 nameSpace = ((CIMEnumerateInstancesRequestMessage*)request)->nameSpace;
277 cimMethodName = "EnumerateInstances";
278 break;
279
280 case CIM_ENUMERATE_INSTANCE_NAMES_REQUEST_MESSAGE:
281 userName = ((CIMEnumerateInstanceNamesRequestMessage*)request)->userName;
282 authType = ((CIMEnumerateInstanceNamesRequestMessage*)request)->authType;
283 nameSpace = ((CIMEnumerateInstanceNamesRequestMessage*)request)->nameSpace;
284 cimMethodName = "EnumerateInstanceNames";
285 break;
286
287 case CIM_EXEC_QUERY_REQUEST_MESSAGE:
|
288 kumpf 1.11 userName = ((CIMExecQueryRequestMessage*)request)->userName;
289 authType = ((CIMExecQueryRequestMessage*)request)->authType;
290 nameSpace = ((CIMExecQueryRequestMessage*)request)->nameSpace;
291 cimMethodName = "ExecQuery";
|
292 mday 1.5 break;
293
294 case CIM_ASSOCIATORS_REQUEST_MESSAGE:
295 userName = ((CIMAssociatorsRequestMessage*)request)->userName;
296 authType = ((CIMAssociatorsRequestMessage*)request)->authType;
297 nameSpace = ((CIMAssociatorsRequestMessage*)request)->nameSpace;
298 cimMethodName = "Associators";
299 break;
300
301 case CIM_ASSOCIATOR_NAMES_REQUEST_MESSAGE:
302 userName = ((CIMAssociatorNamesRequestMessage*)request)->userName;
303 authType = ((CIMAssociatorNamesRequestMessage*)request)->authType;
304 nameSpace = ((CIMAssociatorNamesRequestMessage*)request)->nameSpace;
305 cimMethodName = "AssociatorNames";
306 break;
307
308 case CIM_REFERENCES_REQUEST_MESSAGE:
309 userName = ((CIMReferencesRequestMessage*)request)->userName;
310 authType = ((CIMReferencesRequestMessage*)request)->authType;
311 nameSpace = ((CIMReferencesRequestMessage*)request)->nameSpace;
312 cimMethodName = "References";
313 mday 1.5 break;
314
315 case CIM_REFERENCE_NAMES_REQUEST_MESSAGE:
316 userName = ((CIMReferenceNamesRequestMessage*)request)->userName;
317 authType = ((CIMReferenceNamesRequestMessage*)request)->authType;
318 nameSpace = ((CIMReferenceNamesRequestMessage*)request)->nameSpace;
319 cimMethodName = "ReferenceNames";
320 break;
321
322 case CIM_GET_PROPERTY_REQUEST_MESSAGE:
323 userName = ((CIMGetPropertyRequestMessage*)request)->userName;
324 authType = ((CIMGetPropertyRequestMessage*)request)->authType;
325 nameSpace = ((CIMGetPropertyRequestMessage*)request)->nameSpace;
326 cimMethodName = "GetProperty";
327 break;
328
329 case CIM_SET_PROPERTY_REQUEST_MESSAGE:
330 userName = ((CIMSetPropertyRequestMessage*)request)->userName;
331 authType = ((CIMSetPropertyRequestMessage*)request)->authType;
332 nameSpace = ((CIMSetPropertyRequestMessage*)request)->nameSpace;
333 cimMethodName = "SetProperty";
334 mday 1.5 break;
335
336 case CIM_GET_QUALIFIER_REQUEST_MESSAGE:
337 userName = ((CIMGetQualifierRequestMessage*)request)->userName;
338 authType = ((CIMGetQualifierRequestMessage*)request)->authType;
339 nameSpace = ((CIMGetQualifierRequestMessage*)request)->nameSpace;
340 cimMethodName = "GetQualifier";
341 break;
342
343 case CIM_SET_QUALIFIER_REQUEST_MESSAGE:
344 userName = ((CIMSetQualifierRequestMessage*)request)->userName;
345 authType = ((CIMSetQualifierRequestMessage*)request)->authType;
346 nameSpace = ((CIMSetQualifierRequestMessage*)request)->nameSpace;
347 cimMethodName = "SetQualifier";
348 break;
349
350 case CIM_DELETE_QUALIFIER_REQUEST_MESSAGE:
351 userName = ((CIMDeleteQualifierRequestMessage*)request)->userName;
352 authType = ((CIMDeleteQualifierRequestMessage*)request)->authType;
353 nameSpace = ((CIMDeleteQualifierRequestMessage*)request)->nameSpace;
354 cimMethodName = "DeleteQualifier";
355 mday 1.5 break;
356
357 case CIM_ENUMERATE_QUALIFIERS_REQUEST_MESSAGE:
358 userName = ((CIMEnumerateQualifiersRequestMessage*)request)->userName;
359 authType = ((CIMEnumerateQualifiersRequestMessage*)request)->authType;
360 nameSpace = ((CIMEnumerateQualifiersRequestMessage*)request)->nameSpace;
361 cimMethodName = "EnumerateQualifiers";
362 break;
363
364 case CIM_INVOKE_METHOD_REQUEST_MESSAGE:
365 userName = ((CIMInvokeMethodRequestMessage*)request)->userName;
366 authType = ((CIMInvokeMethodRequestMessage*)request)->authType;
367 nameSpace = ((CIMInvokeMethodRequestMessage*)request)->nameSpace;
368 cimMethodName = "InvokeMethod";
369 break;
370
371 default:
372 break;
373 }
374
375 //
|
376 kumpf 1.22 // Get a config manager instance
|
377 mday 1.5 //
378 ConfigManager* configManager = ConfigManager::getInstance();
379
380 //
|
381 kumpf 1.22 // Do namespace authorization verification
|
382 mday 1.5 //
|
383 kumpf 1.22 if (String::equalNoCase(
384 configManager->getCurrentValue("enableNamespaceAuthorization"),
385 "true"))
386 {
387 //
388 // If the user is not privileged, perform the authorization check.
389 //
|
390 chuck 1.21 #if !defined(PEGASUS_PLATFORM_OS400_ISERIES_IBM)
|
391 kumpf 1.22 if ( ! System::isPrivilegedUser(userName) )
|
392 chuck 1.21 #else
|
393 kumpf 1.22 // On OS/400, always check authorization if remote user.
394 // Always allow local privileged users through.
395 // Check authorization for local non-privileged users.
396 // (User authorization to providers are checked downstream from here).
397 if ( ! String::equalNoCase(authType,"Local") ||
398 ! System::isPrivilegedUser(userName) )
|
399 chuck 1.21 #endif
|
400 mday 1.5 {
|
401 kumpf 1.22 UserManager* userManager = UserManager::getInstance();
|
402 mday 1.5
|
403 kumpf 1.22 if ( !userManager || !userManager->verifyAuthorization(
404 userName, nameSpace, cimMethodName) )
405 {
|
406 mday 1.23.4.2
407 // l10n
408
409 // String description = "Not authorized to run ";
410 // description.append(cimMethodName);
411 // description.append(" in the namespace ");
412 // description.append(nameSpace.getString());
|
413 kumpf 1.22
|
414 kumpf 1.23 if (cimMethodName == "InvokeMethod")
415 {
|
416 mday 1.23.4.2 // l10n
417 sendMethodError(
|
418 kumpf 1.23 queueId,
419 request->getHttpMethod(),
420 ((CIMRequestMessage*)request)->messageId,
421 ((CIMInvokeMethodRequestMessage*)request)->methodName,
|
422 mday 1.23.4.2 PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,
423 MessageLoaderParms(
424 "Server.CIMOperationRequestAuthorizer.NOT_AUTHORIZED",
425 "Not authorized to run $0 in the namespace $1",
426 cimMethodName, nameSpace.getString())));
427 // sendMethodError(
428 // queueId,
429 // request->getHttpMethod(),
430 // ((CIMRequestMessage*)request)->messageId,
431 // ((CIMInvokeMethodRequestMessage*)request)->methodName,
432 // PEGASUS_CIM_EXCEPTION(CIM_ERR_ACCESS_DENIED, description));
|
433 kumpf 1.23 }
434 else
435 {
|
436 mday 1.23.4.2 // l10n
437 sendIMethodError(
438 queueId,
439 request->getHttpMethod(),
440 ((CIMRequestMessage*)request)->messageId,
441 cimMethodName,
442 PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED,
443 MessageLoaderParms(
444 "Server.CIMOperationRequestAuthorizer.NOT_AUTHORIZED",
445 "Not authorized to run $0 in the namespace $1",
446 cimMethodName, nameSpace.getString())));
447
448 // sendIMethodError(
449 // queueId,
450 // request->getHttpMethod(),
451 // ((CIMRequestMessage*)request)->messageId,
452 // cimMethodName,
453 // PEGASUS_CIM_EXCEPTION(CIM_ERR_ACCESS_DENIED, description));
|
454 kumpf 1.23 }
|
455 mday 1.5
|
456 kumpf 1.22 PEG_METHOD_EXIT();
457
458 return;
459 }
|
460 mday 1.5 }
461 }
|
462 kumpf 1.22
|
463 mday 1.5 //
464 // If the user is privileged, and remote privileged user access is not
|
465 kumpf 1.22 // enabled and the auth type is not Local then reject access.
|
466 mday 1.5 //
|
467 kumpf 1.22 if ( System::isPrivilegedUser(userName) &&
468 !String::equalNoCase(authType, "Local") &&
469 !String::equalNoCase(
470 configManager->getCurrentValue("enableRemotePrivilegedUserAccess"),
471 "true") )
|
472 mday 1.5 {
473
|
474 kumpf 1.23 if (cimMethodName == "InvokeMethod")
475 {
|
476 mday 1.23.4.2
477 // l10n
478
|
479 kumpf 1.23 sendMethodError(
480 queueId,
481 request->getHttpMethod(),
482 ((CIMRequestMessage*)request)->messageId,
483 ((CIMInvokeMethodRequestMessage*)request)->methodName,
|
484 mday 1.23.4.2 PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, MessageLoaderParms(
485 "Server.CIMOperationRequestAuthorizer.REMOTE_NOT_ENABLED", "Remote privileged user access is not enabled.")));
486
487 // sendMethodError(
488 // queueId,
489 // request->getHttpMethod(),
490 // ((CIMRequestMessage*)request)->messageId,
491 // ((CIMInvokeMethodRequestMessage*)request)->methodName,
492 // PEGASUS_CIM_EXCEPTION(CIM_ERR_ACCESS_DENIED, "Remote privileged user access is not enabled."));
|
493 kumpf 1.23 }
494 else
495 {
|
496 mday 1.23.4.2 // l10n
497
|
498 kumpf 1.23 sendIMethodError(
499 queueId,
500 request->getHttpMethod(),
501 ((CIMRequestMessage*)request)->messageId,
502 cimMethodName,
|
503 mday 1.23.4.2 PEGASUS_CIM_EXCEPTION_L(CIM_ERR_ACCESS_DENIED, MessageLoaderParms(
504 "Server.CIMOperationRequestAuthorizer.REMOTE_NOT_ENABLED", "Remote privileged user access is not enabled.")));
505
506 // sendIMethodError(
507 // queueId,
508 // request->getHttpMethod(),
509 // ((CIMRequestMessage*)request)->messageId,
510 // cimMethodName,
511 // PEGASUS_CIM_EXCEPTION(CIM_ERR_ACCESS_DENIED, "Remote privileged user access is not enabled."));
|
512 kumpf 1.23 }
|
513 mday 1.5
|
514 kumpf 1.10 PEG_METHOD_EXIT();
|
515 mday 1.5
516 return;
517 }
518
519 //
520 // Enqueue the request
521 //
522 _outputQueue->enqueue(request);
523
|
524 kumpf 1.10 PEG_METHOD_EXIT();
|
525 kumpf 1.1
|
526 mday 1.5 }
527
528
529 void CIMOperationRequestAuthorizer::handleEnqueue()
530 {
|
531 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER, "CIMOperationRequestAuthorizer::handleEnqueue");
532
|
533 mday 1.5 Message* request = dequeue();
534 if( request )
535 handleEnqueue(request);
|
536 kumpf 1.10
537 PEG_METHOD_EXIT();
|
538 kumpf 1.1 }
539
540 void CIMOperationRequestAuthorizer::setServerTerminating(Boolean flag)
541 {
|
542 kumpf 1.10 PEG_METHOD_ENTER(TRC_SERVER,
543 "CIMOperationRequestAuthorizer::setServerTerminating");
|
544 kumpf 1.1
|
545 mday 1.5 _serverTerminating = flag;
|
546 kumpf 1.1
|
547 kumpf 1.10 PEG_METHOD_EXIT();
|
548 kumpf 1.1 }
549
550 PEGASUS_NAMESPACE_END
|