Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
74833f95e4 | |||
1a47656ba0 | |||
7e521e38ef | |||
8410a65754 | |||
6db028fd67 | |||
925eb2f1d0 |
@ -113,22 +113,27 @@ else()
|
|||||||
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSelectInterruptEventFd.h)
|
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSelectInterruptEventFd.h)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
option(USE_TLS "Enable TLS support" FALSE)
|
||||||
set(USE_MBED_TLS TRUE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (USE_TLS)
|
if (USE_TLS)
|
||||||
|
if (WIN32)
|
||||||
|
option(USE_MBED_TLS "Use Mbed TLS" ON)
|
||||||
|
else()
|
||||||
|
option(USE_MBED_TLS "Use Mbed TLS" OFF)
|
||||||
|
endif()
|
||||||
|
option(USE_OPEN_SSL "Use OpenSSL" OFF)
|
||||||
|
|
||||||
if (USE_MBED_TLS)
|
if (USE_MBED_TLS)
|
||||||
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketMbedTLS.h)
|
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketMbedTLS.h)
|
||||||
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketMbedTLS.cpp)
|
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketMbedTLS.cpp)
|
||||||
elseif (APPLE AND NOT USE_OPEN_SSL)
|
elseif (APPLE AND NOT USE_OPEN_SSL)
|
||||||
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketAppleSSL.h)
|
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketAppleSSL.h)
|
||||||
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketAppleSSL.cpp)
|
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketAppleSSL.cpp)
|
||||||
elseif (WIN32)
|
elseif (WIN32 AND NOT USE_OPEN_SSL)
|
||||||
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketSChannel.h)
|
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketSChannel.h)
|
||||||
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketSChannel.cpp)
|
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketSChannel.cpp)
|
||||||
else()
|
else()
|
||||||
set(USE_OPEN_SSL TRUE)
|
set(USE_OPEN_SSL ON)
|
||||||
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketOpenSSL.h)
|
list( APPEND IXWEBSOCKET_HEADERS ixwebsocket/IXSocketOpenSSL.h)
|
||||||
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketOpenSSL.cpp)
|
list( APPEND IXWEBSOCKET_SOURCES ixwebsocket/IXSocketOpenSSL.cpp)
|
||||||
endif()
|
endif()
|
||||||
@ -145,19 +150,15 @@ if (USE_TLS)
|
|||||||
target_compile_definitions(ixwebsocket PUBLIC IXWEBSOCKET_USE_MBED_TLS)
|
target_compile_definitions(ixwebsocket PUBLIC IXWEBSOCKET_USE_MBED_TLS)
|
||||||
elseif (USE_OPEN_SSL)
|
elseif (USE_OPEN_SSL)
|
||||||
target_compile_definitions(ixwebsocket PUBLIC IXWEBSOCKET_USE_OPEN_SSL)
|
target_compile_definitions(ixwebsocket PUBLIC IXWEBSOCKET_USE_OPEN_SSL)
|
||||||
elseif (APPLE)
|
|
||||||
elseif (WIN32)
|
|
||||||
else()
|
|
||||||
target_compile_definitions(ixwebsocket PUBLIC IXWEBSOCKET_USE_OPEN_SSL)
|
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (APPLE AND USE_TLS AND NOT USE_MBED_TLS)
|
if (APPLE AND USE_TLS AND NOT USE_MBED_TLS AND NOT USE_OPEN_SSL)
|
||||||
target_link_libraries(ixwebsocket "-framework foundation" "-framework security")
|
target_link_libraries(ixwebsocket "-framework foundation" "-framework security")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
target_link_libraries(ixwebsocket wsock32 ws2_32)
|
target_link_libraries(ixwebsocket wsock32 ws2_32 shlwapi)
|
||||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@ -174,7 +175,9 @@ if (USE_TLS AND USE_OPEN_SSL)
|
|||||||
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr/local/opt/openssl/include)
|
set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} /usr/local/opt/openssl/include)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(OpenSSL REQUIRED)
|
if(NOT OPENSSL_FOUND)
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
endif()
|
||||||
add_definitions(${OPENSSL_DEFINITIONS})
|
add_definitions(${OPENSSL_DEFINITIONS})
|
||||||
message(STATUS "OpenSSL: " ${OPENSSL_VERSION})
|
message(STATUS "OpenSSL: " ${OPENSSL_VERSION})
|
||||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
include_directories(${OPENSSL_INCLUDE_DIR})
|
||||||
@ -207,7 +210,7 @@ else()
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
set( IXWEBSOCKET_INCLUDE_DIRS
|
set( IXWEBSOCKET_INCLUDE_DIRS
|
||||||
.
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
|
||||||
|
39
Dockerfile
39
Dockerfile
@ -1,39 +0,0 @@
|
|||||||
FROM alpine:3.11 as build
|
|
||||||
|
|
||||||
RUN apk add --no-cache gcc g++ musl-dev linux-headers cmake openssl-dev
|
|
||||||
RUN apk add --no-cache make
|
|
||||||
RUN apk add --no-cache zlib-dev
|
|
||||||
|
|
||||||
RUN addgroup -S app && adduser -S -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", "ws_install" ]
|
|
||||||
RUN [ "rm", "-rf", "build" ]
|
|
||||||
|
|
||||||
FROM alpine:3.11 as runtime
|
|
||||||
|
|
||||||
RUN apk add --no-cache libstdc++
|
|
||||||
RUN apk add --no-cache strace
|
|
||||||
|
|
||||||
RUN addgroup -S app && adduser -S -G app app
|
|
||||||
COPY --chown=app:app --from=build /usr/local/bin/ws /usr/local/bin/ws
|
|
||||||
RUN chmod +x /usr/local/bin/ws
|
|
||||||
RUN ldd /usr/local/bin/ws
|
|
||||||
|
|
||||||
# Copy source code for gcc
|
|
||||||
COPY --chown=app:app --from=build /opt /opt
|
|
||||||
|
|
||||||
# Now run in usermode
|
|
||||||
USER app
|
|
||||||
WORKDIR /home/app
|
|
||||||
|
|
||||||
ENTRYPOINT ["ws"]
|
|
||||||
EXPOSE 8008
|
|
||||||
CMD ["--help"]
|
|
1
Dockerfile
Symbolic link
1
Dockerfile
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
docker/Dockerfile.centos
|
@ -1,4 +1,4 @@
|
|||||||
FROM alpine as build
|
FROM alpine:3.11 as build
|
||||||
|
|
||||||
RUN apk add --no-cache gcc g++ musl-dev linux-headers cmake openssl-dev
|
RUN apk add --no-cache gcc g++ musl-dev linux-headers cmake openssl-dev
|
||||||
RUN apk add --no-cache make
|
RUN apk add --no-cache make
|
||||||
@ -15,20 +15,25 @@ WORKDIR /opt
|
|||||||
|
|
||||||
USER app
|
USER app
|
||||||
RUN [ "make", "ws_install" ]
|
RUN [ "make", "ws_install" ]
|
||||||
|
RUN [ "rm", "-rf", "build" ]
|
||||||
|
|
||||||
FROM alpine as runtime
|
FROM alpine:3.11 as runtime
|
||||||
|
|
||||||
RUN apk add --no-cache libstdc++
|
RUN apk add --no-cache libstdc++
|
||||||
|
RUN apk add --no-cache strace
|
||||||
|
|
||||||
RUN addgroup -S app && adduser -S -G app app
|
RUN addgroup -S app && adduser -S -G app app
|
||||||
COPY --chown=app:app --from=build /usr/local/bin/ws /usr/local/bin/ws
|
COPY --chown=app:app --from=build /usr/local/bin/ws /usr/local/bin/ws
|
||||||
RUN chmod +x /usr/local/bin/ws
|
RUN chmod +x /usr/local/bin/ws
|
||||||
RUN ldd /usr/local/bin/ws
|
RUN ldd /usr/local/bin/ws
|
||||||
|
|
||||||
|
# Copy source code for gcc
|
||||||
|
COPY --chown=app:app --from=build /opt /opt
|
||||||
|
|
||||||
# Now run in usermode
|
# Now run in usermode
|
||||||
USER app
|
USER app
|
||||||
WORKDIR /home/app
|
WORKDIR /home/app
|
||||||
|
|
||||||
ENTRYPOINT ["ws"]
|
ENTRYPOINT ["ws"]
|
||||||
EXPOSE 8008
|
EXPOSE 8008
|
||||||
CMD ["--help"]
|
C
|
||||||
|
35
docker/Dockerfile.centos
Normal file
35
docker/Dockerfile.centos
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
FROM centos:8 as build
|
||||||
|
|
||||||
|
RUN yum install -y gcc-c++ make cmake zlib-devel openssl-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", "ws_install" ]
|
||||||
|
RUN [ "rm", "-rf", "build" ]
|
||||||
|
|
||||||
|
FROM centos:8 as runtime
|
||||||
|
|
||||||
|
RUN yum install -y gdb strace
|
||||||
|
|
||||||
|
RUN groupadd app && useradd -g app app
|
||||||
|
COPY --chown=app:app --from=build /usr/local/bin/ws /usr/local/bin/ws
|
||||||
|
RUN chmod +x /usr/local/bin/ws
|
||||||
|
RUN ldd /usr/local/bin/ws
|
||||||
|
|
||||||
|
# Copy source code for gcc
|
||||||
|
COPY --chown=app:app --from=build /opt /opt
|
||||||
|
|
||||||
|
# Now run in usermode
|
||||||
|
USER app
|
||||||
|
WORKDIR /home/app
|
||||||
|
|
||||||
|
ENTRYPOINT ["ws"]
|
||||||
|
EXPOSE 8008
|
@ -1,6 +1,10 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
All changes to this project will be documented in this file.
|
All changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
## [7.9.3] - 2020-01-08
|
||||||
|
|
||||||
|
(Windows) OpenSSL can be used for SSL communication
|
||||||
|
|
||||||
## [7.9.2] - 2020-01-06
|
## [7.9.2] - 2020-01-06
|
||||||
|
|
||||||
(apple ssl) unify read and write ssl utility code
|
(apple ssl) unify read and write ssl utility code
|
||||||
|
@ -7,9 +7,9 @@
|
|||||||
#include "IXSelectInterruptFactory.h"
|
#include "IXSelectInterruptFactory.h"
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__APPLE__)
|
#if defined(__linux__) || defined(__APPLE__)
|
||||||
#include <ixwebsocket/IXSelectInterruptPipe.h>
|
#include "IXSelectInterruptPipe.h"
|
||||||
#else
|
#else
|
||||||
#include <ixwebsocket/IXSelectInterrupt.h>
|
#include "IXSelectInterrupt.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace ix
|
namespace ix
|
||||||
|
@ -9,18 +9,18 @@
|
|||||||
#ifdef IXWEBSOCKET_USE_TLS
|
#ifdef IXWEBSOCKET_USE_TLS
|
||||||
|
|
||||||
#ifdef IXWEBSOCKET_USE_MBED_TLS
|
#ifdef IXWEBSOCKET_USE_MBED_TLS
|
||||||
#include <ixwebsocket/IXSocketMbedTLS.h>
|
#include "IXSocketMbedTLS.h"
|
||||||
#elif defined(_WIN32)
|
|
||||||
#include <ixwebsocket/IXSocketSChannel.h>
|
|
||||||
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
|
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
|
||||||
#include <ixwebsocket/IXSocketOpenSSL.h>
|
#include "IXSocketOpenSSL.h"
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
#include <ixwebsocket/IXSocketAppleSSL.h>
|
#include "IXSocketAppleSSL.h"
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
#include "IXSocketSChannel.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <ixwebsocket/IXSocket.h>
|
#include "IXSocket.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -11,8 +11,14 @@
|
|||||||
#include "IXSocketConnect.h"
|
#include "IXSocketConnect.h"
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <Shlwapi.h>
|
||||||
|
#else
|
||||||
#include <fnmatch.h>
|
#include <fnmatch.h>
|
||||||
|
#endif
|
||||||
|
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||||
#include <openssl/x509v3.h>
|
#include <openssl/x509v3.h>
|
||||||
|
#endif
|
||||||
#define socketerrno errno
|
#define socketerrno errno
|
||||||
|
|
||||||
namespace ix
|
namespace ix
|
||||||
@ -136,7 +142,11 @@ namespace ix
|
|||||||
*/
|
*/
|
||||||
bool SocketOpenSSL::checkHost(const std::string& host, const char* pattern)
|
bool SocketOpenSSL::checkHost(const std::string& host, const char* pattern)
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
return PathMatchSpecA(host.c_str(), pattern);
|
||||||
|
#else
|
||||||
return fnmatch(pattern, host.c_str(), 0) != FNM_NOMATCH;
|
return fnmatch(pattern, host.c_str(), 0) != FNM_NOMATCH;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SocketOpenSSL::openSSLCheckServerCert(SSL* ssl,
|
bool SocketOpenSSL::openSSLCheckServerCert(SSL* ssl,
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define IX_WEBSOCKET_VERSION "7.9.2"
|
#define IX_WEBSOCKET_VERSION "7.9.3"
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#else
|
||||||
|
#include <process.h>
|
||||||
|
#define getpid _getpid
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
// Broadcast server can be ran with `ws broadcast_server`
|
// Broadcast server can be ran with `ws broadcast_server`
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "linenoise.hpp"
|
|
||||||
#include "nlohmann/json.hpp"
|
#include "nlohmann/json.hpp"
|
||||||
#include <ixwebsocket/IXSocket.h>
|
#include <ixwebsocket/IXSocket.h>
|
||||||
#include <ixwebsocket/IXWebSocket.h>
|
#include <ixwebsocket/IXWebSocket.h>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
#include <spdlog/spdlog.h>
|
#include <spdlog/spdlog.h>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
// for convenience
|
// for convenience
|
||||||
using json = nlohmann::json;
|
using json = nlohmann::json;
|
||||||
@ -172,9 +172,10 @@ namespace ix
|
|||||||
{
|
{
|
||||||
// Read line
|
// Read line
|
||||||
std::string line;
|
std::string line;
|
||||||
auto quit = linenoise::Readline("> ", line);
|
std::cout << user << " > " << std::flush;
|
||||||
|
std::getline(std::cin, line);
|
||||||
|
|
||||||
if (quit)
|
if (!std::cin)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user