char *htdocs = ".";
+/* Add proper content type to reply per URI */
+
+static void http_content_type(SilcHttpServer httpd, SilcHttpConnection conn,
+ const char *uri)
+{
+ const char *type;
+
+ type = silc_http_server_get_header(httpd, conn, "Content-Type");
+ if (type)
+ silc_http_server_add_header(httpd, conn, "Content-Type", type);
+ else if (strstr(uri, ".jpg"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "image/jpeg");
+ else if (strstr(uri, ".gif"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "image/gif");
+ else if (strstr(uri, ".png"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "image/png");
+ else if (strstr(uri, ".css"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "text/css");
+ else if (strstr(uri, ".htm"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "text/html");
+ else if (strstr(uri, ".php"))
+ silc_http_server_add_header(httpd, conn, "Content-Type", "text/html");
+}
+
/* Serve pages */
static void http_callback_file(SilcHttpServer httpd, SilcHttpConnection conn,
SilcBuffer php;
char *filedata, filename[256];
SilcUInt32 data_len;
- const char *type;
SilcBool usephp = FALSE;
if (!strcasecmp(method, "GET")) {
SILC_LOG_DEBUG(("Filename: '%s'", filename));
if (!usephp) {
- filedata = silc_file_readfile(filename, &data_len);
+ filedata = silc_file_readfile(filename, &data_len, NULL);
if (!filedata) {
silc_http_server_send_error(httpd, conn, "404 Not Found",
"<body><h1>404 Not Found</h1><p>The page you are looking for cannot be located</body>");
return;
}
- type = silc_http_server_get_header(httpd, conn, "Content-Type");
- if (type)
- silc_http_server_add_header(httpd, conn, "Content-Type", type);
- else if (strstr(uri, ".jpg"))
- silc_http_server_add_header(httpd, conn, "Content-Type", "image/jpeg");
- else if (strstr(uri, ".gif"))
- silc_http_server_add_header(httpd, conn, "Content-Type", "image/gif");
- else if (strstr(uri, ".png"))
- silc_http_server_add_header(httpd, conn, "Content-Type", "image/png");
+ http_content_type(httpd, conn, uri);
/* Send page */
silc_buffer_set(&page, filedata, data_len);
return;
}
+ http_content_type(httpd, conn, uri);
+
/* Send page */
silc_http_server_send(httpd, conn, php);
silc_buffer_free(php);
signal(SIGPIPE, SIG_IGN);
SILC_LOG_DEBUG(("Allocating scheduler"));
- schedule = silc_schedule_init(0, NULL);
+ schedule = silc_schedule_init(0, NULL, NULL);
if (!schedule)
goto err;