affb99507e
version bump minor tweaks compressed HTMLs changed SN behavior to control direct notifications removed nightlight notification due to severe uselessness removed unnecessary bool2int function Updated binary
130 lines
4.0 KiB
C++
130 lines
4.0 KiB
C++
/*
|
|
* Utility for SPIFFS filesystem
|
|
*/
|
|
#ifdef USEFS
|
|
|
|
String formatBytes(size_t bytes){
|
|
if (bytes < 1024){
|
|
return String(bytes)+"B";
|
|
} else if(bytes < (1024 * 1024)){
|
|
return String(bytes/1024.0)+"KB";
|
|
} else if(bytes < (1024 * 1024 * 1024)){
|
|
return String(bytes/1024.0/1024.0)+"MB";
|
|
} else {
|
|
return String(bytes/1024.0/1024.0/1024.0)+"GB";
|
|
}
|
|
}
|
|
|
|
String getContentType(String filename){
|
|
if(server.hasArg("download")) return "application/octet-stream";
|
|
else if(filename.endsWith(".htm")) return "text/html";
|
|
else if(filename.endsWith(".html")) return "text/html";
|
|
else if(filename.endsWith(".css")) return "text/css";
|
|
else if(filename.endsWith(".js")) return "application/javascript";
|
|
else if(filename.endsWith(".png")) return "image/png";
|
|
else if(filename.endsWith(".gif")) return "image/gif";
|
|
else if(filename.endsWith(".jpg")) return "image/jpeg";
|
|
else if(filename.endsWith(".ico")) return "image/x-icon";
|
|
else if(filename.endsWith(".xml")) return "text/xml";
|
|
else if(filename.endsWith(".pdf")) return "application/x-pdf";
|
|
else if(filename.endsWith(".zip")) return "application/x-zip";
|
|
else if(filename.endsWith(".gz")) return "application/x-gzip";
|
|
return "text/plain";
|
|
}
|
|
|
|
bool handleFileRead(String path){
|
|
DEBUG_PRINTLN("handleFileRead: " + path);
|
|
if(path.endsWith("/")) path += "index.htm";
|
|
String contentType = getContentType(path);
|
|
String pathWithGz = path + ".gz";
|
|
if(SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)){
|
|
if(SPIFFS.exists(pathWithGz))
|
|
path += ".gz";
|
|
File file = SPIFFS.open(path, "r");
|
|
size_t sent = server.streamFile(file, contentType);
|
|
file.close();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void handleFileUpload(){
|
|
if(server.uri() != "/edit") return;
|
|
HTTPUpload& upload = server.upload();
|
|
if(upload.status == UPLOAD_FILE_START){
|
|
String filename = upload.filename;
|
|
if(!filename.startsWith("/")) filename = "/"+filename;
|
|
DEBUG_PRINT("handleFileUpload Name: "); DEBUG_PRINTLN(filename);
|
|
fsUploadFile = SPIFFS.open(filename, "w");
|
|
filename = String();
|
|
} else if(upload.status == UPLOAD_FILE_WRITE){
|
|
//DEBUG_PRINT("handleFileUpload Data: "); DEBUG_PRINTLN(upload.currentSize);
|
|
if(fsUploadFile)
|
|
fsUploadFile.write(upload.buf, upload.currentSize);
|
|
} else if(upload.status == UPLOAD_FILE_END){
|
|
if(fsUploadFile)
|
|
fsUploadFile.close();
|
|
DEBUG_PRINT("handleFileUpload Size: "); DEBUG_PRINTLN(upload.totalSize);
|
|
}
|
|
}
|
|
|
|
void handleFileDelete(){
|
|
if(server.args() == 0) return server.send(500, "text/plain", "BAD ARGS");
|
|
String path = server.arg(0);
|
|
DEBUG_PRINTLN("handleFileDelete: " + path);
|
|
if(path == "/")
|
|
return server.send(500, "text/plain", "BAD PATH");
|
|
if(!SPIFFS.exists(path))
|
|
return server.send(404, "text/plain", "FileNotFound");
|
|
SPIFFS.remove(path);
|
|
server.send(200, "text/plain", "");
|
|
path = String();
|
|
}
|
|
|
|
void handleFileList() {
|
|
if(!server.hasArg("dir")) {server.send(500, "text/plain", "BAD ARGS"); return;}
|
|
|
|
String path = server.arg("dir");
|
|
DEBUG_PRINTLN("handleFileList: " + path);
|
|
Dir dir = SPIFFS.openDir(path);
|
|
path = String();
|
|
|
|
String output = "[";
|
|
while(dir.next()){
|
|
File entry = dir.openFile("r");
|
|
if (output != "[") output += ',';
|
|
bool isDir = false;
|
|
output += "{\"type\":\"";
|
|
output += (isDir)?"dir":"file";
|
|
output += "\",\"name\":\"";
|
|
output += String(entry.name()).substring(1);
|
|
output += "\"}";
|
|
entry.close();
|
|
}
|
|
|
|
output += "]";
|
|
server.send(200, "text/json", output);
|
|
}
|
|
|
|
void handleFileCreate(){
|
|
if(server.args() == 0)
|
|
return server.send(500, "text/plain", "BAD ARGS");
|
|
String path = server.arg(0);
|
|
DEBUG_PRINTLN("handleFileCreate: " + path);
|
|
if(path == "/")
|
|
return server.send(500, "text/plain", "BAD PATH");
|
|
if(SPIFFS.exists(path))
|
|
return server.send(500, "text/plain", "FILE EXISTS");
|
|
File file = SPIFFS.open(path, "w");
|
|
if(file)
|
|
file.close();
|
|
else
|
|
return server.send(500, "text/plain", "CREATE FAILED");
|
|
server.send(200, "text/plain", "");
|
|
path = String();
|
|
}
|
|
|
|
#else
|
|
bool handleFileRead(String path){return false;}
|
|
#endif
|