HashList *StaticFilemappings[4] = {NULL, NULL, NULL, NULL};
/*
{
- lprintf(9, "Suspicious request. Ignoring.");
+ syslog(9, "Suspicious request. Ignoring.");
hprintf("HTTP/1.1 404 Security check failed\r\n");
hprintf("Content-Type: text/plain\r\n\r\n");
wc_printf("You have sent a malformed or invalid request.\r\n");
fd = open(what, O_RDONLY);
if (fd <= 0) {
- lprintf(9, "output_static('%s') [%s] -- NOT FOUND --\n", what, ChrPtr(WC->Hdr->this_page));
+ syslog(9, "output_static('%s') [%s] -- NOT FOUND --\n", what, ChrPtr(WC->Hdr->this_page));
hprintf("HTTP/1.1 404 %s\r\n", strerror(errno));
hprintf("Content-Type: text/plain\r\n");
begin_burst();
content_type = GuessMimeByFilename(what, len);
if (fstat(fd, &statbuf) == -1) {
- lprintf(9, "output_static('%s') -- FSTAT FAILED --\n", what);
+ syslog(9, "output_static('%s') -- FSTAT FAILED --\n", what);
hprintf("HTTP/1.1 404 %s\r\n", strerror(errno));
hprintf("Content-Type: text/plain\r\n");
begin_burst();
wc_printf("Cannot fstat %s: %s\n", what, strerror(errno));
end_burst();
+ if (fd > 0) close(fd);
return;
}
if (StrBufReadBLOB(WC->WBuf, &fd, 1, bytes, &Err) < 0)
{
if (fd > 0) close(fd);
- lprintf(9, "output_static('%s') -- FREAD FAILED (%s) --\n", what, strerror(errno));
+ syslog(9, "output_static('%s') -- FREAD FAILED (%s) --\n", what, strerror(errno));
hprintf("HTTP/1.1 500 internal server error \r\n");
hprintf("Content-Type: text/plain\r\n");
end_burst();
close(fd);
-#ifndef TECH_PREVIEW
- lprintf(9, "output_static('%s') %s\n", what, content_type);
-#endif
http_transmit_thing(content_type, 2);
}
if (yesbstr("force_close_session")) {
StrBufAppendBufPlain(OneWebName, filedir_entry->d_name, d_namelen, 0);
Put(DirList, SKEY(OneWebName), FileName, HFreeStrBuf);
- /* lprintf(9, "[%s | %s]\n", ChrPtr(OneWebName), ChrPtr(FileName)); */
+ /* syslog(9, "[%s | %s]\n", ChrPtr(OneWebName), ChrPtr(FileName)); */
break;
default:
break;
}
}
-extern void do_404(void);
-
void output_static_safe(HashList *DirList)
{
wcsession *WCC = WC;
output_static(ChrPtr(vFile));
}
else {
- lprintf(1, "output_static_safe() file %s not found. \n",
+ syslog(1, "output_static_safe() file %s not found. \n",
ChrPtr(WCC->Hdr->HR.ReqLine));
///TODO: detect image & output blank image
do_404();
output_static_safe(StaticFilemappings[3]);
}
+
+/*
+ * robots.txt
+ */
+void robots_txt(void) {
+ output_headers(0, 0, 0, 0, 0, 0);
+
+ hprintf("Content-type: text/plain\r\n"
+ "Server: %s\r\n"
+ "Connection: close\r\n",
+ PACKAGE_STRING);
+ begin_burst();
+
+ wc_printf("User-agent: *\r\n"
+ "Disallow: /printmsg\r\n"
+ "Disallow: /msgheaders\r\n"
+ "Disallow: /groupdav\r\n"
+ "Disallow: /do_template\r\n"
+ "Disallow: /static\r\n"
+ "Sitemap: %s/sitemap.xml\r\n"
+ "\r\n"
+ ,
+ ChrPtr(site_prefix)
+ );
+
+ wDumpContent(0);
+}
+
+
void
ServerStartModule_STATIC
(void)
LoadStaticDir(static_dirs[2], StaticFilemappings[2], "");
LoadStaticDir(static_dirs[3], StaticFilemappings[3], "");
+ WebcitAddUrlHandler(HKEY("robots.txt"), "", 0, robots_txt, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC|LOGCHATTY);
WebcitAddUrlHandler(HKEY("favicon.ico"), "", 0, output_flat_static, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC|LOGCHATTY);
WebcitAddUrlHandler(HKEY("static"), "", 0, output_static_0, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC|LOGCHATTY);
WebcitAddUrlHandler(HKEY("static.local"), "", 0, output_static_1, ANONYMOUS|COOKIEUNNEEDED|ISSTATIC|LOGCHATTY);