|
|
|
@ -236,14 +236,14 @@ display_file(const char *fname)
|
|
|
|
|
while ((nread = fread(buffer, 1, sizeof(buffer), fd)) != 0)
|
|
|
|
|
fwrite(buffer, 1, nread, stdout);
|
|
|
|
|
goto closefd; /* close file descriptor */
|
|
|
|
|
syslog(LOG_DAEMON, "path served %s", fname);
|
|
|
|
|
syslog(LOG_INFO, "path served %s", fname);
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
err:
|
|
|
|
|
/* return an error code and no content */
|
|
|
|
|
status_error(51, "file not found");
|
|
|
|
|
syslog(LOG_DAEMON, "path invalid %s", fname);
|
|
|
|
|
syslog(LOG_INFO, "path invalid %s", fname);
|
|
|
|
|
goto closefd;
|
|
|
|
|
|
|
|
|
|
redirect:
|
|
|
|
@ -252,7 +252,7 @@ redirect:
|
|
|
|
|
goto err;
|
|
|
|
|
|
|
|
|
|
status_redirect(30, target);
|
|
|
|
|
syslog(LOG_DAEMON, "redirection from %s to %s", fname, target);
|
|
|
|
|
syslog(LOG_INFO, "redirection from %s to %s", fname, target);
|
|
|
|
|
|
|
|
|
|
closefd:
|
|
|
|
|
if (S_ISREG(sb.st_mode) != 0)
|
|
|
|
@ -267,7 +267,7 @@ autoindex(const char *path)
|
|
|
|
|
int n = 0;
|
|
|
|
|
struct dirent **namelist; /* this must be freed at last */
|
|
|
|
|
|
|
|
|
|
syslog(LOG_DAEMON, "autoindex: %s", path);
|
|
|
|
|
syslog(LOG_INFO, "autoindex: %s", path);
|
|
|
|
|
|
|
|
|
|
/* use alphasort to always have the same order on every system */
|
|
|
|
|
if ((n = scandir(path, &namelist, NULL, alphasort)) < 0) {
|
|
|
|
@ -356,6 +356,10 @@ main(int argc, char **argv)
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/*
|
|
|
|
|
* set logging options and defaults
|
|
|
|
|
*/
|
|
|
|
|
openlog("vger", LOG_PID, LOG_DAEMON);
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* do chroot if an user is supplied
|
|
|
|
@ -398,7 +402,7 @@ main(int argc, char **argv)
|
|
|
|
|
errlog("request «%s» doesn't match gemini://",
|
|
|
|
|
request);
|
|
|
|
|
}
|
|
|
|
|
syslog(LOG_DAEMON, "request %s", request);
|
|
|
|
|
syslog(LOG_INFO, "request %s", request);
|
|
|
|
|
|
|
|
|
|
/* remove the gemini:// part */
|
|
|
|
|
memmove(request, request + GEMINI_PART, strlen(request) + 1 - GEMINI_PART);
|
|
|
|
@ -506,5 +510,8 @@ file_to_stdout:
|
|
|
|
|
/* regular file to stdout */
|
|
|
|
|
display_file(file);
|
|
|
|
|
|
|
|
|
|
/* end logging */
|
|
|
|
|
closelog();
|
|
|
|
|
|
|
|
|
|
return (0);
|
|
|
|
|
}
|
|
|
|
|