Changes to raven-webserver by "David Kopf" <dak664@embarqmail.com>:
*Fixed bug in the cgi script handling *Making a special check for index.html and treating it like index.shtml to allow a common header for all files. *adding robots.txt to keep google, msn, yahoo out *adding a nice icon through a <link rel="icon"... in the header *saying "not enabled" for temperature if it hasn't been initialized
This commit is contained in:
parent
e362e2b99e
commit
a0a9ccf2db
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the uIP TCP/IP stack.
|
* This file is part of the uIP TCP/IP stack.
|
||||||
*
|
*
|
||||||
* $Id: httpd-cgi.c,v 1.1 2008/10/14 10:14:13 julienabeille Exp $
|
* $Id: httpd-cgi.c,v 1.2 2008/11/16 15:28:37 c_oflynn Exp $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -51,8 +51,8 @@
|
|||||||
#include "httpd-fs.h"
|
#include "httpd-fs.h"
|
||||||
|
|
||||||
#include "lib/petsciiconv.h"
|
#include "lib/petsciiconv.h"
|
||||||
|
|
||||||
#include "sensors.h"
|
#include "sensors.h"
|
||||||
|
|
||||||
static struct httpd_cgi_call *calls = NULL;
|
static struct httpd_cgi_call *calls = NULL;
|
||||||
|
|
||||||
@ -98,10 +98,10 @@ static const char tcp_name[] = /* "tcp-connections"*/
|
|||||||
0x73, 0};
|
0x73, 0};
|
||||||
static const char proc_name[] = /* "processes"*/
|
static const char proc_name[] = /* "processes"*/
|
||||||
{0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
|
{0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
|
||||||
0x65, 0x73, 0};
|
0x65, 0x73, 0};
|
||||||
|
|
||||||
static const char sensor_name[] = "sensors";
|
static const char sensor_name[] = "sensors";
|
||||||
|
|
||||||
char sensor_temperature[12];
|
char sensor_temperature[12];
|
||||||
|
|
||||||
static const char *states[] = {
|
static const char *states[] = {
|
||||||
@ -116,15 +116,15 @@ static const char *states[] = {
|
|||||||
last_ack,
|
last_ack,
|
||||||
none,
|
none,
|
||||||
running,
|
running,
|
||||||
called};
|
called};
|
||||||
|
|
||||||
uint8_t sprint_ip6(uip_ip6addr_t addr, char * result);
|
uint8_t sprint_ip6(uip_ip6addr_t addr, char * result);
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
web_set_temp(char *s)
|
web_set_temp(char *s)
|
||||||
{
|
{
|
||||||
strcpy(sensor_temperature, s);
|
strcpy(sensor_temperature, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -153,15 +153,29 @@ static unsigned short
|
|||||||
generate_file_stats(void *arg)
|
generate_file_stats(void *arg)
|
||||||
{
|
{
|
||||||
char *f = (char *)arg;
|
char *f = (char *)arg;
|
||||||
return snprintf((char *)uip_appdata, uip_mss(), "%5u", httpd_fs_count(f));
|
int i;
|
||||||
|
char tmp[20];
|
||||||
|
// for (i=0;i<20;i++) if (pgm_read_byte(f++)==' ') break; //skip file-stats string
|
||||||
|
for (i=0;i<19;i++) {
|
||||||
|
tmp[i]=pgm_read_byte(f++); //transfer "/filename" to RAM
|
||||||
|
if (tmp[i]==' ') {
|
||||||
|
tmp[i]=0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// return sprintf_P((char *)uip_appdata, PSTR( "%s"), tmp); //show file name for debugging
|
||||||
|
return snprintf_P((char *)uip_appdata, uip_mss(), PSTR("%5u"), httpd_fs_count(tmp));
|
||||||
|
// return snprintf_P((char *)uip_appdata, uip_mss(), PSTR("%5u"), httpd_fs_count(f));
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static
|
static
|
||||||
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
|
PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
|
||||||
{
|
{
|
||||||
|
|
||||||
PSOCK_BEGIN(&s->sout);
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, (void *) (strchr(ptr, ' ') + 1));
|
//while (pgm_read_byte(ptr++)!=' ') {}; //skip to "/filename" after the script invokation
|
||||||
|
PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, (void *) (strchr_P(ptr, ' ') + 1));
|
||||||
|
|
||||||
PSOCK_END(&s->sout);
|
PSOCK_END(&s->sout);
|
||||||
}
|
}
|
||||||
@ -171,25 +185,25 @@ make_tcp_stats(void *arg)
|
|||||||
{
|
{
|
||||||
struct uip_conn *conn;
|
struct uip_conn *conn;
|
||||||
struct httpd_state *s = (struct httpd_state *)arg;
|
struct httpd_state *s = (struct httpd_state *)arg;
|
||||||
|
|
||||||
uint16_t numprinted;
|
uint16_t numprinted;
|
||||||
|
|
||||||
|
conn = &uip_conns[s->u.count];
|
||||||
|
|
||||||
conn = &uip_conns[s->u.count];
|
|
||||||
|
|
||||||
numprinted = snprintf((char *)uip_appdata, uip_mss(),
|
numprinted = snprintf((char *)uip_appdata, uip_mss(),
|
||||||
"<tr align=\"center\"><td>%d</td><td>",
|
"<tr align=\"center\"><td>%d</td><td>",
|
||||||
htons(conn->lport));
|
htons(conn->lport));
|
||||||
|
|
||||||
numprinted += sprint_ip6(conn->ripaddr, uip_appdata + numprinted);
|
numprinted += sprint_ip6(conn->ripaddr, uip_appdata + numprinted);
|
||||||
numprinted += snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted,
|
numprinted += snprintf((char *)uip_appdata + numprinted, uip_mss() - numprinted,
|
||||||
"-%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
"-%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
|
||||||
htons(conn->rport),
|
htons(conn->rport),
|
||||||
states[conn->tcpstateflags & UIP_TS_MASK],
|
states[conn->tcpstateflags & UIP_TS_MASK],
|
||||||
conn->nrtx,
|
conn->nrtx,
|
||||||
conn->timer,
|
conn->timer,
|
||||||
(uip_outstanding(conn))? '*':' ',
|
(uip_outstanding(conn))? '*':' ',
|
||||||
(uip_stopped(conn))? '!':' ');
|
(uip_stopped(conn))? '!':' ');
|
||||||
|
|
||||||
return numprinted;
|
return numprinted;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
@ -216,8 +230,8 @@ make_processes(void *p)
|
|||||||
strncpy(name, ((struct process *)p)->name, 40);
|
strncpy(name, ((struct process *)p)->name, 40);
|
||||||
petsciiconv_toascii(name, 40);
|
petsciiconv_toascii(name, 40);
|
||||||
|
|
||||||
return snprintf((char *)uip_appdata, uip_mss(),
|
return snprintf_P((char *)uip_appdata, uip_mss(),
|
||||||
"<tr align=\"center\"><td>%p</td><td>%s</td><td>%p</td><td>%s</td></tr>\r\n",
|
PSTR("<tr align=\"center\"><td>%p</td><td>%s</td><td>%p</td><td>%s</td></tr>\r\n"),
|
||||||
p, name,
|
p, name,
|
||||||
*((char **)&(((struct process *)p)->thread)),
|
*((char **)&(((struct process *)p)->thread)),
|
||||||
states[9 + ((struct process *)p)->state]);
|
states[9 + ((struct process *)p)->state]);
|
||||||
@ -231,12 +245,13 @@ PT_THREAD(processes(struct httpd_state *s, char *ptr))
|
|||||||
PSOCK_GENERATOR_SEND(&s->sout, make_processes, s->u.ptr);
|
PSOCK_GENERATOR_SEND(&s->sout, make_processes, s->u.ptr);
|
||||||
}
|
}
|
||||||
PSOCK_END(&s->sout);
|
PSOCK_END(&s->sout);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static unsigned short
|
static unsigned short
|
||||||
generate_sensor_readings(void *arg)
|
generate_sensor_readings(void *arg)
|
||||||
{
|
{
|
||||||
return snprintf((char *)uip_appdata, uip_mss(), "<em>Temperature:</em> %s\n", sensor_temperature);
|
if (!sensor_temperature[0]) return snprintf_P((char *)uip_appdata,uip_mss(),PSTR("<em>Temperature:</em> Not enabled\n"));
|
||||||
|
return snprintf_P((char *)uip_appdata, uip_mss(), PSTR("<em>Temperature:</em> %s\n"), sensor_temperature);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
static
|
static
|
||||||
@ -266,7 +281,7 @@ httpd_cgi_add(struct httpd_cgi_call *c)
|
|||||||
|
|
||||||
HTTPD_CGI_CALL(file, file_name, file_stats);
|
HTTPD_CGI_CALL(file, file_name, file_stats);
|
||||||
HTTPD_CGI_CALL(tcp, tcp_name, tcp_stats);
|
HTTPD_CGI_CALL(tcp, tcp_name, tcp_stats);
|
||||||
HTTPD_CGI_CALL(proc, proc_name, processes);
|
HTTPD_CGI_CALL(proc, proc_name, processes);
|
||||||
HTTPD_CGI_CALL(sensors, sensor_name, sensor_readings);
|
HTTPD_CGI_CALL(sensors, sensor_name, sensor_readings);
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -274,57 +289,57 @@ httpd_cgi_init(void)
|
|||||||
{
|
{
|
||||||
httpd_cgi_add(&file);
|
httpd_cgi_add(&file);
|
||||||
httpd_cgi_add(&tcp);
|
httpd_cgi_add(&tcp);
|
||||||
httpd_cgi_add(&proc);
|
httpd_cgi_add(&proc);
|
||||||
httpd_cgi_add(&sensors);
|
httpd_cgi_add(&sensors);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t sprint_ip6(uip_ip6addr_t addr, char * result)
|
uint8_t sprint_ip6(uip_ip6addr_t addr, char * result)
|
||||||
{
|
{
|
||||||
unsigned char zerocnt = 0;
|
unsigned char zerocnt = 0;
|
||||||
unsigned char numprinted = 0;
|
unsigned char numprinted = 0;
|
||||||
char * starting = result;
|
char * starting = result;
|
||||||
|
|
||||||
unsigned char i = 0;
|
unsigned char i = 0;
|
||||||
|
|
||||||
while (numprinted < 8)
|
while (numprinted < 8)
|
||||||
{
|
{
|
||||||
//Address is zero, have we used our ability to
|
//Address is zero, have we used our ability to
|
||||||
//replace a bunch with : yet?
|
//replace a bunch with : yet?
|
||||||
if ((addr.u16[i] == 0) && (zerocnt == 0))
|
if ((addr.u16[i] == 0) && (zerocnt == 0))
|
||||||
{
|
{
|
||||||
//How mant zeros?
|
//How mant zeros?
|
||||||
zerocnt = 0;
|
zerocnt = 0;
|
||||||
while(addr.u16[zerocnt + i] == 0)
|
while(addr.u16[zerocnt + i] == 0)
|
||||||
zerocnt++;
|
zerocnt++;
|
||||||
|
|
||||||
//just one, don't waste our zeros...
|
//just one, don't waste our zeros...
|
||||||
if (zerocnt == 1)
|
if (zerocnt == 1)
|
||||||
{
|
{
|
||||||
*result++ = '0';
|
*result++ = '0';
|
||||||
numprinted++;
|
numprinted++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Cool - can replace a bunch of zeros
|
//Cool - can replace a bunch of zeros
|
||||||
i += zerocnt;
|
i += zerocnt;
|
||||||
numprinted += zerocnt;
|
numprinted += zerocnt;
|
||||||
}
|
}
|
||||||
//Normal address, just print it
|
//Normal address, just print it
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result += sprintf(result, "%x", (unsigned int)(ntohs(addr.u16[i])));
|
result += sprintf(result, "%x", (unsigned int)(ntohs(addr.u16[i])));
|
||||||
i++;
|
i++;
|
||||||
numprinted++;
|
numprinted++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Don't print : on last one
|
//Don't print : on last one
|
||||||
if (numprinted != 8)
|
if (numprinted != 8)
|
||||||
*result++ = ':';
|
*result++ = ':';
|
||||||
}
|
}
|
||||||
|
|
||||||
return (result - starting);
|
return (result - starting);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BIN
apps/raven-webserver/httpd-fs/favicon.png
Normal file
BIN
apps/raven-webserver/httpd-fs/favicon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 353 B |
@ -1,24 +1,21 @@
|
|||||||
%!: /header.html
|
%!: /header.html
|
||||||
<h1>File statistics</h1><br><table width="100%">
|
<h1>File statistics</h1><br><table width="100%">
|
||||||
<tr><td><a href="/index.html">/index.html</a></td>
|
<tr><td><a href="/index.html">/index.html</a></td><td>
|
||||||
<td>%! file-stats /index.html
|
%! file-stats /index.html
|
||||||
</td></tr>
|
</td></tr><tr><td><a href="/files.shtml">/files.shtml</a></td><td>
|
||||||
<tr><td><a href="/files.shtml">/files.shtml</a></td>
|
%! file-stats /files.shtml
|
||||||
<td>%! file-stats /files.shtml
|
</td></tr><tr><td><a href="/tcp.shtml">/tcp.shtml</a></td><td>
|
||||||
</td></tr>
|
%! file-stats /tcp.shtml
|
||||||
<tr><td><a href="/tcp.shtml">/tcp.shtml</a></td>
|
</td></tr><tr><td><a href="/processes.shtml">/processes.shtml</a></td><td>
|
||||||
<td>%! file-stats /tcp.shtml
|
%! file-stats /processes.shtml
|
||||||
</td></tr>
|
</td></tr><tr><td><a href="/style.css">/style.css</a></td><td>
|
||||||
<tr><td><a href="/processes.shtml">/processes.shtml</a></td>
|
%! file-stats /contiki.css
|
||||||
<td>%! file-stats /processes.shtml
|
</td></tr><tr><td><a href="/404.html">/404.html</a></td><td>
|
||||||
</td></tr>
|
%! file-stats /404.html
|
||||||
<tr><td><a href="/style.css">/style.css</a></td>
|
</td></tr><tr><td><a href="/robots.txt">/robots.txt</a></td><td>
|
||||||
<td>%! file-stats /contiki.css
|
%! file-stats /robots.txt
|
||||||
</td></tr>
|
</td></tr><tr><td><a href="/img/screenshot.png">/img/screenshot.png</a></td><td>
|
||||||
<tr><td><a href="/404.html">/404.html</a></td>
|
%! file-stats /img/screenshot.png
|
||||||
<td>%! file-stats /404.html
|
|
||||||
</td></tr>
|
|
||||||
<tr><td><a href="/img/screenshot.png">/img/screenshot.png</a></td>
|
|
||||||
<td>%! file-stats /img/screenshot.png
|
|
||||||
</td></tr></table>
|
</td></tr></table>
|
||||||
%!: /footer.html
|
|
||||||
|
%!: /footer.html
|
||||||
|
@ -1,41 +1,8 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
%!: /header.html
|
||||||
<html>
|
<p class="intro">
|
||||||
<head>
|
The web pages you are watching are served by a web
|
||||||
<title>Welcome to the Contiki web server!</title>
|
server running under the <a
|
||||||
<link rel="stylesheet" type="text/css" href="/style.css">
|
href="http://www.sics.se/contiki/">Contiki operating
|
||||||
</head>
|
system</a>.
|
||||||
<body bgcolor="#fffeec" text="black">
|
</p>
|
||||||
|
%!: /footer.html
|
||||||
<div class="menublock">
|
|
||||||
|
|
||||||
<div class="menu">
|
|
||||||
<p class="border-title">Menu</p>
|
|
||||||
<p class="menu">
|
|
||||||
|
|
||||||
<a href="/">Front page</a><br>
|
|
||||||
<a href="files.shtml">File statistics</a><br>
|
|
||||||
<a href="tcp.shtml">Network connections</a><br>
|
|
||||||
<a href="processes.shtml">System processes</a><br>
|
|
||||||
<a href="sensor.shtml">Sensor Readings</a>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="contentblock">
|
|
||||||
<p class="border-title">
|
|
||||||
Welcome to the <a href="http://www.sics.se/contiki/">Contiki</a>
|
|
||||||
web server!
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p class="intro">
|
|
||||||
The web pages you are watching are served by a web
|
|
||||||
server running under the <a
|
|
||||||
href="http://www.sics.se/contiki/">Contiki operating
|
|
||||||
system</a>.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
2
apps/raven-webserver/httpd-fs/robots.txt
Normal file
2
apps/raven-webserver/httpd-fs/robots.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
user-agent: *
|
||||||
|
Disallow: /
|
@ -1,5 +1,6 @@
|
|||||||
%!: /header.html
|
%!: /header.html
|
||||||
<h1>Sensor Readings</h1><br>
|
<h1>Sensor Readings</h1><br>
|
||||||
%! sensors
|
%! sensors
|
||||||
|
|
||||||
%!: /footer.html
|
%!: /footer.html
|
||||||
|
|
||||||
|
@ -1,23 +1,159 @@
|
|||||||
static const char data_processes_shtml[] PROGMEM = {
|
static const char data_404_html[] PROGMEM = {
|
||||||
/* /processes.shtml */
|
/* /404.html */
|
||||||
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c,
|
||||||
|
0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c,
|
||||||
|
0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22,
|
||||||
|
0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e,
|
||||||
|
0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
||||||
|
0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d,
|
||||||
|
0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20,
|
||||||
|
0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e,
|
||||||
|
0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33,
|
||||||
|
0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
|
||||||
|
0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65,
|
||||||
|
0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65,
|
||||||
|
0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20,
|
||||||
|
0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65,
|
||||||
|
0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
|
||||||
|
0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
||||||
|
0};
|
||||||
|
|
||||||
|
static const char data_favicon_png[] PROGMEM = {
|
||||||
|
/* /favicon.png */
|
||||||
|
0x2f, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x2e, 0x70, 0x6e, 0x67, 0,
|
||||||
|
0x89, 0x50, 0x4e, 0x47, 0xa, 0x1a, 0xa, 00, 00, 00,
|
||||||
|
0xd, 0x49, 0x48, 0x44, 0x52, 00, 00, 00, 0x10, 00,
|
||||||
|
00, 00, 0x10, 0x8, 0x6, 00, 00, 00, 0x1f, 0xf3,
|
||||||
|
0xff, 0x61, 00, 00, 0x1, 0x28, 0x49, 0x44, 0x41, 0x54,
|
||||||
|
0x78, 0xda, 0x63, 0xf8, 0x4f, 0x21, 0x60, 0x18, 0x7a, 0x6,
|
||||||
|
0xbc, 0xff, 0xfc, 0xfe, 0xff, 0xb1, 0xc3, 0x7b, 0xff, 0x6f,
|
||||||
|
0xdd, 0xb6, 0xf5, 0xff, 0xf3, 0xc7, 0xf7, 0x70, 0x18, 0xf0,
|
||||||
|
0x1b, 0x53, 0x68, 0xce, 0xbc, 0x39, 0xff, 0xa3, 0x12, 0x93,
|
||||||
|
0xff, 0x7b, 0x5, 0x6, 0xfd, 0xf7, 0xf2, 0x75, 0xfa, 0x5f,
|
||||||
|
0x5c, 0x99, 0xfd, 0x7f, 0xef, 0xbe, 0xbd, 0xd8, 0xd, 0xf8,
|
||||||
|
0xfe, 0xfd, 0xfb, 0xff, 0x96, 0xb6, 0x9e, 0xff, 0xd7, 0x6e,
|
||||||
|
0xdf, 0x3, 0x1b, 0xd6, 0xd2, 0xd5, 0xf3, 0xdf, 0xd0, 0xc6,
|
||||||
|
0xf2, 0xbf, 0x93, 0xab, 0xd3, 0xff, 0xa8, 0xd8, 0xa0, 0xff,
|
||||||
|
0xc5, 0xa5, 0xd9, 0xff, 0xcf, 0x9d, 0x3e, 0x6, 0x96, 0xc3,
|
||||||
|
0xe9, 0x85, 0xec, 0xc2, 0x62, 0xa0, 0x6d, 0x51, 0xff, 0xbd,
|
||||||
|
0x42, 0xa3, 0xfe, 0x6b, 0x1a, 0x68, 0x82, 0x6d, 0xcd, 0xce,
|
||||||
|
0x4d, 0xfe, 0xbf, 0x76, 0xd5, 0x52, 0x14, 0x17, 0x62, 0x18,
|
||||||
|
0x70, 0xef, 0xfe, 0xf3, 0xff, 0x4b, 0x57, 0xad, 0x5, 0x3b,
|
||||||
|
0x57, 0x51, 0x43, 0x13, 0x8c, 0x2d, 0x81, 0xb6, 0x67, 0x17,
|
||||||
|
0x2, 0x9d, 0xbc, 0x6b, 0x2b, 0xfe, 0x40, 0x4, 0x5, 0x8c,
|
||||||
|
0x93, 0xa7, 0x17, 0xd8, 0xb9, 0x86, 0x26, 0x86, 0x40, 0x8d,
|
||||||
|
0x4e, 0x40, 0xdb, 0xd, 0xff, 0x27, 0x67, 0x66, 0xff, 0xff,
|
||||||
|
0xfe, 0xf9, 0x3b, 0xfe, 0x58, 0x80, 0x6b, 0xb6, 00, 0xfa,
|
||||||
|
0xd5, 0x17, 0xe4, 0xd7, 0xa8, 0xff, 0x53, 0x66, 0x4d, 0x1,
|
||||||
|
0x7b, 0x45, 0x51, 0x47, 0xf3, 0x7f, 0x4b, 0x53, 0xcb, 0xff,
|
||||||
|
0xe7, 0xcf, 0x9f, 0x63, 0x37, 0x60, 0xe9, 0xb2, 0xa5, 0x40,
|
||||||
|
0xff, 0x7a, 0x1, 0xfd, 0xe9, 0xf5, 0x3f, 0x39, 0x35, 0xf9,
|
||||||
|
0x7f, 0x4f, 0x1f, 0x30, 00, 0xaf, 0x5f, 0x3, 0x2b, 0x68,
|
||||||
|
0xe9, 0x6a, 0x81, 0xba, 0xc6, 0xf2, 0x7f, 0xf, 0x30, 0x30,
|
||||||
|
0xb1, 0x1a, 00, 0xf2, 0xdb, 0x94, 0x49, 0x3d, 0xff, 0xb7,
|
||||||
|
0x2, 0x69, 0x74, 0xa7, 0x2e, 0x5d, 0x36, 0x7, 0x1c, 0xea,
|
||||||
|
0xc9, 0x99, 0xc9, 0xc0, 0xf8, 0x3f, 0x46, 0x5e, 0x42, 0xfa,
|
||||||
|
0xe, 0x4c, 0x3c, 0xd8, 0x9c, 0x3f, 0x44, 0xf3, 0x2, 0x3a,
|
||||||
|
00, 00, 0x23, 0x68, 0x91, 0xf2, 0x33, 0xf4, 0xe6, 0x2c,
|
||||||
|
00, 00, 00, 00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
|
||||||
|
0x60, 0x82, 0};
|
||||||
|
|
||||||
|
static const char data_files_shtml[] PROGMEM = {
|
||||||
|
/* /files.shtml */
|
||||||
|
0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
||||||
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
|
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x20, 0x3c, 0x68,
|
||||||
0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
|
0x31, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61,
|
||||||
0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,
|
0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68,
|
||||||
0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
|
0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
|
||||||
0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
|
0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
|
||||||
0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72,
|
0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x20, 0x3c, 0x74,
|
||||||
0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c, 0x2f, 0x74,
|
0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
|
||||||
0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61, 0x6d, 0x65,
|
0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6e, 0x64, 0x65,
|
||||||
0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54,
|
0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x69,
|
||||||
0x68, 0x72, 0x65, 0x61, 0x64, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
|
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c,
|
||||||
0x3c, 0x74, 0x68, 0x3e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
|
0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74,
|
||||||
0x73, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74,
|
0x64, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65,
|
||||||
0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21,
|
0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x69, 0x6e,
|
||||||
0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
|
0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c,
|
||||||
0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74,
|
0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c,
|
||||||
0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0};
|
0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20,
|
||||||
|
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66, 0x69, 0x6c,
|
||||||
|
0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
||||||
|
0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64,
|
||||||
|
0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x66,
|
||||||
|
0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20,
|
||||||
|
0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f,
|
||||||
|
0x74, 0x72, 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
|
||||||
|
0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
||||||
|
0x22, 0x3e, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64,
|
||||||
|
0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x66,
|
||||||
|
0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20,
|
||||||
|
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
||||||
|
0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72,
|
||||||
|
0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c,
|
||||||
|
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x70,
|
||||||
|
0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x70, 0x72, 0x6f,
|
||||||
|
0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74,
|
||||||
|
0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64,
|
||||||
|
0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x66,
|
||||||
|
0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20,
|
||||||
|
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
|
||||||
|
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74,
|
||||||
|
0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x72,
|
||||||
|
0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||||
|
0x65, 0x66, 0x3d, 0x22, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65,
|
||||||
|
0x2e, 0x63, 0x73, 0x73, 0x22, 0x3e, 0x2f, 0x73, 0x74, 0x79,
|
||||||
|
0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x3c, 0x2f, 0x61, 0x3e,
|
||||||
|
0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa,
|
||||||
|
0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74,
|
||||||
|
0x61, 0x74, 0x73, 0x20, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69,
|
||||||
|
0x6b, 0x69, 0x2e, 0x63, 0x73, 0x73, 0xa, 0x3c, 0x2f, 0x74,
|
||||||
|
0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x72,
|
||||||
|
0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
||||||
|
0x65, 0x66, 0x3d, 0x22, 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68,
|
||||||
|
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x34, 0x30, 0x34, 0x2e,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
|
||||||
|
0x74, 0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x25, 0x21,
|
||||||
|
0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74,
|
||||||
|
0x73, 0x20, 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d,
|
||||||
|
0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74,
|
||||||
|
0x72, 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
|
||||||
|
0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
|
||||||
|
0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x2e, 0x74, 0x78, 0x74,
|
||||||
|
0x22, 0x3e, 0x2f, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x2e,
|
||||||
|
0x74, 0x78, 0x74, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74,
|
||||||
|
0x64, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0xa, 0x25, 0x21, 0x20,
|
||||||
|
0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73,
|
||||||
|
0x20, 0x2f, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x2e, 0x74,
|
||||||
|
0x78, 0x74, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f,
|
||||||
|
0x74, 0x72, 0x3e, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
|
||||||
|
0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
||||||
|
0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65,
|
||||||
|
0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x22,
|
||||||
|
0x3e, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65,
|
||||||
|
0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67,
|
||||||
|
0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c,
|
||||||
|
0x74, 0x64, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c,
|
||||||
|
0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x69,
|
||||||
|
0x6d, 0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73,
|
||||||
|
0x68, 0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0xa, 0x3c, 0x2f,
|
||||||
|
0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f,
|
||||||
|
0x74, 0x61, 0x62, 0x6c, 0x65, 0x3e, 0xa, 0xa, 0x25, 0x21,
|
||||||
|
0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e,
|
||||||
|
0x68, 0x74, 0x6d, 0x6c, 0xa, 0};
|
||||||
|
|
||||||
|
static const char data_footer_html[] PROGMEM = {
|
||||||
|
/* /footer.html */
|
||||||
|
0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
|
0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa,
|
||||||
|
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
||||||
|
|
||||||
static const char data_header_html[] PROGMEM = {
|
static const char data_header_html[] PROGMEM = {
|
||||||
/* /header.html */
|
/* /header.html */
|
||||||
@ -103,193 +239,70 @@ static const char data_header_html[] PROGMEM = {
|
|||||||
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20,
|
0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20,
|
||||||
0x3c, 0x2f, 0x70, 0x3e, 0xa, 0};
|
0x3c, 0x2f, 0x70, 0x3e, 0xa, 0};
|
||||||
|
|
||||||
static const char data_files_shtml[] PROGMEM = {
|
|
||||||
/* /files.shtml */
|
|
||||||
0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
|
||||||
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
|
||||||
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x20, 0x3c, 0x68,
|
|
||||||
0x31, 0x3e, 0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61,
|
|
||||||
0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x68,
|
|
||||||
0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
|
|
||||||
0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
|
|
||||||
0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x20, 0x3c, 0x74,
|
|
||||||
0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68,
|
|
||||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6e, 0x64, 0x65,
|
|
||||||
0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x69,
|
|
||||||
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x3c,
|
|
||||||
0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x20,
|
|
||||||
0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c,
|
|
||||||
0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x69,
|
|
||||||
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa,
|
|
||||||
0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e,
|
|
||||||
0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c,
|
|
||||||
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x66,
|
|
||||||
0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
|
||||||
0x22, 0x3e, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73,
|
|
||||||
0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f,
|
|
||||||
0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21,
|
|
||||||
0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74,
|
|
||||||
0x73, 0x20, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x73,
|
|
||||||
0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
|
|
||||||
0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e,
|
|
||||||
0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
|
|
||||||
0x66, 0x3d, 0x22, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68,
|
|
||||||
0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x2f, 0x74, 0x63, 0x70, 0x2e,
|
|
||||||
0x73, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
|
|
||||||
0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25,
|
|
||||||
0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61,
|
|
||||||
0x74, 0x73, 0x20, 0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68,
|
|
||||||
0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c,
|
|
||||||
0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c,
|
|
||||||
0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66,
|
|
||||||
0x3d, 0x22, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
|
|
||||||
0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
|
||||||
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
|
|
||||||
0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x3c, 0x2f, 0x61, 0x3e,
|
|
||||||
0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e,
|
|
||||||
0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74,
|
|
||||||
0x61, 0x74, 0x73, 0x20, 0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65,
|
|
||||||
0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
|
||||||
0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72,
|
|
||||||
0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e,
|
|
||||||
0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f,
|
|
||||||
0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73, 0x73, 0x22,
|
|
||||||
0x3e, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63, 0x73,
|
|
||||||
0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e,
|
|
||||||
0xa, 0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69,
|
|
||||||
0x6c, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f,
|
|
||||||
0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2e, 0x63, 0x73,
|
|
||||||
0x73, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74,
|
|
||||||
0x72, 0x3e, 0xa, 0x3c, 0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64,
|
|
||||||
0x3e, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22,
|
|
||||||
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x22,
|
|
||||||
0x3e, 0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
|
|
||||||
0x3c, 0x2f, 0x61, 0x3e, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa,
|
|
||||||
0x3c, 0x74, 0x64, 0x3e, 0x25, 0x21, 0x20, 0x66, 0x69, 0x6c,
|
|
||||||
0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x20, 0x2f, 0x34,
|
|
||||||
0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x2f,
|
|
||||||
0x74, 0x64, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x3c,
|
|
||||||
0x74, 0x72, 0x3e, 0x3c, 0x74, 0x64, 0x3e, 0x3c, 0x61, 0x20,
|
|
||||||
0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x2f, 0x69, 0x6d, 0x67,
|
|
||||||
0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f,
|
|
||||||
0x74, 0x2e, 0x70, 0x6e, 0x67, 0x22, 0x3e, 0x2f, 0x69, 0x6d,
|
|
||||||
0x67, 0x2f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68,
|
|
||||||
0x6f, 0x74, 0x2e, 0x70, 0x6e, 0x67, 0x3c, 0x2f, 0x61, 0x3e,
|
|
||||||
0x3c, 0x2f, 0x74, 0x64, 0x3e, 0xa, 0x3c, 0x74, 0x64, 0x3e,
|
|
||||||
0x25, 0x21, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x73, 0x74,
|
|
||||||
0x61, 0x74, 0x73, 0x20, 0x2f, 0x69, 0x6d, 0x67, 0x2f, 0x73,
|
|
||||||
0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x6f, 0x74, 0x2e,
|
|
||||||
0x70, 0x6e, 0x67, 0xa, 0x3c, 0x2f, 0x74, 0x64, 0x3e, 0x3c,
|
|
||||||
0x2f, 0x74, 0x72, 0x3e, 0x3c, 0x2f, 0x74, 0x61, 0x62, 0x6c,
|
|
||||||
0x65, 0x3e, 0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f,
|
|
||||||
0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0};
|
|
||||||
|
|
||||||
static const char data_index_html[] PROGMEM = {
|
static const char data_index_html[] PROGMEM = {
|
||||||
/* /index.html */
|
/* /index.html */
|
||||||
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
0x3c, 0x21, 0x44, 0x4f, 0x43, 0x54, 0x59, 0x50, 0x45, 0x20,
|
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
||||||
0x48, 0x54, 0x4d, 0x4c, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49,
|
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x9, 0x20, 0x20, 0x20,
|
||||||
0x43, 0x20, 0x22, 0x2d, 0x2f, 0x2f, 0x57, 0x33, 0x43, 0x2f,
|
0x20, 0x20, 0x20, 0xa, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61,
|
||||||
0x2f, 0x44, 0x54, 0x44, 0x20, 0x48, 0x54, 0x4d, 0x4c, 0x20,
|
0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x74, 0x72, 0x6f, 0x22,
|
||||||
0x34, 0x2e, 0x30, 0x31, 0x20, 0x54, 0x72, 0x61, 0x6e, 0x73,
|
0x3e, 0xa, 0x54, 0x68, 0x65, 0x20, 0x77, 0x65, 0x62, 0x20,
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2f, 0x2f, 0x45,
|
0x70, 0x61, 0x67, 0x65, 0x73, 0x20, 0x79, 0x6f, 0x75, 0x20,
|
||||||
0x4e, 0x22, 0x20, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f,
|
0x61, 0x72, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x69,
|
||||||
0x2f, 0x77, 0x77, 0x77, 0x2e, 0x77, 0x33, 0x2e, 0x6f, 0x72,
|
0x6e, 0x67, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x72,
|
||||||
0x67, 0x2f, 0x54, 0x52, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x34,
|
0x76, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x77,
|
||||||
0x2f, 0x6c, 0x6f, 0x6f, 0x73, 0x65, 0x2e, 0x64, 0x74, 0x64,
|
0x65, 0x62, 0xa, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20,
|
||||||
0x22, 0x3e, 0xa, 0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa,
|
0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x6e,
|
||||||
0x20, 0x20, 0x3c, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20,
|
0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c, 0x61,
|
||||||
0x20, 0x20, 0x20, 0x3c, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x3e,
|
0xa, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x68, 0x74, 0x74,
|
||||||
0x57, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f,
|
0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x69,
|
||||||
0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6f, 0x6e, 0x74, 0x69,
|
0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74,
|
||||||
0x6b, 0x69, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73, 0x65, 0x72,
|
0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74,
|
||||||
0x76, 0x65, 0x72, 0x21, 0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c,
|
0x69, 0x6b, 0x69, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74,
|
||||||
0x65, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x6c, 0x69,
|
0x69, 0x6e, 0x67, 0xa, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d,
|
||||||
0x6e, 0x6b, 0x20, 0x72, 0x65, 0x6c, 0x3d, 0x22, 0x73, 0x74,
|
0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0xa, 0x3c, 0x2f, 0x70, 0x3e,
|
||||||
0x79, 0x6c, 0x65, 0x73, 0x68, 0x65, 0x65, 0x74, 0x22, 0x20,
|
0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74,
|
||||||
0x74, 0x79, 0x70, 0x65, 0x3d, 0x22, 0x74, 0x65, 0x78, 0x74,
|
0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0};
|
||||||
0x2f, 0x63, 0x73, 0x73, 0x22, 0x20, 0x68, 0x72, 0x65, 0x66,
|
|
||||||
0x3d, 0x22, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x63,
|
static const char data_processes_shtml[] PROGMEM = {
|
||||||
0x73, 0x73, 0x22, 0x3e, 0x20, 0x20, 0xa, 0x20, 0x20, 0x3c,
|
/* /processes.shtml */
|
||||||
0x2f, 0x68, 0x65, 0x61, 0x64, 0x3e, 0xa, 0x20, 0x20, 0x3c,
|
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c,
|
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
||||||
0x6f, 0x72, 0x3d, 0x22, 0x23, 0x66, 0x66, 0x66, 0x65, 0x65,
|
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
|
||||||
0x63, 0x22, 0x20, 0x74, 0x65, 0x78, 0x74, 0x3d, 0x22, 0x62,
|
0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
|
||||||
0x6c, 0x61, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0xa, 0x20, 0x20,
|
0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,
|
||||||
0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73,
|
0x31, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0x3c, 0x74, 0x61, 0x62,
|
||||||
0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x62, 0x6c, 0x6f, 0x63,
|
0x6c, 0x65, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x3d, 0x22,
|
||||||
0x6b, 0x22, 0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x64, 0x69,
|
0x31, 0x30, 0x30, 0x25, 0x22, 0x3e, 0xa, 0x3c, 0x74, 0x72,
|
||||||
0x76, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x6d,
|
0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x49, 0x44, 0x3c, 0x2f, 0x74,
|
||||||
0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x70,
|
0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x4e, 0x61, 0x6d, 0x65,
|
||||||
0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22, 0x62, 0x6f,
|
0x3c, 0x2f, 0x74, 0x68, 0x3e, 0x3c, 0x74, 0x68, 0x3e, 0x54,
|
||||||
0x72, 0x64, 0x65, 0x72, 0x2d, 0x74, 0x69, 0x74, 0x6c, 0x65,
|
0x68, 0x72, 0x65, 0x61, 0x64, 0x3c, 0x2f, 0x74, 0x68, 0x3e,
|
||||||
0x22, 0x3e, 0x4d, 0x65, 0x6e, 0x75, 0x3c, 0x2f, 0x70, 0x3e,
|
0x3c, 0x74, 0x68, 0x3e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73,
|
||||||
0xa, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73,
|
0x73, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x3c, 0x2f, 0x74,
|
||||||
0x73, 0x3d, 0x22, 0x6d, 0x65, 0x6e, 0x75, 0x22, 0x3e, 0xa,
|
0x68, 0x3e, 0x3c, 0x2f, 0x74, 0x72, 0x3e, 0xa, 0x25, 0x21,
|
||||||
0x20, 0x20, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72,
|
0x20, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73,
|
||||||
0x65, 0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x46, 0x72, 0x6f,
|
0xa, 0x25, 0x21, 0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74,
|
||||||
0x6e, 0x74, 0x20, 0x70, 0x61, 0x67, 0x65, 0x3c, 0x2f, 0x61,
|
0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0};
|
||||||
0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61,
|
|
||||||
0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x66, 0x69, 0x6c,
|
static const char data_robots_txt[] PROGMEM = {
|
||||||
0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e,
|
/* /robots.txt */
|
||||||
0x46, 0x69, 0x6c, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x69,
|
0x2f, 0x72, 0x6f, 0x62, 0x6f, 0x74, 0x73, 0x2e, 0x74, 0x78, 0x74, 0,
|
||||||
0x73, 0x74, 0x69, 0x63, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
|
0x75, 0x73, 0x65, 0x72, 0x2d, 0x61, 0x67, 0x65, 0x6e, 0x74,
|
||||||
0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
0x3a, 0x20, 0x2a, 0xa, 0x44, 0x69, 0x73, 0x61, 0x6c, 0x6c,
|
||||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x74, 0x63, 0x70, 0x2e, 0x73,
|
0x6f, 0x77, 0x3a, 0x20, 0x2f, 0};
|
||||||
0x68, 0x74, 0x6d, 0x6c, 0x22, 0x3e, 0x4e, 0x65, 0x74, 0x77,
|
|
||||||
0x6f, 0x72, 0x6b, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63,
|
static const char data_sensor_shtml[] PROGMEM = {
|
||||||
0x74, 0x69, 0x6f, 0x6e, 0x73, 0x3c, 0x2f, 0x61, 0x3e, 0x3c,
|
/* /sensor.shtml */
|
||||||
0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x61, 0x20, 0x68,
|
0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
0x72, 0x65, 0x66, 0x3d, 0x22, 0x70, 0x72, 0x6f, 0x63, 0x65,
|
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
||||||
0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
|
||||||
0x22, 0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70,
|
0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x52, 0x65,
|
||||||
0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f,
|
0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x68, 0x31,
|
||||||
0x61, 0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c,
|
0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x73,
|
||||||
0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d, 0x22, 0x73, 0x65,
|
0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0xa, 0xa, 0x25, 0x21,
|
||||||
0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c,
|
0x3a, 0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e,
|
||||||
0x22, 0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x52,
|
0x68, 0x74, 0x6d, 0x6c, 0xa, 0xa, 0};
|
||||||
0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x61,
|
|
||||||
0x3e, 0xa, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x70, 0x3e, 0xa,
|
|
||||||
0x20, 0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0x20,
|
|
||||||
0x20, 0x3c, 0x2f, 0x64, 0x69, 0x76, 0x3e, 0xa, 0xa, 0x20,
|
|
||||||
0x20, 0x3c, 0x64, 0x69, 0x76, 0x20, 0x63, 0x6c, 0x61, 0x73,
|
|
||||||
0x73, 0x3d, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74,
|
|
||||||
0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x3e, 0xa, 0x20, 0x20,
|
|
||||||
0x3c, 0x70, 0x20, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x3d, 0x22,
|
|
||||||
0x62, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2d, 0x74, 0x69, 0x74,
|
|
||||||
0x6c, 0x65, 0x22, 0x3e, 0xa, 0x20, 0x20, 0x57, 0x65, 0x6c,
|
|
||||||
0x63, 0x6f, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68,
|
|
||||||
0x65, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65, 0x66, 0x3d,
|
|
||||||
0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77,
|
|
||||||
0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73, 0x65, 0x2f,
|
|
||||||
0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f, 0x22, 0x3e,
|
|
||||||
0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x3c, 0x2f, 0x61,
|
|
||||||
0x3e, 0x20, 0xa, 0x20, 0x20, 0x77, 0x65, 0x62, 0x20, 0x73,
|
|
||||||
0x65, 0x72, 0x76, 0x65, 0x72, 0x21, 0xa, 0x20, 0x20, 0x3c,
|
|
||||||
0x2f, 0x70, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
||||||
0x20, 0xa, 0x9, 0x20, 0x20, 0x3c, 0x70, 0x20, 0x63, 0x6c,
|
|
||||||
0x61, 0x73, 0x73, 0x3d, 0x22, 0x69, 0x6e, 0x74, 0x72, 0x6f,
|
|
||||||
0x22, 0x3e, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x54, 0x68,
|
|
||||||
0x65, 0x20, 0x77, 0x65, 0x62, 0x20, 0x70, 0x61, 0x67, 0x65,
|
|
||||||
0x73, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20,
|
|
||||||
0x77, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x61,
|
|
||||||
0x72, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20,
|
|
||||||
0x62, 0x79, 0x20, 0x61, 0x20, 0x77, 0x65, 0x62, 0xa, 0x9,
|
|
||||||
0x20, 0x20, 0x20, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72,
|
|
||||||
0x20, 0x72, 0x75, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x75,
|
|
||||||
0x6e, 0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3c,
|
|
||||||
0x61, 0xa, 0x9, 0x20, 0x20, 0x20, 0x20, 0x68, 0x72, 0x65,
|
|
||||||
0x66, 0x3d, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f,
|
|
||||||
0x77, 0x77, 0x77, 0x2e, 0x73, 0x69, 0x63, 0x73, 0x2e, 0x73,
|
|
||||||
0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x2f,
|
|
||||||
0x22, 0x3e, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6b, 0x69, 0x20,
|
|
||||||
0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, 0xa,
|
|
||||||
0x9, 0x20, 0x20, 0x20, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65,
|
|
||||||
0x6d, 0x3c, 0x2f, 0x61, 0x3e, 0x2e, 0xa, 0x9, 0x20, 0x20,
|
|
||||||
0x3c, 0x2f, 0x70, 0x3e, 0xa, 0xa, 0x9, 0x20, 0x20, 0xa,
|
|
||||||
0x9, 0x20, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
|
|
||||||
0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
|
||||||
0xa, 0};
|
|
||||||
|
|
||||||
static const char data_style_css[] PROGMEM = {
|
static const char data_style_css[] PROGMEM = {
|
||||||
/* /style.css */
|
/* /style.css */
|
||||||
@ -552,12 +565,6 @@ static const char data_style_css[] PROGMEM = {
|
|||||||
0x3b, 0xa, 0xa, 0x7d, 0x20, 0xa, 0xa, 0xa, 0xa, 0xa,
|
0x3b, 0xa, 0xa, 0x7d, 0x20, 0xa, 0xa, 0xa, 0xa, 0xa,
|
||||||
0};
|
0};
|
||||||
|
|
||||||
static const char data_footer_html[] PROGMEM = {
|
|
||||||
/* /footer.html */
|
|
||||||
0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
|
||||||
0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa,
|
|
||||||
0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
|
||||||
|
|
||||||
static const char data_tcp_shtml[] PROGMEM = {
|
static const char data_tcp_shtml[] PROGMEM = {
|
||||||
/* /tcp.shtml */
|
/* /tcp.shtml */
|
||||||
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
0x2f, 0x74, 0x63, 0x70, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
@ -584,39 +591,6 @@ static const char data_tcp_shtml[] PROGMEM = {
|
|||||||
0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
|
0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c,
|
||||||
0};
|
0};
|
||||||
|
|
||||||
static const char data_404_html[] PROGMEM = {
|
|
||||||
/* /404.html */
|
|
||||||
0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
|
||||||
0x3c, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0xa, 0x20, 0x20, 0x3c,
|
|
||||||
0x62, 0x6f, 0x64, 0x79, 0x20, 0x62, 0x67, 0x63, 0x6f, 0x6c,
|
|
||||||
0x6f, 0x72, 0x3d, 0x22, 0x77, 0x68, 0x69, 0x74, 0x65, 0x22,
|
|
||||||
0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x63, 0x65, 0x6e,
|
|
||||||
0x74, 0x65, 0x72, 0x3e, 0xa, 0x20, 0x20, 0x20, 0x20, 0x20,
|
|
||||||
0x20, 0x3c, 0x68, 0x31, 0x3e, 0x34, 0x30, 0x34, 0x20, 0x2d,
|
|
||||||
0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x20,
|
|
||||||
0x66, 0x6f, 0x75, 0x6e, 0x64, 0x3c, 0x2f, 0x68, 0x31, 0x3e,
|
|
||||||
0xa, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3c, 0x68, 0x33,
|
|
||||||
0x3e, 0x47, 0x6f, 0x20, 0x3c, 0x61, 0x20, 0x68, 0x72, 0x65,
|
|
||||||
0x66, 0x3d, 0x22, 0x2f, 0x22, 0x3e, 0x68, 0x65, 0x72, 0x65,
|
|
||||||
0x3c, 0x2f, 0x61, 0x3e, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65,
|
|
||||||
0x61, 0x64, 0x2e, 0x3c, 0x2f, 0x68, 0x33, 0x3e, 0xa, 0x20,
|
|
||||||
0x20, 0x20, 0x20, 0x3c, 0x2f, 0x63, 0x65, 0x6e, 0x74, 0x65,
|
|
||||||
0x72, 0x3e, 0xa, 0x20, 0x20, 0x3c, 0x2f, 0x62, 0x6f, 0x64,
|
|
||||||
0x79, 0x3e, 0xa, 0x3c, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e,
|
|
||||||
0};
|
|
||||||
|
|
||||||
static const char data_sensor_shtml[] PROGMEM = {
|
|
||||||
/* /sensor.shtml */
|
|
||||||
0x2f, 0x73, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
|
|
||||||
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
|
||||||
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
|
|
||||||
0x3e, 0x53, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x20, 0x52, 0x65,
|
|
||||||
0x61, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3c, 0x2f, 0x68, 0x31,
|
|
||||||
0x3e, 0x3c, 0x62, 0x72, 0x3e, 0xa, 0x25, 0x21, 0x20, 0x73,
|
|
||||||
0x65, 0x6e, 0x73, 0x6f, 0x72, 0x73, 0xa, 0x25, 0x21, 0x3a,
|
|
||||||
0x20, 0x2f, 0x66, 0x6f, 0x6f, 0x74, 0x65, 0x72, 0x2e, 0x68,
|
|
||||||
0x74, 0x6d, 0x6c, 0xa, 0xa, 0};
|
|
||||||
|
|
||||||
static const char data_upload_html[] PROGMEM = {
|
static const char data_upload_html[] PROGMEM = {
|
||||||
/* /upload.html */
|
/* /upload.html */
|
||||||
0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0,
|
||||||
@ -641,26 +615,30 @@ static const char data_upload_html[] PROGMEM = {
|
|||||||
0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
|
0xa, 0x3c, 0x2f, 0x62, 0x6f, 0x64, 0x79, 0x3e, 0xa, 0x3c,
|
||||||
0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
0x2f, 0x68, 0x74, 0x6d, 0x6c, 0x3e, 0};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_processes_shtml[] = {{NULL, data_processes_shtml, data_processes_shtml + 17, sizeof(data_processes_shtml) - 17}};
|
const struct httpd_fsdata_file file_404_html[] = {{NULL, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_header_html[] = {{file_processes_shtml, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}};
|
const struct httpd_fsdata_file file_favicon_png[] = {{file_404_html, data_favicon_png, data_favicon_png + 13, sizeof(data_favicon_png) - 13}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_files_shtml[] = {{file_header_html, data_files_shtml, data_files_shtml + 13, sizeof(data_files_shtml) - 13}};
|
const struct httpd_fsdata_file file_files_shtml[] = {{file_favicon_png, data_files_shtml, data_files_shtml + 13, sizeof(data_files_shtml) - 13}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_index_html[] = {{file_files_shtml, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
|
const struct httpd_fsdata_file file_footer_html[] = {{file_files_shtml, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_style_css[] = {{file_index_html, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}};
|
const struct httpd_fsdata_file file_header_html[] = {{file_footer_html, data_header_html, data_header_html + 13, sizeof(data_header_html) - 13}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_footer_html[] = {{file_style_css, data_footer_html, data_footer_html + 13, sizeof(data_footer_html) - 13}};
|
const struct httpd_fsdata_file file_index_html[] = {{file_header_html, data_index_html, data_index_html + 12, sizeof(data_index_html) - 12}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_tcp_shtml[] = {{file_footer_html, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}};
|
const struct httpd_fsdata_file file_processes_shtml[] = {{file_index_html, data_processes_shtml, data_processes_shtml + 17, sizeof(data_processes_shtml) - 17}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_404_html[] = {{file_tcp_shtml, data_404_html, data_404_html + 10, sizeof(data_404_html) - 10}};
|
const struct httpd_fsdata_file file_robots_txt[] = {{file_processes_shtml, data_robots_txt, data_robots_txt + 12, sizeof(data_robots_txt) - 12}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_sensor_shtml[] = {{file_404_html, data_sensor_shtml, data_sensor_shtml + 14, sizeof(data_sensor_shtml) - 14}};
|
const struct httpd_fsdata_file file_sensor_shtml[] = {{file_robots_txt, data_sensor_shtml, data_sensor_shtml + 14, sizeof(data_sensor_shtml) - 14}};
|
||||||
|
|
||||||
const struct httpd_fsdata_file file_upload_html[] = {{file_sensor_shtml, data_upload_html, data_upload_html + 13, sizeof(data_upload_html) - 13}};
|
const struct httpd_fsdata_file file_style_css[] = {{file_sensor_shtml, data_style_css, data_style_css + 11, sizeof(data_style_css) - 11}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_tcp_shtml[] = {{file_style_css, data_tcp_shtml, data_tcp_shtml + 11, sizeof(data_tcp_shtml) - 11}};
|
||||||
|
|
||||||
|
const struct httpd_fsdata_file file_upload_html[] = {{file_tcp_shtml, data_upload_html, data_upload_html + 13, sizeof(data_upload_html) - 13}};
|
||||||
|
|
||||||
#define HTTPD_FS_ROOT file_upload_html
|
#define HTTPD_FS_ROOT file_upload_html
|
||||||
|
|
||||||
#define HTTPD_FS_NUMFILES 10
|
#define HTTPD_FS_NUMFILES 12
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
*
|
*
|
||||||
* Author: Adam Dunkels <adam@sics.se>
|
* Author: Adam Dunkels <adam@sics.se>
|
||||||
*
|
*
|
||||||
* $Id: httpd.c,v 1.1 2008/10/14 10:14:13 julienabeille Exp $
|
* $Id: httpd.c,v 1.2 2008/11/16 15:28:37 c_oflynn Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
@ -101,12 +101,12 @@ PT_THREAD(send_part_of_file(struct httpd_state *s))
|
|||||||
{
|
{
|
||||||
PSOCK_BEGIN(&s->sout);
|
PSOCK_BEGIN(&s->sout);
|
||||||
|
|
||||||
static int oldfilelen, oldlen;
|
static int oldfilelen, oldlen;
|
||||||
static char * olddata;
|
static char * olddata;
|
||||||
|
|
||||||
//Store stuff that gets clobbered...
|
//Store stuff that gets clobbered...
|
||||||
oldfilelen = s->file.len;
|
oldfilelen = s->file.len;
|
||||||
oldlen = s->len;
|
oldlen = s->len;
|
||||||
olddata = s->file.data;
|
olddata = s->file.data;
|
||||||
|
|
||||||
//How much to send
|
//How much to send
|
||||||
@ -119,7 +119,7 @@ PT_THREAD(send_part_of_file(struct httpd_state *s))
|
|||||||
} while(s->file.len > 0);
|
} while(s->file.len > 0);
|
||||||
|
|
||||||
s->len = oldlen;
|
s->len = oldlen;
|
||||||
s->file.len = oldfilelen;
|
s->file.len = oldfilelen;
|
||||||
s->file.data = olddata;
|
s->file.data = olddata;
|
||||||
|
|
||||||
PSOCK_END(&s->sout);
|
PSOCK_END(&s->sout);
|
||||||
@ -137,18 +137,20 @@ next_scriptstate(struct httpd_state *s)
|
|||||||
} else {
|
} else {
|
||||||
s->scriptlen = 0;
|
s->scriptlen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* char *p;
|
/* char *p;
|
||||||
p = strchr(s->scriptptr, ISO_nl) + 1;
|
p = strchr(s->scriptptr, ISO_nl) + 1;
|
||||||
s->scriptlen -= (unsigned short)(p - s->scriptptr);
|
s->scriptlen -= (unsigned short)(p - s->scriptptr);
|
||||||
s->scriptptr = p;*/
|
s->scriptptr = p;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
static char filenamebuf[25],*pptr;//See below!
|
||||||
static
|
static
|
||||||
PT_THREAD(handle_script(struct httpd_state *s))
|
PT_THREAD(handle_script(struct httpd_state *s))
|
||||||
{
|
{
|
||||||
char *ptr;
|
// char *ptr; //one of these gets whomped unless in globals
|
||||||
|
// char filenamebuf[25];
|
||||||
char filenamebuf[25];
|
|
||||||
|
|
||||||
PT_BEGIN(&s->scriptpt);
|
PT_BEGIN(&s->scriptpt);
|
||||||
|
|
||||||
@ -158,9 +160,9 @@ PT_THREAD(handle_script(struct httpd_state *s))
|
|||||||
if(httpd_fs_getchar(s->file.data) == ISO_percent &&
|
if(httpd_fs_getchar(s->file.data) == ISO_percent &&
|
||||||
httpd_fs_getchar(s->file.data + 1) == ISO_bang) {
|
httpd_fs_getchar(s->file.data + 1) == ISO_bang) {
|
||||||
s->scriptptr = s->file.data + 3;
|
s->scriptptr = s->file.data + 3;
|
||||||
s->scriptlen = s->file.len - 3;
|
s->scriptlen = s->file.len - 3;
|
||||||
|
|
||||||
memcpy_P(filenamebuf, s->scriptptr, 25);
|
memcpy_P(filenamebuf, s->scriptptr, 25);
|
||||||
|
|
||||||
if(httpd_fs_getchar(s->scriptptr - 1) == ISO_colon) {
|
if(httpd_fs_getchar(s->scriptptr - 1) == ISO_colon) {
|
||||||
httpd_fs_open(filenamebuf + 1, &s->file);
|
httpd_fs_open(filenamebuf + 1, &s->file);
|
||||||
@ -186,13 +188,13 @@ PT_THREAD(handle_script(struct httpd_state *s))
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(httpd_fs_getchar(s->file.data) == ISO_percent) {
|
if(httpd_fs_getchar(s->file.data) == ISO_percent) {
|
||||||
ptr = (char *) httpd_fs_strchr(s->file.data + 1, ISO_percent);
|
pptr = (char *) httpd_fs_strchr(s->file.data + 1, ISO_percent);
|
||||||
} else {
|
} else {
|
||||||
ptr = (char *) httpd_fs_strchr(s->file.data, ISO_percent);
|
pptr = (char *) httpd_fs_strchr(s->file.data, ISO_percent);
|
||||||
}
|
}
|
||||||
if(ptr != NULL &&
|
if(pptr != NULL &&
|
||||||
ptr != s->file.data) {
|
pptr != s->file.data) {
|
||||||
s->len = (int)(ptr - s->file.data);
|
s->len = (int)(pptr - s->file.data);
|
||||||
if(s->len >= uip_mss()) {
|
if(s->len >= uip_mss()) {
|
||||||
s->len = uip_mss();
|
s->len = uip_mss();
|
||||||
}
|
}
|
||||||
@ -254,7 +256,8 @@ PT_THREAD(handle_output(struct httpd_state *s))
|
|||||||
send_headers(s,
|
send_headers(s,
|
||||||
http_header_200));
|
http_header_200));
|
||||||
ptr = strchr(s->filename, ISO_period);
|
ptr = strchr(s->filename, ISO_period);
|
||||||
if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) {
|
if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0 || strcmp_P(s->filename,PSTR("/index.html")) ==0) {
|
||||||
|
// if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0 ) {
|
||||||
PT_INIT(&s->scriptpt);
|
PT_INIT(&s->scriptpt);
|
||||||
PT_WAIT_THREAD(&s->outputpt, handle_script(s));
|
PT_WAIT_THREAD(&s->outputpt, handle_script(s));
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user