forked from premiere/premiere-libtorrent
add incoming_connection_alert for logging all successful incoming connections
This commit is contained in:
parent
3e91b45904
commit
f5b5160169
|
@ -1,3 +1,4 @@
|
||||||
|
* add incoming_connection_alert for logging all successful incoming connections
|
||||||
* feature to encrypt peer connections with a secret AES-256 key stored in .torrent file
|
* feature to encrypt peer connections with a secret AES-256 key stored in .torrent file
|
||||||
* deprecated compact storage allocation
|
* deprecated compact storage allocation
|
||||||
* close files in separate thread on systems where close() may block (Mac OS X for instance)
|
* close files in separate thread on systems where close() may block (Mac OS X for instance)
|
||||||
|
|
|
@ -7319,6 +7319,56 @@ having to call ``get_settings()``.
|
||||||
|
|
||||||
``error`` is an error code used for when an error occurs on the feed.
|
``error`` is an error code used for when an error occurs on the feed.
|
||||||
|
|
||||||
|
incoming_connection_alert
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
The incoming connection alert is posted every time we successfully accept
|
||||||
|
an incoming connection, through any mean. The most straigh-forward ways
|
||||||
|
of accepting incoming connections are through the TCP listen socket and
|
||||||
|
the UDP listen socket for uTP sockets. However, connections may also be
|
||||||
|
accepted ofer a Socks5 or i2p listen socket, or via a torrent specific
|
||||||
|
listen socket for SSL torrents.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
struct incoming_connection_alert: alert
|
||||||
|
{
|
||||||
|
// ...
|
||||||
|
virtual std::string message() const;
|
||||||
|
|
||||||
|
int socket_type;
|
||||||
|
tcp::endpoint ip;
|
||||||
|
};
|
||||||
|
|
||||||
|
``socket_type`` tells you what kind of socket the connection was accepted
|
||||||
|
as:
|
||||||
|
|
||||||
|
+==========+=====================================+
|
||||||
|
| value | type |
|
||||||
|
+==========+=====================================+
|
||||||
|
| 0 | none (no socket instantiated) |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 1 | TCP |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 2 | Socks5 |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 3 | HTTP |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 4 | uTP |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 5 | i2p |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 6 | SSL/TCP |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 7 | SSL/Socks5 |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 8 | HTTPS (SSL/HTTP) |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
| 9 | SSL/uTP |
|
||||||
|
+----------+-------------------------------------+
|
||||||
|
|
||||||
|
``ip`` is the IP address and port the connection came from.
|
||||||
|
|
||||||
|
|
||||||
alert dispatcher
|
alert dispatcher
|
||||||
================
|
================
|
||||||
|
|
|
@ -1278,6 +1278,22 @@ namespace libtorrent
|
||||||
error_code error;
|
error_code error;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct TORRENT_EXPORT incoming_connection_alert: alert
|
||||||
|
{
|
||||||
|
incoming_connection_alert(int type_, tcp::endpoint const& ip_)
|
||||||
|
: socket_type(type_)
|
||||||
|
, ip(ip_)
|
||||||
|
{}
|
||||||
|
|
||||||
|
TORRENT_DEFINE_ALERT(incoming_connection_alert);
|
||||||
|
|
||||||
|
const static int static_category = alert::peer_notification;
|
||||||
|
virtual std::string message() const;
|
||||||
|
|
||||||
|
int socket_type;
|
||||||
|
tcp::endpoint ip;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -196,6 +196,7 @@ namespace libtorrent
|
||||||
endpoint_type remote_endpoint(error_code& ec) const;
|
endpoint_type remote_endpoint(error_code& ec) const;
|
||||||
void bind(endpoint_type const& endpoint, error_code& ec);
|
void bind(endpoint_type const& endpoint, error_code& ec);
|
||||||
std::size_t available(error_code& ec) const;
|
std::size_t available(error_code& ec) const;
|
||||||
|
int type();
|
||||||
|
|
||||||
|
|
||||||
template <class Mutable_Buffers>
|
template <class Mutable_Buffers>
|
||||||
|
|
|
@ -566,5 +566,26 @@ namespace libtorrent {
|
||||||
return torrent_alert::message() + " needs SSL certificate";
|
return torrent_alert::message() + " needs SSL certificate";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string incoming_connection_alert::message() const
|
||||||
|
{
|
||||||
|
char msg[600];
|
||||||
|
char const* type_str[] = {
|
||||||
|
"null",
|
||||||
|
"TCP",
|
||||||
|
"Socks5/TCP",
|
||||||
|
"HTTP",
|
||||||
|
"uTP",
|
||||||
|
"i2p",
|
||||||
|
"SSL/TCP",
|
||||||
|
"SSL/Socks5",
|
||||||
|
"HTTPS",
|
||||||
|
"SSL/uTP"
|
||||||
|
};
|
||||||
|
error_code ec;
|
||||||
|
snprintf(msg, sizeof(msg), "incoming connection from %s (%s)"
|
||||||
|
, print_endpoint(ip).c_str(), type_str[socket_type]);
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace libtorrent
|
} // namespace libtorrent
|
||||||
|
|
||||||
|
|
|
@ -2243,6 +2243,11 @@ namespace aux {
|
||||||
(*m_logger) << time_now_string() << " <== INCOMING CONNECTION " << endp << "\n";
|
(*m_logger) << time_now_string() << " <== INCOMING CONNECTION " << endp << "\n";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (m_alerts.should_post<incoming_connection_alert>())
|
||||||
|
{
|
||||||
|
m_alerts.post_alert(incoming_connection_alert(s->type(), endp));
|
||||||
|
}
|
||||||
|
|
||||||
if (!m_settings.enable_incoming_utp
|
if (!m_settings.enable_incoming_utp
|
||||||
&& s->get<utp_stream>())
|
&& s->get<utp_stream>())
|
||||||
{
|
{
|
||||||
|
|
|
@ -164,6 +164,8 @@ namespace libtorrent
|
||||||
std::size_t socket_type::available(error_code& ec) const
|
std::size_t socket_type::available(error_code& ec) const
|
||||||
{ TORRENT_SOCKTYPE_FORWARD_RET(available(ec), 0) }
|
{ TORRENT_SOCKTYPE_FORWARD_RET(available(ec), 0) }
|
||||||
|
|
||||||
|
int socket_type::type() { return m_type; }
|
||||||
|
|
||||||
#ifndef BOOST_NO_EXCEPTIONS
|
#ifndef BOOST_NO_EXCEPTIONS
|
||||||
void socket_type::open(protocol_type const& p)
|
void socket_type::open(protocol_type const& p)
|
||||||
{ TORRENT_SOCKTYPE_FORWARD(open(p)) }
|
{ TORRENT_SOCKTYPE_FORWARD(open(p)) }
|
||||||
|
|
|
@ -1462,6 +1462,11 @@ ctx->set_verify_callback(verify_function, ec);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (alerts().should_post<incoming_connection_alert>())
|
||||||
|
{
|
||||||
|
alerts().post_alert(incoming_connection_alert(s->type(), endp));
|
||||||
|
}
|
||||||
|
|
||||||
if (!settings().enable_incoming_tcp)
|
if (!settings().enable_incoming_tcp)
|
||||||
{
|
{
|
||||||
if (alerts().should_post<peer_blocked_alert>())
|
if (alerts().should_post<peer_blocked_alert>())
|
||||||
|
|
Loading…
Reference in New Issue