* Very simple HTTP server interface. This HTTP server supports basic HTTP
* features. All pages on the server are dynamically created by the caller
* of this interface. The server does not support plugins, modules, cgi-bin,
- * server-side includes or any other special features.
+ * server-side includes or any other special features. Naturally, the caller
+ * of this interface may itself implement such features.
*
***/
*
* DESCRIPTION
*
- * The HTTP request callback, that is called everytime a new HTTP request
+ * The HTTP request callback that is called everytime a new HTTP request
* comes from a HTTP client. The `uri' is the requested URI (web page),
* and the `method' is the HTTP request method (GET, POST, etc.). The
* `data' is non-NULL only if the `method' is POST, and it includes the
* EXAMPLE
*
* silc_http_server_add_header(httpd, conn, "Content-Type", "image/jpeg");
+ * silc_http_server_send(httpd, conn, image_data);
*
***/
SilcBool silc_http_server_add_header(SilcHttpServer httpd,
"<html><head></head><body>",
silc_http_server_get_header(httpd, conn,
"User-Agent"),
+ "<p><img src=\"pr_1995.jpg\">",
"<p>OUR DEFAULT PAGE IS THIS: ",
silc_time_string(silc_time()),
"<P><FORM action=\"/posttest\" method=\"post\"><P>"
silc_buffer_purge(&page);
return;
}
+
+ if (!strcmp(uri, "/pr_1995.jpg")) {
+ SilcUInt32 data_len;
+ unsigned char *data = silc_file_readfile("pr_1995.jpg", &data_len);
+ if (!data) {
+ silc_http_server_send_error(httpd, conn, "404 Not Found", NULL);
+ return;
+ }
+ silc_buffer_set(&page, data, data_len),
+ silc_http_server_add_header(httpd, conn, "Content-Type", "image/jpeg");
+ silc_http_server_send(httpd, conn, &page);
+ silc_buffer_purge(&page);
+ return;
+ }
}
if (!strcasecmp(method, "POST")) {