version 1.10, 2002/03/28 20:39:19
|
version 1.11, 2002/04/03 21:53:27
|
|
|
_operationMessageQueueId(operationMessageQueueId), | _operationMessageQueueId(operationMessageQueueId), |
_exportMessageQueueId(exportMessageQueueId) | _exportMessageQueueId(exportMessageQueueId) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::HTTPAuthenticatorDelegator"); |
|
|
_authenticationManager = new AuthenticationManager(); | _authenticationManager = new AuthenticationManager(); |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
HTTPAuthenticatorDelegator::~HTTPAuthenticatorDelegator() | HTTPAuthenticatorDelegator::~HTTPAuthenticatorDelegator() |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::~HTTPAuthenticatorDelegator"); |
|
|
delete _authenticationManager; | delete _authenticationManager; |
| |
|
PEG_METHOD_EXIT(); |
} | } |
| |
void HTTPAuthenticatorDelegator::_sendResponse( | void HTTPAuthenticatorDelegator::_sendResponse( |
Uint32 queueId, | Uint32 queueId, |
Array<Sint8>& message) | Array<Sint8>& message) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::_sendResponse"); |
|
|
MessageQueue* queue = MessageQueue::lookup(queueId); | MessageQueue* queue = MessageQueue::lookup(queueId); |
| |
if (queue) | if (queue) |
|
|
| |
queue->enqueue(httpMessage); | queue->enqueue(httpMessage); |
} | } |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
void HTTPAuthenticatorDelegator::_sendChallenge( | void HTTPAuthenticatorDelegator::_sendChallenge( |
Uint32 queueId, | Uint32 queueId, |
const String& authResponse) | const String& authResponse) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::_sendChallenge"); |
|
|
// | // |
// build unauthorized (401) response message | // build unauthorized (401) response message |
// | // |
|
|
XmlWriter::appendUnauthorizedResponseHeader(message, authResponse); | XmlWriter::appendUnauthorizedResponseHeader(message, authResponse); |
| |
_sendResponse(queueId, message); | _sendResponse(queueId, message); |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
| |
|
|
Uint32 queueId, | Uint32 queueId, |
const String errorMessage) | const String errorMessage) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::_sendError"); |
|
|
// | // |
// build erro response message |
// build error response message |
// | // |
| |
Array<Sint8> message; | Array<Sint8> message; |
|
|
//message = XmlWriter::formatErrorResponseHeader(errorMessage); | //message = XmlWriter::formatErrorResponseHeader(errorMessage); |
| |
_sendResponse(queueId, message); | _sendResponse(queueId, message); |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
| |
void HTTPAuthenticatorDelegator::handleEnqueue(Message *message) | void HTTPAuthenticatorDelegator::handleEnqueue(Message *message) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::handleEnqueue"); |
| |
if (!message) | if (!message) |
|
{ |
|
PEG_METHOD_EXIT(); |
return; | return; |
|
} |
| |
// Flag indicating whether the message should be deleted after handling. | // Flag indicating whether the message should be deleted after handling. |
// This should be set to false by handleHTTPMessage when the message is | // This should be set to false by handleHTTPMessage when the message is |
|
|
{ | { |
delete message; | delete message; |
} | } |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
void HTTPAuthenticatorDelegator::handleEnqueue() | void HTTPAuthenticatorDelegator::handleEnqueue() |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::handleEnqueue"); |
|
|
Message* message = dequeue(); | Message* message = dequeue(); |
if(message) | if(message) |
handleEnqueue(message); | handleEnqueue(message); |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
void HTTPAuthenticatorDelegator::handleHTTPMessage( | void HTTPAuthenticatorDelegator::handleHTTPMessage( |
HTTPMessage* httpMessage, | HTTPMessage* httpMessage, |
Boolean & deleteMessage) | Boolean & deleteMessage) |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::handleHTTPMessage"); |
|
|
Boolean authenticated = false; | Boolean authenticated = false; |
deleteMessage = true; | deleteMessage = true; |
| |
|
|
HTTPMessage::parseRequestLine( | HTTPMessage::parseRequestLine( |
startLine, methodName, requestUri, httpVersion); | startLine, methodName, requestUri, httpVersion); |
| |
|
if (methodName != "M-POST" && methodName != "POST") |
|
{ |
|
// Only POST and M-POST are implemented by this server |
|
Array<Sint8> message; |
|
XmlWriter::appendNotImplementedResponseHeader(message); |
|
_sendResponse(queueId, message); |
|
} |
|
else |
|
{ |
// | // |
// Process M-POST and POST messages: | // Process M-POST and POST messages: |
// | // |
| |
if (methodName == "M-POST" || methodName == "POST") |
|
{ |
|
httpMessage->message.append('\0'); | httpMessage->message.append('\0'); |
| |
// | // |
|
|
_sendError(queueId, "Invalid Request"); | _sendError(queueId, "Invalid Request"); |
} | } |
| |
|
PEG_METHOD_EXIT(); |
return; | return; |
} | } |
} | } |
|
|
_sendError(queueId, "Invalid Request"); | _sendError(queueId, "Invalid Request"); |
} | } |
| |
|
PEG_METHOD_EXIT(); |
return; | return; |
} | } |
} | } |
|
|
Array<Sint8> message; | Array<Sint8> message; |
XmlWriter::appendBadRequestResponseHeader(message); | XmlWriter::appendBadRequestResponseHeader(message); |
_sendResponse(queueId, message); | _sendResponse(queueId, message); |
|
PEG_METHOD_EXIT(); |
return; | return; |
} | } |
} | } |
|
|
} | } |
} | } |
} | } |
|
|
|
PEG_METHOD_EXIT(); |
} | } |
| |
const char* HTTPAuthenticatorDelegator::getQueueName() const | const char* HTTPAuthenticatorDelegator::getQueueName() const |
{ | { |
|
PEG_METHOD_ENTER(TRC_HTTP, |
|
"HTTPAuthenticatorDelegator::getQueueName"); |
|
|
|
PEG_METHOD_EXIT(); |
return PEGASUS_SERVICENAME_HTTPAUTHDELEGATOR; | return PEGASUS_SERVICENAME_HTTPAUTHDELEGATOR; |
} | } |
| |