/*****

static web server over PPPoE
Once connected, the server will print outs it's IP address on STDIO
You can then access the static page from that address: 'http://x.x.x.x/'

You will need to set the username and password for your account

********/
#define TCPCONFIG 0		// 0 means no predefined configuration
#define USE_PPPOE 0x01	// PPPoE over the first ethernet interface (ETH0).
#define USE_ETHERNET USE_PPPOE	// From DC9.0, you need to explicitly define USE_ETHERNET == USE_PPPOE

/*
#define DCRTCP_DEBUG
#define PPP_DEBUG
#define PPP_VERBOSE
#define PPPOE_DEBUG
#define PPPOE_VERBOSE
#define IP_VERBOSE
#define NET_VERBOSE
*/

#define PAPNAME "charlie"
#define PAPPASSWORD "pword"

#define HTTP_MAXSERVERS 2
#define MAX_TCP_SOCKET_BUFFERS 2

#memmap xmem
#use "dcrtcp.lib"
#use "http.lib"


#define TIMEZONE        -8

#define LCP_TIMEOUT 5000



//#define FRAGSUPPORT		//make sure FRAGSUPPORT is on

/*
 *  ximport is a Dynamic C language feature that takes the binary image
 *  of a file, places it in extended memory on the controller, and
 *  associates a symbol with the physical address on the controller of
 *  the image.
 *
 */

#ximport "samples/tcpip/http/pages/static.html"    index_html
#ximport "samples/tcpip/http/pages/rabbit1.gif"    rabbit1_gif

/*
 *  SSPEC_MIMETABLE_* gives the HTTP server hints about handling incoming
 *  requests.  The server compares the extension of the incoming
 *  request with this list and returns the second field
 *  as the Content-Type field.
 *
 *  The default mime type for '/' must be first
 *
 */
SSPEC_MIMETABLE_START
	SSPEC_MIME(".html", "text/html"),
	SSPEC_MIME(".gif", "image/gif"),
SSPEC_MIMETABLE_END

/*
 *  The static resource table assocates the file image we brought in with ximport
 *  and associates it with its name on the webserver.  In this example
 *  the file "samples/http/pages/static.html" will be sent to the
 *  client when they request either "http://yoururl.com/" or
 *  "http://yoururl.com/index.html"
 *
 */
SSPEC_RESOURCETABLE_START
	SSPEC_RESOURCE_XMEMFILE("/index.html", index_html),
	SSPEC_RESOURCE_XMEMFILE("/rabbit1.gif", rabbit1_gif),
SSPEC_RESOURCETABLE_END


void main()
{
	auto unsigned long t;
	auto char buffer[100];

	sock_init();

	ifconfig(IF_PPPOE0,
				IFS_PPP_ACCEPTIP, 1,
				IFS_PPP_ACCEPTDNS, 1,
				IFS_PPP_REMOTEAUTH, PAPNAME, PAPPASSWORD,
            IFS_DEBUG, 5,
				IFS_UP,
				IFS_END);

	// Wait for it to come up (or fail)
	while(ifpending(IF_PPPOE0) & 1)
		tcp_tick(NULL);


	if(ifstatus(IF_PPPOE0))
		printf("PPPoE established\n");
	else
		printf("PPPoE failed\n");

   // Get the IP address assigned
   ifconfig(IF_PPPOE0, IFG_IPADDR, &t, IFS_END);
	printf("Point your browser to http://%s\n", inet_ntoa( buffer, t));

	http_init();

/*
 *  tcp_reserveport causes the web server to maintain pending requests
 * whenever there is not a listen socket available
 *
 */

   tcp_reserveport(80);

/*
 *  http_handler needs to be called to handle the active http servers.
 */

   while (1) {
      http_handler();
   }

}