12 static void generate_ssid(
const char *user_name,
const char *expiration_date,
13 char *ssid,
size_t ssid_size) {
15 mg_md5(hash, user_name,
":", expiration_date,
":",
s_secret, NULL);
16 snprintf(ssid, ssid_size,
"%s|%s|%s", user_name, expiration_date, hash);
20 char ssid[100], calculated_ssid[100],
name[100], expire[100];
31 if (sscanf(ssid,
"%[^|]|%[^|]|", name, expire) == 2) {
32 generate_ssid(name, expire, calculated_ssid,
sizeof(calculated_ssid));
33 if (strcmp(ssid, calculated_ssid) == 0) {
44 char name[100],
password[100], ssid[100], expire[100], expire_epoch[100];
47 mg_get_var(conn,
"password", password,
sizeof(password));
51 if (strcmp(name,
"Joe") == 0 && strcmp(password,
"Doe") == 0) {
53 time_t
t = time(NULL) + 3600;
54 snprintf(expire_epoch,
sizeof(expire_epoch),
"%lu", (
unsigned long) t);
55 strftime(expire,
sizeof(expire),
"%a, %d %b %Y %H:%M:%S GMT", gmtime(&t));
59 "HTTP/1.1 302 Moved\r\n" 60 "Set-Cookie: ssid=%s; expire=\"%s\"; http-only; HttpOnly;\r\n" 61 "Location: /\r\n\r\n",
int mg_get_var(const struct mg_connection *conn, const char *name, char *dst, size_t dst_len)
static const char * s_login_uri
const char * mg_get_header(const struct mg_connection *ri, const char *s)
char * mg_md5(char buf[33],...)
struct mg_server * mg_create_server(void *server_data, mg_handler_t handler)
const char * mg_get_option(const struct mg_server *server, const char *name)
geometry_msgs::TransformStamped t
static int check_auth(struct mg_connection *conn)
time_t mg_poll_server(struct mg_server *server, int milliseconds)
int mg_parse_header(const char *s, const char *var_name, char *buf, size_t buf_size)
static int ev_handler(struct mg_connection *conn, enum mg_event ev)
static int serve_request(struct mg_connection *conn)
static const char * s_secret
static struct mg_server * server
static void generate_ssid(const char *user_name, const char *expiration_date, char *ssid, size_t ssid_size)
const char * mg_set_option(struct mg_server *server, const char *name, const char *value)
size_t mg_printf(struct mg_connection *conn, const char *fmt,...)
const char * request_method
void mg_destroy_server(struct mg_server **server)
static int check_login_form_submission(struct mg_connection *conn)