Adding espfs<->httpd interwork thingie
This commit is contained in:
@@ -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
|
||||||
Reference in New Issue
Block a user