TrinityCore
Loading...
Searching...
No Matches
IpBanCheckConnectionInitializer.h
Go to the documentation of this file.
1
/*
2
* This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3
*
4
* This program is free software; you can redistribute it and/or modify it
5
* under the terms of the GNU General Public License as published by the
6
* Free Software Foundation; either version 2 of the License, or (at your
7
* option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12
* more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program. If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#ifndef TRINITYCORE_IP_BAN_CHECK_CONNECTION_INITIALIZER_H
19
#define TRINITYCORE_IP_BAN_CHECK_CONNECTION_INITIALIZER_H
20
21
#include "
AsioHacksFwd.h
"
22
#include "
DatabaseEnvFwd.h
"
23
#include "
QueryCallback.h
"
24
#include "
SocketConnectionInitializer.h
"
25
26
namespace
Trinity::Net
27
{
28
namespace
IpBanCheckHelpers
29
{
30
TC_SHARED_API
QueryCallback
AsyncQuery
(boost::asio::ip::address
const
& ipAddress);
31
TC_SHARED_API
bool
IsBanned
(
PreparedQueryResult
const
& result);
32
TC_SHARED_API
void
LogFailure
(boost::asio::ip::address
const
& ipAddress);
33
}
34
35
template
<
typename
SocketImpl>
36
struct
IpBanCheckConnectionInitializer
final :
SocketConnectionInitializer
37
{
38
explicit
IpBanCheckConnectionInitializer
(SocketImpl* socket) :
_socket
(socket) { }
39
40
void
Start
()
override
41
{
42
_socket
->QueueQuery(
IpBanCheckHelpers::AsyncQuery
(
_socket
->GetRemoteIpAddress()).
WithPreparedCallback
([socketRef =
_socket
->weak_from_this(), self = this->shared_from_this()](
PreparedQueryResult
const
& result)
43
{
44
std::shared_ptr<SocketImpl> socket = static_pointer_cast<SocketImpl>(socketRef.lock());
45
if (!socket)
46
return;
47
48
if (IpBanCheckHelpers::IsBanned(result))
49
{
50
IpBanCheckHelpers::LogFailure(socket->GetRemoteIpAddress());
51
socket->CloseSocket();
52
return;
53
}
54
55
self->InvokeNext();
56
}));
57
}
58
59
private
:
60
SocketImpl*
_socket
;
61
};
62
}
63
64
#endif
// TRINITYCORE_IP_BAN_CHECK_CONNECTION_INITIALIZER_H
AsioHacksFwd.h
DatabaseEnvFwd.h
PreparedQueryResult
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition
DatabaseEnvFwd.h:46
TC_SHARED_API
#define TC_SHARED_API
Definition
Define.h:123
QueryCallback.h
SocketConnectionInitializer.h
QueryCallback
Definition
QueryCallback.h:30
QueryCallback::WithPreparedCallback
QueryCallback && WithPreparedCallback(std::function< void(PreparedQueryResult)> &&callback)
Definition
QueryCallback.cpp:51
Trinity::Net::IpBanCheckHelpers::AsyncQuery
TC_SHARED_API QueryCallback AsyncQuery(boost::asio::ip::address const &ipAddress)
Definition
IpBanCheckConnectionInitializer.cpp:23
Trinity::Net::IpBanCheckHelpers::IsBanned
TC_SHARED_API bool IsBanned(PreparedQueryResult const &result)
Definition
IpBanCheckConnectionInitializer.cpp:30
Trinity::Net::IpBanCheckHelpers::LogFailure
TC_SHARED_API void LogFailure(boost::asio::ip::address const &ipAddress)
Definition
IpBanCheckConnectionInitializer.cpp:46
Trinity::Net
Definition
AsioHacksFwd.h:73
Trinity::Net::IpBanCheckConnectionInitializer
Definition
IpBanCheckConnectionInitializer.h:37
Trinity::Net::IpBanCheckConnectionInitializer::_socket
SocketImpl * _socket
Definition
IpBanCheckConnectionInitializer.h:60
Trinity::Net::IpBanCheckConnectionInitializer::Start
void Start() override
Definition
IpBanCheckConnectionInitializer.h:40
Trinity::Net::IpBanCheckConnectionInitializer::IpBanCheckConnectionInitializer
IpBanCheckConnectionInitializer(SocketImpl *socket)
Definition
IpBanCheckConnectionInitializer.h:38
Trinity::Net::SocketConnectionInitializer
Definition
SocketConnectionInitializer.h:27
server
shared
Networking
ConnectionInitializers
IpBanCheckConnectionInitializer.h
Generated on Sun May 10 2026 02:09:16 for TrinityCore by
1.9.8