summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/mongoose/examples
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-11-04 18:55:36 +0100
committer Miodrag Milanovic <mmicko@gmail.com>2015-11-04 18:55:36 +0100
commitb6707c3bb53c931e9ec3c5c6630149b7121bbcf5 (patch)
tree2d9c880bb21242c3fb4619977fe9a71658b3d06e /3rdparty/mongoose/examples
parent2a067f08a4582cdff841dc27b661a9e48fac419a (diff)
Removed mongoose due to restricted license and webserver wip till code is restructured (nw)
Diffstat (limited to '3rdparty/mongoose/examples')
-rw-r--r--3rdparty/mongoose/examples/.gitignore1
-rw-r--r--3rdparty/mongoose/examples/Makefile20
-rw-r--r--3rdparty/mongoose/examples/array_vars/Makefile21
-rw-r--r--3rdparty/mongoose/examples/array_vars/array_vars.c45
-rw-r--r--3rdparty/mongoose/examples/big_upload/Makefile12
-rw-r--r--3rdparty/mongoose/examples/big_upload/big_upload.c84
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/Makefile12
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/cookie_auth.c97
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/index.html33
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/login.html44
-rw-r--r--3rdparty/mongoose/examples/csharp/example.cs43
-rw-r--r--3rdparty/mongoose/examples/csharp/mongoose.cs68
-rw-r--r--3rdparty/mongoose/examples/digest_authentication/Makefile12
-rw-r--r--3rdparty/mongoose/examples/digest_authentication/digest_auth.c36
-rw-r--r--3rdparty/mongoose/examples/file_upload/Makefile20
-rw-r--r--3rdparty/mongoose/examples/file_upload/file_upload.c61
-rw-r--r--3rdparty/mongoose/examples/form_submit/Makefile12
-rw-r--r--3rdparty/mongoose/examples/form_submit/form_submit.c62
-rw-r--r--3rdparty/mongoose/examples/hello_world/Makefile21
-rw-r--r--3rdparty/mongoose/examples/hello_world/hello_world.c38
-rw-r--r--3rdparty/mongoose/examples/http_client/Makefile12
-rw-r--r--3rdparty/mongoose/examples/http_client/http_client.c82
-rw-r--r--3rdparty/mongoose/examples/mjpg_streamer/Makefile12
-rw-r--r--3rdparty/mongoose/examples/mjpg_streamer/mjpg_streamer.c105
-rw-r--r--3rdparty/mongoose/examples/multi_threaded_server/Makefile12
-rw-r--r--3rdparty/mongoose/examples/multi_threaded_server/multi_threaded_server.c40
-rw-r--r--3rdparty/mongoose/examples/proxy_server/Makefile13
-rw-r--r--3rdparty/mongoose/examples/proxy_server/proxy_server.c202
-rw-r--r--3rdparty/mongoose/examples/proxy_server/proxy_web_root/app1/index.html23
-rw-r--r--3rdparty/mongoose/examples/proxy_server/proxy_web_root/app2/index.html37
-rw-r--r--3rdparty/mongoose/examples/proxy_server/proxy_web_root/index.html29
-rw-r--r--3rdparty/mongoose/examples/proxy_server/ssl_cert.pem50
-rw-r--r--3rdparty/mongoose/examples/restful_api/Makefile12
-rw-r--r--3rdparty/mongoose/examples/restful_api/index.html66
-rw-r--r--3rdparty/mongoose/examples/restful_api/restful_api.c51
-rw-r--r--3rdparty/mongoose/examples/send_file/Makefile21
-rw-r--r--3rdparty/mongoose/examples/send_file/send_file.c27
-rw-r--r--3rdparty/mongoose/examples/web_server/Makefile30
-rw-r--r--3rdparty/mongoose/examples/web_server/certs/cert.pem46
-rw-r--r--3rdparty/mongoose/examples/web_server/web_server.c490
-rw-r--r--3rdparty/mongoose/examples/websocket_chat/Makefile12
-rw-r--r--3rdparty/mongoose/examples/websocket_chat/index.html98
-rw-r--r--3rdparty/mongoose/examples/websocket_chat/websocket_chat.c83
-rw-r--r--3rdparty/mongoose/examples/websocket_echo_server/Makefile12
-rw-r--r--3rdparty/mongoose/examples/websocket_echo_server/index.html46
-rw-r--r--3rdparty/mongoose/examples/websocket_echo_server/websocket_echo_server.c61
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/Makefile27
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_ca.pem49
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_client.pem45
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_server.pem45
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_ca.pem49
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_client.pem45
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_server.pem45
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/net_skeleton.h253
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.c123
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.h34
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.c182
-rw-r--r--3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.html50
58 files changed, 0 insertions, 3361 deletions
diff --git a/3rdparty/mongoose/examples/.gitignore b/3rdparty/mongoose/examples/.gitignore
deleted file mode 100644
index b883f1fdc6d..00000000000
--- a/3rdparty/mongoose/examples/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.exe
diff --git a/3rdparty/mongoose/examples/Makefile b/3rdparty/mongoose/examples/Makefile
deleted file mode 100644
index 43483c3f860..00000000000
--- a/3rdparty/mongoose/examples/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-SUBDIRS = $(sort $(filter-out csharp/, $(dir $(wildcard */))))
-X = $(SUBDIRS)
-ifdef WINDIR
- # appending the Winsock2 library at the end of the compiler
- # invocation
- CFLAGS_EXTRA += -lws2_32
-endif
-
-.PHONY: $(SUBDIRS)
-
-all: $(SUBDIRS)
-
-$(SUBDIRS):
- @$(MAKE) CFLAGS_EXTRA="$(CFLAGS_EXTRA)" -C $@
-
-clean:
- for d in $(SUBDIRS) ; do $(MAKE) -C $$d clean ; done
diff --git a/3rdparty/mongoose/examples/array_vars/Makefile b/3rdparty/mongoose/examples/array_vars/Makefile
deleted file mode 100644
index 5ce2d1db6cb..00000000000
--- a/3rdparty/mongoose/examples/array_vars/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = array_vars
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-all: $(PROG)
-
-run: $(PROG)
- ./$(PROG)
-
-$(PROG): $(SOURCES) Makefile
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-win:
- wine cl $(SOURCES) /MD /nologo /DNDEBUG /O1 /I../.. /Fe$(PROG).exe
- wine $(PROG).exe
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib *.gc*
diff --git a/3rdparty/mongoose/examples/array_vars/array_vars.c b/3rdparty/mongoose/examples/array_vars/array_vars.c
deleted file mode 100644
index d631a7b0c79..00000000000
--- a/3rdparty/mongoose/examples/array_vars/array_vars.c
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-//
-// This example demostrates how to use array get variables using mg_get_n_var
-// $Date: 2014-09-09 22:20:23 UTC $
-
-#include <stdio.h>
-#include <string.h>
-#include "mongoose.h"
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST:
- {
- mg_printf_data(conn, "Hello! Requested URI is [%s] ", conn->uri);
- char buffer[1024];
- int i, ret;
- for(i=0; (ret = mg_get_var_n(conn, "foo[]", buffer, 1024, i)) > 0; i++)
- mg_printf_data(conn, "\nfoo[%d] = %s", i, buffer);
-
- return MG_TRUE;
- }
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server;
-
- // Create and configure the server
- server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
-
- // Serve request. Hit Ctrl-C to terminate the program
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- // Cleanup, and free server instance
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/big_upload/Makefile b/3rdparty/mongoose/examples/big_upload/Makefile
deleted file mode 100644
index a47d188489f..00000000000
--- a/3rdparty/mongoose/examples/big_upload/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = big_upload
-CFLAGS = -W -Wall -pthread -I../.. -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/big_upload/big_upload.c b/3rdparty/mongoose/examples/big_upload/big_upload.c
deleted file mode 100644
index a756ddd3a07..00000000000
--- a/3rdparty/mongoose/examples/big_upload/big_upload.c
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "mongoose.h"
-
-static int handle_request(struct mg_connection *conn) {
- if (strcmp(conn->uri, "/upload") == 0) {
- FILE *fp = (FILE *) conn->connection_param;
- if (fp != NULL) {
- fwrite(conn->content, 1, conn->content_len, fp); // Write last bits
- mg_printf(conn, "HTTP/1.1 200 OK\r\n"
- "Content-Type: text/plain\r\n"
- "Connection: close\r\n\r\n"
- "Written %ld of POST data to a temp file:\n\n",
- (long) ftell(fp));
-
- // Temp file will be destroyed after fclose(), do something with the
- // data here -- for example, parse it and extract uploaded files.
- // As an example, we just echo the whole POST buffer back to the client.
- rewind(fp);
- mg_send_file_data(conn, fileno(fp));
- return MG_MORE; // Tell Mongoose reply is not completed yet
- } else {
- mg_printf_data(conn, "%s", "Had no data to write...");
- return MG_TRUE; // Tell Mongoose we're done with this request
- }
- } else {
- mg_printf_data(conn, "%s",
- "<html><body>Upload example."
- "<form method=\"POST\" action=\"/upload\" "
- " enctype=\"multipart/form-data\">"
- "<input type=\"file\" name=\"file\" /> <br/>"
- "<input type=\"submit\" value=\"Upload\" />"
- "</form></body></html>");
- return MG_TRUE; // Tell mongoose to close this connection
- }
-}
-
-// Mongoose sends MG_RECV for every received POST chunk.
-// When last POST chunk is received, Mongoose sends MG_REQUEST, then MG_CLOSE.
-static int handle_recv(struct mg_connection *conn) {
- FILE *fp = (FILE *) conn->connection_param;
-
- // Open temporary file where we going to write data
- if (fp == NULL && ((conn->connection_param = fp = tmpfile())) == NULL) {
- return -1; // Close connection on error
- }
-
- // Return number of bytes written to a temporary file: that is how many
- // bytes we want to discard from the receive buffer
- return fwrite(conn->content, 1, conn->content_len, fp);
-}
-
-// Make sure we free all allocated resources
-static int handle_close(struct mg_connection *conn) {
- if (conn->connection_param != NULL) {
- fclose((FILE *) conn->connection_param);
- conn->connection_param = NULL;
- }
- return MG_TRUE;
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST: return handle_request(conn);
- case MG_RECV: return handle_recv(conn);
- case MG_CLOSE: return handle_close(conn);
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
-
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- mg_destroy_server(&server);
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/cookie_authentication/Makefile b/3rdparty/mongoose/examples/cookie_authentication/Makefile
deleted file mode 100644
index 1eb0652b961..00000000000
--- a/3rdparty/mongoose/examples/cookie_authentication/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = cookie_auth
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/cookie_authentication/cookie_auth.c b/3rdparty/mongoose/examples/cookie_authentication/cookie_auth.c
deleted file mode 100644
index c35e0445ef2..00000000000
--- a/3rdparty/mongoose/examples/cookie_authentication/cookie_auth.c
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include "mongoose.h"
-
-static const char *s_login_uri = "/login.html";
-static const char *s_secret = ":-)"; // Must be known only to server
-
-static void generate_ssid(const char *user_name, const char *expiration_date,
- char *ssid, size_t ssid_size) {
- char hash[33];
- mg_md5(hash, user_name, ":", expiration_date, ":", s_secret, NULL);
- snprintf(ssid, ssid_size, "%s|%s|%s", user_name, expiration_date, hash);
-}
-
-static int check_auth(struct mg_connection *conn) {
- char ssid[100], calculated_ssid[100], name[100], expire[100];
-
- // Always authenticate requests to login page
- if (strcmp(conn->uri, s_login_uri) == 0) {
- return MG_TRUE;
- }
-
- // Look for session ID in the Cookie.
- // That session ID can be validated against the database that stores
- // current active sessions.
- mg_parse_header(mg_get_header(conn, "Cookie"), "ssid", ssid, sizeof(ssid));
- if (sscanf(ssid, "%[^|]|%[^|]|", name, expire) == 2) {
- generate_ssid(name, expire, calculated_ssid, sizeof(calculated_ssid));
- if (strcmp(ssid, calculated_ssid) == 0) {
- return MG_TRUE; // Authenticate
- }
- }
-
- // Auth failed, do NOT authenticate, redirect to login page
- mg_printf(conn, "HTTP/1.1 302 Moved\r\nLocation: %s\r\n\r\n", s_login_uri);
- return MG_FALSE;
-}
-
-static int check_login_form_submission(struct mg_connection *conn) {
- char name[100], password[100], ssid[100], expire[100], expire_epoch[100];
-
- mg_get_var(conn, "name", name, sizeof(name));
- mg_get_var(conn, "password", password, sizeof(password));
-
- // A real authentication mechanism should be employed here.
- // Also, the whole site should be served through HTTPS.
- if (strcmp(name, "Joe") == 0 && strcmp(password, "Doe") == 0) {
- // Generate expiry date
- time_t t = time(NULL) + 3600; // Valid for 1 hour
- snprintf(expire_epoch, sizeof(expire_epoch), "%lu", (unsigned long) t);
- strftime(expire, sizeof(expire), "%a, %d %b %Y %H:%M:%S GMT", gmtime(&t));
- generate_ssid(name, expire_epoch, ssid, sizeof(ssid));
- // Set "session id" cookie, there could be some data encoded in it.
- mg_printf(conn,
- "HTTP/1.1 302 Moved\r\n"
- "Set-Cookie: ssid=%s; expire=\"%s\"; http-only; HttpOnly;\r\n"
- "Content-Length: 0\r\n"
- "Location: /\r\n\r\n",
- ssid, expire);
- return MG_TRUE;
- }
- return MG_FALSE;
-}
-
-static int serve_request(struct mg_connection *conn) {
- if (strcmp(conn->uri, s_login_uri) == 0 &&
- strcmp(conn->request_method, "POST") == 0) {
- return check_login_form_submission(conn);
- }
- return MG_FALSE; // Serve files in the document_root
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return check_auth(conn);
- case MG_REQUEST: return serve_request(conn);
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
- mg_set_option(server, "document_root", ".");
-
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/cookie_authentication/index.html b/3rdparty/mongoose/examples/cookie_authentication/index.html
deleted file mode 100644
index fc992fd03de..00000000000
--- a/3rdparty/mongoose/examples/cookie_authentication/index.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8" />
- <title>WebSocket Test</title>
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <style type="text/css">
- body {
- background-color: #cde; margin: 0;
- padding: 0; font: 14px Helvetica, Arial, sans-serif;
- }
- * { outline: none; }
- div.content {
- width: 800px; margin: 2em auto; padding: 20px 50px;
- background-color: #fff; border-radius: 1em;
- }
- label { display: inline-block; min-width: 7em; }
- input { border: 1px solid #ccc; padding: 0.4em; margin: 0 0 10px 0; }
- a:link, a:visited { color: #69c; text-decoration: none; }
- @media (max-width: 700px) {
- body { background-color: #fff; }
- div.content {
- width: auto; margin: 0 auto; border-radius: 0; padding: 1em;
- }
- }
-</style>
-
-<body>
- <div class="content">
- <h1>Mongoose Cookie Base Authentication</h1>
- <p>This is an index page. Authentication succeeded.</p>
-</body>
-</html> \ No newline at end of file
diff --git a/3rdparty/mongoose/examples/cookie_authentication/login.html b/3rdparty/mongoose/examples/cookie_authentication/login.html
deleted file mode 100644
index d3ff7056573..00000000000
--- a/3rdparty/mongoose/examples/cookie_authentication/login.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8" />
- <title>WebSocket Test</title>
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <style type="text/css">
- body {
- background-color: #cde; margin: 0;
- padding: 0; font: 14px Helvetica, Arial, sans-serif;
- }
- * { outline: none; }
- div.content {
- width: 800px; margin: 2em auto; padding: 20px 50px;
- background-color: #fff; border-radius: 1em;
- }
- label { display: inline-block; min-width: 7em; }
- input { border: 1px solid #ccc; padding: 0.4em; margin: 0 0 10px 0; }
- a:link, a:visited { color: #69c; text-decoration: none; }
- @media (max-width: 700px) {
- body { background-color: #fff; }
- div.content {
- width: auto; margin: 0 auto; border-radius: 0; padding: 1em;
- }
- }
-</style>
-
-<body>
- <div class="content">
- <h1>Mongoose Cookie Based Authentication</h1>
- <p>Use name "Joe", password "Doe" to login.</p>
- <form method="POST">
- <div>
- <label>Name:</label>
- <input type="text" name="name"/>
- </div><div>
- <label>Password:</label>
- <input type="password" name="password"/>
- </div><div>
- <input type="submit" value="Login"/>
- </div>
- </form>
-</body>
-</html> \ No newline at end of file
diff --git a/3rdparty/mongoose/examples/csharp/example.cs b/3rdparty/mongoose/examples/csharp/example.cs
deleted file mode 100644
index 9736c6b991d..00000000000
--- a/3rdparty/mongoose/examples/csharp/example.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-// This file is part of mongoose web server project,
-// https://github.com/cesanta/mongoose
-
-using System;
-
-public class Program {
- static private int EventHandler(IntPtr conn_ptr, int ev) {
- MongooseConnection conn = (MongooseConnection)
- System.Runtime.InteropServices.Marshal.PtrToStructure(
- conn_ptr , typeof(MongooseConnection));
-
- if (ev == 102) {
- // MG_AUTH
- return 1;
- } else if (ev == 103) {
- // MG_REQUEST
- Mongoose.send_data(conn_ptr, "Hello from C#!\n");
- Mongoose.send_data(conn_ptr, "URI: " + conn.uri + "\n");
- Mongoose.send_data(conn_ptr, "HTTP Headers:\n");
-
- for (int i = 0; i < conn.num_headers; i++) {
- IntPtr name = conn.http_headers[i].name;
- IntPtr val = conn.http_headers[i].value;
- System.Runtime.InteropServices.Marshal.PtrToStringAnsi(name);
- Mongoose.send_data(conn_ptr, " " +
- System.Runtime.InteropServices.Marshal.PtrToStringAnsi(name) + ": " +
- System.Runtime.InteropServices.Marshal.PtrToStringAnsi(val) + "\n");
- }
- return 1;
- }
- return 0;
- }
-
- static void Main() {
- Mongoose web_server = new Mongoose(".", "9001",
- new MongooseEventHandler(EventHandler));
-
- Console.WriteLine("Mongoose started, press Ctrl-C to exit.");
- for (;;) {
- web_server.poll(1000);
- }
- }
-}
diff --git a/3rdparty/mongoose/examples/csharp/mongoose.cs b/3rdparty/mongoose/examples/csharp/mongoose.cs
deleted file mode 100644
index f0953d22d58..00000000000
--- a/3rdparty/mongoose/examples/csharp/mongoose.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-// This file is part of mongoose web server project,
-// https://github.com/cesanta/mongoose
-
-using System;
-using System.Runtime.InteropServices;
-
-[StructLayout(LayoutKind.Sequential)] public struct MongooseHeader {
- [MarshalAs(UnmanagedType.LPTStr)] public IntPtr name;
- [MarshalAs(UnmanagedType.LPTStr)] public IntPtr value;
-};
-
-// mongoose.h :: struct mg_connection
-[StructLayout(LayoutKind.Sequential)] public struct MongooseConnection {
- [MarshalAs(UnmanagedType.LPTStr)] public string request_method;
- [MarshalAs(UnmanagedType.LPTStr)] public string uri;
- [MarshalAs(UnmanagedType.LPTStr)] public string http_version;
- [MarshalAs(UnmanagedType.LPTStr)] public string query_string;
-
- [MarshalAs(UnmanagedType.ByValArray,SizeConst=48)] public char[] remote_ip;
- [MarshalAs(UnmanagedType.LPTStr)] public string local_ip;
- [MarshalAs(UnmanagedType.U2)] public short remote_port;
- [MarshalAs(UnmanagedType.U2)] public short local_port;
-
- [MarshalAs(UnmanagedType.SysInt)] public int num_headers;
- [MarshalAs(UnmanagedType.ByValArray,SizeConst=30)]
- public MongooseHeader[] http_headers;
-
- [MarshalAs(UnmanagedType.LPTStr)] public IntPtr content;
- [MarshalAs(UnmanagedType.SysInt)] public int content_len;
-
- [MarshalAs(UnmanagedType.SysInt)] public int is_websocket;
- [MarshalAs(UnmanagedType.SysInt)] public int status_code;
- [MarshalAs(UnmanagedType.SysInt)] public int wsbits;
-};
-
-public delegate int MongooseEventHandler(IntPtr c, int ev);
-
-public class Mongoose {
- public const string dll_ = "mongoose";
- private IntPtr server_;
-
- [DllImport(dll_)] private static extern IntPtr
- mg_create_server(IntPtr user_data, MongooseEventHandler eh);
- [DllImport(dll_)] private static extern int
- mg_poll_server(IntPtr server, int milli);
- [DllImport(dll_)] private static extern IntPtr
- mg_set_option(IntPtr server, string name, string value);
- [DllImport(dll_)] public static extern int
- mg_send_data(IntPtr conn, string data, int length);
-
- public Mongoose(string document_root,
- string listening_port,
- MongooseEventHandler event_handler) {
- server_ = mg_create_server(IntPtr.Zero, event_handler);
- mg_set_option(server_, "document_root", document_root);
- mg_set_option(server_, "listening_port", listening_port);
- }
-
- public static int send_data(IntPtr conn, string data) {
- return mg_send_data(conn, data, data.Length);
- }
-
- public void poll(int milli) {
- mg_poll_server(server_, milli);
- }
-
- // TODO: add destructor and call mg_destroy_server()
-}
diff --git a/3rdparty/mongoose/examples/digest_authentication/Makefile b/3rdparty/mongoose/examples/digest_authentication/Makefile
deleted file mode 100644
index 86cd30db1d7..00000000000
--- a/3rdparty/mongoose/examples/digest_authentication/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = digest_auth
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/digest_authentication/digest_auth.c b/3rdparty/mongoose/examples/digest_authentication/digest_auth.c
deleted file mode 100644
index 18835c729c7..00000000000
--- a/3rdparty/mongoose/examples/digest_authentication/digest_auth.c
+++ /dev/null
@@ -1,36 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include "mongoose.h"
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
-
- if (ev == MG_AUTH) {
- int result = MG_FALSE; // Not authorized
- FILE *fp;
-
- // To populate passwords file, do
- // mongoose -A my_passwords.txt mydomain.com admin admin
- if ((fp = fopen("my_passwords.txt", "r")) != NULL) {
- result = mg_authorize_digest(conn, fp);
- fclose(fp);
- }
-
- return result;
- }
-
- return MG_FALSE;
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
- mg_set_option(server, "document_root", ".");
-
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/file_upload/Makefile b/3rdparty/mongoose/examples/file_upload/Makefile
deleted file mode 100644
index bf1e51dfc90..00000000000
--- a/3rdparty/mongoose/examples/file_upload/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = file_upload
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-all: $(PROG)
-
-run: $(PROG)
- ./$(PROG)
-
-$(PROG): $(SOURCES) Makefile
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-win:
- wine cl $(SOURCES) /MD /nologo /DNDEBUG /O1 /I../.. /Fe$(PROG).exe
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib *.gc*
diff --git a/3rdparty/mongoose/examples/file_upload/file_upload.c b/3rdparty/mongoose/examples/file_upload/file_upload.c
deleted file mode 100644
index eedfc837c57..00000000000
--- a/3rdparty/mongoose/examples/file_upload/file_upload.c
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2004-2012 Sergey Lyubka
-// This file is a part of mongoose project, http://github.com/valenok/mongoose
-
-#include <stdio.h>
-#include <string.h>
-#include "mongoose.h"
-
-static int send_index_page(struct mg_connection *conn) {
- const char *data;
- int data_len, n1, n2;
- char var_name[100], file_name[100];
-
- mg_printf_data(conn, "%s",
- "<html><body>Upload example."
- "<form method=\"POST\" action=\"/handle_post_request\" "
- " enctype=\"multipart/form-data\">"
- "<input type=\"file\" name=\"file1\" /> <br/>"
- "<input type=\"file\" name=\"file2\" /> <br/>"
- "<input type=\"submit\" value=\"Upload\" />"
- "</form>");
-
- n1 = n2 = 0;
- while ((n2 = mg_parse_multipart(conn->content + n1, conn->content_len - n1,
- var_name, sizeof(var_name), file_name,
- sizeof(file_name), &data, &data_len)) > 0) {
- mg_printf_data(conn, "var: %s, file_name: %s, size: %d bytes<br>",
- var_name, file_name, data_len);
- n1 += n2;
- }
-
- mg_printf_data(conn, "%s", "</body></html>");
-
- return MG_TRUE;
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST: return send_index_page(conn);
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server;
-
- // Create and configure the server
- server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
-
- // Serve request. Hit Ctrl-C to terminate the program
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- // Cleanup, and free server instance
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/form_submit/Makefile b/3rdparty/mongoose/examples/form_submit/Makefile
deleted file mode 100644
index b233f285774..00000000000
--- a/3rdparty/mongoose/examples/form_submit/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = form_submit
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/form_submit/form_submit.c b/3rdparty/mongoose/examples/form_submit/form_submit.c
deleted file mode 100644
index f6893114d7f..00000000000
--- a/3rdparty/mongoose/examples/form_submit/form_submit.c
+++ /dev/null
@@ -1,62 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include "mongoose.h"
-
-static const char *html_form =
- "<html><body>POST example."
- "<form method=\"POST\" action=\"/handle_post_request\">"
- "Input 1: <input type=\"text\" name=\"input_1\" /> <br/>"
- "Input 2: <input type=\"text\" name=\"input_2\" /> <br/>"
- "<input type=\"submit\" />"
- "</form></body></html>";
-
-static void send_reply(struct mg_connection *conn) {
- char var1[500], var2[500];
-
- if (strcmp(conn->uri, "/handle_post_request") == 0) {
- // User has submitted a form, show submitted data and a variable value
- // Parse form data. var1 and var2 are guaranteed to be NUL-terminated
- mg_get_var(conn, "input_1", var1, sizeof(var1));
- mg_get_var(conn, "input_2", var2, sizeof(var2));
-
- // Send reply to the client, showing submitted form values.
- // POST data is in conn->content, data length is in conn->content_len
- mg_send_header(conn, "Content-Type", "text/plain");
- mg_printf_data(conn,
- "Submitted data: [%.*s]\n"
- "Submitted data length: %d bytes\n"
- "input_1: [%s]\n"
- "input_2: [%s]\n",
- conn->content_len, conn->content,
- conn->content_len, var1, var2);
- } else {
- // Show HTML form.
- mg_send_data(conn, html_form, strlen(html_form));
- }
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- if (ev == MG_REQUEST) {
- send_reply(conn);
- return MG_TRUE;
- } else if (ev == MG_AUTH) {
- return MG_TRUE;
- } else {
- return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
-
- mg_set_option(server, "listening_port", "8080");
-
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/hello_world/Makefile b/3rdparty/mongoose/examples/hello_world/Makefile
deleted file mode 100644
index d1384e01723..00000000000
--- a/3rdparty/mongoose/examples/hello_world/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = hello_world
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-all: $(PROG)
-
-run: $(PROG)
- ./$(PROG)
-
-$(PROG): $(SOURCES) Makefile
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-win:
- wine cl $(SOURCES) /MD /nologo /DNDEBUG /O1 /I../.. /Fe$(PROG).exe
- wine $(PROG).exe
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib *.gc*
diff --git a/3rdparty/mongoose/examples/hello_world/hello_world.c b/3rdparty/mongoose/examples/hello_world/hello_world.c
deleted file mode 100644
index 95056895d02..00000000000
--- a/3rdparty/mongoose/examples/hello_world/hello_world.c
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-//
-// This example demostrates basic use of Mongoose embedded web server.
-// $Date: 2014-09-09 22:20:23 UTC $
-
-#include <stdio.h>
-#include <string.h>
-#include "mongoose.h"
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST:
- mg_printf_data(conn, "Hello! Requested URI is [%s]", conn->uri);
- return MG_TRUE;
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server;
-
- // Create and configure the server
- server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
-
- // Serve request. Hit Ctrl-C to terminate the program
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- // Cleanup, and free server instance
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/http_client/Makefile b/3rdparty/mongoose/examples/http_client/Makefile
deleted file mode 100644
index 5769babf0f7..00000000000
--- a/3rdparty/mongoose/examples/http_client/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = http_client
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-unix: $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp *.o *.lib
diff --git a/3rdparty/mongoose/examples/http_client/http_client.c b/3rdparty/mongoose/examples/http_client/http_client.c
deleted file mode 100644
index 41eac581e90..00000000000
--- a/3rdparty/mongoose/examples/http_client/http_client.c
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-//
-// This example demostrates how to connect to the remote Web server,
-// download data, process it and send back a reply.
-
-#include <signal.h>
-#include <stdlib.h>
-
-#include "mongoose.h"
-
-static int s_received_signal = 0;
-static struct mg_server *s_server = NULL;
-static const char *s_remote_addr = "glosbe.com:80";
-
-static void signal_handler(int sig_num) {
- signal(sig_num, signal_handler);
- s_received_signal = sig_num;
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- struct mg_connection *client, *orig;
-
- switch (ev) {
- case MG_AUTH:
- return MG_TRUE;
-
- case MG_CONNECT:
- // Send request to the remote host.
- // TODO(lsm): handle connect error here.
- mg_printf(conn, "GET %s HTTP/1.0\r\nHost: %s\r\n\r\n",
- "/gapi/translate?from=eng&dest=fra&format=json&phrase=cat",
- s_remote_addr);
- return MG_TRUE;
-
- case MG_REPLY:
- // Send reply to the original connection
- orig = (struct mg_connection *) conn->connection_param;
- mg_send_status(orig, conn->status_code);
- mg_send_header(orig, "Content-Type", "text/plain");
- mg_send_data(orig, conn->content, conn->content_len);
- mg_send_data(orig, "", 0); // Last chunk: mark the end of reply
-
- // Disconnect connections
- orig->connection_param = NULL;
- conn->connection_param = NULL;
- return MG_TRUE;
-
- case MG_REQUEST:
- if ((client = mg_connect(s_server, s_remote_addr)) != NULL) {
- // Interconnect requests
- client->connection_param = conn;
- conn->connection_param = client;
- return MG_MORE;
- } else {
- mg_printf_data(conn, "%s", "cannot send API request");
- return MG_TRUE;
- }
-
- default:
- return MG_FALSE;
- }
-}
-
-int main(void) {
- s_server = mg_create_server(NULL, ev_handler);
-
- mg_set_option(s_server, "listening_port", "8080");
-
- // Setup signal handlers
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
-
- printf("Listening on port %s\n", mg_get_option(s_server, "listening_port"));
- while (s_received_signal == 0) {
- mg_poll_server(s_server, 1000);
- }
- mg_destroy_server(&s_server);
- printf("Existing on signal %d\n", s_received_signal);
-
- return EXIT_SUCCESS;
-}
diff --git a/3rdparty/mongoose/examples/mjpg_streamer/Makefile b/3rdparty/mongoose/examples/mjpg_streamer/Makefile
deleted file mode 100644
index 35946c0a477..00000000000
--- a/3rdparty/mongoose/examples/mjpg_streamer/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = mjpg_streamer
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/mjpg_streamer/mjpg_streamer.c b/3rdparty/mongoose/examples/mjpg_streamer/mjpg_streamer.c
deleted file mode 100644
index 4bac6c14838..00000000000
--- a/3rdparty/mongoose/examples/mjpg_streamer/mjpg_streamer.c
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <sys/stat.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <time.h>
-#include "mongoose.h"
-
-static void send_file(struct mg_connection *conn, const char *path) {
- char buf[1024];
- struct stat st;
- int n;
- FILE *fp;
-
- if (stat(path, &st) == 0 && (fp = fopen(path, "rb")) != NULL) {
- mg_printf(conn, "--w00t\r\nContent-Type: image/jpeg\r\n"
- "Content-Length: %lu\r\n\r\n", (unsigned long) st.st_size);
- while ((n = fread(buf, 1, sizeof(buf), fp)) > 0) {
- mg_write(conn, buf, n);
- }
- fclose(fp);
- mg_write(conn, "\r\n", 2);
- }
-}
-
-struct conn_state {
- int file_index;
- time_t last_poll;
-};
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- const char **file_names = (const char **) conn->server_param;
- struct conn_state *state;
- time_t now = time(NULL);
-
- switch (ev) {
-
- case MG_AUTH:
- return MG_TRUE;
-
- case MG_REQUEST:
- if (strcmp(conn->uri, "/stream") != 0) {
- mg_send_header(conn, "Content-Type", "text/html");
- mg_printf_data(conn, "%s",
- "Go to <a href=/stream>/stream</a> for MJPG stream");
- return MG_TRUE;
- }
-
- mg_printf(conn, "%s",
- "HTTP/1.0 200 OK\r\n" "Cache-Control: no-cache\r\n"
- "Pragma: no-cache\r\nExpires: Thu, 01 Dec 1994 16:00:00 GMT\r\n"
- "Connection: close\r\nContent-Type: multipart/x-mixed-replace; "
- "boundary=--w00t\r\n\r\n");
-
- send_file(conn, file_names[0]);
-
- state = (struct conn_state *) malloc(sizeof(*state));
- conn->connection_param = state;
- state->file_index = 1; // First file is already sent
- state->last_poll = time(NULL);
- return MG_MORE;
-
- case MG_POLL:
- state = (struct conn_state *) conn->connection_param;
-
- if (state != NULL && now > state->last_poll) {
- if (file_names[state->file_index] != NULL) {
- send_file(conn, file_names[state->file_index]);
- state->file_index++;
- if (file_names[state->file_index] == NULL) {
- return MG_TRUE; // No more images, close connection
- }
- }
- state->last_poll = now;
- }
- return MG_FALSE;
-
- case MG_CLOSE:
- free(conn->connection_param);
- conn->connection_param = NULL;
- return MG_FALSE;
-
- default:
- return MG_FALSE;
- }
-}
-
-int main(int argc, char *argv[]) {
- struct mg_server *server;
-
- if (argc < 3) {
- printf("Usage: %s image1.jpg image2.jpg ...\n", argv[0]);
- return 1;
- }
-
- server = mg_create_server(&argv[1], ev_handler);
- mg_set_option(server, "listening_port", "8080");
-
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/multi_threaded_server/Makefile b/3rdparty/mongoose/examples/multi_threaded_server/Makefile
deleted file mode 100644
index 2b08db12c77..00000000000
--- a/3rdparty/mongoose/examples/multi_threaded_server/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = multi_threaded_server
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 -DMONGOOSE_ENABLE_THREADS $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/multi_threaded_server/multi_threaded_server.c b/3rdparty/mongoose/examples/multi_threaded_server/multi_threaded_server.c
deleted file mode 100644
index 30af3f10807..00000000000
--- a/3rdparty/mongoose/examples/multi_threaded_server/multi_threaded_server.c
+++ /dev/null
@@ -1,40 +0,0 @@
-#include "mongoose.h"
-
-// Start a browser and hit refresh couple of times. The replies will
-// come from both server instances.
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- if (ev == MG_REQUEST) {
- mg_send_header(conn, "Content-Type", "text/plain");
- mg_printf_data(conn, "This is a reply from server instance # %s",
- (char *) conn->server_param);
- return MG_TRUE;
- } else if (ev == MG_AUTH) {
- return MG_TRUE;
- } else {
- return MG_FALSE;
- }
-}
-
-static void *serve(void *server) {
- for (;;) mg_poll_server((struct mg_server *) server, 1000);
- return NULL;
-}
-
-int main(void) {
- struct mg_server *server1, *server2;
-
- server1 = mg_create_server((void *) "1", ev_handler);
- server2 = mg_create_server((void *) "2", ev_handler);
-
- // Make both server1 and server2 listen on the same sockets
- mg_set_option(server1, "listening_port", "8080");
- mg_copy_listeners(server1, server2);
-
- // server1 goes to separate thread, server 2 runs in main thread.
- // IMPORTANT: NEVER LET DIFFERENT THREADS HANDLE THE SAME SERVER.
- mg_start_thread(serve, server1);
- mg_start_thread(serve, server2);
- getchar();
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/proxy_server/Makefile b/3rdparty/mongoose/examples/proxy_server/Makefile
deleted file mode 100644
index 7a5d2f7d41a..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = proxy_server
-FLAGS = -I../.. -DNS_ENABLE_SSL
-CFLAGS = -W -Wall -g -O0 -pthread -lssl -DMONGOOSE_ENABLE_THREADS $(FLAGS) $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-unix: $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/proxy_server/proxy_server.c b/3rdparty/mongoose/examples/proxy_server/proxy_server.c
deleted file mode 100644
index cef0f24c9bb..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/proxy_server.c
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright (c) 2014 Cesanta Software Limited
-// All rights reserved
-//
-// To build and run this example:
-// git clone https://github.com/cesanta/net_skeleton.git
-// git clone https://github.com/cesanta/mongoose.git
-// cd mongoose/examples
-// make proxy
-// ./proxy
-//
-// Configure your browser to use localhost:2014 as a proxy for all protocols
-// Then, navigate to https://cesanta.com
-
-#include <sys/stat.h>
-#include <signal.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#ifdef _WIN32
-#define sleep(x) Sleep((x) * 1000)
-#else
-#include <unistd.h>
-#endif
-
-#include "mongoose.h"
-
-static int s_received_signal = 0;
-static struct mg_server *s_server = NULL;
-
-#define SSE_CONNECTION ((void *) 1)
-
-static void elog(int do_exit, const char *fmt, ...) {
- va_list ap;
- va_start(ap, fmt);
- vfprintf(stderr, fmt, ap);
- va_end(ap);
- fputc('\n', stderr);
- if (do_exit) exit(EXIT_FAILURE);
-}
-
-static void signal_handler(int sig_num) {
- signal(sig_num, signal_handler);
- s_received_signal = sig_num;
-}
-
-static int sse_push(struct mg_connection *conn, enum mg_event ev) {
- if (ev == MG_POLL && conn->connection_param == SSE_CONNECTION) {
- mg_printf(conn, "data: %s\r\n\r\n", (const char *) conn->callback_param);
- }
- return MG_TRUE;
-}
-
-static void *sse_pusher_thread_func(void *param) {
- while (s_received_signal == 0) {
- mg_wakeup_server_ex(s_server, sse_push, "%lu %s",
- (unsigned long) time(NULL), (const char *) param);
- sleep(1);
- }
- return NULL;
-}
-
-// Return: 1 if regular file, 2 if directory, 0 if not found
-static int exists(const char *path) {
- struct stat st;
- return stat(path, &st) != 0 ? 0 : S_ISDIR(st.st_mode) == 0 ? 1 : 2;
-}
-
-// Return: 1 if regular file, 2 if directory, 0 if not found
-static int is_local_file(const char *uri, char *path, size_t path_len) {
- snprintf(path, path_len, "%s/%s",
- mg_get_option(s_server, "document_root"), uri);
- return exists(path);
-}
-
-static int try_to_serve_locally(struct mg_connection *conn) {
- char path[500], buf[2000];
- int n, res;
- FILE *fp = NULL;
-
- if ((res = is_local_file(conn->uri, path, sizeof(path))) == 2) {
- strncat(path, "/index.html", sizeof(path) - strlen(path) - 1);
- res = exists(path);
- printf("PATH: [%s]\n", path);
- }
- if (res == 0) return MG_FALSE;
-
- if ((fp = fopen(path, "rb")) != NULL) {
- printf("Serving [%s] locally \n", path);
- mg_send_header(conn, "Connection", "close");
- mg_send_header(conn, "Content-Type", mg_get_mime_type(path, "text/plain"));
- while ((n = fread(buf, 1, sizeof(buf), fp)) > 0) {
- mg_send_data(conn, buf, n);
- }
- mg_send_data(conn, "", 0);
- fclose(fp);
- }
- return fp == NULL ? MG_FALSE : MG_TRUE;
-}
-
-static int is_resource_present_locally(const char *uri) {
- char path[500];
- return is_local_file(uri, path, sizeof(path)) || strcmp(uri, "/api/sse") == 0;
-}
-
-static int proxy_event_handler(struct mg_connection *conn, enum mg_event ev) {
- static const char target_url[] = "http://cesanta.com";
- static int target_url_size = sizeof(target_url) - 1;
- const char *host;
-
- switch (ev) {
- case MG_REQUEST:
- host = mg_get_header(conn, "Host");
- printf("[%s] [%s] [%s]\n", conn->request_method, conn->uri,
- host == NULL ? "" : host);
- if (strstr(conn->uri, "/qqq") != NULL) s_received_signal = SIGTERM;
-
- // Proxied HTTPS requests use "CONNECT foo.com:443"
- // Proxied HTTP requests use "GET http://..... "
- // Serve requests for target_url from the local FS.
- if (memcmp(conn->uri, target_url, target_url_size) == 0 &&
- is_resource_present_locally(conn->uri + target_url_size)) {
- conn->uri += target_url_size; // Leave only path in the URI
- }
-
- if (strcmp(conn->uri, "/api/sse") == 0) {
- conn->connection_param = SSE_CONNECTION;
- mg_printf(conn, "%s", "HTTP/1.0 200 OK\r\n"
- "Content-Type: text/event-stream\r\n"
- "Cache-Control: no-cache\r\n\r\n");
- return MG_MORE;
- }
-
- if (host != NULL && strstr(host, "cesanta") != NULL) {
- return try_to_serve_locally(conn);
- }
-
- // Enable man-in-the-middle SSL mode for oracle.com
- if (!strcmp(conn->request_method, "CONNECT") &&
- !strcmp(host, "oracle.com")) {
- mg_terminate_ssl(conn, "ssl_cert.pem"); // MUST return MG_MORE after
- return MG_MORE;
- }
-
- return MG_FALSE;
- case MG_AUTH:
- return MG_TRUE;
- default:
- return MG_FALSE;
- }
-}
-
-static void setopt(struct mg_server *s, const char *opt, const char *val) {
- const char *err_msg = mg_set_option(s, opt, val);
- if (err_msg != NULL) {
- elog(1, "Error setting [%s]: [%s]", opt, err_msg);
- }
-}
-
-int main(int argc, char *argv[]) {
- const char *port = "2014", *dump = NULL, *root = "proxy_web_root";
- int i;
-
- // Parse command line options
- for (i = 1; i < argc; i++) {
- if (strcmp(argv[i], "-port") == 0 && i + 1 < argc) {
- port = argv[++i];
- } else if (strcmp(argv[i], "-root") == 0 && i + 1 < argc) {
- root = argv[++i];
- } else if (strcmp(argv[i], "-dump") == 0 && i + 1 < argc) {
- dump = argv[++i];
- } else {
- elog(1, "Usage: %s [-cert FILE] [-ca_cert FILE] [-port PORT]", argv[0]);
- }
- }
-
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
-
- // Create and configure proxy server
- s_server = mg_create_server(NULL, &proxy_event_handler);
- setopt(s_server, "enable_proxy", "yes");
- setopt(s_server, "document_root", root);
- setopt(s_server, "listening_port", port);
- setopt(s_server, "hexdump_file", dump);
-
- // Start two SSE pushing threads
- mg_start_thread(sse_pusher_thread_func, (void *) "sse_pusher_thread_1");
- mg_start_thread(sse_pusher_thread_func, (void *) "sse_pusher_thread_2");
-
- // Start serving in the main thread
- printf("Starting on port %s\n", mg_get_option(s_server, "listening_port"));
- while (s_received_signal == 0) {
- mg_poll_server(s_server, 1000);
- }
- printf("Existing on signal %d\n", s_received_signal);
- mg_destroy_server(&s_server);
-
- return EXIT_SUCCESS;
-}
diff --git a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app1/index.html b/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app1/index.html
deleted file mode 100644
index 5b5c81677f2..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app1/index.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html>
-<head>
- <title>App1 Index</title>
- <style>
- img { height: 40px; }
- </style>
-</head>
-<body>
-
- <h1>App1 index page. Served locally from the the proxy server filesystem</h1>
-
- <p>image that references non-existent local resource. Forwarded to
- the 'real' proxy target:</p>
- <img src="http://cesanta.com/images/logo.png" />
-
- <p>Google logo via HTTPS (external resource, served by remote host):</p>
- <img src="https://www.google.ie/images/srpr/logo11w.png" />
-
- <p>Same image via HTTP:</p>
- <img src="http://www.google.ie/images/srpr/logo11w.png" />
-
-</body>
-</html>
diff --git a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app2/index.html b/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app2/index.html
deleted file mode 100644
index 28d4beadcdb..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/app2/index.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<html>
-<head>
- <title>App2 Index</title>
- <meta charset="utf-8">
- <script>
- window.onload = function() {
- // Using secure websocket connection, wss://
- var ws = new WebSocket('wss://echo.websocket.org');
- var div = document.getElementById('events');
- ws.onmessage = function(ev) {
- var el = document.createElement('div');
- el.innerHTML = 'websocket message: ' + ev.data;
- div.appendChild(el);
- // Keep only last 5 messages in the list
- while (div.childNodes.length > 5) div.removeChild(div.firstChild);
- };
-
- // Send random stuff to the websocket connection periodically.
- // websocket server much echo that stuff back.
- window.setInterval(function() {
- var d = new Date();
- ws.send(d.toString());
- }, 1000);
- };
- </script>
-</head>
-<body>
- <h1>App2 index page. Served locally from the
- the proxy's filesystem.</h1>
- <p>
- Following div shows proxy forwarding of websocket connection, served by
- ws://echo.websocket.org:
- </p>
-
- <div id="events"></div>
-</body>
-</html>
diff --git a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/index.html b/3rdparty/mongoose/examples/proxy_server/proxy_web_root/index.html
deleted file mode 100644
index d8343bf3b71..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/proxy_web_root/index.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<html>
-<head>
- <title> proxy index </title>
- <script type="text/javascript">
- window.onload = function() {
- var es = new EventSource("/api/sse");
- var div = document.getElementById('events');
- es.onmessage = function(ev) {
- var el = document.createElement('div');
- el.innerHTML = 'sse message: ' + ev.data;
- div.appendChild(el);
- // Keep only last 5 messages in the list
- while (div.childNodes.length > 5) div.removeChild(div.firstChild);
- };
- };
- </script>
-</head>
-<body>
- <h1> proxy index page.</h1>
- <ul>
- <li><a href="app1">App1</a> - App1 root</li>
- <li><a href="app2">App2</a> - App2 root</li>
- </ul>
-
- <h2>SSE pushes, done by separate threads at random times:</h2>
- <div id="events"></div>
-
-</body>
-</html>
diff --git a/3rdparty/mongoose/examples/proxy_server/ssl_cert.pem b/3rdparty/mongoose/examples/proxy_server/ssl_cert.pem
deleted file mode 100644
index e6045389a1a..00000000000
--- a/3rdparty/mongoose/examples/proxy_server/ssl_cert.pem
+++ /dev/null
@@ -1,50 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEogIBAAKCAQEAwONaLOP7EdegqjRuQKSDXzvHmFMZfBufjhELhNjo5KsL4ieH
-hMSGCcSV6y32hzhqR5lvTViaQez+xhc58NZRu+OUgEhodRBW/vAOjpz/xdMz5HaC
-EhP3E9W1pkitVseS8B5rrgJo1BfCGai1fPav1nutPq2Kj7vMy24+g460Lonf6ln1
-di4aTIRtAqXtUU6RFpPJP35PkCXbTK65O8HJSxxt/XtfoezHCU5+UIwmZGYx46UB
-Wzg3IfK6bGPSiHU3pdiTol0uMPt/GUK+x4NyZJ4/ImsNAicRwMBdja4ywHKXJehH
-gXBthsVIHbL21x+4ibsg9eVM/XioTV6tW3IrdwIDAQABAoIBACFfdLutmkQFBcRN
-HAJNNHmmsyr0vcUOVnXTFyYeDXV67qxrYHQlOHe6LqIpKq1Mon7O2kYMnWvooFAP
-trOnsS6L+qaTYJdYg2TKjgo4ubw1hZXytyB/mdExuaMSkgMgtpia+tB5lD+V+LxN
-x1DesZ+veFMO3Zluyckswt4qM5yVa04YFrt31H0E1rJfIen61lidXIKYmHHWuRxK
-SadjFfbcqJ6P9ZF22BOkleg5Fm5NaxJmyQynOWaAkSZa5w1XySFfRjRfsbDr64G6
-+LSG8YtRuvfxnvUNhynVPHcpE40eiPo6v8Ho6yZKXpV5klCKciodXAORsswSoGJa
-N3nnu/ECgYEA6Yb2rM3QUEPIALdL8f/OzZ1GBSdiQB2WSAxzl9pR/dLF2H+0pitS
-to0830mk92ppVmRVD3JGxYDRZQ56tlFXyGaCzJBMRIcsotAhBoNbjV0i9n5bLJYf
-BmjU9yvWcgsTt0tr3B0FrtYyp2tCvwHqlxvFpFdUCj2oRw2uGpkhmNkCgYEA03M6
-WxFhsix3y6eVCVvShfbLBSOqp8l0qiTEty+dgVQcWN4CO/5eyaZXKxlCG9KMmKxy
-Yx+YgxZrDhfaZ0cxhHGPRKEAxM3IKwT2C8/wCaSiLWXZZpTifnSD99vtOt4wEfrG
-+AghNd5kamFiM9tU0AyvhJc2vdJFuXrfeC7ntM8CgYBGDA+t4cZcbRhu7ow/OKYF
-kulP3nJgHP/Y+LMrl3cEldZ2jEfZmCElVNQvfd2XwTl7injhOzvzPiKRF3jDez7D
-g8w0JAxceddvttJRK9GoY4l7OoeKpjUELSnEQkf+yUfOsTbXPXVY7jMfeNL6jE6b
-qN7t3qv8rmXtejMBE3G6cQKBgGR5W2BMiRSlxqKx1cKlrApV87BUe1HRCyuR3xuA
-d6Item7Lx1oEi7vb242yKdSYnpApWQ06xTh83Y/Ly87JaIEbiM0+h+P8OEIg0F1a
-iB+86AcUX1I8KseVy+Np0HbpfwP8GrFfA5DaRPK7pXMopEtby8cAJ1XZZaI1/ZvZ
-BebHAoGAcQU9WvCkT+nIp9FpXfBybYUsvgkaizMIqp66/l3GYgYAq8p1VLGvN4v5
-ec0dW58SJrCpqsM3NP78DtEzQf9OOsk+FsjBFzDU2RkeUreyt2/nQBj/2mN/+hEy
-hYN0Zii2yTb63jGxKY6gH1R/r9dL8kXaJmcZrfSa3AgywnteJWg=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIDBjCCAe4CCQCX05m0b053QzANBgkqhkiG9w0BAQQFADBFMQswCQYDVQQGEwJB
-VTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0
-cyBQdHkgTHRkMB4XDTA4MTIwNzEwMjUyMloXDTE4MTIwNTEwMjUyMlowRTELMAkG
-A1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0
-IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AMDjWizj+xHXoKo0bkCkg187x5hTGXwbn44RC4TY6OSrC+Inh4TEhgnElest9oc4
-akeZb01YmkHs/sYXOfDWUbvjlIBIaHUQVv7wDo6c/8XTM+R2ghIT9xPVtaZIrVbH
-kvAea64CaNQXwhmotXz2r9Z7rT6tio+7zMtuPoOOtC6J3+pZ9XYuGkyEbQKl7VFO
-kRaTyT9+T5Al20yuuTvByUscbf17X6HsxwlOflCMJmRmMeOlAVs4NyHyumxj0oh1
-N6XYk6JdLjD7fxlCvseDcmSePyJrDQInEcDAXY2uMsBylyXoR4FwbYbFSB2y9tcf
-uIm7IPXlTP14qE1erVtyK3cCAwEAATANBgkqhkiG9w0BAQQFAAOCAQEAW4yZdqpB
-oIdiuXRosr86Sg9FiMg/cn+2OwQ0QIaA8ZBwKsc+wIIHEgXCS8J6316BGQeUvMD+
-plNe0r4GWzzmlDMdobeQ5arPRB89qd9skE6pAMdLg3FyyfEjz3A0VpskolW5VBMr
-P5R7uJ1FLgH12RyAjZCWYcCRqEMOffqvyMCH6oAjyDmQOA5IssRKX/HsHntSH/HW
-W7slTcP45ty1b44Nq22/ubYk0CJRQgqKOIQ3cLgPomN1jNFQbAbfVTaK1DpEysrQ
-5V8a8gNW+3sVZmV6d1Mj3pN2Le62wUKuV2g6BNU7iiwcoY8HI68aRxz2hVMS+t5f
-SEGI4JSxV56lYg==
------END CERTIFICATE-----
------BEGIN DH PARAMETERS-----
-MEYCQQD+ef8hZ4XbdoyIpJyCTF2UrUEfX6mYDvxuS5O1UNYcslUqlj6JkA11e/yS
-6DK8Z86W6mSj5CEk4IjbyEOECXH7AgEC
------END DH PARAMETERS-----
diff --git a/3rdparty/mongoose/examples/restful_api/Makefile b/3rdparty/mongoose/examples/restful_api/Makefile
deleted file mode 100644
index 97fcf3f93db..00000000000
--- a/3rdparty/mongoose/examples/restful_api/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = restful_api
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/restful_api/index.html b/3rdparty/mongoose/examples/restful_api/index.html
deleted file mode 100644
index 9051ff08ceb..00000000000
--- a/3rdparty/mongoose/examples/restful_api/index.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8" />
- <title>RESTful API demo</title>
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <style type="text/css">
- * { outline: none; font: 16px/1.4 Helvetica, Arial, sans-serif; }
- body {
- background-color: #cde; margin: 0;
- padding: 0; font: 16px/1.4 Helvetica, Arial, sans-serif;
- }
- div.content {
- width: 800px; margin: 2em auto; padding: 20px 50px;
- background-color: #fff; border-radius: 1em;
- }
- label { display: inline-block; min-width: 7em; }
- input { border: 1px solid #ccc; padding: 0.2em; }
- a:link, a:visited { color: #69c; text-decoration: none; }
- @media (max-width: 700px) {
- body { background-color: #fff; }
- div.content { width: auto; margin: 0 auto; padding: 1em; }
- }
-</style>
-
-<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
-<script language="javascript" type="text/javascript">
- jQuery(function() {
-
- $(document).on('keyup', '#n1, #n2', function() {
- $.ajax({
- url: '/api/sum',
- method: 'POST',
- dataType: 'json',
- data: { n1: $('#n1').val(), n2: $('#n2').val() },
- success: function(json) {
- $('#result').html(json.result);
- }
- });
- });
-
- });
-</script>
-</head>
-<body>
- <div class="content">
- <h1>RESTful API demo.</h1>
-
- <p>
- This page demonstrates how Mongoose web server could be used to implement
- RESTful APIs. Enter numbers below, and press Submit. Browser will send
- two numbers to <tt>/api/sum</tt> URI, Mongoose calclulates the sum of
- two and returns the result.
- </p>
-
- <div>
- <label>Number 1:</label> <input type="text" id="n1" />
- </div><div>
- <label>Number 2:</label> <input type="text" id="n2" />
- </div><div>
- <label>Result:</label> <span id="result">&nbsp;</span>
- </div><div>
-
- </div>
-</body>
-</html>
diff --git a/3rdparty/mongoose/examples/restful_api/restful_api.c b/3rdparty/mongoose/examples/restful_api/restful_api.c
deleted file mode 100644
index ff0ac83a9f3..00000000000
--- a/3rdparty/mongoose/examples/restful_api/restful_api.c
+++ /dev/null
@@ -1,51 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include "mongoose.h"
-
-static const char *s_no_cache_header =
- "Cache-Control: max-age=0, post-check=0, "
- "pre-check=0, no-store, no-cache, must-revalidate\r\n";
-
-static void handle_restful_call(struct mg_connection *conn) {
- char n1[100], n2[100];
-
- // Get form variables
- mg_get_var(conn, "n1", n1, sizeof(n1));
- mg_get_var(conn, "n2", n2, sizeof(n2));
-
- mg_printf_data(conn, "{ \"result\": %lf }", strtod(n1, NULL) + strtod(n2, NULL));
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST:
- if (!strcmp(conn->uri, "/api/sum")) {
- handle_restful_call(conn);
- return MG_TRUE;
- }
- mg_send_file(conn, "index.html", s_no_cache_header);
- return MG_MORE;
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server;
-
- // Create and configure the server
- server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8000");
-
- // Serve request. Hit Ctrl-C to terminate the program
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 1000);
- }
-
- // Cleanup, and free server instance
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/send_file/Makefile b/3rdparty/mongoose/examples/send_file/Makefile
deleted file mode 100644
index 4c20d6ac4b6..00000000000
--- a/3rdparty/mongoose/examples/send_file/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = send_file
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-all: $(PROG)
-
-run: $(PROG)
- ./$(PROG)
-
-$(PROG): $(SOURCES) Makefile
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-win:
- wine cl $(SOURCES) /MD /nologo /DNDEBUG /O1 /I../.. /Fe$(PROG).exe
- wine $(PROG).exe
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib *.gc*
diff --git a/3rdparty/mongoose/examples/send_file/send_file.c b/3rdparty/mongoose/examples/send_file/send_file.c
deleted file mode 100644
index 345c3af694b..00000000000
--- a/3rdparty/mongoose/examples/send_file/send_file.c
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-//
-// This example demostrates how to send arbitrary files to the client.
-
-#include "mongoose.h"
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_REQUEST:
- mg_send_file(conn, "send_file.c", NULL); // Also could be a dir, or CGI
- return MG_MORE; // It is important to return MG_MORE after mg_send_file!
- case MG_AUTH: return MG_TRUE;
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
- mg_set_option(server, "listening_port", "8080");
-
- printf("Starting on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) mg_poll_server(server, 1000);
- mg_destroy_server(&server);
-
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/web_server/Makefile b/3rdparty/mongoose/examples/web_server/Makefile
deleted file mode 100644
index 4f9eacb6d06..00000000000
--- a/3rdparty/mongoose/examples/web_server/Makefile
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = web_server
-CFLAGS = -W -Wall -I../.. -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-OPENSSL_FLAGS = -DNS_ENABLE_SSL -lssl
-
-# PolarSSL paths and flags
-POLARSSL_PATH = /usr/local
-POLARSSLCOMPAT_PATH = ./../../../polar
-SOURCES_POLAR = $(SOURCES) $(POLARSSLCOMPAT_PATH)/polarssl_compat.c
-INCDIR_POLAR = -I$(POLARSSLCOMPAT_PATH) -I$(POLARSSL_PATH)/include
-LDFLAGS_POLAR = -L$(POLARSSL_PATH)/lib -lmbedtls
-CFLAGS_POLAR = $(CFLAGS) $(INCDIR_POLAR) -DNS_ENABLE_SSL
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-$(PROG).exe: $(SOURCES)
- cl -Fo $(PROG) $(SOURCES) -nologo -MD -I../..
-
-openssl:
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS) $(OPENSSL_FLAGS)
-
-polarssl:
- $(CC) -o $(PROG) $(SOURCES_POLAR) $(LDFLAGS_POLAR) $(CFLAGS_POLAR)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/web_server/certs/cert.pem b/3rdparty/mongoose/examples/web_server/certs/cert.pem
deleted file mode 100644
index f191e3c10a6..00000000000
--- a/3rdparty/mongoose/examples/web_server/certs/cert.pem
+++ /dev/null
@@ -1,46 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIC+zCCAeOgAwIBAgIJAPhB8jbL+G82MA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
-BAMMCTEyNy4wLjAuMTAeFw0xNTAzMDYxMjQzMzNaFw0yNTAzMDMxMjQzMzNaMBQx
-EjAQBgNVBAMMCTEyNy4wLjAuMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
-ggEBALi3b3daMgzUEROKob1Caf68i+//cTRkPdBJv2cOBak21CdQzY0Nvx73GLzf
-5TKB347BCHNbYRKGJXDbYdmFp20/WeBHkY7RS3Ad2Q5lzyx66u9PxNx7hJIiqBgF
-58VU+E3o/I+o8QNIoOT+wtCiq3Nwkp+zGBJmS32rzMEV9bcKxSzMrkfRhF+XAREd
-DwM9vfPg6WRb/b+vv06uvVwcw390RprLautGfBdaRddVYkIAKJGRRTqZAvTRFW1J
-FcIVOxlN+iA7qP7xjr3tUP78qMmlu0MXsHrUR2cgfveZK2sdUW5G804yHsU5sC8l
-FbtLKMEOyLsk2bEIScOXgum7g2sCAwEAAaNQME4wHQYDVR0OBBYEFHtLzUqAsXkH
-Il8S5sMhJuVhRJLdMB8GA1UdIwQYMBaAFHtLzUqAsXkHIl8S5sMhJuVhRJLdMAwG
-A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEzHc0AOr+qs0OFvWMfcSMi7
-O/aYlLS6f7Sos+lli69+61EcmCTJVarVeAVUsAoqmzBKDbeOpAK1hGX6/GGcXjR2
-BmuU0hUKyX9l1lwdMKU45BayH/riElwnvAyj2GxKoPpdIjlHns4SAITOCUx9NfpM
-agd7kjolton0ZQ5DI/2a43PkqHv1lY4Dp60wJlxit9U68bsGOycCJ/BsAyrPROb2
-D1MkpMBIdfHc8uxRywM3/l9buFX8yrrMUGOYKgfjDwdzbj0iwIixoGpHL7IfeBtu
-dvGO/g2rEhbtAP+xIgOR3GvzqjZh30er3no7zjDMn65tTME18Aq3tBQY7vPDKms=
------END CERTIFICATE-----
------BEGIN PRIVATE KEY-----
-MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC4t293WjIM1BET
-iqG9Qmn+vIvv/3E0ZD3QSb9nDgWpNtQnUM2NDb8e9xi83+Uygd+OwQhzW2EShiVw
-22HZhadtP1ngR5GO0UtwHdkOZc8seurvT8Tce4SSIqgYBefFVPhN6PyPqPEDSKDk
-/sLQoqtzcJKfsxgSZkt9q8zBFfW3CsUszK5H0YRflwERHQ8DPb3z4OlkW/2/r79O
-rr1cHMN/dEaay2rrRnwXWkXXVWJCACiRkUU6mQL00RVtSRXCFTsZTfogO6j+8Y69
-7VD+/KjJpbtDF7B61EdnIH73mStrHVFuRvNOMh7FObAvJRW7SyjBDsi7JNmxCEnD
-l4Lpu4NrAgMBAAECggEAaFuqbAHXOQwuwZ2XFzgIblTTsrncmT7w9VZU/sIbTKif
-X771AnX7vmDX5w2PjeN2DE7emV3NEAwd5w7qz1wFZWFfQ6jrgYaZWjRixxGZ5IVl
-aeLlU7OtCGrwEPJ1KTWCO3IgDoHh+Hr1+6o7Imhk+QlmrTcfqHWGvO9s9MGVWt2S
-RLAnSTFiOe5brdJnmlqq1sKZmnLmpydBaPUOYpZGAgRasrjdMZB+lZOazd1x23/5
-GAcm0rDREMnO9b2Jt+TNEZHT6d5KpVoExztZEZj8QCLXoic/SpFIqHGtpNlQXa+d
-BVqgQbIYjO8ldldxZ8YIyJDVF+9e/uBBwu6jBIIsEQKBgQDspEHCyyuh4LG+7BbZ
-eXlsfCxPTM6K9w31ZwHAwRtAuGqrOrE+pFJG9CEsFZbAI1aOGmZZdjexuSMcOlXl
-TIVJTQHoFtoGEsanYEXO4O1t02Ab/DCYSpXusXUraRBRPpsTC77Sh5mxLUNd23d9
-NhnDBuwChAmC+IYexjkXeqPYFwKBgQDH08PEd+2PVo4MD8UVKUlEcgoyCr6ESiyp
-HfYyhhfd5x3DbZLoKCkunDfBs/hakQk8DA2nn4tl4ZjfmzXmX0EBx+E5YTdYshW7
-ZcjN5x64B5PEOAR/NZA6agNlp3XGXXXgX+gnN6pgE49eVU22nZ4G+QBKD6NcCviB
-LBPUxMbvzQKBgHgZYRqonGtaqzsXfP1AjmSFnMNeWtDiU95BOf2Gw/sT3WcrsXr2
-UJ+cFR3XkxvOk4YpVdp/igKT0ILqBGAMdvTdtWMB/gLpEpMt5B/7veRoS7XIRy1z
-ZSawP6QZfWOOX4vKAT29/j2SmEcRNFKC245EfBFGy8EBuqfxuFX3MyJfAoGBAJ0y
-tjsErVmpma1baosvI3g4zlR3p1CimWehLmCopHXorr1iocMIdP0535L+ZU258y3N
-vaA0HpFTW9PsYgaMwLMJ7uAY3lVkIzx84e849i2HqHMgLkl0dbW+WFXL2xblxylv
-yU2wuNNED/EB4lTawcpycAvTKYvrBXt4lVE4S9exAoGAGl6vZV3zyw4jpIw4uDfk
-LTPYUrghFDDGKExyeOnC/W9pqR2veqzfBz02C3jqwhewoqgAcnNc2sg0rJmM+6Oz
-Z2mmGZTHO9xR++7+W7e8AkQBbS6TB8a+7yNcM4USLP+b9sX5N+8gFhFs9tG7j/no
-G44qLsJ/yve7/QsOA37uEMs=
------END PRIVATE KEY-----
diff --git a/3rdparty/mongoose/examples/web_server/web_server.c b/3rdparty/mongoose/examples/web_server/web_server.c
deleted file mode 100644
index 4d256a8fedf..00000000000
--- a/3rdparty/mongoose/examples/web_server/web_server.c
+++ /dev/null
@@ -1,490 +0,0 @@
-// Copyright (c) 2004-2013 Sergey Lyubka
-// Copyright (c) 2013-2014 Cesanta Software Limited
-
-#undef UNICODE // Use ANSI WinAPI functions
-#undef _UNICODE // Use multibyte encoding on Windows
-#define _MBCS // Use multibyte encoding on Windows
-#define _WIN32_WINNT 0x500 // Enable MIIM_BITMAP
-#define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005
-#define _XOPEN_SOURCE 600 // For PATH_MAX on linux
-#undef WIN32_LEAN_AND_MEAN // Let windows.h always include winsock2.h
-
-#include <sys/stat.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <time.h>
-
-#include "mongoose.h"
-
-#ifdef _WIN32
-#include <windows.h>
-#include <direct.h> // For chdir()
-#include <winsvc.h>
-#include <shlobj.h>
-
-#ifndef PATH_MAX
-#define PATH_MAX MAX_PATH
-#endif
-
-#ifndef S_ISDIR
-#define S_ISDIR(x) ((x) & _S_IFDIR)
-#endif
-
-#define DIRSEP '\\'
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-#ifndef sleep
-#define sleep(x) Sleep((x) * 1000)
-#endif
-#define abs_path(rel, abs, abs_size) _fullpath((abs), (rel), (abs_size))
-#define SIGCHLD 0
-typedef struct _stat file_stat_t;
-#define stat(x, y) _stat((x), (y))
-#else
-typedef struct stat file_stat_t;
-#include <sys/wait.h>
-#include <unistd.h>
-
-#ifdef IOS
-#include <ifaddrs.h>
-#endif
-
-#define DIRSEP '/'
-#define __cdecl
-#define abs_path(rel, abs, abs_size) realpath((rel), (abs))
-#endif // _WIN32
-
-#define MAX_OPTIONS 100
-#define MAX_CONF_FILE_LINE_SIZE (8 * 1024)
-
-#ifndef MVER
-#define MVER MONGOOSE_VERSION
-#endif
-
-static int exit_flag;
-static char server_name[50]; // Set by init_server_name()
-static char s_config_file[PATH_MAX]; // Set by process_command_line_arguments
-static struct mg_server *server; // Set by start_mongoose()
-static const char *s_default_document_root = ".";
-static const char *s_default_listening_port = "8080";
-static char **s_argv = { NULL };
-
-static void set_options(char *argv[]);
-
-#if !defined(CONFIG_FILE)
-#define CONFIG_FILE "mongoose.conf"
-#endif /* !CONFIG_FILE */
-
-static void __cdecl signal_handler(int sig_num) {
- // Reinstantiate signal handler
- signal(sig_num, signal_handler);
-
-#ifndef _WIN32
- // Do not do the trick with ignoring SIGCHLD, cause not all OSes (e.g. QNX)
- // reap zombies if SIGCHLD is ignored. On QNX, for example, waitpid()
- // fails if SIGCHLD is ignored, making system() non-functional.
- if (sig_num == SIGCHLD) {
- do {} while (waitpid(-1, &sig_num, WNOHANG) > 0);
- } else
-#endif
- { exit_flag = sig_num; }
-}
-
-static void vnotify(const char *fmt, va_list ap, int must_exit) {
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
- if (must_exit) {
- exit(EXIT_FAILURE);
- }
-}
-
-static void notify(const char *fmt, ...) {
- va_list ap;
- va_start(ap, fmt);
- vnotify(fmt, ap, 0);
- va_end(ap);
-}
-
-static void die(const char *fmt, ...) {
- va_list ap;
- va_start(ap, fmt);
- vnotify(fmt, ap, 1);
- va_end(ap);
-}
-
-static void show_usage_and_exit(void) {
- const char **names;
- int i;
-
- fprintf(stderr, "Mongoose version %s (c) Sergey Lyubka, built on %s\n",
- MVER, __DATE__);
- fprintf(stderr, "Usage:\n");
-#if !defined(MONGOOSE_NO_AUTH) && !defined(MONGOOSE_NO_FILESYSTEM)
- fprintf(stderr, " mongoose -A <htpasswd_file> <realm> <user> <passwd>\n");
-#endif
- fprintf(stderr, " mongoose [config_file]\n");
- fprintf(stderr, " mongoose [-option value ...]\n");
- fprintf(stderr, "\nOPTIONS:\n");
-
- names = mg_get_valid_option_names();
- for (i = 0; names[i] != NULL; i += 2) {
- fprintf(stderr, " -%s %s\n",
- names[i], names[i + 1] == NULL ? "<empty>" : names[i + 1]);
- }
- exit(EXIT_FAILURE);
-}
-
-#define EV_HANDLER NULL
-
-static char *sdup(const char *str) {
- char *p;
- if ((p = (char *) malloc(strlen(str) + 1)) != NULL) {
- strcpy(p, str);
- }
- return p;
-}
-
-static void set_option(char **options, const char *name, const char *value) {
- int i;
-
- for (i = 0; i < MAX_OPTIONS - 3; i++) {
- if (options[i] == NULL) {
- options[i] = sdup(name);
- options[i + 1] = sdup(value);
- options[i + 2] = NULL;
- break;
- } else if (!strcmp(options[i], name)) {
- free(options[i + 1]);
- options[i + 1] = sdup(value);
- break;
- }
- }
-
- if (i == MAX_OPTIONS - 3) {
- die("%s", "Too many options specified");
- }
-}
-
-static void process_command_line_arguments(char *argv[], char **options) {
- char line[MAX_CONF_FILE_LINE_SIZE], opt[sizeof(line)], val[sizeof(line)],
- *p, cpath[PATH_MAX];
- FILE *fp = NULL;
- size_t i, cmd_line_opts_start = 1, line_no = 0;
-
- // Should we use a config file ?
- if (argv[1] != NULL && argv[1][0] != '-') {
- snprintf(cpath, sizeof(cpath), "%s", argv[1]);
- cmd_line_opts_start = 2;
- } else if ((p = strrchr(argv[0], DIRSEP)) == NULL) {
- // No command line flags specified. Look where binary lives
- snprintf(cpath, sizeof(cpath), "%s", CONFIG_FILE);
- } else {
- snprintf(cpath, sizeof(cpath), "%.*s%c%s",
- (int) (p - argv[0]), argv[0], DIRSEP, CONFIG_FILE);
- }
- abs_path(cpath, s_config_file, sizeof(s_config_file));
-
- fp = fopen(s_config_file, "r");
-
- // If config file was set in command line and open failed, die
- if (cmd_line_opts_start == 2 && fp == NULL) {
- die("Cannot open config file %s: %s", s_config_file, strerror(errno));
- }
-
- // Load config file settings first
- if (fp != NULL) {
- fprintf(stderr, "Loading config file %s\n", s_config_file);
-
- // Loop over the lines in config file
- while (fgets(line, sizeof(line), fp) != NULL) {
- line_no++;
-
- // Ignore empty lines and comments
- for (i = 0; isspace(* (unsigned char *) &line[i]); ) i++;
- if (line[i] == '#' || line[i] == '\0') {
- continue;
- }
-
- if (sscanf(line, "%s %[^\r\n#]", opt, val) != 2) {
- printf("%s: line %d is invalid, ignoring it:\n %s",
- s_config_file, (int) line_no, line);
- } else {
- set_option(options, opt, val);
- }
- }
-
- fclose(fp);
- }
-
- // If we're under MacOS and started by launchd, then the second
- // argument is process serial number, -psn_.....
- // In this case, don't process arguments at all.
- if (argv[1] == NULL || memcmp(argv[1], "-psn_", 5) != 0) {
- // Handle command line flags.
- // They override config file and default settings.
- for (i = cmd_line_opts_start; argv[i] != NULL; i += 2) {
- if (argv[i][0] != '-' || argv[i + 1] == NULL) {
- show_usage_and_exit();
- }
- set_option(options, &argv[i][1], argv[i + 1]);
- }
- }
-}
-
-static void init_server_name(void) {
- const char *descr = "";
- snprintf(server_name, sizeof(server_name), "Mongoose web server v.%s%s",
- MVER, descr);
-}
-
-static int is_path_absolute(const char *path) {
-#ifdef _WIN32
- return path != NULL &&
- ((path[0] == '\\' && path[1] == '\\') || // UNC path, e.g. \\server\dir
- (isalpha(path[0]) && path[1] == ':' && path[2] == '\\')); // E.g. X:\dir
-#else
- return path != NULL && path[0] == '/';
-#endif
-}
-
-static char *get_option(char **options, const char *option_name) {
- int i;
-
- for (i = 0; options[i] != NULL; i++)
- if (!strcmp(options[i], option_name))
- return options[i + 1];
-
- return NULL;
-}
-
-static void *serving_thread_func(void *param) {
- struct mg_server *srv = (struct mg_server *) param;
- while (exit_flag == 0) {
- mg_poll_server(srv, 1000);
- }
- return NULL;
-}
-
-static int path_exists(const char *path, int is_dir) {
- file_stat_t st;
- return path == NULL || (stat(path, &st) == 0 &&
- ((S_ISDIR(st.st_mode) ? 1 : 0) == is_dir));
-}
-
-static void verify_existence(char **options, const char *name, int is_dir) {
- const char *path = get_option(options, name);
- if (!path_exists(path, is_dir)) {
- notify("Invalid path for %s: [%s]: (%s). Make sure that path is either "
- "absolute, or it is relative to mongoose executable.",
- name, path, strerror(errno));
- }
-}
-
-static void set_absolute_path(char *options[], const char *option_name) {
- char path[PATH_MAX], abs[PATH_MAX], *option_value;
- const char *p;
-
- // Check whether option is already set
- option_value = get_option(options, option_name);
-
- // If option is already set and it is an absolute path,
- // leave it as it is -- it's already absolute.
- if (option_value != NULL && !is_path_absolute(option_value)) {
- // Not absolute. Use the directory where mongoose executable lives
- // be the relative directory for everything.
- // Extract mongoose executable directory into path.
- if ((p = strrchr(s_config_file, DIRSEP)) == NULL) {
- getcwd(path, sizeof(path));
- } else {
- snprintf(path, sizeof(path), "%.*s", (int) (p - s_config_file),
- s_config_file);
- }
-
- strncat(path, "/", sizeof(path) - 1);
- strncat(path, option_value, sizeof(path) - 1);
-
- // Absolutize the path, and set the option
- abs_path(path, abs, sizeof(abs));
- set_option(options, option_name, abs);
- }
-}
-
-#if !defined(MONGOOSE_NO_AUTH) && !defined(MONGOOSE_NO_FILESYSTEM)
-int modify_passwords_file(const char *fname, const char *domain,
- const char *user, const char *pass) {
- int found;
- char line[512], u[512], d[512], ha1[33], tmp[PATH_MAX];
- FILE *fp, *fp2;
-
- found = 0;
- fp = fp2 = NULL;
-
- // Regard empty password as no password - remove user record.
- if (pass != NULL && pass[0] == '\0') {
- pass = NULL;
- }
-
- (void) snprintf(tmp, sizeof(tmp), "%s.tmp", fname);
-
- // Create the file if does not exist
- if ((fp = fopen(fname, "a+")) != NULL) {
- fclose(fp);
- }
-
- // Open the given file and temporary file
- if ((fp = fopen(fname, "r")) == NULL) {
- return 0;
- } else if ((fp2 = fopen(tmp, "w+")) == NULL) {
- fclose(fp);
- return 0;
- }
-
- // Copy the stuff to temporary file
- while (fgets(line, sizeof(line), fp) != NULL) {
- if (sscanf(line, "%[^:]:%[^:]:%*s", u, d) != 2) {
- continue;
- }
-
- if (!strcmp(u, user) && !strcmp(d, domain)) {
- found++;
- if (pass != NULL) {
- mg_md5(ha1, user, ":", domain, ":", pass, NULL);
- fprintf(fp2, "%s:%s:%s\n", user, domain, ha1);
- }
- } else {
- fprintf(fp2, "%s", line);
- }
- }
-
- // If new user, just add it
- if (!found && pass != NULL) {
- mg_md5(ha1, user, ":", domain, ":", pass, NULL);
- fprintf(fp2, "%s:%s:%s\n", user, domain, ha1);
- }
-
- // Close files
- fclose(fp);
- fclose(fp2);
-
- // Put the temp file in place of real file
- remove(fname);
- rename(tmp, fname);
-
- return 1;
-}
-#endif
-
-static void start_mongoose(int argc, char *argv[]) {
- s_argv = argv;
- if ((server = mg_create_server(NULL, EV_HANDLER)) == NULL) {
- die("%s", "Failed to start Mongoose.");
- }
-
-#if !defined(MONGOOSE_NO_AUTH) && !defined(MONGOOSE_NO_FILESYSTEM)
- // Edit passwords file if -A option is specified
- if (argc > 1 && !strcmp(argv[1], "-A")) {
- if (argc != 6) {
- show_usage_and_exit();
- }
- exit(modify_passwords_file(argv[2], argv[3], argv[4], argv[5]) ?
- EXIT_SUCCESS : EXIT_FAILURE);
- }
-#endif
-
- // Show usage if -h or --help options are specified
- if (argc == 2 && (!strcmp(argv[1], "-h") || !strcmp(argv[1], "--help"))) {
- show_usage_and_exit();
- }
- set_options(argv);
-}
-
-static void set_options(char *argv[]) {
- char *options[MAX_OPTIONS];
- int i;
-
- options[0] = NULL;
- set_option(options, "document_root", s_default_document_root);
- set_option(options, "listening_port", s_default_listening_port);
-
- // Update config based on command line arguments
- process_command_line_arguments(argv, options);
-
- // Make sure we have absolute paths for files and directories
- // https://github.com/valenok/mongoose/issues/181
- set_absolute_path(options, "document_root");
- set_absolute_path(options, "dav_auth_file");
- set_absolute_path(options, "cgi_interpreter");
- set_absolute_path(options, "access_log_file");
- set_absolute_path(options, "global_auth_file");
- set_absolute_path(options, "ssl_certificate");
-
- if (!path_exists(get_option(options, "document_root"), 1)) {
- set_option(options, "document_root", s_default_document_root);
- set_absolute_path(options, "document_root");
- notify("Setting document_root to [%s]",
- mg_get_option(server, "document_root"));
- }
-
- // Make extra verification for certain options
- verify_existence(options, "document_root", 1);
- verify_existence(options, "cgi_interpreter", 0);
- verify_existence(options, "ssl_certificate", 0);
-
- for (i = 0; options[i] != NULL; i += 2) {
- const char *msg = mg_set_option(server, options[i], options[i + 1]);
- if (msg != NULL) {
- notify("Failed to set option [%s] to [%s]: %s",
- options[i], options[i + 1], msg);
- if (!strcmp(options[i], "listening_port")) {
- mg_set_option(server, "listening_port", s_default_listening_port);
- notify("Setting %s to [%s]", options[i], s_default_listening_port);
- }
- }
- free(options[i]);
- free(options[i + 1]);
- }
-
- // Change current working directory to document root. This way,
- // scripts can use relative paths.
- chdir(mg_get_option(server, "document_root"));
-
-#if 0
- // Add an ability to pass listening socket to mongoose
- {
- const char *env = getenv("MONGOOSE_LISTENING_SOCKET");
- if (env != NULL && atoi(env) > 0 ) {
- mg_set_listening_socket(server, atoi(env));
- }
- }
-#endif
-
- // Setup signal handler: quit on Ctrl-C
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
-#ifndef _WIN32
- signal(SIGCHLD, signal_handler);
-#endif
-}
-
-int main(int argc, char *argv[]) {
- init_server_name();
- start_mongoose(argc, argv);
- printf("%s serving [%s] on port %s\n",
- server_name, mg_get_option(server, "document_root"),
- mg_get_option(server, "listening_port"));
- fflush(stdout); // Needed, Windows terminals might not be line-buffered
- serving_thread_func(server);
- printf("Exiting on signal %d ...", exit_flag);
- fflush(stdout);
- mg_destroy_server(&server);
- printf("%s\n", " done.");
-
- return EXIT_SUCCESS;
-}
diff --git a/3rdparty/mongoose/examples/websocket_chat/Makefile b/3rdparty/mongoose/examples/websocket_chat/Makefile
deleted file mode 100644
index 780276ef46b..00000000000
--- a/3rdparty/mongoose/examples/websocket_chat/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = websocket_chat
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/websocket_chat/index.html b/3rdparty/mongoose/examples/websocket_chat/index.html
deleted file mode 100644
index 5da84d30775..00000000000
--- a/3rdparty/mongoose/examples/websocket_chat/index.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="utf-8" />
- <title>WebSocket Test</title>
- <meta name="viewport" content="width=device-width, initial-scale=1" />
- <style type="text/css">
- body {
- background-color: #cde; margin: 0;
- padding: 0; font: 14px Helvetica, Arial, sans-serif;
- }
- div.content {
- width: 800px; margin: 2em auto; padding: 20px 50px;
- background-color: #fff; border-radius: 1em;
- }
- #messages {
- border: 2px solid #fec; border-radius: 1em;
- height: 10em; overflow: scroll; padding: 0.5em 1em;
- }
- a:link, a:visited { color: #69c; text-decoration: none; }
- @media (max-width: 700px) {
- body { background-color: #fff; }
- div.content {
- width: auto; margin: 0 auto; border-radius: 0;
- padding: 1em;
- }
- }
-</style>
-
-<script language="javascript" type="text/javascript">
-
- var rooms = [];
- var ws = new WebSocket('ws://' + location.host + '/ws');
-
- if (!window.console) { window.console = { log: function() {} } };
-
- ws.onopen = function(ev) { console.log(ev); };
- ws.onerror = function(ev) { console.log(ev); };
- ws.onclose = function(ev) { console.log(ev); };
- ws.onmessage = function(ev) {
- console.log(ev);
- var m = (ev.data || '').match(/^(\S+) (.+)/);
- if (m[1] == 'id') {
- document.getElementById('my_id').innerText = m[2];
- } else if (m[1] == 'msg') {
- var div = document.createElement('div');
- div.innerHTML = m[2];
- document.getElementById('messages').appendChild(div);
- }
- };
-
- window.onload = function() {
- document.getElementById('send_button').onclick = function(ev) {
- var msg = document.getElementById('send_input').value;
- ws.send('msg ' + msg);
- };
- document.getElementById('room_sel').onchange = function(ev) {
- var roomName = this.value || '?';
- ws.send('join ' + roomName);
- };
- };
-</script>
-</head>
-<body>
- <div class="content">
- <h1>Websocket PubSub Demonstration</h1>
-
- <p>
- This page demonstrates how Mongoose web server could be used to implement
- <a href="http://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern">
- publish–subscribe pattern</a>. Open this page in several browser
- windows. Each window initiates persistent
- <a href="http://en.wikipedia.org/wiki/WebSocket">WebSocket</a>
- connection with Mongoose, making each browser window a websocket client.
- Join a room, send messages, and see messages sent by other clients.
- </p>
-
- <p>
- My ID: <b><span id="my_id"></b></span>
- </p>
- <p>
- Join room: <select id="room_sel">
- <option value="">-- select room -- </option>
- <option>A</option>
- <option>B</option>
- </select>
- </p>
-
- <div id="messages">
- </div>
-
- <p>
- <input type="text" id="send_input" />
- <button id="send_button">Send Message</button>
- </p>
- </div>
-</body>
-</html>
diff --git a/3rdparty/mongoose/examples/websocket_chat/websocket_chat.c b/3rdparty/mongoose/examples/websocket_chat/websocket_chat.c
deleted file mode 100644
index 5ba53801017..00000000000
--- a/3rdparty/mongoose/examples/websocket_chat/websocket_chat.c
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (c) 2013-2014 Cesanta Software Limited
-// $Date: 2014-09-09 17:07:55 UTC $
-
-#include <string.h>
-#include <time.h>
-#include <signal.h>
-#include <stdlib.h>
-#include "mongoose.h"
-
-static int s_signal_received = 0;
-static struct mg_server *s_server = NULL;
-
-// Data associated with each websocket connection
-struct conn_data {
- int room;
-};
-
-static void signal_handler(int sig_num) {
- signal(sig_num, signal_handler); // Reinstantiate signal handler
- s_signal_received = sig_num;
-}
-
-static void handle_websocket_message(struct mg_connection *conn) {
- struct conn_data *d = (struct conn_data *) conn->connection_param;
- struct mg_connection *c;
-
- printf("[%.*s]\n", (int) conn->content_len, conn->content);
- if (conn->content_len > 5 && !memcmp(conn->content, "join ", 5)) {
- // Client joined new room
- d->room = conn->content[5];
- } else if (conn->content_len > 4 && !memcmp(conn->content, "msg ", 4) &&
- d->room != 0 && d->room != '?') {
- // Client has sent a message. Push this message to all clients
- // that are subscribed to the same room as client
- for (c = mg_next(s_server, NULL); c != NULL; c = mg_next(s_server, c)) {
- struct conn_data *d2 = (struct conn_data *) c->connection_param;
- if (!c->is_websocket || d2->room != d->room) continue;
- mg_websocket_printf(c, WEBSOCKET_OPCODE_TEXT, "msg %c %p %.*s",
- (char) d->room, conn,
- conn->content_len - 4, conn->content + 4);
- }
- }
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_REQUEST:
- if (conn->is_websocket) {
- handle_websocket_message(conn);
- return MG_TRUE;
- } else {
- mg_send_file(conn, "index.html", NULL); // Return MG_MORE after!
- return MG_MORE;
- }
- case MG_WS_CONNECT:
- // New websocket connection. Send connection ID back to the client.
- conn->connection_param = calloc(1, sizeof(struct conn_data));
- mg_websocket_printf(conn, WEBSOCKET_OPCODE_TEXT, "id %p", conn);
- return MG_FALSE;
- case MG_CLOSE:
- free(conn->connection_param);
- return MG_TRUE;
- case MG_AUTH:
- return MG_TRUE;
- default:
- return MG_FALSE;
- }
-}
-
-int main(void) {
- s_server = mg_create_server(NULL, ev_handler);
- mg_set_option(s_server, "listening_port", "8080");
-
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
-
- printf("Started on port %s\n", mg_get_option(s_server, "listening_port"));
- while (s_signal_received == 0) {
- mg_poll_server(s_server, 100);
- }
- mg_destroy_server(&s_server);
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/websocket_echo_server/Makefile b/3rdparty/mongoose/examples/websocket_echo_server/Makefile
deleted file mode 100644
index f6b132dc9c6..00000000000
--- a/3rdparty/mongoose/examples/websocket_echo_server/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = websocket_echo_server
-CFLAGS = -W -Wall -I../.. -pthread -g -O0 $(CFLAGS_EXTRA)
-SOURCES = $(PROG).c ../../mongoose.c
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(CFLAGS)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/websocket_echo_server/index.html b/3rdparty/mongoose/examples/websocket_echo_server/index.html
deleted file mode 100644
index 84e7078a7cb..00000000000
--- a/3rdparty/mongoose/examples/websocket_echo_server/index.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<meta charset="utf-8" />
-<title>WebSocket Test</title>
-<script language="javascript" type="text/javascript">
-
- var out = function(message) {
- var div = document.createElement('div');
- div.innerHTML = message;
- document.getElementById('output').appendChild(div);
- };
-
- window.onload = function() {
- var url = 'ws://' + location.host + '/ws';
- var num_messages = 0;
-
- websocket = new WebSocket(url);
- websocket.onopen = function(ev) {
- out('CONNECTED');
- var msg = 'Не всё подчиняется разуму. Но всё подчиняется упорству. ';
- out('SENT: ' + msg);
- websocket.send(msg);
- };
- websocket.onclose = function(ev) {
- out('DISCONNECTED');
- };
- websocket.onmessage = function(ev) {
- if (!ev.data) {
- out('<span style="color: blue;">PING... </span>');
- } else {
- out('<span style="color: blue;">RESPONSE: ' + ev.data + ' </span>');
- num_messages++;
- }
- if (num_messages > 3) {
- websocket.send('exit');
- }
- };
- websocket.onerror = function(ev) {
- out('<span style="color: red; ">ERROR: </span> ' + ev.data);
- };
- };
-</script>
-<style> div {font: small Verdana; } </style>
-<h2>Mongoose WebSocket Test</h2>
-
-<div id="output"></div>
-</html>
diff --git a/3rdparty/mongoose/examples/websocket_echo_server/websocket_echo_server.c b/3rdparty/mongoose/examples/websocket_echo_server/websocket_echo_server.c
deleted file mode 100644
index 9001a8a4c23..00000000000
--- a/3rdparty/mongoose/examples/websocket_echo_server/websocket_echo_server.c
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright (c) 2013-2014 Cesanta Software Limited
-// $Date: 2014-09-09 17:07:55 UTC $
-
-#include <string.h>
-#include <time.h>
-#include "mongoose.h"
-
-static void push_message(struct mg_server *server, time_t current_time) {
- struct mg_connection *c;
- char buf[20];
- int len = sprintf(buf, "%lu", (unsigned long) current_time);
-
- // Iterate over all connections, and push current time message to websocket ones.
- for (c = mg_next(server, NULL); c != NULL; c = mg_next(server, c)) {
- if (c->is_websocket) {
- mg_websocket_write(c, 1, buf, len);
- }
- }
-}
-
-static int send_reply(struct mg_connection *conn) {
- if (conn->is_websocket) {
- // This handler is called for each incoming websocket frame, one or more
- // times for connection lifetime.
- // Echo websocket data back to the client.
- mg_websocket_write(conn, 1, conn->content, conn->content_len);
- return conn->content_len == 4 && !memcmp(conn->content, "exit", 4) ?
- MG_FALSE : MG_TRUE;
- } else {
- mg_send_file(conn, "index.html", NULL);
- return MG_MORE;
- }
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH: return MG_TRUE;
- case MG_REQUEST: return send_reply(conn);
- default: return MG_FALSE;
- }
-}
-
-int main(void) {
- struct mg_server *server = mg_create_server(NULL, ev_handler);
- time_t current_timer = 0, last_timer = time(NULL);
-
- mg_set_option(server, "listening_port", "8080");
-
- printf("Started on port %s\n", mg_get_option(server, "listening_port"));
- for (;;) {
- mg_poll_server(server, 100);
- current_timer = time(NULL);
- if (current_timer - last_timer > 0) {
- last_timer = current_timer;
- push_message(server, current_timer);
- }
- }
-
- mg_destroy_server(&server);
- return 0;
-}
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/Makefile b/3rdparty/mongoose/examples/websocket_ssl_proxy/Makefile
deleted file mode 100644
index 968f1aca066..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/Makefile
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2014 Cesanta Software
-# All rights reserved
-
-PROG = ws_ssl
-CFLAGS = -W -Wall -I../.. -I. -pthread -g -O0 -DMONGOOSE_ENABLE_THREADS -DNS_ENABLE_SSL -DSSL_WRAPPER_USE_AS_LIBRARY $(CFLAGS_EXTRA)
-LDFLAGS = -lssl
-SOURCES = ws_ssl.c ../../mongoose.c ssl_wrapper.c
-
-# PolarSSL paths and flags
-POLARSSL_PATH = /usr/local
-POLARSSLCOMPAT_PATH = ./../../../polar
-SOURCES_POLAR = $(SOURCES) $(POLARSSLCOMPAT_PATH)/polarssl_compat.c
-INCDIR_POLAR = -I$(POLARSSLCOMPAT_PATH) -I$(POLARSSL_PATH)/include
-LDFLAGS_POLAR = -L$(POLARSSL_PATH)/lib -lmbedtls
-CFLAGS_POLAR = $(CFLAGS) $(INCDIR_POLAR)
-#
-
-all: $(PROG)
-
-$(PROG): $(SOURCES)
- $(CC) -o $(PROG) $(SOURCES) $(LDFLAGS) $(CFLAGS)
-
-polarssl: $(SOURCES_POLAR)
- $(CC) -o $(PROG) $(SOURCES_POLAR) $(LDFLAGS_POLAR) $(CFLAGS_POLAR)
-
-clean:
- rm -rf $(PROG) *.exe *.dSYM *.obj *.exp .*o *.lib
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_ca.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_ca.pem
deleted file mode 100644
index ebc7d8fd5eb..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_ca.pem
+++ /dev/null
@@ -1,49 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAwizPnrCx+/kPSdEeSJFLDXrBH+cSQsSLrCm99G1hCjzqSlIk
-1BhkZMEHxBaiVLky4+M/nwhjwwRHI10h6U2Or3tbPLv7z94cPf+uCx1aF7TE3Fm3
-6YnDk+CjrYVFN5GRPGOPPdFxGoc+vFvQJyAAimvchnS1ZoEQFvermwzOnKspA6gc
-Px+7wnOeju9TyJuDr5ngtDXFnkcpkBNPxz3En4MJY4xJiaueafh9pIES2vSl7uP0
-J/qot9v2rdiL7nt1H1vwseeEkZhQ+NLB5e2z4psyktJcwDX7wQ6j7JnKfHeP+ixO
-TUORgV4foBMVOqo//Guo92Q5HoLNK77V0y4+ZQIDAQABAoIBAGEsx+LlDs3JQQty
-KjOq8uKWElyC6bKcZkIMydGvg6b6AU6ceW3jnyqFJ/vMUAUSghNmQQq3yiVo2Kks
-DLKTa9sKYwisE0NeJsgoUtOhJttCTlrwU4f+t/AjtgY68f7zTLnqIV+Ql4ftM0pU
-sIFEFMExZbWsZrQb1w+Hd0wrRqNEbSOfSjHeigvuw1T3GH2tSBUTGTpcoewCzy7U
-PKS5pkYyiKySQQNqZTac3NHPjxdK6xxzwURZp1irKdiPdt04KHLVLX8KXelt/J0k
-AeYkVbpFIeQ9rNBerMEp6uRBt+nE5mvP+xx1XPqKRxuxbMyTnBXeOM2zS/a/dBiz
-fwokwcECgYEA9RSsv9AQ/AR8tt+aPEQvjhJ5pn/YbCb1DA9IDXpaq3tzacGd8JHj
-3kUtb79nosu85LvSkAYmtzgfJs6xZyUkscra6q+xlsJ12QRxLzqfxcp9Y0wsdqM4
-AcOwuiPKrjkWxOQpyWPWRwbmAefLfRMekHt4Y/QY0CwhslpnsOsj3O0CgYEAytOE
-8I4GBfSQfSjXwfrso++Oi75VSsl5ZeiMGihfEhYFTE8/3rEZf7nf9iFSkN3TT+7f
-pFqQzddzPBZXlpVM6k1jcEjdpJizbeR8DmICpABFrZvKz1o8pQ2Yw+FYI86ih0x4
-806snMNgg/RgcVijXKFrC5joJOI+DVgwWoQyMFkCgYBxt4MkiV2oIkjf7ca6GgVa
-zbXGjOGV5Umkq96J6nDxyplVw/IN8xOhScX4aP6kahaep4vfKguCzjaeIh/stS5e
-lLqZVKZ5Roe6B7ag7HnAI+GkVm73KWrOXse8xui/iFvJRfkhqgJ9+HR3A9/GjD2N
-Ws0Uy+lLhn6oLAya6bA9TQKBgAVfZP4aRP6TY+Bs3Io+41XUWqpI+GlqvNR+PHfU
-6e/ItYs37jEv78T6X3xdlZpQxfAwG6x22a8aLetBjEBo5Aiw1Bl9VKGvidE3ZDHd
-VsSRXUckAVNMyJ52pb1KktMf/h4nYGzRgLEGW+Ai8QsPlgQ2ImfEPSH8/DfORjmf
-ltTBAoGBAMxIZ52DrJvuxogSOfA1MoCD6a90trkXCquvi+A/fXojZ8BHmMQshvhK
-rAO7SDIV1i1Nh3jQ/oFWE8KOprqrOLO6jNTyF65vh+zk7ztGsEME9FkDhHasUiXf
-t5PE9KeTChHRvIa4FGCl9We9GftE5Ii77LWMOIq22pyxYbvHQFEf
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIDlDCCAnygAwIBAgIJAIOoO+AapJ5WMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNV
-BAMTA3dzMTEMMAoGA1UEChMDd3MxMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVi
-bGluMB4XDTE0MDgwMzA5MTU0NVoXDTI0MDczMTA5MTU0NVowOjEMMAoGA1UEAxMD
-d3MxMQwwCgYDVQQKEwN3czExCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZEdWJsaW4w
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDCLM+esLH7+Q9J0R5IkUsN
-esEf5xJCxIusKb30bWEKPOpKUiTUGGRkwQfEFqJUuTLj4z+fCGPDBEcjXSHpTY6v
-e1s8u/vP3hw9/64LHVoXtMTcWbfpicOT4KOthUU3kZE8Y4890XEahz68W9AnIACK
-a9yGdLVmgRAW96ubDM6cqykDqBw/H7vCc56O71PIm4OvmeC0NcWeRymQE0/HPcSf
-gwljjEmJq55p+H2kgRLa9KXu4/Qn+qi32/at2Ivue3UfW/Cx54SRmFD40sHl7bPi
-mzKS0lzANfvBDqPsmcp8d4/6LE5NQ5GBXh+gExU6qj/8a6j3ZDkegs0rvtXTLj5l
-AgMBAAGjgZwwgZkwHQYDVR0OBBYEFL54xAgtJTW6US4Mbr4QG0yKzvaxMGoGA1Ud
-IwRjMGGAFL54xAgtJTW6US4Mbr4QG0yKzvaxoT6kPDA6MQwwCgYDVQQDEwN3czEx
-DDAKBgNVBAoTA3dzMTELMAkGA1UEBhMCSUUxDzANBgNVBAcTBkR1YmxpboIJAIOo
-O+AapJ5WMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAJz/RzMa9Wa2
-eEXed7ijH1gcWtgVsVT1xZo0ksFl+QJ5Be1AJpOIe8nKdzYjxPWUkofIoaGHdMLL
-Uc/udRzsXncup+0mD+Yos6Cqyo9yHq7L1HbXfKYZtBXIjWHdF2+RP8j9tHfITXYI
-Pb2zsQ+A6PYpp5OLGZTDAnI2qffqsmwXFNhPfFhOANrGlOjsvy1P7JDzvymj/90m
-NomlO3vjxLHOf6MvedTgCB0dRcAoUWPgbxPWifjBmGBjQjA4ukMQ58wbBQgvIoCW
-obrXmLCNZIkpWTw4gMRYquY880IYK/OuFNJH/dawxx/WzuVr7IdLmbFY15zf5TUb
-ZpIpwqRCysg=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_client.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_client.pem
deleted file mode 100644
index 82e99504cb8..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_client.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEAwOp1RS9RnE8L5TszDPIOmpf/1pqb+ki99l/sGhqB/KZBKCuq
-uoCc2VPK3PCByBE15/xJ7t691FnJfForI9DO5p2R0FPD6o357hqRsh0dJNBm0VgG
-iNtLQ8lyYoE72HJbkgCAUZW4N0OBibOmvp/s3Fmr7rEjW5LmZxOtX+iULKIUZ0w6
-gJlM8G5QA1SuqndN0PbPx+RZKSXZCoJj+Nboqw03nyJUexzs+lynR9ITMziUaaVM
-4rzG+P6joQAnUkDNydxo/d4tj4xaioZdKxWLYEbj2BUtOlJJydotWo2wcG85ONrT
-Gw0ltR1vku1hidMm2QL30uGIL5SeqyE8TqWk4QIDAQABAoIBAQCxHtKauc45MA4g
-4hCGAzvLTmETnRI2YlEfAoTYlpvf5pkOE8GFyI25r4gjACJ4GO0gWG9dBF7Pt7wZ
-EwRmttEvxV3aIv5OvRnKNdSs7rQSV9D+xc4CGy1oSG1f6X2TxbMzQoiN32OqQa2O
-S0Z94IFs8lu8JCDtc9tcqiFVXEmnC3RvJZOShWpsCsbmh5ue1Xed0MQQ47vt7Zt7
-I0cutvwSFJMsZkZUJp5+KjVNYo9TEJxVD3m2NJNJxBfBoRVHXNii3hUEHcTIdIAz
-omtRwBU8AKgJirGIRo1h2ZFyubI8ScGOJWIiWMQvQqTHKiOaz3yUar1NSG+kFn0U
-cj7s3FhdAoGBAOQbx8Jwhtp4iOkP6aW1nVTgiaTj4LMlyJZioFwgPFRIcA3oRHt9
-5SRetmgFZNvcuNw1udfeaObKmlzxwUruprwOpihgAQWJFTtOjQNrt2gsYuX4l3W6
-T46dO2W1pV+mW4A5gt0aqhLv7pCS4lpreNAqyHSPqcQWcCeiTzmp/LfDAoGBANiB
-FQOTyMElR9OzKwmcGfIvnhUfJQwi5qNE3R+xXiP5x36a9HQBey5ri2lnBle0Ksr/
-G+RKoflmk1eFXVHN0w35yw0dVco//WE4vOknldNEnIT85k02ld8lDTa2Q/EJZtPH
-un6zeU0Q2/4SZ/GXPssEZPlpPM7WtQzztlH3+sqLAoGBAKnhppvAgi4ippQsLa4j
-29BiiSAsNiQ1d3XIbfUubL+4UvuIh7gQwp6biu1dVwgHEgWuXYHPOgDn0p51zaao
-pbRYlJZtKVWeChnpHkv15NnIdL8grGwZHTbxElNlPIxHsM2GB1fzi8YeumUhf0In
-2AnwUum8NIq8yzo5PxeK6ZNRAoGBAIEA2Q6ankJH/nZsCbbeJq+iI+Wd+ysyGI8s
-Vz2tJ9Tz3iTYG9SLlWRhfF4/nw3fMqhmPa5Xsg+zSRQbSTGXHKz1LEISOq4aVtX5
-QscCaUnLVh//uRJE9iRSJX92NyGGYpjKJ5ubQSnkY9EOEpVnc2jwo2HhjPQKBzNC
-fF53Dh5lAoGALwTN5uxrBZLPu4DtZkOosKkv4l+kzFoOjLJR4vA7ONBx2CSe9G7F
-tSsH7lZS3b0mxBWjO90WhaSvtMWWrfqq8vrqmoTE795fYxNoLfCLK13W31aTDUsI
-pQRJIL30MPvASbcFHN2MD2dXz2nQzY8C9lvtvap/krYiDKDU2L7+iP8=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIC7DCCAdQCBRQHBXNHMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNVBAMTA3dzMTEM
-MAoGA1UEChMDd3MxMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVibGluMB4XDTE0
-MDgwMzA5MTU0NVoXDTI0MDczMTA5MTU0NVowOjEMMAoGA1UEAxMDd3MxMQwwCgYD
-VQQKEwN3czExCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZHYWx3YXkwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDA6nVFL1GcTwvlOzMM8g6al//Wmpv6SL32
-X+waGoH8pkEoK6q6gJzZU8rc8IHIETXn/Enu3r3UWcl8Wisj0M7mnZHQU8Pqjfnu
-GpGyHR0k0GbRWAaI20tDyXJigTvYcluSAIBRlbg3Q4GJs6a+n+zcWavusSNbkuZn
-E61f6JQsohRnTDqAmUzwblADVK6qd03Q9s/H5FkpJdkKgmP41uirDTefIlR7HOz6
-XKdH0hMzOJRppUzivMb4/qOhACdSQM3J3Gj93i2PjFqKhl0rFYtgRuPYFS06UknJ
-2i1ajbBwbzk42tMbDSW1HW+S7WGJ0ybZAvfS4YgvlJ6rITxOpaThAgMBAAEwDQYJ
-KoZIhvcNAQEFBQADggEBABPLmq6zKOMY0WRjtBoSymq6f+vXeEwtWCfVejdG6RlG
-/PTdCKNvp3OL7FDnmQQ+r5rMs4+Os4fX/g315QFKXu01rqxmFb2XVNhhaECdUWtK
-QP6ZoVZviUiDjhK6a+05aerPCJpkGy/lz0W6gmj4qhuAQbobxb6UbzqTRYY+ZwGk
-+SI3TAVCdmXFlxN/M9b0DbmkseRG8GGFmyRYyRb84vbV6zemFI++5ROUT9zXT7ey
-nYfFJvAAk5jJhY5UP2aMlVWYYa4jUZrrPLoiBLUuRrp67EKGebCH9mgCIf8ztNJF
-fpuvcz++LUeRyTlAGDefe+FyHGIwFzIfZn39D7CaRvM=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_server.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_server.pem
deleted file mode 100644
index 93ef657ec6f..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws1_server.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEAyal0BZKRYd+Wpxv4MB8LjjgXv/MxSN5oSAKThlCZ/AWG0FEP
-d4nrBACT2xUxwo+xbYl3joiwL/eCPAp6QNKRGhvXVOnSIFVSjKZWbdX+toqK9pDS
-QMDTL4ZJvK6pLZXknyHjEr0PxZh22F7iS1+C8HxBPj0Xgg/u5/+jPhFPPZ1d5elv
-4cm/z+xy6RjFlA80aIeK7dcWssOsOIPjUNFfmoYgR63ScZIlUZj6j8VX9oX7fJID
-jumGajDxgD2nBWFbHcGKin6bz/wZ+OIhXOCDdY7oKuMW4JiBwbfBtedkQuQYS11s
-PRFFYDLoZH59Ivcu0c4F2tomE86qM8THsI910wIDAQABAoIBAG55FAQRfO8/C0rU
-eavy9eOdOvV+hltC66G3N5X3BcQYSvhHz89OkJ6KqnT0MWRCT5KQIhzFKK++SWwW
-2U41jCPfaKEtzlzEIQrH/MUC3Byn3OSiBWxPteFtEWv5ytgcKzg52iljxQYcNc7m
-e9WKpzKS/zLXSM+JZvlVA9p2pRA88kUZ/EE5H+FW3kHj5eGNqX+cxUVpL0VKTiLv
-aXWjYotpmDJW/Rn9wRQethm6Gdx3bvo+LEVlJRELNq8NM5H/tZIVRzudJOgzsw5v
-3OQGhfKB6Eg/vqSFoZxX6ApXDxmtaSO83B0kK550bDVv4sBnOExGjKCzybt04tet
-KtLPPoECgYEA5WUD+mFL99sCX6pzIyUVlxp9eUhVy5nvhoF6u3mvhay2XsZUY0wy
-+/qVqYSZTvuvJ6JSXc4iVIX8u/gj7914805AwujepIF/8E0AaXLBMndzDE4ze5S5
-2RHI7Cy4/3AWOcQ9wFFmUdSs7/6oAkcQtvzP40hGg3J2jAEhIdCqmbMCgYEA4Q0G
-BYP9XeTdh0C+BcP9B5VUEC0jerYS8VqVqriB+9JfT3InI7K08sOG2DiQQBhAHuzL
-RhCECU2a9j0+u5F5JNeY5m3IhU73Lw+lOlUkMaAO6x7JJEzhXhonE7Kv8fWygr/0
-OB7yzqz+YsWdQ2VOPZ88ntlAYE65vzcaVswZY2ECgYEAr7Gt2VA6Ei0A5Wq0Yr+d
-iKz2WzUG2TkelqOG8B4kTDrbNz2qFp+fERV9GWgAz9i+75lIgqZF7vzsdL96LtYv
-NBLEUURwegjhh5hCb4E/7bpFOLCQh9+CdHpFrHYYfzRHIZlnPmxZ9OTyS6J85bmu
-WKjLRKXvs++wUkzvJmoesDcCgYEAkTOB6xUZ5/a+J4HSGI43NylVr4owFgBbgHVd
-k2SwGPXGoM+aCSJINUmKOv9jsrbyyAEntfD5/7aegLlLPGHDs82WzTWP5tLoEOkb
-ReOhEpOejHy0ckNYNQrSo5bqhkZsAogu3fa52jcrejbeHJnEPWX8CtFJA9pHZeP7
-jnzo9IECgYBefHg0dymSj2xxN0XmC+S5cvQu2K/NYUpatoWvHnPiQ87wIM0AWz0O
-D0ghEI+Ze57NbtSrrcTE7hY/LHrAqXGAB9XNIM5g9Pp/lM+XjzKVr1FMf4xpuHf1
-VJJRHrOU14CvMvKbgbPrL6B0d5yrYmeex7GxNw0ZVvtjCa502Eck+w==
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIC7DCCAdQCBRQHBXNGMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNVBAMTA3dzMTEM
-MAoGA1UEChMDd3MxMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVibGluMB4XDTE0
-MDgwMzA5MTU0NVoXDTI0MDczMTA5MTU0NVowOjEMMAoGA1UEAxMDd3MxMQwwCgYD
-VQQKEwN3czExCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZHYWx3YXkwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJqXQFkpFh35anG/gwHwuOOBe/8zFI3mhI
-ApOGUJn8BYbQUQ93iesEAJPbFTHCj7FtiXeOiLAv94I8CnpA0pEaG9dU6dIgVVKM
-plZt1f62ior2kNJAwNMvhkm8rqktleSfIeMSvQ/FmHbYXuJLX4LwfEE+PReCD+7n
-/6M+EU89nV3l6W/hyb/P7HLpGMWUDzRoh4rt1xayw6w4g+NQ0V+ahiBHrdJxkiVR
-mPqPxVf2hft8kgOO6YZqMPGAPacFYVsdwYqKfpvP/Bn44iFc4IN1jugq4xbgmIHB
-t8G152RC5BhLXWw9EUVgMuhkfn0i9y7RzgXa2iYTzqozxMewj3XTAgMBAAEwDQYJ
-KoZIhvcNAQEFBQADggEBAE20gAykuuaCoP49GnZ/Z6ZItFry4Fl6iCWBDdEsWI9R
-wRNYumeaeejdFPXfSJdTT7UlrVK1WWGLQLq+ixHRDX+V9T67ou85F92H/OxbUoPr
-iz/TZAEBTC1GvTJl49lsfPl1dTWH8T4Ej2hxCUvIJrkCkI2Ov4Wwef6A26USrwBt
-S/CPInjCe6qkE5E8xfTDl8k5IIgMadTPhi5sbV2piBJoN4floJPqR0hdDKbgUymn
-5WNSiRkuI6UIDZwQEp+A8TmFBHbSwfTGt2Sz5iI27P8J6pFvR5eRA1k57dRUWNXC
-WAU1nqteP3QAjj9L3o8IO0T62scaiJX8x01gTmVVe2I=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_ca.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_ca.pem
deleted file mode 100644
index 9345a94a60a..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_ca.pem
+++ /dev/null
@@ -1,49 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAwXIMpHuTNsro2pxe6y1mu27md2Olhvfx26rO3maO0/stIC2z
-G/xQatFDLIWzfKFYOT0iSEj252ENFDCw6aDRKpiaUFtXcMAWkNkkKntEyoEgE45k
-rTrvpay0v0B+ojwjA1Jz/9v35cgvDwTs3vNFno5HhI0m2YF4ocTmeHJ6u0xRL/qy
-atfKsfuVq5s5CXOYCXp3Ux6kJ1c22J0EdZMvS75SVjAZgRkqQpqt9L3e2ZBCEgUr
-w0KwlERvpeJF+sJJOshXjfrDzvwL8IpPnGZLJNINFbSJMk5MFGcMyq/28pSZLB9E
-Dh8vk5D5gUnxM60ONUy2nYPcYr5p1PLDiC8hfQIDAQABAoIBAB0Twpi6xn8W8vdh
-R9c75NRJsDTD8q6d+GnXe+7sJY3xlG/gzqpnO8NCn0FC+57BNdystsl8xjgzW17s
-jrsfZDFt7MwlXrhg90NgkFIeY1G5JRQrdDChykHx+t1AmYhTV8P5EdykuNd+RqyQ
-RfahRJa3tkJTYUKSdoqCaU4zjwU2CSxltuJx24V+WoZE12EwewJ8HPg2XTnbsGE7
-Fnx5s29O4ItM70CC0536AY/OgfuPix5z573VQiilqqfOQkVkKa1fHd6tGpWU+3kH
-X9FnhEBf9cN9tVgmaB0sCSVVrfgqSXg1EwKHqe/+FCumuesA68Q35+/K3b+QrNiR
-ka2yliECgYEA+V/4pbgG/lPYvTwWhKxGXXdJmrSPgZC0mwE+fRuYkeptbIkS0pwt
-/UDTXk9nttj1f1ZJ3NgQbT/1w8jpXfsCJ8VeGzL9+ADhRKWVFRlu/nyFCMXawLEV
-rot7SEr8BW/m8moHgY5lYipM3dXJPk0F+KLrN60U/aNmFUtPGW802BkCgYEAxpWy
-FGL2sEQ0QaRDTcqqF5faVqw+5rVGvN+EX5o26E0QWWnoo3L2c2/5X93iBl+Fqtnm
-9jSIQUC3rYOawKnZ/HcIE2ergFit/p6JaV9NiLDRtDUmSzlffEGVCj0neYFsnWp5
-zcmkUyZ6fr19EmKQWfdteNBlXue32TjVlFbfUQUCgYAfMbgi0sBdNBPaqBeRBRPQ
-QUm9xnRlGrrc4Oz2LWuKZS7G8uad3deK5H8MPxaUMtOS2DJpI8X6RJPzp8A5d1qv
-quq4sEpAqauEMMpTV1khEGZ70HQqwnwZ12zWgDrCW1siW80QkcVw4CW5YjLITk4+
-6fJOhqInkDcG1uLQJa8QkQKBgQCfs8l4DbJ4RRGFbLXXvNGXkb68j18yqLxPrq3F
-OL9JiJhKYBsAP7clVPrG9ykLmQxlP0I35D1jxMkymLD+mlo9Z/itqmTJHggnyZWW
-kVdIQ3MSKuA2BNjek9tpVY8Gb2hLHFMChVRKrpo6jOclvvB5+bsnOukbLtyyq7tP
-xaFohQKBgByCmlltjOBWZLFLeA1x8j3inm9zM/FAJuANbHUOZ1RwrRcNFbDv/FXm
-rLPnPCaH5AwAWhVRJcNHo37Ee0s/xqe+Q4dG4xL943k+6KlopAw1SXhuXF6PnBfF
-y+ArVlh9d2oWN5cBEzRddnWnKJuMi70kMzYf6dIW9s/dHbq/gFDy
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIDlDCCAnygAwIBAgIJAJDtcXU2wiJIMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNV
-BAMTA3dzMjEMMAoGA1UEChMDd3MyMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVi
-bGluMB4XDTE0MDgwMzA5MTU0OFoXDTI0MDczMTA5MTU0OFowOjEMMAoGA1UEAxMD
-d3MyMQwwCgYDVQQKEwN3czIxCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZEdWJsaW4w
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDBcgyke5M2yujanF7rLWa7
-buZ3Y6WG9/Hbqs7eZo7T+y0gLbMb/FBq0UMshbN8oVg5PSJISPbnYQ0UMLDpoNEq
-mJpQW1dwwBaQ2SQqe0TKgSATjmStOu+lrLS/QH6iPCMDUnP/2/flyC8PBOze80We
-jkeEjSbZgXihxOZ4cnq7TFEv+rJq18qx+5WrmzkJc5gJendTHqQnVzbYnQR1ky9L
-vlJWMBmBGSpCmq30vd7ZkEISBSvDQrCURG+l4kX6wkk6yFeN+sPO/Avwik+cZksk
-0g0VtIkyTkwUZwzKr/bylJksH0QOHy+TkPmBSfEzrQ41TLadg9xivmnU8sOILyF9
-AgMBAAGjgZwwgZkwHQYDVR0OBBYEFLK4flD5QD/mRufsPx63xlEKM8pwMGoGA1Ud
-IwRjMGGAFLK4flD5QD/mRufsPx63xlEKM8pwoT6kPDA6MQwwCgYDVQQDEwN3czIx
-DDAKBgNVBAoTA3dzMjELMAkGA1UEBhMCSUUxDzANBgNVBAcTBkR1YmxpboIJAJDt
-cXU2wiJIMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEYD+CReikYr
-Rzvk+/Vdi/7IcaH9CFknIdtineSIw1y98nxnbnNJqxwfNaRblbYvg6OFdUI3POuI
-+rdYLCFl8z3tWqRHLkGqHSJA9xcng3jLJxz0+ctiVcekJvXaB3O6eSZjhGbmmI/s
-CQhdy2zpEIVOeUq50DrSJp9CknyGu/IkaGx5GOZtkiHMrpig50CRjX1lS6qrMNYp
-vB8gfuqpjsL4Ar3vg+lgMSwNWXBNHrIRPHB5VEzBEdmLFZlvueR0ooEMCklpwX/a
-lFImVc6JcY1pBEkHTiTLGMpGAHG3I1aVUaWb3L+V+2ym/KNRNL5C2+1eiqql5u8m
-HUaOcNC90ew=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_client.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_client.pem
deleted file mode 100644
index 8021de3c8a3..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_client.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpAIBAAKCAQEA0ucemqFwBFziVOgTgx4mZII4WnGDpA/rWAGHvUZOqy2dQ3Pz
-woGKxBaVPAl5kxEosROVGa7dTuq5yFZ4XIGvwCKxF30vCmdGCytqq6MMp904jG32
-KikkmjCApIMGxMO4eoBHZZxiyVvKTbg9M2CRXErwnYWhFH/qGdPnuo0CEaHJA4VK
-A9incT9dpeEhU30R6ajAe/je9rCj2OMLMFSMfd51L/VYfO60zDwUNY7YVIghQZgJ
-e44EVGsp1pXaqaD6o3PvGY3ohw2aZjJzlJ7MJHbKV9lft98R3pklbpBzMH849cEy
-Q/51L/rlfTUgCpTy7wEZpWHQNtHfu/1rhJjpNQIDAQABAoIBAQCUNIHXG/dBuZv7
-GpMLotZL7w520Co30lAJqhmfMpb5x7YpvoPffXTsUwpQBECAzqAPv7kZMT6nxF8F
-n245Y5EDrd1QqlGyN9yK4Nm2/39XPygL1wITopHsIIVmFgVdpEQxIZAKoZjx8yT4
-9K1dO1Eq0CbCKzOE2lbCC51eBNUdWZIMxwC6O/j/KoIkZ/HwlG2hpUuXg8x/XawA
-ZJDCoTcWHCjYP10FxKVN3vAyWM2IM44o9IbsAGEOswR4gUwRsgq6Ehc1U59XUHi+
-x30oda55I1/8xD+SfP/zk2dDPHkv/hq5+258GU/THsw2+AAexocvSIS/g9EppTEg
-biFaDKzJAoGBAPqey10JeyiOlHbBjoSSa7lJYUjocQANFQ4ayOAgfNX72iyabrKF
-p9sVAeO/nM00+DPrm2wWws03ScsPeh+9BDJMPRBUHfSNp7+F+oyj7PWHBEFHbyO9
-5HnYZP+1vhdG2dYPIY2gRSFXpiGn3j0M1D0w9c7Ilm8ee3krdR4E/mw3AoGBANdu
-EfS1dK3+m7sEgc2+3U32z83GpuCHeUIKGPYMLI0fIb1CPpboHU9YjOFJZH9iIIdl
-00JC963O3+pqLe0XbMOmBVt9QjZfhfB+AY+JHtbPgoQVLtq9X/WvW7h3xn6S971r
-Crkhqay3Cs4BzsgYDYraQCTw3oq4twR9Nuy4etfzAoGAXOsG5wWe3diO/sCggFJx
-Eg88vHVBgA1ZoxMXKtGgtw1bRHI1XIblRvqw6qmeDw72fvl5dEe0DbXT7C9ezemc
-ZrGRaj5lpMfoS7/2trIIJrfaQgGkGRJMZUhvmcbeJW8lUJHnlMS5HLWMaKn+YZAi
-GFXQrMv9ylD44mHUWD7tvV0CgYBNctPfvvCQsQ05ofgsiKa1Jbs1hmpuJCYy2MB6
-jIvjvEJ78PnhdNc8tGAJikIoDZYWN0RI+RxkDxCvDLcwGpDOkbwxVQnd1F+pwxM6
-kBhXL8kDRT5QA28hO4bk/aKN1LZeEcKMJg8C+ddXkozNoOAVgDs5TKMlCh057u41
-EmmPgwKBgQDOlYi7fPYOCy0yjHMxSrp2SZOS06AMWGbbCoGkjRtvuP+FmKSNB+LZ
-pOSEPJgzjsRutKjneww4LpV6dViAyTcP5JoeQpokHf7UVo7yq2QH/iwF3zJwsC/S
-OuVLkqpZzWuye/QCH5NOTfw27ye8jG8VcQW2QPbcbkLXLM7zg2yX7g==
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIC7DCCAdQCBRQHBXNJMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNVBAMTA3dzMjEM
-MAoGA1UEChMDd3MyMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVibGluMB4XDTE0
-MDgwMzA5MTU0OFoXDTI0MDczMTA5MTU0OFowOjEMMAoGA1UEAxMDd3MyMQwwCgYD
-VQQKEwN3czIxCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZHYWx3YXkwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDS5x6aoXAEXOJU6BODHiZkgjhacYOkD+tY
-AYe9Rk6rLZ1Dc/PCgYrEFpU8CXmTESixE5UZrt1O6rnIVnhcga/AIrEXfS8KZ0YL
-K2qrowyn3TiMbfYqKSSaMICkgwbEw7h6gEdlnGLJW8pNuD0zYJFcSvCdhaEUf+oZ
-0+e6jQIRockDhUoD2KdxP12l4SFTfRHpqMB7+N72sKPY4wswVIx93nUv9Vh87rTM
-PBQ1jthUiCFBmAl7jgRUaynWldqpoPqjc+8ZjeiHDZpmMnOUnswkdspX2V+33xHe
-mSVukHMwfzj1wTJD/nUv+uV9NSAKlPLvARmlYdA20d+7/WuEmOk1AgMBAAEwDQYJ
-KoZIhvcNAQEFBQADggEBACCCAJypO9DFU6GeOH+FwE0JCLTypHoIwERWxNL7xfjg
-rwVqIxwAEo+fJjL+QY7JbAb/eqKaXIBYkAF2lFc4iEmecXX/A3Aqw95AYi78o7HD
-MwRPqJha9mxLcCWwjX8XK8pT152BvYFPNhi+6jd++rDRxKDfmNvgdUQ2/YW6a5Wv
-zEmLDPUWRIuMQIEmOa2/JhlllDviMExTw51nbqYgCghycRvDACyQAuu8re7P6gcg
-bXObNlfxcU/8Ph6MFI+2S9ODtQ4BHyuKd4kRNsYn8vV42a0h3bCYSGPk3kSIgxd7
-XijwHT/o8E9ddH2BvDv+6Nhno9C6/MbezEOIs4nlhRk=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_server.pem b/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_server.pem
deleted file mode 100644
index b6b48ef23f4..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/certs/ws2_server.pem
+++ /dev/null
@@ -1,45 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEpQIBAAKCAQEA29iFnMf4pjty6knOt4wT0joPUlU2dGCFWxQ5Eg77Yx3Lou2a
-FOzNGp7zLYH8gauOK+mgY+B9cBv8PvVtUQQKB0SKTTV8ZNKVyP3O5F2gRSJ+tHtT
-FqaPfG0WPOn/f02YbOpAe6Rk+NnlJoeuBxG4uapUSq7r0mTGJQe+52y1LcMs23ID
-ENBfDoUMVt5vCnF+cYK5ndeFVLyPO3JjohDH1zv3a9ECG28rtjKHLpNYFDsPJaD7
-UPuyyk3hIvfPCZoJOUlEVfpLT/lM+9oCPnq9PwIp5NqYofkuc3eKooCo7N4r4IlP
-Ajktaao6b0ScNwNQB3leOIdEUFSIYy8N1JszVwIDAQABAoIBAFlIvjrGG/2m9yyf
-fQyeHw6p9b8CTHNHH+G1fNgQrZe7ahBpXsJQyZueIjTBLcOb4MmEwFbPvSHiu7b2
-Bcd5VHlPJLvmlPZ9b8eJDJVCUOzC7aJu03fHfU6THwzuG42f/d9942JTiY5nL+FO
-CSdl0xfUTRdnou53buFrG+TxCUPj13HP1HY6DAVzEIq1H4TZwIZo7KRRTIYpTB3P
-6yvr9xsISLlnmfQ4tp2pApl5o+bHJEhr1VO6SAT/pSyShi79KmMMqYtyTmOMz7w6
-VJkre5ybnXBDN6tfMHWqdobJ4gRWK9rqf+LIZig5XQnyzkue8k+I7aPgO4xNFh56
-dkejQcECgYEA9MDCWViqpfvof+epiKzccqnIRnz1EfHdRQjiKsKGRe39+K+pyaqJ
-FOOPFy3aOw6M4cFWwcdMYzKTItvzyLVhDqMzT5eup/NVqo5tPoy93XPf2qRYiTl4
-2j5wvm0RVkYEONd3pk2lbfbUmn7XQXj0+AG60SvsqErF/UhIBGec/xsCgYEA5fLC
-EdiiC98kr4sVaE8G854WI+aAkStqO5YXyrnsMzRsqk8KVVYE1yCC9rYyymDBYmlx
-uEW+vbWqLc8PO3v4ty3o5ff303lPMWIrvKiUldjqMjS6ncWxsQjU0bygGVgOgHO7
-c8rjiDH5M0JgWSREYUVFT5mW/5+Y1LVT8mYNlHUCgYEAhMSX6N23XGkFW3Twu2qB
-/1Vohgw86OoaDNvfzDBPpFmQ3rlz0ijHSeSTd5BxBH5FICXACUgygNErjcphOSxj
-JQyUxgVTQlo2y1mNm1O/nwS/lxx1xqK9ky4x/Kqvr+w1WBxSFI2kQr2V4OUTobma
-sXpGvDcmnrhJJLd0EaefO6cCgYEA3Xw/S9tC8nZjqqYn34nHI16Q6tF54tpTf8Np
-dT4x8Xw8cqqhRGMPVHsfSi1irKYXfwgbnienuqlBmtAHVv9pKF+TJfb7gXkmO2XY
-xOYIAHGn2uYJHjCun9vmyYKLHv4/MaDH3Jd/I88mviXgEdyp9Js5UJua4utB1Rg3
-HJMJ34UCgYEAr0PpHEBMbZXZBybNU96+jRTgkrNeJpzlnMy7et2IsRAtLjZ0mpbn
-NaX8i8eO+ubweqFdhOvbh7Hd0zr7BzrYcUG1e3njhtxJE1MgWL5plnLVUbIyDAm3
-iBpIHIBASNCN3sqeq+VqXvavRmeZh5O0vyLP46/kxZx0rzR/NCi9xxU=
------END RSA PRIVATE KEY-----
------BEGIN CERTIFICATE-----
-MIIC7DCCAdQCBRQHBXNIMA0GCSqGSIb3DQEBBQUAMDoxDDAKBgNVBAMTA3dzMjEM
-MAoGA1UEChMDd3MyMQswCQYDVQQGEwJJRTEPMA0GA1UEBxMGRHVibGluMB4XDTE0
-MDgwMzA5MTU0OFoXDTI0MDczMTA5MTU0OFowOjEMMAoGA1UEAxMDd3MyMQwwCgYD
-VQQKEwN3czIxCzAJBgNVBAYTAklFMQ8wDQYDVQQHEwZHYWx3YXkwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDb2IWcx/imO3LqSc63jBPSOg9SVTZ0YIVb
-FDkSDvtjHcui7ZoU7M0anvMtgfyBq44r6aBj4H1wG/w+9W1RBAoHRIpNNXxk0pXI
-/c7kXaBFIn60e1MWpo98bRY86f9/TZhs6kB7pGT42eUmh64HEbi5qlRKruvSZMYl
-B77nbLUtwyzbcgMQ0F8OhQxW3m8KcX5xgrmd14VUvI87cmOiEMfXO/dr0QIbbyu2
-Mocuk1gUOw8loPtQ+7LKTeEi988Jmgk5SURV+ktP+Uz72gI+er0/Aink2pih+S5z
-d4qigKjs3ivgiU8COS1pqjpvRJw3A1AHeV44h0RQVIhjLw3UmzNXAgMBAAEwDQYJ
-KoZIhvcNAQEFBQADggEBALi/RmqeXGazT/WRj9+ZqdcnbcHwK5wwr2/YkpFPJ0Hf
-ZDm+2vgjDdTT6cJS6fau0M5nliYdz89aQQo1j9RSRZnzlc/2YCFXyRLCOJYaINbj
-1MEUAvNDGL7xTpepK9hVkXASRkbyNXERXRKFI1N+vpKu6UorT6/osEV/qM+MFJ3s
-24xE8/J3J4MirVQVt6eY6Jb+tkliOPMIugr6YQlLsqJygEWATP8Qsr81XSfcZhVq
-rXzVt7QV8dO0nStMjKK5omrtEAhVnASk7w1tFHkpBF1rqXGoo9ML40RnFZ+E5zqi
-iZtzp+NzzLnEnWMNs+fJpPJ96P0kbq2bQzuSBcUynq0=
------END CERTIFICATE-----
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/net_skeleton.h b/3rdparty/mongoose/examples/websocket_ssl_proxy/net_skeleton.h
deleted file mode 100644
index 4d1c33fc820..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/net_skeleton.h
+++ /dev/null
@@ -1,253 +0,0 @@
-// Copyright (c) 2014 Cesanta Software Limited
-// All rights reserved
-//
-// This software is dual-licensed: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2 as
-// published by the Free Software Foundation. For the terms of this
-// license, see <http://www.gnu.org/licenses/>.
-//
-// You are free to use this software under the terms of the GNU General
-// Public License, but WITHOUT ANY WARRANTY; without even the implied
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-// See the GNU General Public License for more details.
-//
-// Alternatively, you can license this software under a commercial
-// license, as set out in <http://cesanta.com/>.
-//
-// $Date: 2014-09-28 05:04:41 UTC $
-
-#ifndef NS_SKELETON_HEADER_INCLUDED
-#define NS_SKELETON_HEADER_INCLUDED
-
-#define NS_SKELETON_VERSION "2.1.0"
-
-#undef UNICODE // Use ANSI WinAPI functions
-#undef _UNICODE // Use multibyte encoding on Windows
-#define _MBCS // Use multibyte encoding on Windows
-#define _INTEGRAL_MAX_BITS 64 // Enable _stati64() on Windows
-#define _CRT_SECURE_NO_WARNINGS // Disable deprecation warning in VS2005+
-#undef WIN32_LEAN_AND_MEAN // Let windows.h always include winsock2.h
-#define _XOPEN_SOURCE 600 // For flockfile() on Linux
-#define __STDC_FORMAT_MACROS // <inttypes.h> wants this for C++
-#define __STDC_LIMIT_MACROS // C++ wants that for INT64_MAX
-#ifndef _LARGEFILE_SOURCE
-#define _LARGEFILE_SOURCE // Enable fseeko() and ftello() functions
-#endif
-#define _FILE_OFFSET_BITS 64 // Enable 64-bit file offsets
-
-#ifdef _MSC_VER
-#pragma warning (disable : 4127) // FD_SET() emits warning, disable it
-#pragma warning (disable : 4204) // missing c99 support
-#endif
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <assert.h>
-#include <ctype.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-#include <signal.h>
-
-#ifdef _WIN32
-#ifdef _MSC_VER
-#pragma comment(lib, "ws2_32.lib") // Linking with winsock library
-#endif
-#include <windows.h>
-#include <process.h>
-#ifndef EINPROGRESS
-#define EINPROGRESS WSAEINPROGRESS
-#endif
-#ifndef EWOULDBLOCK
-#define EWOULDBLOCK WSAEWOULDBLOCK
-#endif
-#ifndef __func__
-#define STRX(x) #x
-#define STR(x) STRX(x)
-#define __func__ __FILE__ ":" STR(__LINE__)
-#endif
-#ifndef va_copy
-#define va_copy(x,y) x = y
-#endif // MINGW #defines va_copy
-#define snprintf _snprintf
-#define vsnprintf _vsnprintf
-#define sleep(x) Sleep((x) * 1000)
-#define to64(x) _atoi64(x)
-typedef int socklen_t;
-typedef unsigned char uint8_t;
-typedef unsigned int uint32_t;
-typedef unsigned short uint16_t;
-typedef unsigned __int64 uint64_t;
-typedef __int64 int64_t;
-typedef SOCKET sock_t;
-typedef struct _stati64 ns_stat_t;
-#ifndef S_ISDIR
-#define S_ISDIR(x) ((x) & _S_IFDIR)
-#endif
-#else
-#include <errno.h>
-#include <fcntl.h>
-#include <netdb.h>
-#include <pthread.h>
-#include <stdarg.h>
-#include <unistd.h>
-#include <arpa/inet.h> // For inet_pton() when NS_ENABLE_IPV6 is defined
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <sys/select.h>
-#define closesocket(x) close(x)
-#define __cdecl
-#define INVALID_SOCKET (-1)
-#define to64(x) strtoll(x, NULL, 10)
-typedef int sock_t;
-typedef struct stat ns_stat_t;
-#endif
-
-#ifdef NS_ENABLE_DEBUG
-#define DBG(x) do { printf("%-20s ", __func__); printf x; putchar('\n'); \
- fflush(stdout); } while(0)
-#else
-#define DBG(x)
-#endif
-
-#ifndef ARRAY_SIZE
-#define ARRAY_SIZE(array) (sizeof(array) / sizeof(array[0]))
-#endif
-
-#ifdef NS_ENABLE_SSL
-#ifdef __APPLE__
-#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
-#endif
-#include <openssl/ssl.h>
-#else
-typedef void *SSL;
-typedef void *SSL_CTX;
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-union socket_address {
- struct sockaddr sa;
- struct sockaddr_in sin;
-#ifdef NS_ENABLE_IPV6
- struct sockaddr_in6 sin6;
-#else
- struct sockaddr sin6;
-#endif
-};
-
-// Describes chunk of memory
-struct ns_str {
- const char *p;
- size_t len;
-};
-
-// IO buffers interface
-struct iobuf {
- char *buf;
- size_t len;
- size_t size;
-};
-
-void iobuf_init(struct iobuf *, size_t initial_size);
-void iobuf_free(struct iobuf *);
-size_t iobuf_append(struct iobuf *, const void *data, size_t data_size);
-void iobuf_remove(struct iobuf *, size_t data_size);
-void iobuf_resize(struct iobuf *, size_t new_size);
-
-// Callback function (event handler) prototype, must be defined by user.
-// Net skeleton will call event handler, passing events defined above.
-struct ns_connection;
-typedef void (*ns_callback_t)(struct ns_connection *, int event_num, void *evp);
-
-// Events. Meaning of event parameter (evp) is given in the comment.
-#define NS_POLL 0 // Sent to each connection on each call to ns_mgr_poll()
-#define NS_ACCEPT 1 // New connection accept()-ed. union socket_address *addr
-#define NS_CONNECT 2 // connect() succeeded or failed. int *success_status
-#define NS_RECV 3 // Data has benn received. int *num_bytes
-#define NS_SEND 4 // Data has been written to a socket. int *num_bytes
-#define NS_CLOSE 5 // Connection is closed. NULL
-
-
-struct ns_mgr {
- struct ns_connection *active_connections;
- const char *hexdump_file; // Debug hexdump file path
- sock_t ctl[2]; // Socketpair for mg_wakeup()
- void *user_data; // User data
-};
-
-
-struct ns_connection {
- struct ns_connection *next, *prev; // ns_mgr::active_connections linkage
- struct ns_connection *listener; // Set only for accept()-ed connections
- struct ns_mgr *mgr;
-
- sock_t sock; // Socket
- union socket_address sa; // Peer address
- struct iobuf recv_iobuf; // Received data
- struct iobuf send_iobuf; // Data scheduled for sending
- SSL *ssl;
- SSL_CTX *ssl_ctx;
- void *user_data; // User-specific data
- void *proto_data; // Application protocol-specific data
- time_t last_io_time; // Timestamp of the last socket IO
- ns_callback_t callback; // Event handler function
-
- unsigned int flags;
-#define NSF_FINISHED_SENDING_DATA (1 << 0)
-#define NSF_BUFFER_BUT_DONT_SEND (1 << 1)
-#define NSF_SSL_HANDSHAKE_DONE (1 << 2)
-#define NSF_CONNECTING (1 << 3)
-#define NSF_CLOSE_IMMEDIATELY (1 << 4)
-#define NSF_WANT_READ (1 << 5)
-#define NSF_WANT_WRITE (1 << 6)
-#define NSF_LISTENING (1 << 7)
-#define NSF_UDP (1 << 8)
-
-#define NSF_USER_1 (1 << 20)
-#define NSF_USER_2 (1 << 21)
-#define NSF_USER_3 (1 << 22)
-#define NSF_USER_4 (1 << 23)
-#define NSF_USER_5 (1 << 24)
-#define NSF_USER_6 (1 << 25)
-};
-
-void ns_mgr_init(struct ns_mgr *, void *user_data);
-void ns_mgr_free(struct ns_mgr *);
-time_t ns_mgr_poll(struct ns_mgr *, int milli);
-void ns_broadcast(struct ns_mgr *, ns_callback_t, void *, size_t);
-
-struct ns_connection *ns_next(struct ns_mgr *, struct ns_connection *);
-struct ns_connection *ns_add_sock(struct ns_mgr *, sock_t,
- ns_callback_t, void *);
-struct ns_connection *ns_bind(struct ns_mgr *, const char *,
- ns_callback_t, void *);
-struct ns_connection *ns_connect(struct ns_mgr *, const char *,
- ns_callback_t, void *);
-
-int ns_send(struct ns_connection *, const void *buf, int len);
-int ns_printf(struct ns_connection *, const char *fmt, ...);
-int ns_vprintf(struct ns_connection *, const char *fmt, va_list ap);
-
-// Utility functions
-void *ns_start_thread(void *(*f)(void *), void *p);
-int ns_socketpair(sock_t [2]);
-int ns_socketpair2(sock_t [2], int sock_type); // SOCK_STREAM or SOCK_DGRAM
-void ns_set_close_on_exec(sock_t);
-void ns_sock_to_str(sock_t sock, char *buf, size_t len, int flags);
-int ns_hexdump(const void *buf, int len, char *dst, int dst_len);
-int ns_avprintf(char **buf, size_t size, const char *fmt, va_list ap);
-int ns_resolve(const char *domain_name, char *ip_addr_buf, size_t buf_len);
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif // NS_SKELETON_HEADER_INCLUDED
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.c b/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.c
deleted file mode 100644
index 969aa979345..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.c
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright (c) 2014 Cesanta Software Limited
-// All rights reserved
-//
-// This software is dual-licensed: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2 as
-// published by the Free Software Foundation. For the terms of this
-// license, see <http://www.gnu.org/licenses/>.
-//
-// You are free to use this software under the terms of the GNU General
-// Public License, but WITHOUT ANY WARRANTY; without even the implied
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-// See the GNU General Public License for more details.
-//
-// Alternatively, you can license this software under a commercial
-// license, as set out in <http://cesanta.com/products.html>.
-//
-// $Date$
-
-#include "net_skeleton.h"
-#include "ssl_wrapper.h"
-
-static void ev_handler(struct ns_connection *nc, int ev, void *p) {
- const char *target_addr = (const char *) nc->mgr->user_data;
- struct ns_connection *pc = (struct ns_connection *) nc->user_data;
- struct iobuf *io = &nc->recv_iobuf;
-
- (void) p;
- switch (ev) {
- case NS_ACCEPT:
- // Create a connection to the target, and interlink both connections
- nc->user_data = ns_connect(nc->mgr, target_addr, ev_handler, nc);
- if (nc->user_data == NULL) {
- nc->flags |= NSF_CLOSE_IMMEDIATELY;
- }
- break;
-
- case NS_CLOSE:
- // If either connection closes, unlink them and shedule closing
- if (pc != NULL) {
- pc->flags |= NSF_FINISHED_SENDING_DATA;
- pc->user_data = NULL;
- }
- nc->user_data = NULL;
- break;
-
- case NS_RECV:
- // Forward arrived data to the other connection, and discard from buffer
- if (pc != NULL) {
- ns_send(pc, io->buf, io->len);
- iobuf_remove(io, io->len);
- }
- break;
-
- default:
- break;
- }
-}
-
-void *ssl_wrapper_init(const char *local_addr, const char *target_addr,
- const char **err_msg) {
- struct ns_mgr *mgr = (struct ns_mgr *) calloc(1, sizeof(mgr[0]));
- *err_msg = NULL;
-
- if (mgr == NULL) {
- *err_msg = "malloc failed";
- } else {
- ns_mgr_init(mgr, (void *) target_addr);
- if (ns_bind(mgr, local_addr, ev_handler, NULL) == NULL) {
- *err_msg = "ns_bind() failed: bad listening_port";
- ns_mgr_free(mgr);
- free(mgr);
- mgr = NULL;
- }
- }
-
- return mgr;
-}
-
-void ssl_wrapper_serve(void *param, volatile int *quit) {
- struct ns_mgr *mgr = (struct ns_mgr *) param;
-
- while (*quit == 0) {
- ns_mgr_poll(mgr, 1000);
- }
- ns_mgr_free(mgr);
- free(mgr);
-}
-
-#ifndef SSL_WRAPPER_USE_AS_LIBRARY
-static int s_received_signal = 0;
-
-static void signal_handler(int sig_num) {
- signal(sig_num, signal_handler);
- s_received_signal = sig_num;
-}
-
-static void show_usage_and_exit(const char *prog) {
- fprintf(stderr, "Usage: %s <listening_address> <target_address>\n", prog);
- exit(EXIT_FAILURE);
-}
-
-int main(int argc, char *argv[]) {
- void *wrapper;
- const char *err_msg;
-
- if (argc != 3) {
- show_usage_and_exit(argv[0]);
- }
-
- // Setup signal handlers
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
- signal(SIGPIPE, SIG_IGN);
-
- if ((wrapper = ssl_wrapper_init(argv[1], argv[2], &err_msg)) == NULL) {
- fprintf(stderr, "Error: %s\n", err_msg);
- exit(EXIT_FAILURE);
- }
- ssl_wrapper_serve(wrapper, &s_received_signal);
-
- return EXIT_SUCCESS;
-}
-#endif // SSL_WRAPPER_USE_AS_LIBRARY
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.h b/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.h
deleted file mode 100644
index ccdf780556c..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/ssl_wrapper.h
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2014 Cesanta Software Limited
-// All rights reserved
-//
-// This software is dual-licensed: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 2 as
-// published by the Free Software Foundation. For the terms of this
-// license, see <http://www.gnu.org/licenses/>.
-//
-// You are free to use this software under the terms of the GNU General
-// Public License, but WITHOUT ANY WARRANTY; without even the implied
-// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-// See the GNU General Public License for more details.
-//
-// Alternatively, you can license this software under a commercial
-// license, as set out in <http://cesanta.com/products.html>.
-//
-// $Date$
-
-#ifndef SSL_WRAPPER_HEADER_INCLUDED
-#define SSL_WRAPPER_HEADER_INCLUDED
-
-#ifdef __cplusplus
-extern "C" {
-#endif // __cplusplus
-
-void *ssl_wrapper_init(const char *listen_addr, const char *target_addr,
- const char **err_msg);
-void ssl_wrapper_serve(void *, volatile int *stop_marker);
-
-#ifdef __cplusplus
-}
-#endif // __cplusplus
-
-#endif // SSL_WRAPPER_HEADER_INCLUDED
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.c b/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.c
deleted file mode 100644
index d2fceee650e..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.c
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright (c) 2014 Cesanta Software
-// All rights reserved
-//
-// This example demostrates proxying of WebSocket traffic, regardless of the
-// protocol (ws:// or wss://).
-// To use this example:
-// 1. configure your browser to use a proxy on port 2014
-// 2. import certs/ws1_ca.pem and certs/ws2_ca.pem into the trusted
-// certificates list on your browser
-// 3. make && ./ws_ssl
-// 4. Point your browser to http://ws_ssl.com
-// A page with 4 sections should appear, showing websocket echoes
-
-#include "net_skeleton.h"
-#include "mongoose.h"
-#include "ssl_wrapper.h"
-
-#define S1_PEM "certs/ws1_server.pem"
-#define C1_PEM "certs/ws1_client.pem"
-#define CA1_PEM "certs/ws1_ca.pem"
-#define S2_PEM "certs/ws2_server.pem"
-#define C2_PEM "certs/ws2_client.pem"
-#define CA2_PEM "certs/ws2_ca.pem"
-
-struct config {
- const char *uri;
- const char *wrapper_server_addr;
- const char *wrapper_client_addr;
- const char *target_addr;
-};
-
-static struct config s_wrappers[] = {
- {
- "ws1:80",
- "tcp://127.0.0.1:7001",
- "tcp://127.0.0.1:7001",
- "tcp://127.0.0.1:9001"
- },
- {
- "ws1:443",
- "ssl://127.0.0.1:7002:" S1_PEM,
- "tcp://127.0.0.1:7002",
- "tcp://127.0.0.1:9001"
- },
- {
- "ws2:80",
- "tcp://127.0.0.1:7003",
- "tcp://127.0.0.1:7003",
- "ssl://127.0.0.1:9002:" C2_PEM ":" CA2_PEM
- },
- {
- "ws2:443",
- "ssl://127.0.0.1:7004:" S2_PEM,
- "tcp://127.0.0.1:7004",
- "ssl://127.0.0.1:9002:" C2_PEM ":" CA2_PEM
- },
-};
-
-static int s_received_signal = 0;
-
-static void signal_handler(int sig_num) {
- signal(sig_num, signal_handler);
- s_received_signal = sig_num;
-}
-
-static int ev_handler(struct mg_connection *conn, enum mg_event ev) {
- int i;
-
- switch (ev) {
- case MG_AUTH:
- return MG_TRUE;
-
- case MG_REQUEST:
- printf("==> [%s] [%s]\n", conn->request_method, conn->uri);
-
- if (strcmp(conn->request_method, "CONNECT") == 0) {
- // Iterate over configured wrappers, see if we can use one of them
- for (i = 0; i < (int) ARRAY_SIZE(s_wrappers); i++) {
- if (strcmp(conn->uri, s_wrappers[i].uri) == 0) {
- mg_forward(conn, s_wrappers[i].wrapper_client_addr);
- return MG_MORE;
- }
- }
-
- // No suitable wrappers found. Disallow that CONNECT request.
- mg_send_status(conn, 405);
- return MG_TRUE;
- }
-
- // Not a CONNECT request, serve HTML file.
- mg_send_file(conn, "ws_ssl.html", NULL);
- return MG_MORE;
-
- default:
- return MG_FALSE;
- }
-}
-
-static int ws_handler(struct mg_connection *conn, enum mg_event ev) {
- switch (ev) {
- case MG_AUTH:
- return MG_TRUE;
- case MG_REQUEST:
- if (conn->is_websocket) {
- // Simple websocket echo server
- mg_websocket_write(conn, WEBSOCKET_OPCODE_TEXT,
- conn->content, conn->content_len);
- } else {
- mg_printf_data(conn, "%s", "websocket connection expected");
- }
- return MG_TRUE;
- default:
- return MG_FALSE;
- }
-}
-
-static void *serve_thread_func(void *param) {
- struct mg_server *server = (struct mg_server *) param;
- printf("Listening on port %s\n", mg_get_option(server, "listening_port"));
- while (s_received_signal == 0) {
- mg_poll_server(server, 1000);
- }
- mg_destroy_server(&server);
- return NULL;
-}
-
-static void *wrapper_thread_func(void *param) {
- struct config *c = (struct config *) param;
- const char *err_msg;
- void *wrapper;
-
- wrapper = ssl_wrapper_init(c->wrapper_server_addr, c->target_addr, &err_msg);
- if (wrapper == NULL) {
- fprintf(stderr, "Error: %s\n", err_msg);
- exit(EXIT_FAILURE);
- }
- //((struct ns_mgr *) wrapper)->hexdump_file = "/dev/stderr";
- ssl_wrapper_serve(wrapper, &s_received_signal);
-
- return NULL;
-}
-
-int main(void) {
- struct mg_server *proxy_server = mg_create_server(NULL, ev_handler);
- struct mg_server *ws1_server = mg_create_server(NULL, ws_handler);
- struct mg_server *ws2_server = mg_create_server(NULL, ws_handler);
- size_t i;
-
- ((struct ns_mgr *) proxy_server)->hexdump_file = "/dev/stderr";
-
- // Configure proxy server to listen on port 2014
- mg_set_option(proxy_server, "listening_port", "2014");
- //mg_set_option(proxy_server, "enable_proxy", "yes");
-
- // Configure two websocket echo servers:
- // ws1 is WS, listening on 9001
- // ws2 is WSS, listening on 9002
- // Note that HTML page thinks that ws1 is WSS, and ws2 is WS,
- // where in reality it is vice versa and proxy server makes the decision.
- mg_set_option(ws1_server, "listening_port", "tcp://127.0.0.1:9001");
- mg_set_option(ws2_server, "listening_port",
- "ssl://127.0.0.1:9002:" S2_PEM ":" CA2_PEM);
-
- // Setup signal handlers
- signal(SIGTERM, signal_handler);
- signal(SIGINT, signal_handler);
-
- // Start SSL wrappers, each in it's own thread
- for (i = 0; i < ARRAY_SIZE(s_wrappers); i++) {
- ns_start_thread(wrapper_thread_func, &s_wrappers[i]);
- }
-
- // Start websocket servers in separate threads
- mg_start_thread(serve_thread_func, ws1_server);
- mg_start_thread(serve_thread_func, ws2_server);
-
- // Finally, start proxy server in this thread: this call blocks
- serve_thread_func(proxy_server);
-
- printf("Existing on signal %d\n", s_received_signal);
- return EXIT_SUCCESS;
-}
diff --git a/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.html b/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.html
deleted file mode 100644
index 23ab2506145..00000000000
--- a/3rdparty/mongoose/examples/websocket_ssl_proxy/ws_ssl.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head>
- <title>Websocket Proxy SSL Test</title>
- <meta charset="utf-8">
- <script>
- window.onload = function() {
- var protocols = ['ws://', 'wss://'];
- var websocketServers = ['ws1', 'ws2'];
- //protocols = ['wss://'];
- //websocketServers = ['ws1']
-
- var createWebsocketConnection = function(proto, server) {
- var conn = new WebSocket(proto + server);
-
- var div = document.createElement('div');
- var h2 = document.createElement('h2');
- h2.innerHTML = 'Connection to ' + proto + server;
- document.body.appendChild(h2);
- document.body.appendChild(div);
-
- conn.onmessage = function(ev) {
- var el = document.createElement('div');
- el.innerHTML = 'websocket message: ' + ev.data;
- div.appendChild(el);
- // Keep only last 5 messages in the list
- while (div.childNodes.length > 5) div.removeChild(div.firstChild);
- };
-
- // Send some string to the websocket connection periodically.
- // websocket server much echo it back.
- window.setInterval(function() { conn.send(Math.random()); }, 1000);
- };
-
- for (var i = 0; i < protocols.length; i++) {
- for (var j = 0; j < websocketServers.length; j++) {
- createWebsocketConnection(protocols[i], websocketServers[j]);
- }
- }
- };
- </script>
- <style>
- body > div {
- border: 1px solid #ccc; background: #f0f0f0; padding: 0 1em;
- margin: 0 2em; min-height: 4em; max-width: 40em;
- }
- </style>
-</head>
-<body>
-</body>
-</html> \ No newline at end of file