Add http support.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3184 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-08-27 22:38:59 +00:00
parent 9735d9deea
commit cd7a6421ce
2 changed files with 136 additions and 31 deletions

View File

@@ -261,6 +261,53 @@ handle_tcp(struct descr *d, int index, int min_free)
n = 0;
}
}
#ifdef HTTP
else if(strncmp(d[index].buf, "GET ", 4) == 0 &&
strncmp(d[index].buf + d[index].len - 4, "\r\n\r\n", 4) == 0){
char *s, *p, *t;
void *data;
int len;
s = d[index].buf;
p = strstr(s, "\r\n");
*p = 0;
p = NULL;
kdc_log(5, "HTTP request");
strtok_r(s, " \t", &p);
t = strtok_r(NULL, " \t", &p);
if(t == NULL){
}
data = malloc(strlen(t));
len = base64_decode(t, data);
if(len < 0){
const char *msg =
"HTTP/1.1 404 Not found\r\n"
"Server: Heimdal/" VERSION "\r\n"
"Content-type: text/html\r\n"
"Content-transfer-encoding: 8bit\r\n\r\n"
"<TITLE>404 Not found</TITLE>\r\n"
"<H1>404 Not found</H1>\r\n"
"That page doesn't exist, maybe you are looking for "
"<a href=\"http://www.pdc.kth.se/heimdal\">Heimdal</a>?\r\n";
write(d[index].s, msg, strlen(msg));
free(data);
clear_descr(d + index);
return;
}
{
const char *msg =
"HTTP/1.1 200 OK\r\n"
"Server: Heimdal/" VERSION "\r\n"
"Content-type: application/octet-stream\r\n"
"Content-transfer-encoding: binary\r\n\r\n";
write(d[index].s, msg, strlen(msg));
}
memcpy(d[index].buf, data, len);
d[index].len = len;
n = 0;
free(data);
}
#endif
if(n == 0){
do_request(d[index].buf, d[index].len,
d[index].s, (struct sockaddr*)&from, from_len);