示例#1
0
void StaticServer::handleFileGet(HttpRequest &request, HttpResponse &response)
{
    qDebug() << "-----------%%%" << request.getHeader().getPath();

    bool compress = false;
    if (request.getHeader().getHeaderInfo().contains("Accept-Encoding") )
    {
        if (request.getHeader().getHeaderInfo()["Accept-Encoding"]->contains("gzip"))
        {
            compress = true;
        }
    }

    QByteArray fileContent;
    QString mimeType;
    QString md5;
    if (m_staticFileServer.getFileByPath(request.getHeader().getPath(), fileContent, mimeType, md5, StaticFileServer::FileType::UNSPECIFIED, true, compress))
    {
        response << fileContent;
        if (compress)
        {
            QSharedPointer<QString> gzipstr(new QString("gzip"));
            response.setHeader("Content-Encoding", gzipstr);
        }
        response.finish(mimeType);
    }
    else
    {
        response.setStatusCode(404);
        response << "can't find the file!\n";
        response.finish();
    }
}
示例#2
0
void Worker::handleConsole(HttpRequest &request, HttpResponse &response)
{
    if (request.getHeader().getHeaderInfo().contains("swiftly-admin"))
    {
        QString pass = *request.getHeader().getHeaderInfo()["swiftly-admin"];

        QByteArray hash = QCryptographicHash::hash(pass.toUtf8(), QCryptographicHash::Sha512);

        if (hash.toHex() == m_adminPassHash)
        {
            if (request.getHeader().hasQueries() && request.getHeader().getQueries().contains("cmd"))
            {
                QString cmd = *request.getHeader().getQueries()["cmd"];

                if (cmd == "shutdown")
                {
                    emit shutdown();
                }

                response.setStatusCode(200);
                response << "done!";
                response.finish();
            }
            else
            {
                response.setStatusCode(200);
                response << tem.c_str();
                response.finish();
            }

            return;
        }
    }

    response.setStatusCode(404);
    response << "authentication failed";
    response.finish();
}