Enable API WebServices when GC is running

.. but disable logging if not running as a server
.. let user define if API services start in preferences
This commit is contained in:
Mark Liversedge
2015-09-17 14:21:21 +01:00
parent e1312caa33
commit 422d5ad5fc
13 changed files with 151 additions and 80 deletions

View File

@@ -18,14 +18,14 @@ HttpRequest::HttpRequest(QSettings* settings) {
void HttpRequest::readRequest(QTcpSocket* socket) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: read request");
wDebug("HttpRequest: read request");
#endif
int toRead=maxSize-currentSize+1; // allow one byte more to be able to detect overflow
lineBuffer.append(socket->readLine(toRead));
currentSize+=lineBuffer.size();
if (!lineBuffer.contains('\r') && !lineBuffer.contains('\n')) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: collecting more parts until line break");
wDebug("HttpRequest: collecting more parts until line break");
#endif
return;
}
@@ -48,14 +48,14 @@ void HttpRequest::readRequest(QTcpSocket* socket) {
void HttpRequest::readHeader(QTcpSocket* socket) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: read header");
wDebug("HttpRequest: read header");
#endif
int toRead=maxSize-currentSize+1; // allow one byte more to be able to detect overflow
lineBuffer.append(socket->readLine(toRead));
currentSize+=lineBuffer.size();
if (!lineBuffer.contains('\r') && !lineBuffer.contains('\n')) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: collecting more parts until line break");
wDebug("HttpRequest: collecting more parts until line break");
#endif
return;
}
@@ -68,13 +68,13 @@ void HttpRequest::readHeader(QTcpSocket* socket) {
QByteArray value=newData.mid(colon+1).trimmed();
headers.insert(currentHeader,value);
#ifdef SUPERVERBOSE
qDebug("HttpRequest: received header %s: %s",currentHeader.data(),value.data());
wDebug("HttpRequest: received header %s: %s",currentHeader.data(),value.data());
#endif
}
else if (!newData.isEmpty()) {
// received another line - belongs to the previous header
#ifdef SUPERVERBOSE
qDebug("HttpRequest: read additional line of header");
wDebug("HttpRequest: read additional line of header");
#endif
// Received additional line of previous header
if (headers.contains(currentHeader)) {
@@ -84,7 +84,7 @@ void HttpRequest::readHeader(QTcpSocket* socket) {
else {
// received an empty line - end of headers reached
#ifdef SUPERVERBOSE
qDebug("HttpRequest: headers completed");
wDebug("HttpRequest: headers completed");
#endif
// Empty line received, that means all headers have been received
// Check for multipart/form-data
@@ -101,7 +101,7 @@ void HttpRequest::readHeader(QTcpSocket* socket) {
}
if (expectedBodySize==0) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: expect no body");
wDebug("HttpRequest: expect no body");
#endif
status=complete;
}
@@ -115,7 +115,7 @@ void HttpRequest::readHeader(QTcpSocket* socket) {
}
else {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: expect %i bytes body",expectedBodySize);
wDebug("HttpRequest: expect %i bytes body",expectedBodySize);
#endif
status=waitForBody;
}
@@ -127,7 +127,7 @@ void HttpRequest::readBody(QTcpSocket* socket) {
if (boundary.isEmpty()) {
// normal body, no multipart
#ifdef SUPERVERBOSE
qDebug("HttpRequest: receive body");
wDebug("HttpRequest: receive body");
#endif
int toRead=expectedBodySize-bodyData.size();
QByteArray newData=socket->read(toRead);
@@ -140,7 +140,7 @@ void HttpRequest::readBody(QTcpSocket* socket) {
else {
// multipart body, store into temp file
#ifdef SUPERVERBOSE
qDebug("HttpRequest: receiving multipart body");
wDebug("HttpRequest: receiving multipart body");
#endif
if (!tempFile.isOpen()) {
tempFile.open();
@@ -158,7 +158,7 @@ void HttpRequest::readBody(QTcpSocket* socket) {
}
else if (fileSize>=expectedBodySize) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: received whole multipart body");
wDebug("HttpRequest: received whole multipart body");
#endif
tempFile.flush();
if (tempFile.error()) {
@@ -173,7 +173,7 @@ void HttpRequest::readBody(QTcpSocket* socket) {
void HttpRequest::decodeRequestParams() {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: extract and decode request parameters");
wDebug("HttpRequest: extract and decode request parameters");
#endif
// Get URL parameters
QByteArray rawParameters;
@@ -211,13 +211,13 @@ void HttpRequest::decodeRequestParams() {
void HttpRequest::extractCookies() {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: extract cookies");
wDebug("HttpRequest: extract cookies");
#endif
foreach(QByteArray cookieStr, headers.values("Cookie")) {
QList<QByteArray> list=HttpCookie::splitCSV(cookieStr);
foreach(QByteArray part, list) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: found cookie %s",part.data());
wDebug("HttpRequest: found cookie %s",part.data());
#endif // Split the part into name and value
QByteArray name;
QByteArray value;
@@ -325,12 +325,12 @@ QByteArray HttpRequest::urlDecode(const QByteArray source) {
void HttpRequest::parseMultiPartFile() {
qDebug("HttpRequest: parsing multipart temp file");
wDebug("HttpRequest: parsing multipart temp file");
tempFile.seek(0);
bool finished=false;
while (!tempFile.atEnd() && !finished && !tempFile.error()) {
#ifdef SUPERVERBOSE
qDebug("HttpRequest: reading multpart headers");
wDebug("HttpRequest: reading multpart headers");
#endif
QByteArray fieldName;
QByteArray fileName;
@@ -349,11 +349,11 @@ void HttpRequest::parseMultiPartFile() {
fileName=line.mid(start+11,end-start-11);
}
#ifdef SUPERVERBOSE
qDebug("HttpRequest: multipart field=%s, filename=%s",fieldName.data(),fileName.data());
wDebug("HttpRequest: multipart field=%s, filename=%s",fieldName.data(),fileName.data());
#endif
}
else {
qDebug("HttpRequest: ignoring unsupported content part %s",line.data());
wDebug("HttpRequest: ignoring unsupported content part %s",line.data());
}
}
else if (line.isEmpty()) {
@@ -362,7 +362,7 @@ void HttpRequest::parseMultiPartFile() {
}
#ifdef SUPERVERBOSE
qDebug("HttpRequest: reading multpart data");
wDebug("HttpRequest: reading multpart data");
#endif
QTemporaryFile* uploadedFile=0;
QByteArray fieldValue;
@@ -375,20 +375,20 @@ void HttpRequest::parseMultiPartFile() {
// last field was a form field
fieldValue.remove(fieldValue.size()-2,2);
parameters.insert(fieldName,fieldValue);
qDebug("HttpRequest: set parameter %s=%s",fieldName.data(),fieldValue.data());
wDebug("HttpRequest: set parameter %s=%s",fieldName.data(),fieldValue.data());
}
else if (!fileName.isEmpty() && !fieldName.isEmpty()) {
// last field was a file
#ifdef SUPERVERBOSE
qDebug("HttpRequest: finishing writing to uploaded file");
wDebug("HttpRequest: finishing writing to uploaded file");
#endif
uploadedFile->resize(uploadedFile->size()-2);
uploadedFile->flush();
uploadedFile->seek(0);
parameters.insert(fieldName,fileName);
qDebug("HttpRequest: set parameter %s=%s",fieldName.data(),fileName.data());
wDebug("HttpRequest: set parameter %s=%s",fieldName.data(),fileName.data());
uploadedFiles.insert(fieldName,uploadedFile);
qDebug("HttpRequest: uploaded file size is %i",(int) uploadedFile->size());
wDebug("HttpRequest: uploaded file size is %i",(int) uploadedFile->size());
}
if (line.contains(boundary+"--")) {
finished=true;
@@ -419,7 +419,7 @@ void HttpRequest::parseMultiPartFile() {
qCritical("HttpRequest: cannot read temp file, %s",qPrintable(tempFile.errorString()));
}
#ifdef SUPERVERBOSE
qDebug("HttpRequest: finished parsing multipart temp file");
wDebug("HttpRequest: finished parsing multipart temp file");
#endif
}