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.
esp-link/web-server/web-server.c

76 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();
}