Store username in Session.
[dftpd.git] / Server.cpp
blobcdd97ceec738afba87342422841f40aa3de446ad
1 #include <iostream>
2 #include <string.h>
3 #include <errno.h>
4 #include <netinet/in.h>
5 #include <arpa/inet.h>
6 #include <sys/socket.h>
7 #include "Server.hpp"
8 #include "AuthNone.hpp"
10 Server::Server()
11 : m_listener( new Listener )
12 , m_sessionController( new SessionController )
13 , m_auth( new AuthNone )
15 std::cout << "Dumb FTP server\nIP: " << m_listener->GetIPAddr() << std::endl;
17 m_listener->Listen();
20 Server::~Server()
22 std::cout << "[Server] Shutting down\n";
25 ServerPtr Server::Create()
27 ServerPtr ret( new Server );
28 ret->m_this = ret;
30 ret->InitListener();
32 return ret;
35 void Server::Tick()
37 m_listener->Tick();
38 m_sessionController->Tick();
41 void Server::IncomingConnection( int sock )
43 sockaddr_in addr;
44 socklen_t size = sizeof( sockaddr_in );
46 if( getpeername( sock, (sockaddr*)&addr, &size ) == -1 )
48 throw strerror( errno );
51 std::cout << "[Server] Incoming connection from " << inet_ntoa( addr.sin_addr ) << std::endl;
53 m_sessionController->Add( Session::Create( sock, m_sessionController, m_auth ) );
56 void Server::InitListener()
58 m_listener->SetServer( m_this );