Initial version
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
nasuh-server
|
||||
.idea/
|
||||
|
||||
17
Makefile
Normal file
17
Makefile
Normal file
@@ -0,0 +1,17 @@
|
||||
# compile main.c and link it dynamically to the libmicrohttpd library
|
||||
# (libmicrohttpd.so must be in the library search path)
|
||||
# (this Makefile is for GNU make)
|
||||
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -g -O2
|
||||
LDFLAGS = -lmicrohttpd
|
||||
|
||||
all: nasuh-server
|
||||
|
||||
nasuh-server: main.c
|
||||
$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -f main
|
||||
|
||||
# end of Makefile
|
||||
65
main.c
Normal file
65
main.c
Normal file
@@ -0,0 +1,65 @@
|
||||
#include <microhttpd.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#define PAGE "<html><head><title>nasuh search engine</title>"\
|
||||
"</head><body>all your programming needs</body></html>"
|
||||
|
||||
static enum MHD_Result
|
||||
ahc_echo(void * cls,
|
||||
struct MHD_Connection * connection,
|
||||
const char * url,
|
||||
const char * method,
|
||||
const char * version,
|
||||
const char * upload_data,
|
||||
size_t * upload_data_size,
|
||||
void ** ptr) {
|
||||
static int dummy;
|
||||
const char * page = cls;
|
||||
struct MHD_Response * response;
|
||||
int ret;
|
||||
|
||||
if (0 != strcmp(method, "GET"))
|
||||
return MHD_NO; /* unexpected method */
|
||||
if (&dummy != *ptr)
|
||||
{
|
||||
/* The first time only the headers are valid,
|
||||
do not respond in the first round... */
|
||||
*ptr = &dummy;
|
||||
return MHD_YES;
|
||||
}
|
||||
if (0 != *upload_data_size)
|
||||
return MHD_NO; /* upload data in a GET!? */
|
||||
*ptr = NULL; /* clear context pointer */
|
||||
response = MHD_create_response_from_buffer (strlen(page),
|
||||
(void*) page,
|
||||
MHD_RESPMEM_PERSISTENT);
|
||||
ret = MHD_queue_response(connection,
|
||||
MHD_HTTP_OK,
|
||||
response);
|
||||
MHD_destroy_response(response);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int main(int argc,
|
||||
char ** argv) {
|
||||
struct MHD_Daemon * d;
|
||||
if (argc != 2) {
|
||||
printf("%s PORT\n",
|
||||
argv[0]);
|
||||
return 1;
|
||||
}
|
||||
d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,
|
||||
atoi(argv[1]),
|
||||
NULL,
|
||||
NULL,
|
||||
&ahc_echo,
|
||||
PAGE,
|
||||
MHD_OPTION_END);
|
||||
if (d == NULL)
|
||||
return 1;
|
||||
(void) getc (stdin);
|
||||
MHD_stop_daemon(d);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user