/*! * \brief Transmit a redirection page. */ int HttpSendRedirection(HTTPD_SESSION *hs, int code, ...) { va_list ap; int len; char *cp; char *loc; va_start(ap, code); for (len = 0; (cp = va_arg(ap, char *)) != NULL; len += strlen(cp)); va_end(ap); loc = malloc(len + 1); if (loc) { static const char body[] = "<html><body><a href=\"%s\">Continue</a></body></html>\r\n"; HTTP_STREAM *sp = hs->s_stream; HttpSendHeaderTop(hs, code); va_start(ap, code); for (*loc = '\0'; (cp = va_arg(ap, char *)) != NULL; strcat(loc, cp)); va_end(ap); #if HTTP_VERSION >= 0x10 s_vputs(sp, ct_Location, ": ", loc, "\r\n", NULL); HttpSendHeaderBottom(hs, "text", "html", sizeof(body) - 1 + strlen(loc) - 2); #endif s_printf(sp, body, loc); s_flush(sp); free(loc); } return 0; }
static int CgiClock(HTTPD_SESSION *hs) { time_t now; const struct tm *ltm; #if defined(NUT_OS) NutSleep(1000); #elif defined(_WIN32) Sleep(1000); #else #warning Unknown OS, sleep missing #endif HttpSendHeaderTop(hs, 200); s_puts("Cache-Control: no-cache, must-revalidate\r\n", hs->s_stream); s_puts("Content-Type: text/html; charset=iso-8859-1\r\n", hs->s_stream); s_puts("Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n", hs->s_stream); chprintf((BaseSequentialStream *)&itm_port, "%s\n", "****CgiClock****"); HttpSendHeaderBottom(hs, "text", "html", -1); time(&now); ltm = localtime(&now); s_printf(hs->s_stream, "{\"time\": \"%02d:%02d:%02d\"}\r\n", ltm->tm_hour, ltm->tm_min, ltm->tm_sec); s_flush(hs->s_stream); return 0; }
static int SendResult(HTTPD_SESSION *hs, char *first, char *last) { static const char head[] = "<html>" "<head>" "<title>Form Result</title>" "</head>"; static const char body[] = "<body>" "<p>Hello %s %s!</p>" "<a href=\"/index.html\">back</a>" "</body>" "<html>"; HttpSendHeaderTop(hs, 200); HttpSendHeaderBottom(hs, "text", "html", -1); s_puts(head, hs->s_stream); s_printf(hs->s_stream, body, first, last); s_flush(hs->s_stream); return 0; }