mirror of https://github.com/jeelabs/esp-link.git
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.
72 lines
2.7 KiB
72 lines
2.7 KiB
/*
|
|
Some random cgi routines.
|
|
*/
|
|
|
|
/*
|
|
* ----------------------------------------------------------------------------
|
|
* "THE BEER-WARE LICENSE" (Revision 42):
|
|
* Jeroen Domburg <jeroen@spritesmods.com> wrote this file. As long as you retain
|
|
* this notice you can do whatever you want with this stuff. If we meet some day,
|
|
* and you think this stuff is worth it, you can buy me a beer in return.
|
|
* ----------------------------------------------------------------------------
|
|
* Heavily modified and enhanced by Thorsten von Eicken in 2015
|
|
* ----------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#include <esp8266.h>
|
|
#include "cgi.h"
|
|
#include "espfs.h"
|
|
|
|
void ICACHE_FLASH_ATTR
|
|
jsonHeader(HttpdConnData *connData, int code) {
|
|
httpdStartResponse(connData, code);
|
|
httpdHeader(connData, "Cache-Control", "no-cache, no-store, must-revalidate");
|
|
httpdHeader(connData, "Pragma", "no-cache");
|
|
httpdHeader(connData, "Expires", "0");
|
|
httpdHeader(connData, "Content-Type", "application/json");
|
|
httpdEndHeaders(connData);
|
|
}
|
|
|
|
#define TOKEN(x) (os_strcmp(token, x) == 0)
|
|
#if 0
|
|
// Handle system information variables and print their value, returns the number of
|
|
// characters appended to buff
|
|
int ICACHE_FLASH_ATTR printGlobalInfo(char *buff, int buflen, char *token) {
|
|
if (TOKEN("si_chip_id")) {
|
|
return os_sprintf(buff, "0x%x", system_get_chip_id());
|
|
} else if (TOKEN("si_freeheap")) {
|
|
return os_sprintf(buff, "%dKB", system_get_free_heap_size()/1024);
|
|
} else if (TOKEN("si_uptime")) {
|
|
uint32 t = system_get_time() / 1000000; // in seconds
|
|
return os_sprintf(buff, "%dd%dh%dm%ds", t/(24*3600), (t/(3600))%24, (t/60)%60, t%60);
|
|
} else if (TOKEN("si_boot_version")) {
|
|
return os_sprintf(buff, "%d", system_get_boot_version());
|
|
} else if (TOKEN("si_boot_address")) {
|
|
return os_sprintf(buff, "0x%x", system_get_userbin_addr());
|
|
} else if (TOKEN("si_cpu_freq")) {
|
|
return os_sprintf(buff, "%dMhz", system_get_cpu_freq());
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
extern char *esp_link_version; // in user_main.c
|
|
|
|
int ICACHE_FLASH_ATTR cgiMenu(HttpdConnData *connData) {
|
|
if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up.
|
|
char buff[1024];
|
|
// don't use jsonHeader so the response does get cached
|
|
httpdStartResponse(connData, 200);
|
|
httpdHeader(connData, "Cache-Control", "max-age=3600, must-revalidate");
|
|
httpdHeader(connData, "Content-Type", "application/json");
|
|
httpdEndHeaders(connData);
|
|
// construct json response
|
|
os_sprintf(buff,
|
|
"{\"menu\": [\"Home\", \"/home.html\", \"Wifi\", \"/wifi/wifi.html\","
|
|
"\"\xC2\xB5" "C Console\", \"/console.html\", \"Debug log\", \"/log.html\" ],\n"
|
|
" \"version\": \"%s\" }", esp_link_version);
|
|
httpdSend(connData, buff, -1);
|
|
return HTTPD_CGI_DONE;
|
|
}
|
|
|