summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/mongoose/examples/cookie_authentication
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/mongoose/examples/cookie_authentication')
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/Makefile12
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/cookie_auth.c97
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/index.html33
-rw-r--r--3rdparty/mongoose/examples/cookie_authentication/login.html44
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