mirror of
https://github.com/lubosz/overte.git
synced 2025-08-08 04:08:13 +02:00
handle serving of scripts at temp unique UUIDs
This commit is contained in:
parent
9acf377573
commit
f4292fd29c
4 changed files with 41 additions and 0 deletions
|
@ -213,6 +213,8 @@ void Agent::run() {
|
||||||
|
|
||||||
loop.exec();
|
loop.exec();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// let the AvatarData and ResourceCache classes use our QNetworkAccessManager
|
// let the AvatarData and ResourceCache classes use our QNetworkAccessManager
|
||||||
AvatarData::setNetworkAccessManager(networkManager);
|
AvatarData::setNetworkAccessManager(networkManager);
|
||||||
ResourceCache::setNetworkAccessManager(networkManager);
|
ResourceCache::setNetworkAccessManager(networkManager);
|
||||||
|
|
|
@ -1004,6 +1004,7 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
// check if this is for json stats for a node
|
||||||
const QString NODE_JSON_REGEX_STRING = QString("\\%1\\/(%2).json\\/?$").arg(URI_NODES).arg(UUID_REGEX_STRING);
|
const QString NODE_JSON_REGEX_STRING = QString("\\%1\\/(%2).json\\/?$").arg(URI_NODES).arg(UUID_REGEX_STRING);
|
||||||
QRegExp nodeShowRegex(NODE_JSON_REGEX_STRING);
|
QRegExp nodeShowRegex(NODE_JSON_REGEX_STRING);
|
||||||
|
|
||||||
|
@ -1028,6 +1029,42 @@ bool DomainServer::handleHTTPRequest(HTTPConnection* connection, const QUrl& url
|
||||||
// tell the caller we processed the request
|
// tell the caller we processed the request
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if this is a request for a scripted assignment (with a temp unique UUID)
|
||||||
|
const QString ASSIGNMENT_REGEX_STRING = QString("\\%1\\/(%2)\\/?$").arg(URI_ASSIGNMENT).arg(UUID_REGEX_STRING);
|
||||||
|
QRegExp assignmentRegex(ASSIGNMENT_REGEX_STRING);
|
||||||
|
|
||||||
|
if (assignmentRegex.indexIn(url.path()) != -1) {
|
||||||
|
QUuid matchingUUID = QUuid(assignmentRegex.cap(1));
|
||||||
|
|
||||||
|
SharedAssignmentPointer matchingAssignment = _allAssignments.value(matchingUUID);
|
||||||
|
if (!matchingAssignment) {
|
||||||
|
// check if we have a pending assignment that matches this temp UUID, and it is a scripted assignment
|
||||||
|
PendingAssignedNodeData* pendingData = _pendingAssignedNodes.value(matchingUUID);
|
||||||
|
if (pendingData) {
|
||||||
|
matchingAssignment = _allAssignments.value(pendingData->getAssignmentUUID());
|
||||||
|
|
||||||
|
if (matchingAssignment && matchingAssignment->getType() == Assignment::AgentType) {
|
||||||
|
// we have a matching assignment and it is for the right type, send a temp re-direct to the
|
||||||
|
// URL for the script so the client can download
|
||||||
|
|
||||||
|
QUrl scriptURL = url;
|
||||||
|
scriptURL.setPath(URI_ASSIGNMENT + "/"
|
||||||
|
+ uuidStringWithoutCurlyBraces(pendingData->getAssignmentUUID()));
|
||||||
|
|
||||||
|
// have the HTTPManager serve the appropriate script file
|
||||||
|
return _httpManager.handleHTTPRequest(connection, scriptURL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// request not handled
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (connection->requestOperation() == QNetworkAccessManager::PostOperation) {
|
} else if (connection->requestOperation() == QNetworkAccessManager::PostOperation) {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
const char* HTTPConnection::StatusCode200 = "200 OK";
|
const char* HTTPConnection::StatusCode200 = "200 OK";
|
||||||
const char* HTTPConnection::StatusCode301 = "301 Moved Permanently";
|
const char* HTTPConnection::StatusCode301 = "301 Moved Permanently";
|
||||||
|
const char* HTTPConnection::StatusCode302 = "302 Found";
|
||||||
const char* HTTPConnection::StatusCode400 = "400 Bad Request";
|
const char* HTTPConnection::StatusCode400 = "400 Bad Request";
|
||||||
const char* HTTPConnection::StatusCode404 = "404 Not Found";
|
const char* HTTPConnection::StatusCode404 = "404 Not Found";
|
||||||
const char* HTTPConnection::DefaultContentType = "text/plain; charset=ISO-8859-1";
|
const char* HTTPConnection::DefaultContentType = "text/plain; charset=ISO-8859-1";
|
||||||
|
|
|
@ -44,6 +44,7 @@ class HTTPConnection : public QObject {
|
||||||
public:
|
public:
|
||||||
static const char* StatusCode200;
|
static const char* StatusCode200;
|
||||||
static const char* StatusCode301;
|
static const char* StatusCode301;
|
||||||
|
static const char* StatusCode302;
|
||||||
static const char* StatusCode400;
|
static const char* StatusCode400;
|
||||||
static const char* StatusCode404;
|
static const char* StatusCode404;
|
||||||
static const char* DefaultContentType;
|
static const char* DefaultContentType;
|
||||||
|
|
Loading…
Reference in a new issue