Support the ident protocol

fix #3211
This commit is contained in:
louiz’
2016-11-15 00:23:19 +01:00
parent ed7e66471f
commit d872c2b492
14 changed files with 323 additions and 19 deletions
+38
View File
@@ -0,0 +1,38 @@
#pragma once
#include <network/tcp_server_socket.hpp>
#include <identd/identd_socket.hpp>
#include <unistd.h>
class BiboumiComponent;
class IdentdServer: public TcpSocketServer<IdentdSocket>
{
public:
IdentdServer(const BiboumiComponent& biboumi_component, std::shared_ptr<Poller> poller, const uint16_t port):
TcpSocketServer<IdentdSocket>(poller, port),
biboumi_component(biboumi_component)
{}
const BiboumiComponent& get_biboumi_component() const
{
return this->biboumi_component;
}
void shutdown()
{
if (this->poller->is_managing_socket(this->socket))
this->poller->remove_socket_handler(this->socket);
::close(this->socket);
}
void clean()
{
this->sockets.erase(std::remove_if(this->sockets.begin(), this->sockets.end(),
[](const std::unique_ptr<IdentdSocket>& socket)
{
return socket->get_socket() == -1;
}),
this->sockets.end());
}
private:
const BiboumiComponent& biboumi_component;
};