wip
This commit is contained in:
1 parent
a447fed9cb
commit
db6bf2f062
4 files changed
+66
-11
No files matched your search
+9
-4
@@ -15,16 +15,21 @@ int main(int args, char **argv) {
|
|||||||
for ( unsigned index = 0; index < args; ++index ) {
|
for ( unsigned index = 0; index < args; ++index ) {
|
||||||
arguments.push_back (argv[index]);
|
arguments.push_back (argv[index]);
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger logger(Logger::DEBUG);
|
Logger logger(Logger::DEBUG);
|
||||||
EventBus eventBus(logger);
|
try{
|
||||||
ConfigManager cfg(logger, arguments);
|
ConfigManager cfg(logger, arguments);
|
||||||
|
EventBus eventBus(logger);
|
||||||
Resolver::Server resolver(logger, eventBus);
|
Resolver::Server resolver(logger, eventBus);
|
||||||
|
|
||||||
//Record testrec = ARecord();
|
//Record testrec = ARecord();
|
||||||
|
logger.debug.ln ("Running DNS resolver...");
|
||||||
|
resolver.run();
|
||||||
logger.debug.ln ("PlaiNS successfully started.");
|
logger.debug.ln ("PlaiNS successfully started.");
|
||||||
|
}
|
||||||
|
catch (std::exception& e)
|
||||||
|
{
|
||||||
|
logger.debug << "Exception: " << e.what() << Logger::commit;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,4 +3,4 @@ add_library(Resolver OBJECT Server.cpp Message.cpp)
|
|||||||
|
|
||||||
target_include_directories(Resolver PUBLIC include)
|
target_include_directories(Resolver PUBLIC include)
|
||||||
|
|
||||||
target_link_libraries(Resolver PRIVATE Core PUBLIC Asio)
|
target_link_libraries(Resolver PRIVATE Core DNS PUBLIC Asio)
|
||||||
+49
-4
@@ -1,11 +1,19 @@
|
|||||||
#include "Server.hpp"
|
#include "Server.hpp"
|
||||||
#include <fstream>
|
|
||||||
//Testing:
|
|
||||||
#include "Message.hpp"
|
#include "Message.hpp"
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
#include <memory>
|
||||||
|
#include <utility>
|
||||||
|
#include <vector>
|
||||||
|
#include <ctime>
|
||||||
|
|
||||||
|
|
||||||
namespace Plains {
|
namespace Plains {
|
||||||
namespace Resolver {
|
namespace Resolver {
|
||||||
|
|
||||||
|
using asio::ip::udp;
|
||||||
|
|
||||||
static char* byteToHex(char c) {
|
static char* byteToHex(char c) {
|
||||||
static char* out = new char[3];
|
static char* out = new char[3];
|
||||||
out[2] = 0x0; //Terminate string
|
out[2] = 0x0; //Terminate string
|
||||||
@@ -31,7 +39,10 @@ static char* intToHex(unsigned byteCount, int c) {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
Server::Server(Logger& logger, EventBus& eventBus) : logger(logger), eventBus(eventBus) {
|
Server::Server(Logger& logger, EventBus& eventBus)
|
||||||
|
: logger(logger),
|
||||||
|
eventBus(eventBus)
|
||||||
|
{
|
||||||
logger.debug << "Testing some stuff..." << Logger::commit;
|
logger.debug << "Testing some stuff..." << Logger::commit;
|
||||||
logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
logger.debug << "Message header overall size: " << sizeof(Message::Header) << Logger::commit;
|
||||||
// logger.debug << "Message::Header size:" << sizeof(Message::Header) << endl;
|
// logger.debug << "Message::Header size:" << sizeof(Message::Header) << endl;
|
||||||
@@ -62,14 +73,48 @@ Server::Server(Logger& logger, EventBus& eventBus) : logger(logger), eventBus(ev
|
|||||||
"Answer Record Count: " << intToHex(2, header->anCount) << Logger::commit <<
|
"Answer Record Count: " << intToHex(2, header->anCount) << Logger::commit <<
|
||||||
"Authority Record Count: " << intToHex(2, header->nsCount) << Logger::commit <<
|
"Authority Record Count: " << intToHex(2, header->nsCount) << Logger::commit <<
|
||||||
"Additional Record Count: " << intToHex(2, header->arCount) << Logger::commit;
|
"Additional Record Count: " << intToHex(2, header->arCount) << Logger::commit;
|
||||||
|
|
||||||
myfile.close();
|
myfile.close();
|
||||||
|
//Testing over
|
||||||
|
|
||||||
|
socket_ = new udp::socket(io_context, udp::endpoint(udp::v4(), 8853));
|
||||||
}
|
}
|
||||||
|
|
||||||
Server::~Server() {
|
Server::~Server() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Server::run() {
|
||||||
|
io_context.run();
|
||||||
|
do_receive();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Server::do_receive()
|
||||||
|
{
|
||||||
|
socket_->async_receive_from(
|
||||||
|
asio::buffer(data_, 1024), sender_endpoint_,
|
||||||
|
[this](std::error_code ec, std::size_t bytes_recvd)
|
||||||
|
{
|
||||||
|
if (!ec && bytes_recvd > 0)
|
||||||
|
{
|
||||||
|
do_send(bytes_recvd);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
do_receive();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void Server::do_send(std::size_t length)
|
||||||
|
{
|
||||||
|
socket_->async_send_to(
|
||||||
|
asio::buffer(data_, length), sender_endpoint_,
|
||||||
|
[this](std::error_code /*ec*/, std::size_t /*bytes_sent*/)
|
||||||
|
{
|
||||||
|
do_receive();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}}
|
}}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
#define SERVER_HPP
|
#define SERVER_HPP
|
||||||
#include "asio.hpp"
|
#include "asio.hpp"
|
||||||
#include "Core.hpp"
|
#include "Core.hpp"
|
||||||
#include <cstdlib>
|
//#include <cstdlib>
|
||||||
|
|
||||||
|
|
||||||
namespace Plains {
|
namespace Plains {
|
||||||
@@ -10,7 +10,6 @@ namespace Resolver {
|
|||||||
|
|
||||||
using Core::EventBus;
|
using Core::EventBus;
|
||||||
using Core::Logger;
|
using Core::Logger;
|
||||||
using asio::ip::udp;
|
|
||||||
|
|
||||||
|
|
||||||
class Server
|
class Server
|
||||||
@@ -19,10 +18,16 @@ class Server
|
|||||||
EventBus& eventBus;
|
EventBus& eventBus;
|
||||||
Logger& logger;
|
Logger& logger;
|
||||||
asio::io_context io_context;
|
asio::io_context io_context;
|
||||||
|
asio::ip::udp::socket* socket_;
|
||||||
|
asio::ip::udp::endpoint sender_endpoint_;
|
||||||
|
char data_[1024];
|
||||||
|
void do_receive();
|
||||||
|
void do_send(std::size_t length);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Server(Logger& logger, EventBus& eventBus);
|
Server(Logger& logger, EventBus& eventBus);
|
||||||
~Server();
|
~Server();
|
||||||
|
void run();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user