2009-01-25 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added experimental built-in HTTP server. Currently, when a client accesses to the server, it responds with the current download progress. By default, it is disabled. To enable the server, give --enable-http-server option. To change the default port number for the server to listen to, use --http-server-listen-port option. The response HTML is very simple and refreshes it self each 1 second. Because of this refresh, you see flicker in normal web browser such as Firefox. I recommend to use console-based browser such as elinks, w3m. To connect to the server, run 'elinks http://localhost:6800/' while running aria2. Please replace port number '6800'(which is default) with your preference. * src/DownloadEngineFactory.cc * src/HttpHeader.cc * src/HttpHeader.h * src/HttpHeaderProcessor.cc * src/HttpHeaderProcessor.h * src/HttpListenCommand.cc * src/HttpListenCommand.h * src/HttpServer.cc * src/HttpServer.h * src/HttpServerCommand.cc * src/HttpServerCommand.h * src/HttpServerResponseCommand.cc * src/HttpServerResponseCommand.h * src/Makefile.am * src/OptionHandlerFactory.cc * src/Util.cc * src/Util.h * src/help_tags.h * src/option_processing.cc * src/prefs.cc * src/prefs.h * src/usage_text.h * test/HttpHeaderProcessorTest.cc * test/UtilTest.cc
This commit is contained in:
@@ -111,6 +111,31 @@ SharedHandle<HttpHeader> HttpHeaderProcessor::getHttpResponseHeader()
|
||||
return httpHeader;
|
||||
}
|
||||
|
||||
SharedHandle<HttpHeader> HttpHeaderProcessor::getHttpRequestHeader()
|
||||
{
|
||||
// The minimum case of the first line is:
|
||||
// GET / HTTP/1.x
|
||||
// At least 14bytes before \r\n or \n.
|
||||
std::string::size_type delimpos = std::string::npos;
|
||||
if(((delimpos = _buf.find("\r\n")) == std::string::npos &&
|
||||
(delimpos = _buf.find("\n")) == std::string::npos) ||
|
||||
delimpos < 14) {
|
||||
throw DlRetryEx(EX_NO_STATUS_HEADER);
|
||||
}
|
||||
std::deque<std::string> firstLine;
|
||||
Util::slice(firstLine, _buf.substr(0, delimpos), ' ', true);
|
||||
if(firstLine.size() != 3) {
|
||||
throw DlAbortEx("Malformed HTTP request header.");
|
||||
}
|
||||
SharedHandle<HttpHeader> httpHeader(new HttpHeader());
|
||||
httpHeader->setMethod(firstLine[0]);
|
||||
httpHeader->setRequestPath(firstLine[1]);
|
||||
httpHeader->setVersion(firstLine[2]);
|
||||
std::istringstream strm(_buf.substr(14));
|
||||
httpHeader->fill(strm);
|
||||
return httpHeader;
|
||||
}
|
||||
|
||||
std::string HttpHeaderProcessor::getHeaderString() const
|
||||
{
|
||||
std::string::size_type delimpos = std::string::npos;
|
||||
|
||||
Reference in New Issue
Block a user