From af98854ce440181a46a3a3315c1e69dcbf1e7918 Mon Sep 17 00:00:00 2001
From: Deomid Ryabkov <rojer@cesanta.com>
Date: Mon, 8 Aug 2016 15:01:06 +0100
Subject: [PATCH] Delete old cookie_auth example

PUBLISHED_FROM=c118b2796f697e8d5493bb3d534cee7406060c1a
---
 examples/cookie_authentication/Makefile      |   2 -
 examples/cookie_authentication/cookie_auth.c | 114 -------------------
 examples/cookie_authentication/index.html    |  33 ------
 examples/cookie_authentication/login.html    |  44 -------
 4 files changed, 193 deletions(-)
 delete mode 100644 examples/cookie_authentication/Makefile
 delete mode 100644 examples/cookie_authentication/cookie_auth.c
 delete mode 100644 examples/cookie_authentication/index.html
 delete mode 100644 examples/cookie_authentication/login.html

diff --git a/examples/cookie_authentication/Makefile b/examples/cookie_authentication/Makefile
deleted file mode 100644
index cba8008d4..000000000
--- a/examples/cookie_authentication/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-PROG = cookie_auth
-include ../examples.mk
diff --git a/examples/cookie_authentication/cookie_auth.c b/examples/cookie_authentication/cookie_auth.c
deleted file mode 100644
index f532f12ed..000000000
--- a/examples/cookie_authentication/cookie_auth.c
+++ /dev/null
@@ -1,114 +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_http_port = "8000";
-static struct mg_serve_http_opts s_http_server_opts;
-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];
-  cs_md5(hash, user_name, strlen(user_name), ":", (size_t) 1, expiration_date,
-         strlen(expiration_date), ":", (size_t) 1, s_secret, strlen(s_secret),
-         NULL);
-  snprintf(ssid, ssid_size, "%s|%s|%s", user_name, expiration_date, hash);
-}
-
-static int check_auth(struct http_message *hm) {
-  int authenticated = 0;
-  char ssid[100], calculated_ssid[100], name[100], expire[100];
-
-  if (mg_vcmp(&hm->uri, s_login_uri) == 0) {
-    // Always authenticate requests to login page
-    authenticated = 1;
-  } else {
-    // Look for session ID in the Cookie.
-    // That session ID can be validated against the database that stores
-    // current active sessions.
-    mg_http_parse_header(mg_get_http_header(hm, "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) {
-        authenticated = 1;
-      }
-    }
-  }
-
-  return authenticated;
-}
-
-static void check_login_form_submission(struct mg_connection *c,
-                                        struct http_message *hm) {
-  char name[100], password[100], ssid[100], expire[100], expire_epoch[100];
-
-  mg_get_http_var(&hm->body, "name", name, sizeof(name));
-  mg_get_http_var(&hm->body, "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(c,
-              "HTTP/1.1 302 Moved\r\n"
-              "Set-Cookie: ssid=%s; expire=\"%s\"; http-only; HttpOnly;\r\n"
-              "Location: /\r\n\r\n",
-              ssid, expire);
-  } else {
-    mg_printf(c, "%s", "HTTP/1.1 302 Moved\r\nLocation: /\r\n\r\n");
-  }
-}
-
-static void ev_handler(struct mg_connection *c, int ev, void *ev_data) {
-  if (ev == MG_EV_HTTP_REQUEST) {
-    struct http_message *hm = (struct http_message *) ev_data;
-
-    if (mg_vcmp(&hm->uri, s_login_uri) == 0 &&
-        mg_vcmp(&hm->method, "POST") == 0) {
-      check_login_form_submission(c, hm);
-    } else if (check_auth(hm)) {
-      // Authenticated. Serve files.
-      mg_serve_http(c, (struct http_message *) ev_data, s_http_server_opts);
-    } else {
-      // Not authenticated. Redirect to the login page.
-      mg_printf(c, "HTTP/1.1 302 Moved\r\nLocation: %s\r\n\r\n", s_login_uri);
-    }
-  }
-}
-
-int main(void) {
-  struct mg_mgr mgr;
-  struct mg_connection *c;
-
-  mg_mgr_init(&mgr, NULL);
-  c = mg_bind(&mgr, s_http_port, ev_handler);
-
-  if (c == NULL) {
-    printf("Cannot start server on port %s\n", s_http_port);
-    exit(1);
-  }
-
-  // Set up HTTP server parameters
-  mg_set_protocol_http_websocket(c);
-  s_http_server_opts.document_root = ".";  // Serve current directory
-
-  printf("Starting web server on port %s\n", s_http_port);
-  for (;;) {
-    mg_mgr_poll(&mgr, 1000);
-  }
-  mg_mgr_free(&mgr);
-
-  return 0;
-}
diff --git a/examples/cookie_authentication/index.html b/examples/cookie_authentication/index.html
deleted file mode 100644
index 017edb762..000000000
--- a/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>
diff --git a/examples/cookie_authentication/login.html b/examples/cookie_authentication/login.html
deleted file mode 100644
index 3b89444fa..000000000
--- a/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>
-- 
GitLab