diff options
author | 2015-11-04 18:55:36 +0100 | |
---|---|---|
committer | 2015-11-04 18:55:36 +0100 | |
commit | b6707c3bb53c931e9ec3c5c6630149b7121bbcf5 (patch) | |
tree | 2d9c880bb21242c3fb4619977fe9a71658b3d06e /3rdparty/mongoose/examples | |
parent | 2a067f08a4582cdff841dc27b661a9e48fac419a (diff) |
Removed mongoose due to restricted license and webserver wip till code is restructured (nw)
Diffstat (limited to '3rdparty/mongoose/examples')
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"> </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 |