mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Extract "not an HTTP proxy" messages.
This commit is contained in:
+28
-26
@@ -1478,6 +1478,32 @@ socks_request_set_socks5_error(socks_request_t *req,
|
||||
req->reply[3] = 0x01; // ATYP field.
|
||||
}
|
||||
|
||||
const char SOCKS_PROXY_IS_NOT_AN_HTTP_PROXY_MSG[] =
|
||||
"HTTP/1.0 501 Tor is not an HTTP Proxy\r\n"
|
||||
"Content-Type: text/html; charset=iso-8859-1\r\n\r\n"
|
||||
"<html>\n"
|
||||
"<head>\n"
|
||||
"<title>Tor is not an HTTP Proxy</title>\n"
|
||||
"</head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Tor is not an HTTP Proxy</h1>\n"
|
||||
"<p>\n"
|
||||
"It appears you have configured your web browser to use Tor as "
|
||||
"an HTTP proxy.\n\n"
|
||||
"This is not correct: Tor is a SOCKS proxy, not an HTTP proxy.\n"
|
||||
"Please configure your client accordingly.\n"
|
||||
"</p>\n"
|
||||
"<p>\n"
|
||||
"See <a href=\"https://www.torproject.org/documentation.html\">"
|
||||
"https://www.torproject.org/documentation.html</a> for more "
|
||||
"information.\n"
|
||||
"<!-- Plus this comment, to make the body response more than 512 bytes, so "
|
||||
" IE will be willing to display it. Comment comment comment comment "
|
||||
" comment comment comment comment comment comment comment comment.-->\n"
|
||||
"</p>\n"
|
||||
"</body>\n"
|
||||
"</html>\n";
|
||||
|
||||
/** Implementation helper to implement fetch_from_*_socks. Instead of looking
|
||||
* at a buffer's contents, we look at the <b>datalen</b> bytes of data in
|
||||
* <b>data</b>. Instead of removing data from the buffer, we set
|
||||
@@ -1834,32 +1860,8 @@ parse_socks(const char *data, size_t datalen, socks_request_t *req,
|
||||
case 'H': /* head */
|
||||
case 'P': /* put/post */
|
||||
case 'C': /* connect */
|
||||
strlcpy((char*)req->reply,
|
||||
"HTTP/1.0 501 Tor is not an HTTP Proxy\r\n"
|
||||
"Content-Type: text/html; charset=iso-8859-1\r\n\r\n"
|
||||
"<html>\n"
|
||||
"<head>\n"
|
||||
"<title>Tor is not an HTTP Proxy</title>\n"
|
||||
"</head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Tor is not an HTTP Proxy</h1>\n"
|
||||
"<p>\n"
|
||||
"It appears you have configured your web browser to use Tor as an HTTP proxy."
|
||||
"\n"
|
||||
"This is not correct: Tor is a SOCKS proxy, not an HTTP proxy.\n"
|
||||
"Please configure your client accordingly.\n"
|
||||
"</p>\n"
|
||||
"<p>\n"
|
||||
"See <a href=\"https://www.torproject.org/documentation.html\">"
|
||||
"https://www.torproject.org/documentation.html</a> for more "
|
||||
"information.\n"
|
||||
"<!-- Plus this comment, to make the body response more than 512 bytes, so "
|
||||
" IE will be willing to display it. Comment comment comment comment "
|
||||
" comment comment comment comment comment comment comment comment.-->\n"
|
||||
"</p>\n"
|
||||
"</body>\n"
|
||||
"</html>\n"
|
||||
, MAX_SOCKS_REPLY_LEN);
|
||||
strlcpy((char*)req->reply, SOCKS_PROXY_IS_NOT_AN_HTTP_PROXY_MSG,
|
||||
MAX_SOCKS_REPLY_LEN);
|
||||
req->replylen = strlen((char*)req->reply)+1;
|
||||
/* fall through */
|
||||
default: /* version is not socks4 or socks5 */
|
||||
|
||||
+27
-24
@@ -4888,6 +4888,32 @@ peek_connection_has_http_command(connection_t *conn)
|
||||
return peek_buf_has_http_command(conn->inbuf);
|
||||
}
|
||||
|
||||
const char CONTROLPORT_IS_NOT_AN_HTTP_PROXY_MSG[] =
|
||||
"HTTP/1.0 501 Tor ControlPort is not an HTTP proxy"
|
||||
"\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n"
|
||||
"<html>\n"
|
||||
"<head>\n"
|
||||
"<title>Tor's ControlPort is not an HTTP proxy</title>\n"
|
||||
"</head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Tor's ControlPort is not an HTTP proxy</h1>\n"
|
||||
"<p>\n"
|
||||
"It appears you have configured your web browser to use Tor's control port"
|
||||
" as an HTTP proxy.\n"
|
||||
"This is not correct: Tor's default SOCKS proxy port is 9050.\n"
|
||||
"Please configure your client accordingly.\n"
|
||||
"</p>\n"
|
||||
"<p>\n"
|
||||
"See <a href=\"https://www.torproject.org/documentation.html\">"
|
||||
"https://www.torproject.org/documentation.html</a> for more "
|
||||
"information.\n"
|
||||
"<!-- Plus this comment, to make the body response more than 512 bytes, so "
|
||||
" IE will be willing to display it. Comment comment comment comment "
|
||||
" comment comment comment comment comment comment comment comment.-->\n"
|
||||
"</p>\n"
|
||||
"</body>\n"
|
||||
"</html>\n";
|
||||
|
||||
/** Called when data has arrived on a v1 control connection: Try to fetch
|
||||
* commands from conn->inbuf, and execute them.
|
||||
*/
|
||||
@@ -4930,30 +4956,7 @@ connection_control_process_inbuf(control_connection_t *conn)
|
||||
/* If the user has the HTTP proxy port and the control port confused. */
|
||||
if (conn->base_.state == CONTROL_CONN_STATE_NEEDAUTH &&
|
||||
peek_connection_has_http_command(TO_CONN(conn))) {
|
||||
connection_write_str_to_buf("HTTP/1.0 501 Tor ControlPort is not a proxy"
|
||||
"\r\nContent-Type: text/html; charset=iso-8859-1\r\n\r\n"
|
||||
"<html>\n"
|
||||
"<head>\n"
|
||||
"<title>Tor's ControlPort is not proxy</title>\n"
|
||||
"</head>\n"
|
||||
"<body>\n"
|
||||
"<h1>Tor's ControlPort is not a proxy</h1>\n"
|
||||
"<p>\n"
|
||||
"It appears you have configured your web browser to use Tor's control port"
|
||||
" as an HTTP proxy.\n"
|
||||
"This is not correct: Tor's default SOCKS proxy port is 9050.\n"
|
||||
"Please configure your client accordingly.\n"
|
||||
"</p>\n"
|
||||
"<p>\n"
|
||||
"See <a href=\"https://www.torproject.org/documentation.html\">"
|
||||
"https://www.torproject.org/documentation.html</a> for more "
|
||||
"information.\n"
|
||||
"<!-- Plus this comment, to make the body response more than 512 bytes, so "
|
||||
" IE will be willing to display it. Comment comment comment comment "
|
||||
" comment comment comment comment comment comment comment comment.-->\n"
|
||||
"</p>\n"
|
||||
"</body>\n"
|
||||
"</html>\n", conn);
|
||||
connection_write_str_to_buf(CONTROLPORT_IS_NOT_AN_HTTP_PROXY_MSG, conn);
|
||||
log_notice(LD_CONTROL, "Received HTTP request on ControlPort");
|
||||
connection_mark_and_flush(TO_CONN(conn));
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user