.. _http-server-sample:

HTTP Server
###########

Overview
********

The HTTP Server sample application for Zephyr implements a basic TCP server
on top of the HTTP Parser Library that is able to receive HTTP 1.1 requests,
parse them and write back the responses.

This sample  code generates HTTP 1.1 responses dynamically
and does not serve content from a file system. The source code includes
examples on how to write HTTP 1.1 responses: 200 OK, 400 Bad Request,
403 Forbidden, 404 Not Found and soft HTTP errors like 200 OK with a 404
Not Found HTML message.

The source code for this sample application can be found at:
:file:`samples/net/http_server`.

Requirements
************

- Linux machine with wget and the screen terminal emulator
- Freedom Board (FRDM-K64F)
- LAN for testing purposes (Ethernet)

Building and Running
********************

Currently, the HTTP Server application is configured to listen at port 80,
This value is defined in the :file:`samples/net/http_server/src/config.h`
file:

.. code-block:: c

	#define ZEPHYR_PORT		80

Open the project configuration file for your platform, for example the
:file:`prj_frdm_k64f.conf` file is the configuration file for the
:ref:`frdm_k64f` board. For IPv4 networks, set the following variables:

.. code-block:: console

	CONFIG_NET_IPV4=y
	CONFIG_NET_IPV6=n

IPv6 is the preferred routing technology for this sample application,
if CONFIG_NET_IPV6=y is set, the value of CONFIG_NET_IPV4=y is ignored.

This sample code only supports static IP addresses that are defined in the
project configuration file:

.. code-block:: console

	CONFIG_NET_APP_MY_IPV6_ADDR="2001:db8::1"
	CONFIG_NET_APP_MY_IPV4_ADDR="192.168.1.101"

Adding URLs
===========

To define a new URL or to change how a URL is processed by the HTTP server,
open the :file:`samples/net/http_server/src/main.c` file and locate the
following lines:

.. code-block:: c

	http_url_default_handler(http_write_soft_404_not_found);
	http_url_add("/headers", HTTP_URL_STANDARD, http_write_header_fields);
	http_url_add("/index.html", HTTP_URL_STANDARD, http_write_it_works);

The first line defines how Zephyr will deal with unknown URLs. In this case,
it will respond with a soft HTTP 404 status code, i.e. an HTTP 200 OK status
code with a 404 Not Found HTML body.

The second line must be interpreted as follows: requests to /headers,
/headers/index.html and in general to /headers/xxx, will trigger the
http_write_header_fields routine that prints the received HTTP
Header Fields. In this case, "xxx" must be understood as any resource
under the /headers/ URL.

The third line will trigger a routine that prints an HTML It Works!
message when the /index.html or /index.html/xxx URLs are found.

To build this sample on your Linux host computer, open a terminal window,
locate the source code of this sample application and type:

.. code-block:: console

	make BOARD=frdm_k64f

The FRDM K64F board is detected as a USB storage device. The board
must be mounted (i.e. to /mnt) to 'flash' the binary:

.. code-block:: console

    $ cp outdir/frdm_k64f/zephyr.bin /mnt

On Linux, use the 'dmesg' program to find the right USB device for the
FRDM serial console. Assuming that this device is ttyACM0, open a
terminal window and type:

.. code-block:: console

    $ screen /dev/ttyACM0 115200

Once the binary is loaded into the FRDM board, press the RESET button.

Refer to the board documentation in Zephyr, :ref:`frdm_k64f`,
for more information about this board and how to access the FRDM
serial console under other operating systems.

Sample Output
=============

Assume that this HTTP server is configured to listen at 192.168.1.101 port 80.
On your Linux host computer, open a terminal window and type:

.. code-block:: console

	wget 192.168.1.101/index.html

wget will show:

.. code-block:: console

	--2017-01-17 00:37:44--  http://192.168.1.101/
	Connecting to 192.168.1.101:80... connected.
	HTTP request sent, awaiting response... 200 OK
	Length: unspecified [text/html]
	Saving to: ‘index.html’

The HTML file generated by Zephyr and downloaded by wget is:

.. code-block:: html

	<html>
	<head>
	<title>Zephyr HTTP Server</title>
	</head>
	<body><h1><center>It Works!</center></h1></body>
	</html>

The screen application will display the following information:

