forked from cesanta/mongoose
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
87 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
#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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
# Copyright (c) 2014 Cesanta Software | ||
# All rights reserved | ||
|
||
PROG = proxy_server | ||
FLAGS = -I../.. -I../../../net_skeleton -DNS_ENABLE_SSL | ||
CFLAGS = -W -Wall -g -O0 -lssl $(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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
# Copyright (c) 2014 Cesanta Software | ||
# All rights reserved | ||
|
||
PROG = web_server | ||
CFLAGS = -W -Wall -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 |