commit - b1328b3e37580e44e7c53530bfc32374b74514fc
commit + 95a4a5a1e8d0952ee0d2523dc31df7170d80e0b3
blob - ae872cfb0d22ad79db91ef2e1032bae6db071f17
blob + 865c86621023df5c6c3d96bfad927b4eab09a613
--- gotwebd/fcgi.c
+++ gotwebd/fcgi.c
bcopy(buf, c->http_host, val_len);
c->http_host[val_len] = '\0';
}
- if (val_len < MAX_DOCUMENT_ROOT && strcmp(env_entry->val,
- "DOCUMENT_ROOT") == 0 && c->document_root[0] == '\0') {
-
- /* drop first char, as it's always / */
- dr_buf = &buf[1];
-
- bcopy(dr_buf, c->document_root, val_len - 1);
- c->document_root[val_len] = '\0';
+ if (val_len < MAX_SCRIPT_NAME && strcmp(env_entry->val,
+ "SCRIPT_NAME") == 0 && c->script_name[0] == '\0') {
+ bcopy(dr_buf, c->script_name, val_len);
+ c->script_name[val_len] = '\0';
}
if (val_len < MAX_SERVER_NAME && strcmp(env_entry->val,
"SERVER_NAME") == 0 && c->server_name[0] == '\0') {
- /* drop first char, as it's always / */
-
bcopy(buf, c->server_name, val_len);
c->server_name[val_len] = '\0';
}
blob - 363270dc22f396c6ba871d5448b712f226c3a791
blob + f42caf75b1d7617a6d2c489ec63602ed33a0957d
--- gotwebd/gotweb.c
+++ gotwebd/gotweb.c
static void gotweb_free_querystring(struct querystring *);
static void gotweb_free_repo_dir(struct repo_dir *);
-struct server *gotweb_get_server(uint8_t *, uint8_t *, uint8_t *);
+struct server *gotweb_get_server(uint8_t *, uint8_t *);
void
gotweb_process_request(struct request *c)
if (c->sock->client_status == CLIENT_DISCONNECT)
return;
/* get the gotwebd server */
- srv = gotweb_get_server(c->server_name, c->document_root, c->http_host);
+ srv = gotweb_get_server(c->server_name, c->http_host);
if (srv == NULL) {
log_warnx("%s: error server is NULL", __func__);
goto err;
}
struct server *
-gotweb_get_server(uint8_t *server_name, uint8_t *document_root,
- uint8_t *subdomain)
+gotweb_get_server(uint8_t *server_name, uint8_t *subdomain)
{
struct server *srv = NULL;
- /* check against document_root first */
+ /* check against the server name first */
if (strlen(server_name) > 0)
TAILQ_FOREACH(srv, &gotwebd_env->servers, entry)
if (strcmp(srv->name, server_name) == 0)
- goto done;
-
- /* check against document_root second */
- if (strlen(document_root) > 0)
- TAILQ_FOREACH(srv, &gotwebd_env->servers, entry)
- if (strcmp(srv->name, document_root) == 0)
goto done;
- /* check against subdomain third */
+ /* check against subdomain second */
if (strlen(subdomain) > 0)
TAILQ_FOREACH(srv, &gotwebd_env->servers, entry)
if (strcmp(srv->name, subdomain) == 0)
{
struct server *srv = c->srv;
struct querystring *qs = c->t->qs;
- char droot[PATH_MAX];
int r;
-
- if (strlen(c->document_root) > 0) {
- r = snprintf(droot, sizeof(droot), "/%s/", c->document_root);
- if (r < 0 || (size_t)r >= sizeof(droot))
- return got_error(GOT_ERR_NO_SPACE);
- } else
- strlcpy(droot, "/", sizeof(droot));
r = fcgi_printf(c, "<!doctype html>\n"
"<html>\n"
"</div>\n" /* #header */
"<div id='site_path'>\n"
"<div id='site_link'>\n"
- "<a href='/%s?index_page=%d'>%s</a>",
+ "<a href='?index_page=%d'>%s</a>",
srv->site_name,
- droot, srv->custom_css,
+ c->script_name, srv->custom_css,
srv->logo_url,
- droot, srv->logo,
- c->document_root, qs->index_page, srv->site_link);
+ c->script_name, srv->logo,
+ qs->index_page, srv->site_link);
if (r == -1)
goto done;
if (qs != NULL) {
if (qs->path != NULL) {
r = fcgi_printf(c, " / "
- "<a href='/%s?index_page=%d&path=%s&action=summary'>"
+ "<a href='?index_page=%d&path=%s&action=summary'>"
"%s</a>",
- c->document_root, qs->index_page, qs->path,
- qs->path);
+ qs->index_page, qs->path, qs->path);
if (r == -1)
goto done;
}
blob - 0e4e5d563e08acd3a08ee2114c3cb043cb55d2bd
blob + ae08f3df1ae9fb58a5fac19a6fcfd02a1aad9247
--- gotwebd/gotwebd.h
+++ gotwebd/gotwebd.h
/* GOTWEB DEFAULTS */
#define MAX_QUERYSTRING 2048
-#define MAX_DOCUMENT_ROOT 255
+#define MAX_SCRIPT_NAME 255
#define MAX_SERVER_NAME 255
#define GOTWEB_GOT_DIR ".got"
char querystring[MAX_QUERYSTRING];
char http_host[GOTWEBD_MAXTEXT];
- char document_root[MAX_DOCUMENT_ROOT];
+ char script_name[MAX_SCRIPT_NAME];
char server_name[MAX_SERVER_NAME];
struct env_head env;