parent
42df69a5d6
commit
da0d7df331
@ -0,0 +1,46 @@ |
|||||||
|
/*
|
||||||
|
Connector to let httpd use the espfs filesystem to serve the files in that. |
||||||
|
*/ |
||||||
|
|
||||||
|
#include <string.h> |
||||||
|
#include <osapi.h> |
||||||
|
#include "httpd.h" |
||||||
|
#include "espfs.h" |
||||||
|
#include "httpdespfs.h" |
||||||
|
|
||||||
|
int ICACHE_FLASH_ATTR cgiEspFsHook(HttpdConnData *connData) { |
||||||
|
EspFsFile *file=connData->cgiData; |
||||||
|
int len; |
||||||
|
char buff[1024]; |
||||||
|
|
||||||
|
if (connData->conn==NULL) { |
||||||
|
//Connection aborted. Clean up.
|
||||||
|
espFsClose(file); |
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} |
||||||
|
|
||||||
|
if (file==NULL) { |
||||||
|
//First call to this cgi. Open the file so we can read it.
|
||||||
|
file=espFsOpen(connData->url); |
||||||
|
if (file==NULL) { |
||||||
|
return HTTPD_CGI_NOTFOUND; |
||||||
|
} |
||||||
|
connData->cgiData=file; |
||||||
|
httpdStartResponse(connData, 200); |
||||||
|
httpdHeader(connData, "Content-Type", httpdGetMimetype(connData->url)); |
||||||
|
httpdEndHeaders(connData); |
||||||
|
return HTTPD_CGI_MORE; |
||||||
|
} |
||||||
|
|
||||||
|
len=espFsRead(file, buff, 1024); |
||||||
|
if (len>0) espconn_sent(connData->conn, (uint8 *)buff, len); |
||||||
|
if (len!=1024) { |
||||||
|
//We're done.
|
||||||
|
espFsClose(file); |
||||||
|
return HTTPD_CGI_DONE; |
||||||
|
} else { |
||||||
|
//Ok, till next time.
|
||||||
|
return HTTPD_CGI_MORE; |
||||||
|
} |
||||||
|
} |
||||||
|
|
@ -0,0 +1,9 @@ |
|||||||
|
#ifndef HTTPDESPFS_H |
||||||
|
#define HTTPDESPFS_H |
||||||
|
|
||||||
|
#include "httpd.h" |
||||||
|
#include "espfs.h" |
||||||
|
|
||||||
|
int cgiEspFsHook(HttpdConnData *connData); |
||||||
|
|
||||||
|
#endif |
Loading…
Reference in new issue