diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-08-31 23:05:51 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-08-31 23:05:51 +0000 |
commit | b351b752486c1693392faed106a8a77609006656 (patch) | |
tree | 8b04048671d38afda5fd5fbcea2ae16a9da8bcbc /apps/examples | |
parent | f8d292453df82fde56d2e4674ba78b5885fed899 (diff) | |
download | px4-nuttx-b351b752486c1693392faed106a8a77609006656.tar.gz px4-nuttx-b351b752486c1693392faed106a8a77609006656.tar.bz2 px4-nuttx-b351b752486c1693392faed106a8a77609006656.zip |
The content for uIP web server demo is no longer canned, but is not built dynameically (Thanks to Max Holtzberg)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5073 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/examples')
-rw-r--r-- | apps/examples/uip/Makefile | 10 | ||||
-rw-r--r-- | apps/examples/uip/cgi.c | 108 | ||||
-rw-r--r-- | apps/examples/uip/cgi.h | 43 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/404.html | 8 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/fade.png | bin | 0 -> 196 bytes | |||
-rw-r--r-- | apps/examples/uip/httpd-fs/files.shtml | 31 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/footer.html | 3 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/header.html | 16 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/index.shtml | 10 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/stats.shtml | 31 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/style.css | 92 | ||||
-rw-r--r-- | apps/examples/uip/httpd-fs/tcp.shtml | 5 | ||||
-rw-r--r-- | apps/examples/uip/main.c | 5 |
13 files changed, 358 insertions, 4 deletions
diff --git a/apps/examples/uip/Makefile b/apps/examples/uip/Makefile index bf1d39917..4407998fc 100644 --- a/apps/examples/uip/Makefile +++ b/apps/examples/uip/Makefile @@ -1,8 +1,8 @@ ############################################################################ # apps/examples/uip/Makefile # -# Copyright (C) 2007-2008, 2010-2011 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt <spudmonkey@racsa.co.cr> +# Copyright (C) 2007-2008, 2010-2012 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt <gnutt@nuttx.org> # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions @@ -40,7 +40,7 @@ include $(APPDIR)/Make.defs # uIP very tiny web server example ASRCS = -CSRCS = main.c +CSRCS = main.c cgi.c httpd_fsdata.c AOBJS = $(ASRCS:.S=$(OBJEXT)) COBJS = $(CSRCS:.c=$(OBJEXT)) @@ -75,6 +75,9 @@ $(COBJS): %$(OBJEXT): %.c done ; ) @touch .built +httpd_fsdata.c: httpd-fs/* + $(TOPDIR)/tools/mkfsdata.pl + context: .depend: Makefile $(SRCS) @@ -85,6 +88,7 @@ epend: .depend clean: @rm -f *.o *~ .*.swp .built + @rm -f httpd_fsdata.c $(call CLEAN) distclean: clean diff --git a/apps/examples/uip/cgi.c b/apps/examples/uip/cgi.c new file mode 100644 index 000000000..8d081db92 --- /dev/null +++ b/apps/examples/uip/cgi.c @@ -0,0 +1,108 @@ +/**************************************************************************** + * apps/examples/uip/cgi.c + * Web server script interface + * Author: Adam Dunkels <adam@sics.se> + * + * Copyright (c) 2001-2006, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include <stdio.h> +#include <string.h> +#include <sys/socket.h> + +#include <apps/netutils/httpd.h> + +#include "cgi.h" + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +/**************************************************************************** + * Private Function Prototypes + ****************************************************************************/ + +#ifdef CONFIG_NETUTILS_HTTPDFILESTATS +HTTPD_CGI_CALL(file, "file-stats", file_stats); +#endif + +#ifdef CONFIG_NETUTILS_HTTPDNETSTATS +HTTPD_CGI_CALL(net, "net-stats", net_stats); +#endif + +/**************************************************************************** + * Name: net_stats + ****************************************************************************/ + +#ifdef CONFIG_NETUTILS_HTTPDNETSTATS +static void net_stats(struct httpd_state *pstate, char *ptr) +{ + char buffer[16]; + int i; + + for (i = 0; i < sizeof(uip_stat) / sizeof(uip_stats_t); i++) + { + snprintf(buffer, 16, "%5u\n", ((uip_stats_t *)&uip_stat)[i]); + send(pstate->ht_sockfd, buffer, strlen(buffer), 0); + } +} +#endif + +/**************************************************************************** + * Name: file_stats + ****************************************************************************/ + +#ifdef CONFIG_NETUTILS_HTTPDFILESTATS +static void file_stats(struct httpd_state *pstate, char *ptr) +{ + char buffer[16]; + char *pcount = strchr(ptr, ' ') + 1; + snprintf(buffer, 16, "%5u", httpd_fs_count(pcount)); + send(pstate->ht_sockfd, buffer, strlen(buffer), 0); +} +#endif + +/**************************************************************************** + * Name: cgi_register + ****************************************************************************/ + +void cgi_register() +{ +#ifdef CONFIG_NETUTILS_HTTPDFILESTATS + httpd_cgi_register(&file); +#endif + +#ifdef CONFIG_NETUTILS_HTTPDNETSTATS + httpd_cgi_register(&net); +#endif +} diff --git a/apps/examples/uip/cgi.h b/apps/examples/uip/cgi.h new file mode 100644 index 000000000..8ad0f93ce --- /dev/null +++ b/apps/examples/uip/cgi.h @@ -0,0 +1,43 @@ +/**************************************************************************** + * apps/examples/uip/cgi.c + * Web server script interface header file + * Author: Adam Dunkels <adam@sics.se> + * + * Copyright (c) 2001, Adam Dunkels. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + ****************************************************************************/ + +#ifndef __HTTPD_CGI_H__ +#define __HTTPD_CGI_H__ + +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +void cgi_register(void); + +#endif /* __HTTPD_CGI_H__ */ diff --git a/apps/examples/uip/httpd-fs/404.html b/apps/examples/uip/httpd-fs/404.html new file mode 100644 index 000000000..a17711d02 --- /dev/null +++ b/apps/examples/uip/httpd-fs/404.html @@ -0,0 +1,8 @@ +<html> + <body bgcolor="white"> + <center> + <h1>404 - file not found</h1> + <h3>Go <a href="/">here</a> instead.</h3> + </center> + </body> +</html>
\ No newline at end of file diff --git a/apps/examples/uip/httpd-fs/fade.png b/apps/examples/uip/httpd-fs/fade.png Binary files differnew file mode 100644 index 000000000..a9e69f75d --- /dev/null +++ b/apps/examples/uip/httpd-fs/fade.png diff --git a/apps/examples/uip/httpd-fs/files.shtml b/apps/examples/uip/httpd-fs/files.shtml new file mode 100644 index 000000000..8a90dbd6d --- /dev/null +++ b/apps/examples/uip/httpd-fs/files.shtml @@ -0,0 +1,31 @@ +%!: /header.html +<h1>File statistics</h1> +<center> +<table width="300"> +<tr><td><a href="/index.shtml">/index.shtml</a></td> +<td>%! file-stats /index.shtml +</td><td><img src="/fade.png" height=10 width=%! file-stats /index.shtml +> </td></tr> +<tr><td><a href="/files.shtml">/files.shtml</a></td> +<td>%! file-stats /files.shtml +</td><td><img src="/fade.png" height=10 width=%! file-stats /files.shtml +> </td></tr> +<tr><td><a href="/stats.shtml">/stats.shtml</a></td> +<td>%! file-stats /stats.shtml +</td><td><img src="/fade.png" height=10 width=%! file-stats /stats.shtml +> </td></tr> +<tr><td><a href="/style.css">/style.css</a></td> +<td>%! file-stats /style.css +</td><td><img src="/fade.png" height=10 width=%! file-stats /style.css +> </td></tr> +<tr><td><a href="/404.html">/404.html</a></td> +<td>%! file-stats /404.html +</td><td><img src="/fade.png" height=10 width=%! file-stats /404.html +> </td></tr> +<tr><td><a href="/fade.png">/fade.png</a></td> +<td>%! file-stats /fade.png +</td><td><img src="/fade.png" height=10 width=%! file-stats /fade.png +> </td></tr> +</table> +</center> +%!: /footer.html diff --git a/apps/examples/uip/httpd-fs/footer.html b/apps/examples/uip/httpd-fs/footer.html new file mode 100644 index 000000000..5b6e2d653 --- /dev/null +++ b/apps/examples/uip/httpd-fs/footer.html @@ -0,0 +1,3 @@ + </div> + </body> +</html> diff --git a/apps/examples/uip/httpd-fs/header.html b/apps/examples/uip/httpd-fs/header.html new file mode 100644 index 000000000..70df07fa6 --- /dev/null +++ b/apps/examples/uip/httpd-fs/header.html @@ -0,0 +1,16 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html> + <head> + <title>Welcome to the uIP web server!</title> + <link rel="stylesheet" type="text/css" href="style.css"> + </head> + <body bgcolor="#fffeec" text="black"> + + <div class="menu"> + <div class="menubox"><a href="/">Front page</a></div> + <div class="menubox"><a href="files.shtml">File statistics</a></div> + <div class="menubox"><a href="stats.shtml">Network statistics</a></div> + <br> + </div> + + <div class="contentblock"> diff --git a/apps/examples/uip/httpd-fs/index.shtml b/apps/examples/uip/httpd-fs/index.shtml new file mode 100644 index 000000000..7f19358ce --- /dev/null +++ b/apps/examples/uip/httpd-fs/index.shtml @@ -0,0 +1,10 @@ +%!: /header.html + <p> + These web pages are served by a small web server running on top of + the <a href="http://www.sics.se/~adam/uip/">uIP embedded TCP/IP + stack</a>. + </p> + <p> + Click on the links above for web server statistics. + </p> +%!: /footer.html diff --git a/apps/examples/uip/httpd-fs/stats.shtml b/apps/examples/uip/httpd-fs/stats.shtml new file mode 100644 index 000000000..c63ed4afd --- /dev/null +++ b/apps/examples/uip/httpd-fs/stats.shtml @@ -0,0 +1,31 @@ +%!: /header.html +<h1>Network statistics</h1> +<center> +<table width="300" border="0"> +<tr><td><pre> +IP Packets received + Packets sent + Packets dropped +IP errors IP version/header length + IP length, high byte + IP length, low byte + IP fragments + Header checksum + Wrong protocol +ICMP Packets received + Packets sent + Packets dropped + Type errors +TCP Packets received + Packets sent + Packets dropped + Checksum errors + Data packets without ACKs + Resets + Retransmissions + No connection avaliable + Connection attempts to closed ports +</pre></td><td><pre>%! net-stats +</pre></table> +</center> +%!: /footer.html diff --git a/apps/examples/uip/httpd-fs/style.css b/apps/examples/uip/httpd-fs/style.css new file mode 100644 index 000000000..ba6df7f15 --- /dev/null +++ b/apps/examples/uip/httpd-fs/style.css @@ -0,0 +1,92 @@ +h1 +{ + text-align: center; + font-size:14pt; + font-family:arial,helvetica; + font-weight:bold; + padding:10px; +} + +body +{ + + background-color: #fffeec; + color:black; + + font-size:8pt; + font-family:arial,helvetica; +} + +.menu +{ + margin: 4px; + width:60%; + + padding:2px; + + border: solid 1px; + background-color: #fffcd2; + text-align:left; + + font-size:9pt; + font-family:arial,helvetica; +} + +div.menubox +{ + width: 25%; + border: 0; + float: left; +text-align: center; +} + +.contentblock +{ + margin: 4px; + width:60%; + + padding:2px; + + border: 1px dotted; + background-color: white; + + font-size:8pt; + font-family:arial,helvetica; + +} + +p.intro +{ + margin-left:20px; + margin-right:20px; + + font-size:10pt; +/* font-weight:bold; */ + font-family:arial,helvetica; +} + +p.clink +{ + font-size:12pt; + font-family:courier,monospace; + text-align:center; +} + +p.clink9 +{ + font-size:9pt; + font-family:courier,monospace; + text-align:center; +} + + +p +{ + padding-left:10px; +} + +p.right +{ + text-align:right; +} + diff --git a/apps/examples/uip/httpd-fs/tcp.shtml b/apps/examples/uip/httpd-fs/tcp.shtml new file mode 100644 index 000000000..4c4bffe97 --- /dev/null +++ b/apps/examples/uip/httpd-fs/tcp.shtml @@ -0,0 +1,5 @@ +%!: /header.html +<h1>Current connections</h1><br><table width="100%"> +<tr><th>Local</th><th>Remote</th><th>State</th><th>Retransmissions</th><th>Timer</th><th>Flags</th></tr> +%! tcp-connections +%!: /footer.html
\ No newline at end of file diff --git a/apps/examples/uip/main.c b/apps/examples/uip/main.c index 9593d4d25..dcad63eaa 100644 --- a/apps/examples/uip/main.c +++ b/apps/examples/uip/main.c @@ -1,7 +1,7 @@ /**************************************************************************** * examples/uip/main.c * - * Copyright (C) 2007, 2009-2011 Gregory Nutt. All rights reserved. + * Copyright (C) 2007, 2009-2012 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <gnutt@nuttx.org> * * Based on uIP which also has a BSD style license: @@ -78,6 +78,8 @@ #include <apps/netutils/httpd.h> +#include "cgi.h" + /**************************************************************************** * Definitions ****************************************************************************/ @@ -192,6 +194,7 @@ int uip_main(int argc, char *argv[]) #ifdef CONFIG_NET_TCP printf("Starting webserver\n"); httpd_init(); + cgi_register(); httpd_listen(); #endif |