Compare commits
5 Commits
master
...
feature/cp
Author | SHA1 | Date | |
---|---|---|---|
|
7ff12a36b9 | ||
|
945c692227 | ||
|
c16b64bcb2 | ||
|
886b8f54bf | ||
|
02810f9adf |
13
.github/workflows/unittest_linux.yml
vendored
13
.github/workflows/unittest_linux.yml
vendored
@ -1,13 +0,0 @@
|
|||||||
name: linux
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
linux:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: make test_make
|
|
||||||
run: make test_make
|
|
15
.github/workflows/unittest_mac_tsan_mbedtls.yml
vendored
15
.github/workflows/unittest_mac_tsan_mbedtls.yml
vendored
@ -1,15 +0,0 @@
|
|||||||
name: mac_tsan_mbedtls
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mac_tsan_mbedtls:
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: install mbedtls
|
|
||||||
run: brew install mbedtls
|
|
||||||
- name: make test
|
|
||||||
run: make test_tsan_mbedtls
|
|
15
.github/workflows/unittest_mac_tsan_openssl.yml
vendored
15
.github/workflows/unittest_mac_tsan_openssl.yml
vendored
@ -1,15 +0,0 @@
|
|||||||
name: mac_tsan_openssl
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mac_tsan_openssl:
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: install openssl
|
|
||||||
run: brew install openssl@1.1
|
|
||||||
- name: make test
|
|
||||||
run: make test_tsan_openssl
|
|
@ -1,13 +0,0 @@
|
|||||||
name: mac_tsan_sectransport
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
mac_tsan_sectransport:
|
|
||||||
runs-on: macOS-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- name: make test_tsan
|
|
||||||
run: make test_tsan
|
|
38
.github/workflows/unittest_uwp.yml
vendored
38
.github/workflows/unittest_uwp.yml
vendored
@ -1,38 +0,0 @@
|
|||||||
name: uwp
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
uwp:
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- uses: seanmiddleditch/gha-setup-vsdevenv@master
|
|
||||||
- run: |
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0" -DCMAKE_CXX_COMPILER=cl.exe -DUSE_TEST=1 ..
|
|
||||||
- run: cmake --build build
|
|
||||||
|
|
||||||
#
|
|
||||||
# Windows with OpenSSL is working but disabled as it takes 13 minutes (10 for openssl) to build with vcpkg
|
|
||||||
#
|
|
||||||
# windows_openssl:
|
|
||||||
# runs-on: windows-latest
|
|
||||||
# steps:
|
|
||||||
# - uses: actions/checkout@v1
|
|
||||||
# - uses: seanmiddleditch/gha-setup-vsdevenv@master
|
|
||||||
# - run: |
|
|
||||||
# vcpkg install zlib:x64-windows
|
|
||||||
# vcpkg install openssl:x64-windows
|
|
||||||
# - run: |
|
|
||||||
# mkdir build
|
|
||||||
# cd build
|
|
||||||
# cmake -DCMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_CXX_COMPILER=cl.exe -DUSE_OPEN_SSL=1 -DUSE_TLS=1 -DUSE_WS=1 -DUSE_TEST=1 ..
|
|
||||||
# - run: cmake --build build
|
|
||||||
#
|
|
||||||
# # Running the unittest does not work, the binary cannot be found
|
|
||||||
# #- run: ../build/test/ixwebsocket_unittest.exe
|
|
||||||
# # working-directory: test
|
|
17
.github/workflows/unittest_windows.yml
vendored
17
.github/workflows/unittest_windows.yml
vendored
@ -1,17 +0,0 @@
|
|||||||
name: windows
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
paths-ignore:
|
|
||||||
- 'docs/**'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
windows:
|
|
||||||
runs-on: windows-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
- uses: seanmiddleditch/gha-setup-vsdevenv@master
|
|
||||||
- run: |
|
|
||||||
mkdir build
|
|
||||||
cd build
|
|
||||||
cmake -DCMAKE_CXX_COMPILER=cl.exe -DUSE_WS=1 -DUSE_TEST=1 ..
|
|
||||||
- run: cmake --build build
|
|
@ -1 +1 @@
|
|||||||
docker/Dockerfile.alpine
|
docker/Dockerfile.centos7_httpd
|
33
docker/Dockerfile.centos7_httpd
Normal file
33
docker/Dockerfile.centos7_httpd
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
FROM centos:7 as build
|
||||||
|
|
||||||
|
RUN yum install -y gcc-c++ make zlib-devel redhat-rpm-config
|
||||||
|
|
||||||
|
RUN groupadd app && useradd -g app app
|
||||||
|
RUN chown -R app:app /opt
|
||||||
|
RUN chown -R app:app /usr/local
|
||||||
|
|
||||||
|
# There is a bug in CMake where we cannot build from the root top folder
|
||||||
|
# So we build from /opt
|
||||||
|
COPY --chown=app:app . /opt
|
||||||
|
WORKDIR /opt
|
||||||
|
|
||||||
|
USER app
|
||||||
|
RUN [ "make", "httpd_linux" ]
|
||||||
|
RUN [ "rm", "-rf", "build" ]
|
||||||
|
|
||||||
|
FROM centos:8 as runtime
|
||||||
|
|
||||||
|
RUN groupadd app && useradd -g app app
|
||||||
|
COPY --chown=app:app --from=build /usr/local/bin/ixhttpd /usr/local/bin/ixhttpd
|
||||||
|
RUN chmod +x /usr/local/bin/ixhttpd
|
||||||
|
RUN ldd /usr/local/bin/ixhttpd
|
||||||
|
|
||||||
|
# Copy source code for gcc
|
||||||
|
COPY --chown=app:app --from=build /opt /opt
|
||||||
|
|
||||||
|
# Now run in usermode
|
||||||
|
USER app
|
||||||
|
WORKDIR /home/app
|
||||||
|
|
||||||
|
ENTRYPOINT ["ixhttpd"]
|
||||||
|
EXPOSE 9999
|
@ -6,7 +6,7 @@
|
|||||||
* Buid with make httpd
|
* Buid with make httpd
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ixwebsocket/IXHttpServer.h>
|
#include "IXHttpServer.h"
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
@ -14,9 +14,10 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
if (argc != 3)
|
if (argc != 3)
|
||||||
{
|
{
|
||||||
std::cerr << "Usage: httpd <port> <host>" << std::endl;
|
std::cerr << "Usage: " << argv[0]
|
||||||
std::cerr << " ./a.out 9090 127.0.0.1" << std::endl;
|
<< " <port> <host>" << std::endl;
|
||||||
std::cerr << " ./a.out 9090 0.0.0.0" << std::endl;
|
std::cerr << " " << argv[0] << " 9090 127.0.0.1" << std::endl;
|
||||||
|
std::cerr << " " << argv[0] << " 9090 0.0.0.0" << std::endl;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "IXSelectInterruptFactory.h"
|
#include "IXSelectInterruptFactory.h"
|
||||||
|
|
||||||
|
#include "IXUniquePtr.h"
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
#include "IXSelectInterruptPipe.h"
|
#include "IXSelectInterruptPipe.h"
|
||||||
#else
|
#else
|
||||||
@ -17,9 +18,9 @@ namespace ix
|
|||||||
SelectInterruptPtr createSelectInterrupt()
|
SelectInterruptPtr createSelectInterrupt()
|
||||||
{
|
{
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
return std::make_unique<SelectInterruptPipe>();
|
return ix::make_unique<SelectInterruptPipe>();
|
||||||
#else
|
#else
|
||||||
return std::make_unique<SelectInterrupt>();
|
return ix::make_unique<SelectInterrupt>();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} // namespace ix
|
} // namespace ix
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "IXNetSystem.h"
|
#include "IXNetSystem.h"
|
||||||
#include "IXSelectInterrupt.h"
|
#include "IXSelectInterrupt.h"
|
||||||
#include "IXSocket.h"
|
#include "IXSocket.h"
|
||||||
|
#include "IXUniquePtr.h"
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
@ -65,7 +66,7 @@ namespace ix
|
|||||||
|
|
||||||
int timeoutMs = 10;
|
int timeoutMs = 10;
|
||||||
bool readyToRead = false;
|
bool readyToRead = false;
|
||||||
auto selectInterrupt = std::make_unique<SelectInterrupt>();
|
auto selectInterrupt = ix::make_unique<SelectInterrupt>();
|
||||||
PollResultType pollResult = Socket::poll(readyToRead, timeoutMs, fd, selectInterrupt);
|
PollResultType pollResult = Socket::poll(readyToRead, timeoutMs, fd, selectInterrupt);
|
||||||
|
|
||||||
if (pollResult == PollResultType::Timeout)
|
if (pollResult == PollResultType::Timeout)
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "IXSocketFactory.h"
|
#include "IXSocketFactory.h"
|
||||||
|
#include "IXUniquePtr.h"
|
||||||
|
|
||||||
#ifdef IXWEBSOCKET_USE_TLS
|
#ifdef IXWEBSOCKET_USE_TLS
|
||||||
|
|
||||||
@ -35,17 +36,17 @@ namespace ix
|
|||||||
|
|
||||||
if (!tls)
|
if (!tls)
|
||||||
{
|
{
|
||||||
socket = std::make_unique<Socket>(fd);
|
socket = ix::make_unique<Socket>(fd);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef IXWEBSOCKET_USE_TLS
|
#ifdef IXWEBSOCKET_USE_TLS
|
||||||
#if defined(IXWEBSOCKET_USE_MBED_TLS)
|
#if defined(IXWEBSOCKET_USE_MBED_TLS)
|
||||||
socket = std::make_unique<SocketMbedTLS>(tlsOptions, fd);
|
socket = ix::make_unique<SocketMbedTLS>(tlsOptions, fd);
|
||||||
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
|
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
|
||||||
socket = std::make_unique<SocketOpenSSL>(tlsOptions, fd);
|
socket = ix::make_unique<SocketOpenSSL>(tlsOptions, fd);
|
||||||
#elif defined(__APPLE__)
|
#elif defined(__APPLE__)
|
||||||
socket = std::make_unique<SocketAppleSSL>(tlsOptions, fd);
|
socket = ix::make_unique<SocketAppleSSL>(tlsOptions, fd);
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else
|
||||||
errorMsg = "TLS support is not enabled on this platform.";
|
errorMsg = "TLS support is not enabled on this platform.";
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "IXSocket.h"
|
#include "IXSocket.h"
|
||||||
#include "IXSocketConnect.h"
|
#include "IXSocketConnect.h"
|
||||||
#include "IXSocketFactory.h"
|
#include "IXSocketFactory.h"
|
||||||
|
#include "IXUniquePtr.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -258,7 +259,7 @@ namespace ix
|
|||||||
// Use poll to check whether a new connection is in progress
|
// Use poll to check whether a new connection is in progress
|
||||||
int timeoutMs = 10;
|
int timeoutMs = 10;
|
||||||
bool readyToRead = true;
|
bool readyToRead = true;
|
||||||
auto selectInterrupt = std::make_unique<SelectInterrupt>();
|
auto selectInterrupt = ix::make_unique<SelectInterrupt>();
|
||||||
PollResultType pollResult =
|
PollResultType pollResult =
|
||||||
Socket::poll(readyToRead, timeoutMs, _serverFd, selectInterrupt);
|
Socket::poll(readyToRead, timeoutMs, _serverFd, selectInterrupt);
|
||||||
|
|
||||||
|
18
ixwebsocket/IXUniquePtr.h
Normal file
18
ixwebsocket/IXUniquePtr.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* IXUniquePtr.h
|
||||||
|
* Author: Benjamin Sergeant
|
||||||
|
* Copyright (c) 2020 Machine Zone, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
namespace ix
|
||||||
|
{
|
||||||
|
template<typename T, typename... Args>
|
||||||
|
std::unique_ptr<T> make_unique(Args&&... args)
|
||||||
|
{
|
||||||
|
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
|
||||||
|
}
|
||||||
|
}
|
29
makefile
29
makefile
@ -170,7 +170,7 @@ autobahn_report:
|
|||||||
cp -rvf ~/sandbox/reports/clients/* ../bsergean.github.io/IXWebSocket/autobahn/
|
cp -rvf ~/sandbox/reports/clients/* ../bsergean.github.io/IXWebSocket/autobahn/
|
||||||
|
|
||||||
httpd:
|
httpd:
|
||||||
clang++ --std=c++14 --stdlib=libc++ httpd.cpp \
|
clang++ --std=c++11 --stdlib=libc++ -Iixwebsocket httpd.cpp \
|
||||||
ixwebsocket/IXSelectInterruptFactory.cpp \
|
ixwebsocket/IXSelectInterruptFactory.cpp \
|
||||||
ixwebsocket/IXCancellationRequest.cpp \
|
ixwebsocket/IXCancellationRequest.cpp \
|
||||||
ixwebsocket/IXSocketTLSOptions.cpp \
|
ixwebsocket/IXSocketTLSOptions.cpp \
|
||||||
@ -189,7 +189,32 @@ httpd:
|
|||||||
ixwebsocket/IXConnectionState.cpp \
|
ixwebsocket/IXConnectionState.cpp \
|
||||||
ixwebsocket/IXUrlParser.cpp \
|
ixwebsocket/IXUrlParser.cpp \
|
||||||
ixwebsocket/IXSelectInterrupt.cpp \
|
ixwebsocket/IXSelectInterrupt.cpp \
|
||||||
ixwebsocket/apple/IXSetThreadName_apple.cpp -lz
|
ixwebsocket/apple/IXSetThreadName_apple.cpp \
|
||||||
|
-lz
|
||||||
|
|
||||||
|
httpd_linux:
|
||||||
|
g++ --std=c++11 -o ixhttpd httpd.cpp -Iixwebsocket \
|
||||||
|
ixwebsocket/IXSelectInterruptFactory.cpp \
|
||||||
|
ixwebsocket/IXCancellationRequest.cpp \
|
||||||
|
ixwebsocket/IXSocketTLSOptions.cpp \
|
||||||
|
ixwebsocket/IXUserAgent.cpp \
|
||||||
|
ixwebsocket/IXDNSLookup.cpp \
|
||||||
|
ixwebsocket/IXBench.cpp \
|
||||||
|
ixwebsocket/IXWebSocketHttpHeaders.cpp \
|
||||||
|
ixwebsocket/IXSelectInterruptPipe.cpp \
|
||||||
|
ixwebsocket/IXHttp.cpp \
|
||||||
|
ixwebsocket/IXSocketConnect.cpp \
|
||||||
|
ixwebsocket/IXSocket.cpp \
|
||||||
|
ixwebsocket/IXSocketServer.cpp \
|
||||||
|
ixwebsocket/IXNetSystem.cpp \
|
||||||
|
ixwebsocket/IXHttpServer.cpp \
|
||||||
|
ixwebsocket/IXSocketFactory.cpp \
|
||||||
|
ixwebsocket/IXConnectionState.cpp \
|
||||||
|
ixwebsocket/IXUrlParser.cpp \
|
||||||
|
ixwebsocket/IXSelectInterrupt.cpp \
|
||||||
|
ixwebsocket/linux/IXSetThreadName_linux.cpp \
|
||||||
|
-lz -lpthread
|
||||||
|
cp -f ixhttpd /usr/local/bin
|
||||||
|
|
||||||
# For the fork that is configured with appveyor
|
# For the fork that is configured with appveyor
|
||||||
rebase_upstream:
|
rebase_upstream:
|
||||||
|
Loading…
Reference in New Issue
Block a user