.. code-block:: console

	[dev/eth_mcux] [INF] eth_0_init: Enabled 100M full-duplex mode.
	[dev/eth_mcux] [DBG] eth_0_init: MAC 00:04:9f:c9:29:6e
	Zephyr HTTP Server
	Address: 192.168.1.101, port: 80

	----------------------------------------------------
	[print_client_banner:42] Connection accepted
	Address: 192.168.1.10, port: 54327
	[http_ctx_get:268] Free ctx found, index: 0
	[http_write:59] net_nbuf_get_tx, rc: 0 <OK>
	[http_write:82] net_context_send: 0 <OK>
	[http_rx_tx:86] Connection closed by peer


To obtain the HTTP Header Fields web page, use the following command:

.. code-block:: console

	wget 192.168.1.101/headers -O index.html

wget will show:

.. code-block:: console

	--2017-01-19 22:09:55--  http://192.168.1.101/headers
	Connecting to 192.168.1.101:80... connected.
	HTTP request sent, awaiting response... 200 OK
	Length: unspecified [text/html]
	Saving to: ‘index.html’

This is the HTML file generated by Zephyr and downloaded by wget:

.. code-block:: html

	<html>
	<head>
	<title>Zephyr HTTP Server</title>
	</head>
	<body>
	<h1>Zephyr HTTP server</h1>
	<h2>HTTP Header Fields</h2>
	<ul>
	<li>User-Agent: Wget/1.16 (linux-gnu)</li>
	<li>Accept: */*</li>
	<li>Host: 192.168.1.101</li>
	<li>Connection: Keep-Alive</li>
	</ul>
	<h2>HTTP Method: GET</h2>
	<h2>URL: /headers</h2>
	<h2>Server: arm</h2>
	</body>
	</html>

To test the 404 Not Found soft error, use the following command:

.. code-block:: console

	wget 192.168.1.101/not_found -O index.html

Zephyr will generate an HTTP response with the following header:

.. code-block:: console

	HTTP/1.1 200 OK
	Content-Type: text/html
	Transfer-Encoding: chunked

and this is the HTML message that wget will save:

.. code-block:: html

	<html>
	<head>
	<title>Zephyr HTTP Server</title>
	</head>
	<body><h1><center>404 Not Found</center></h1></body>
	</html>

To test the HTTP Basic Authentication functionality, use the
following command:

.. code-block:: console

	wget 192.168.1.101/auth -O index.html --user=zephyr --password=0123456789

the :file:`index.html` file will contain the following information:

.. code-block:: html

	<html>
	<head>
	<title>Zephyr HTTP Server</title>
	</head>
	<body>
	<h1><center>Zephyr HTTP server</center></h1>
	<h2><center>user: zephyr, password: 0123456789</center></h2>
	</body>
	</html>

HTTPS Server
============

The sample code also includes a HTTPS (HTTP over TLS) server example
running side by side with the HTTP server, this server runs on qemu.
In order to compile and run the code execute:

.. code-block:: console

        make BOARD=qemu_x86 run

The sample code supports only one hard-coded valid URL (index.html) and
will return 404 code for other requests.

Sample Output
=============

The app will show the following on the screen:

.. code-block:: console

	Zephyr HTTP Server
	Address: 192.0.2.1, port: 80
	Zephyr HTTPS Server
	Address: 192.0.2.1, port: 443
	failed
	! mbedtls_ssl_handshake returned -29312

Now execute the following command on a different terminal window

.. code-block:: console

	wget https://192.0.2.1 --no-check-certificate

This will be shown on the screen

.. code-block:: console

	Connecting to 192.0.2.1:443... connected.
	WARNING: cannot verify 192.0.2.1's certificate
	Unable to locally verify the issuer's authority.
	HTTP request sent, awaiting response... 200 OK
	Length: unspecified [text/html]
	Saving to: ‘index.html’

	index.html                                            [ <=> ]

The inspection of the file index.html will show

.. code-block:: console

	<h2>Zephyr TLS Test Server</h2>
	<p>Successful connection</p>

Known Issues and Limitations
============================

- Currently, this sample application only generates HTTP responses in
  chunk transfer mode.
- Clients must close the connection to allow the HTTP server to release
  the network context and accept another connection.
- The use of mbedTLS and IPv6 takes more than the available ram for the
  emulation platform, so only IPv4 works for now in QEMU.
