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.
75 lines
1.5 KiB
75 lines
1.5 KiB
#include "web-server.h"
|
|
|
|
#include "espfs.h"
|
|
#include "config.h"
|
|
|
|
char * webServerPages = NULL;
|
|
|
|
char * ICACHE_FLASH_ATTR webServerUserPages()
|
|
{
|
|
return webServerPages;
|
|
}
|
|
|
|
void ICACHE_FLASH_ATTR webServerBrowseFiles()
|
|
{
|
|
char buffer[1024];
|
|
buffer[0] = 0;
|
|
|
|
if( espFsIsValid( userPageCtx ) )
|
|
{
|
|
EspFsIterator it;
|
|
espFsIteratorInit(userPageCtx, &it);
|
|
while( espFsIteratorNext(&it) )
|
|
{
|
|
int nlen = strlen(it.name);
|
|
if( nlen >= 6 )
|
|
{
|
|
if( os_strcmp( it.name + nlen-5, ".html" ) == 0 )
|
|
{
|
|
char sh_name[17];
|
|
|
|
int spos = nlen-5;
|
|
|
|
while( spos > 0 )
|
|
{
|
|
if( it.name[spos+1] == '/' )
|
|
break;
|
|
spos--;
|
|
}
|
|
|
|
int ps = nlen-5-spos;
|
|
if( ps > 16 )
|
|
ps = 16;
|
|
os_memcpy(sh_name, it.name + spos, ps);
|
|
sh_name[ps] = 0;
|
|
|
|
os_strcat(buffer, ", \"");
|
|
os_strcat(buffer, sh_name);
|
|
os_strcat(buffer, "\", \"/");
|
|
os_strcat(buffer, it.name);
|
|
os_strcat(buffer, "\"");
|
|
}
|
|
}
|
|
if( strlen(buffer) > 600 )
|
|
break;
|
|
}
|
|
}
|
|
|
|
if( webServerPages != NULL )
|
|
os_free( webServerPages );
|
|
|
|
int len = strlen(buffer) + 1;
|
|
webServerPages = (char *)os_malloc( len );
|
|
os_memcpy( webServerPages, buffer, len );
|
|
}
|
|
|
|
void ICACHE_FLASH_ATTR webServerInit()
|
|
{
|
|
espFsInit(userPageCtx, (void *)getUserPageSectionStart(), ESPFS_FLASH);
|
|
if( espFsIsValid( userPageCtx ) )
|
|
os_printf("Valid user file system found!\n");
|
|
else
|
|
os_printf("No user file system found!\n");
|
|
webServerBrowseFiles();
|
|
}
|
|
|
|
|