/* * Copyright (C) by Daniel Molkentin * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ #include "httpserver.h" HttpServer::HttpServer(quint16 port, QObject* parent) : QTcpServer(parent) { listen(QHostAddress::Any, port); } void HttpServer::readClient() { QTcpSocket* socket = (QTcpSocket*)sender(); if (socket->canReadLine()) { QStringList tokens = QString(socket->readLine()).split(QRegExp("[ \r\n][ \r\n]*")); if (tokens[0] == "GET") { QTextStream os(socket); os.setAutoDetectUnicode(true); os << "HTTP/1.0 200 Ok\r\n" "Content-Type: text/html; charset=\"utf-8\"\r\n" "\r\n" "

Nothing to see here

\n" << QDateTime::currentDateTimeUtc().toString() << "\n"; socket->close(); QtServiceBase::instance()->logMessage("Wrote to client"); if (socket->state() == QTcpSocket::UnconnectedState) { delete socket; QtServiceBase::instance()->logMessage("Connection closed"); } } } } void HttpServer::discardClient() { QTcpSocket* socket = (QTcpSocket*)sender(); socket->deleteLater(); QtServiceBase::instance()->logMessage("Connection closed"); } void HttpServer::incomingConnection(int socket) { if (disabled) return; QTcpSocket* s = new QTcpSocket(this); connect(s, SIGNAL(readyRead()), this, SLOT(readClient())); connect(s, SIGNAL(disconnected()), this, SLOT(discardClient())); s->setSocketDescriptor(socket); }