diff options
Diffstat (limited to '3rdparty/mongoose/examples/cookie_authentication')
4 files changed, 0 insertions, 186 deletions
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 |