SET(JSON-C_LIBRARIES "${JSON-C_LIBRARY}")
endif()
-find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)
find_package(Libwebsockets 1.7.0 QUIET)
endif()
endif()
-set(INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} ${LIBWEBSOCKETS_INCLUDE_DIRS} ${JSON-C_INCLUDE_DIRS} ${LIBUV_INCLUDE_DIRS})
-set(LINK_LIBS ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES} ${JSON-C_LIBRARIES} ${LIBUV_LIBRARIES})
+set(INCLUDE_DIRS ${ZLIB_INCLUDE_DIR} ${LIBWEBSOCKETS_INCLUDE_DIRS} ${JSON-C_INCLUDE_DIRS} ${LIBUV_INCLUDE_DIRS})
+set(LINK_LIBS ${ZLIB_LIBRARIES} ${LIBWEBSOCKETS_LIBRARIES} ${JSON-C_LIBRARIES} ${LIBUV_LIBRARIES})
+
+set (CMAKE_REQUIRED_INCLUDES ${INCLUDE_DIRS})
+include(CheckCSourceCompiles)
+check_c_source_compiles("#include <lws_config.h>
+int main(void) {
+#if defined(LWS_OPENSSL_SUPPORT) || defined(LWS_WITH_TLS)
+ return 0;
+#else
+ return error;
+#endif
+}" LWS_SSL_ENABLED)
+
+if(LWS_SSL_ENABLED)
+ find_package(OpenSSL REQUIRED)
+ list(APPEND INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
+ list(APPEND LINK_LIBS ${OPENSSL_LIBRARIES})
+endif()
if(WIN32)
list(APPEND LINK_LIBS shell32)
#include <libwebsockets.h>
-#include <openssl/ssl.h>
#include <string.h>
#include <zlib.h>
case LWS_CALLBACK_HTTP_FILE_COMPLETION:
goto try_to_reuse;
-
+#if defined(LWS_OPENSSL_SUPPORT) || defined(LWS_WITH_TLS)
case LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION:
if (!len || (SSL_get_verify_result((SSL *)in) != X509_V_OK)) {
int err = X509_STORE_CTX_get_error((X509_STORE_CTX *)user);
return 1;
}
break;
+#endif
default:
break;
}
#ifdef LWS_WITH_IPV6
" -6, --ipv6 Enable IPv6 support\n"
#endif
+#if defined(LWS_OPENSSL_SUPPORT) || defined(LWS_WITH_TLS)
" -S, --ssl Enable SSL\n"
" -C, --ssl-cert SSL certificate file path\n"
" -K, --ssl-key SSL key file path\n"
" -A, --ssl-ca SSL CA file path for client certificate verification\n"
+#endif
" -d, --debug Set log level (default: 7)\n"
" -v, --version Print the version and exit\n"
" -h, --help Print this text and exit\n\n"
case '6':
info.options &= ~(LWS_SERVER_OPTION_DISABLE_IPV6);
break;
+#if defined(LWS_OPENSSL_SUPPORT) || defined(LWS_WITH_TLS)
case 'S':
ssl = true;
break;
strncpy(ca_path, optarg, sizeof(ca_path) - 1);
ca_path[sizeof(ca_path) - 1] = '\0';
break;
+#endif
case 'T':
strncpy(server->terminal_type, optarg,
sizeof(server->terminal_type) - 1);
}
}
+#if defined(LWS_OPENSSL_SUPPORT) || defined(LWS_WITH_TLS)
if (ssl) {
info.ssl_cert_filepath = cert_path;
info.ssl_private_key_filepath = key_path;
info.options |= LWS_SERVER_OPTION_REDIRECT_HTTP_TO_HTTPS;
#endif
}
+#endif
lwsl_notice("ttyd %s (libwebsockets %s)\n", TTYD_VERSION,
LWS_LIBRARY_VERSION);