#include #include "httpd.h" #include "httpd-utils.h" #include "httpdespfs.h" #include #include #include #include #include #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; }