Added basic webserver functionality
This commit is contained in:
92
.gitignore
vendored
92
.gitignore
vendored
@ -1,39 +1,73 @@
|
|||||||
# C++ objects and libs
|
# This file is used to ignore files which are generated
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
*.slo
|
*~
|
||||||
*.lo
|
*.autosave
|
||||||
*.o
|
|
||||||
*.a
|
*.a
|
||||||
*.la
|
*.core
|
||||||
*.lai
|
*.moc
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
*.so
|
*.so
|
||||||
*.dll
|
*.so.*
|
||||||
*.dylib
|
*_pch.h.cpp
|
||||||
|
*_resource.rc
|
||||||
# Qt-es
|
*.qm
|
||||||
|
.#*
|
||||||
|
*.*#
|
||||||
|
core
|
||||||
|
!core/
|
||||||
|
tags
|
||||||
|
.DS_Store
|
||||||
|
.directory
|
||||||
|
*.debug
|
||||||
|
Makefile*
|
||||||
|
*.prl
|
||||||
|
*.app
|
||||||
|
moc_*.cpp
|
||||||
|
ui_*.h
|
||||||
|
qrc_*.cpp
|
||||||
|
Thumbs.db
|
||||||
|
*.res
|
||||||
|
*.rc
|
||||||
/.qmake.cache
|
/.qmake.cache
|
||||||
/.qmake.stash
|
/.qmake.stash
|
||||||
*.pro.user
|
|
||||||
*.pro.user.*
|
|
||||||
*.qbs.user
|
|
||||||
*.qbs.user.*
|
|
||||||
*.moc
|
|
||||||
moc_*.cpp
|
|
||||||
moc_*.h
|
|
||||||
qrc_*.cpp
|
|
||||||
ui_*.h
|
|
||||||
Makefile*
|
|
||||||
*build-*
|
|
||||||
|
|
||||||
# QtCreator
|
# qtcreator generated files
|
||||||
|
*.pro.user*
|
||||||
|
|
||||||
*.autosave
|
# xemacs temporary files
|
||||||
|
*.flc
|
||||||
|
|
||||||
# QtCtreator Qml
|
# Vim temporary files
|
||||||
*.qmlproject.user
|
.*.swp
|
||||||
*.qmlproject.user.*
|
|
||||||
|
|
||||||
# QtCtreator CMake
|
# Visual Studio generated files
|
||||||
CMakeLists.txt.user*
|
*.ib_pdb_index
|
||||||
|
*.idb
|
||||||
|
*.ilk
|
||||||
|
*.pdb
|
||||||
|
*.sln
|
||||||
|
*.suo
|
||||||
|
*.vcproj
|
||||||
|
*vcproj.*.*.user
|
||||||
|
*.ncb
|
||||||
|
*.sdf
|
||||||
|
*.opensdf
|
||||||
|
*.vcxproj
|
||||||
|
*vcxproj.*
|
||||||
|
|
||||||
|
# MinGW generated files
|
||||||
|
*.Debug
|
||||||
|
*.Release
|
||||||
|
|
||||||
|
# Python byte code
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Binaries
|
||||||
|
# --------
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
|
||||||
|
42
Dockerfile
Normal file
42
Dockerfile
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
FROM ubuntu:artful
|
||||||
|
|
||||||
|
RUN ln -snf /usr/share/zoneinfo/Europe/Vienna /etc/localtime && echo Europe/Vienna > /etc/timezone
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install tzdata -y \
|
||||||
|
&& rm /var/lib/apt/lists/* /var/log/* -Rf
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install libssl1.0.0 ca-certificates libqt5core5a libqt5gui5 libqt5network5 libqt5multimedia5 -y \
|
||||||
|
&& rm /var/lib/apt/lists/* /var/log/* -Rf
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install git-core g++ make qt5-default qtmultimedia5-dev qttools5-dev qttools5-dev-tools -y \
|
||||||
|
&& rm /var/lib/apt/lists/* /var/log/* -Rf
|
||||||
|
|
||||||
|
ADD . /tmp/StreamingWebserver
|
||||||
|
|
||||||
|
RUN mkdir -p /tmp/build_StreamingWebserver \
|
||||||
|
&& qmake /tmp/StreamingWebserver -o /tmp/build_StreamingWebserver/Makefile -config release \
|
||||||
|
&& make -C /tmp/build_StreamingWebserver -j8 \
|
||||||
|
&& make -C /tmp/build_StreamingWebserver install
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
FROM ubuntu:artful
|
||||||
|
|
||||||
|
RUN ln -snf /usr/share/zoneinfo/Europe/Vienna /etc/localtime && echo Europe/Vienna > /etc/timezone
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install tzdata -y \
|
||||||
|
&& rm /var/lib/apt/lists/* /var/log/* -Rf
|
||||||
|
|
||||||
|
RUN apt update \
|
||||||
|
&& apt install libssl1.0.0 ca-certificates libqt5core5a libqt5gui5 libqt5network5 libqt5multimedia5 -y \
|
||||||
|
&& rm /var/lib/apt/lists/* /var/log/* -Rf
|
||||||
|
|
||||||
|
COPY --from=0 /tmp/build_StreamingWebserver/StreamingWebserver /root/
|
||||||
|
|
||||||
|
EXPOSE 8080/tcp
|
||||||
|
|
||||||
|
CMD /root/StreamingWebserver
|
16
StreamingWebserver.pro
Normal file
16
StreamingWebserver.pro
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
QT = core network
|
||||||
|
|
||||||
|
CONFIG += c++14
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
|
||||||
|
DEFINES += QT_DEPRECATED_WARNINGS QT_DISABLE_DEPRECATED_BEFORE=0x060000
|
||||||
|
|
||||||
|
HEADERS += streamingwebserver.h
|
||||||
|
|
||||||
|
SOURCES += main.cpp \
|
||||||
|
streamingwebserver.cpp
|
||||||
|
|
||||||
|
OTHER_FILES += .dockerignore \
|
||||||
|
Dockerfile
|
||||||
|
|
||||||
|
include(QtWebserver/QtWebserver.pri)
|
17
main.cpp
Normal file
17
main.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include <QCoreApplication>
|
||||||
|
|
||||||
|
#include "streamingwebserver.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QCoreApplication app(argc, argv);
|
||||||
|
|
||||||
|
StreamingWebserver server(&app);
|
||||||
|
if(!server.listen(QHostAddress::Any, 8080))
|
||||||
|
{
|
||||||
|
qCritical() << "webserver could not start listening:" << server.errorString();
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
|
return app.exec();
|
||||||
|
}
|
20
streamingwebserver.cpp
Normal file
20
streamingwebserver.cpp
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "streamingwebserver.h"
|
||||||
|
|
||||||
|
#include "httpclientconnection.h"
|
||||||
|
#include "httpcontainers.h"
|
||||||
|
|
||||||
|
StreamingWebserver::StreamingWebserver(QObject *parent) :
|
||||||
|
HttpServer(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void StreamingWebserver::handleRequest(HttpClientConnection *connection, const HttpRequest &request)
|
||||||
|
{
|
||||||
|
HttpResponse response;
|
||||||
|
response.protocol = request.protocol;
|
||||||
|
response.statusCode = HttpResponse::StatusCode::NotFound;
|
||||||
|
response.headers.insert(QStringLiteral("Server"), QStringLiteral("Hatschi Server 1.0"));
|
||||||
|
response.headers.insert(QStringLiteral("Content-Type"), QStringLiteral("text/html"));
|
||||||
|
|
||||||
|
connection->sendResponse(response, tr("Not Found"));
|
||||||
|
}
|
19
streamingwebserver.h
Normal file
19
streamingwebserver.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "httpserver.h"
|
||||||
|
|
||||||
|
class HttpClientConnection;
|
||||||
|
class HttpRequest;
|
||||||
|
|
||||||
|
class StreamingWebserver : public HttpServer
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit StreamingWebserver(QObject *parent = Q_NULLPTR);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void handleRequest(HttpClientConnection *connection, const HttpRequest &request) Q_DECL_OVERRIDE;
|
||||||
|
};
|
Reference in New Issue
Block a user