This commit is contained in:
Suraxius committed 2021-01-18 18:54:44 +01:00
1 parent a447fed9cb
commit db6bf2f062
4 files changed
+66 -11

No files matched your search

+9 -4
View File
@@ -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;
} }
+1 -1
View File
@@ -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
View File
@@ -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();
});
}
}} }}
+7 -2
View File
@@ -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();
}; };