SpriteHTTPD - embedded HTTP server with read-only filesystem and templating, originally developed for ESP8266, now stand-alone and POSIX compatible.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spritehttpd/demo/server_demo.c

80 lines
1.6 KiB

#include <stdio.h>
#include "httpd.h"
#include "httpd-utils.h"
#include "httpdespfs.h"
#include <httpd.h>
#include <cgiwebsocket.h>
#include <httpdespfs.h>
#include <auth.h>
#include <signal.h>
#include "logging.h"
extern unsigned char espfs_image[];
extern unsigned int espfs_image_len;
/** "About" page */
httpd_cgi_state tplIndex(HttpdConnData *connData, char *token, void **arg)
{
if (token == NULL) { return HTTPD_CGI_DONE; }
else if (streq(token, "date")) {
tplSend(connData, __DATE__, -1);
} else if (streq(token, "time")) {
tplSend(connData, __TIME__, -1);
} else if (streq(token, "vers_httpd")) {
tplSend(connData, httpdGetVersion(), -1);
}
return HTTPD_CGI_DONE;
}
/**
* Application routes
*/
const HttpdBuiltInUrl routes[] = {
// TODO password lock ...
// --- Web pages ---
// ROUTE_TPL_FILE("/", tplIndex, "/index.tpl"),
ROUTE_FILE("/", "index.html"),
ROUTE_FILESYSTEM(),
ROUTE_END(),
};
void sigpipe_handler(int unused)
{
}
int main()
{
printf("Hello, World!\n");
// prevent abort on sigpipe
sigaction(SIGPIPE, &(struct sigaction) {sigpipe_handler}, NULL);
struct httpd_options opts = {
.port = 8080,
};
httpd_thread_handle_t *handle = httpdInit(routes, &opts);
httpdSetName("ServerName");
httpdJoin(handle);
return 0;
}
int httpdPlatEspfsRead(void *dest, uint32_t offset, size_t len)
{
if (offset + len > espfs_image_len) {
return -1;
}
memcpy(dest, &espfs_image[offset], len);
return 0;
}