From 965c3e7f75369985212ca048812944c65199ad01 Mon Sep 17 00:00:00 2001 From: Vinayak Ambigapathy Date: Tue, 18 Feb 2025 17:51:22 +0100 Subject: [PATCH] Initial commit --- app/premake5.lua | 2 +- app/src/app.cpp | 91 ++++++++++++++++++++++++++++++++++++++++++ app/src/httpserver.cpp | 24 +++++++++++ package.json | 7 +++- 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 app/src/httpserver.cpp diff --git a/app/premake5.lua b/app/premake5.lua index 52b17a7..9743230 100644 --- a/app/premake5.lua +++ b/app/premake5.lua @@ -35,7 +35,7 @@ filter "configurations:Release" optimize "on" filter "system:windows" - buildoptions "/MT" + buildoptions { "/MT", "/utf-8" } staticruntime "on" defines { diff --git a/app/src/app.cpp b/app/src/app.cpp index e69de29..4a6d8c6 100644 --- a/app/src/app.cpp +++ b/app/src/app.cpp @@ -0,0 +1,91 @@ +#include +#include + +#define minPort 8000 +#define maxPort 8000 +#define target "127.0.0.1" + +using namespace Bk; +using namespace Bk::Net; + +struct Binder +{ + Scope src; + int port; + + Binder(Scope src, int port) + :src(std::move(src)), port(port) { } + Binder(const Binder& bind) = default; +}; + +int main() +{ + Log::Init("Bakanet"); + auto myLocalIPs = dns_lookup("google.com", IpVersion::IPv4); + for(auto i : myLocalIPs) BK_INFO(i); + IpAddress ip(myLocalIPs[0]); + HttpServer server(ip, 8080); + server.get("/", [](HttpRequest& req) + { + HttpReponse res(HTTP_RES_200, req.version); + res.body = "

Bakanet

"; + res.body += "

Working http server

"; + res.body += "\n

URL /

"; + return res; + }); + server.start(); + return 0; + + + /*Log::Init("Bakanet"); + IpAddress src("192.168.10.235"); + ThreadPool pool(5); + int range = maxPort - minPort + 1; + int ports[maxPort - minPort + 1]; + + std::vector sockets; + sockets.reserve(range); + + for (int i = 0; i < range; i++) + { + int port = minPort + i; + Binder bind = { + CreateScope(Socket::create(src, port, IpProtocol::TCP)), + port + }; + if (!(bind.src->init() && bind.src->start(10))) throw new std::exception("Error"); + sockets.push_back(bind); + } + + while (true) { + for(const Binder& bind : sockets) + { + if (bind.src->hasConnection(0, 50000)) { + Socket* socket = bind.src->ack(); + int port = bind.port; + pool.queue([socket, port] { + IpAddress dest(target); + Type::DataStream req; + std::vector data; + do + { + data = socket->obtain(1024); + req.append_data(data); + } while (data.size() >= 1024); + auto socketDest = Socket::create(dest, port, IpProtocol::TCP); + socketDest->conn(); + socketDest->emit(req.payload); + Type::DataStream res; + do + { + data = socketDest->obtain(1024); + res.append_data(data); + } while (data.size() >= 1024); + socket->emit(); + }); + } + } + } + return 0; + */ +} \ No newline at end of file diff --git a/app/src/httpserver.cpp b/app/src/httpserver.cpp new file mode 100644 index 0000000..e6644c0 --- /dev/null +++ b/app/src/httpserver.cpp @@ -0,0 +1,24 @@ +//#include +//#include +// +//#define PORT 80 +// +//using namespace Bk; +//using namespace Bk::Net; +// +//int main() +//{ +// Log::Init("Bakanet"); +// IpAddress ip; +// HttpServer server(ip, PORT); +// server.get("/", [](HttpRequest& req) +// { +// HttpReponse res(HTTP_RES_200, req.version); +// res.body = "

Bakanet

"; +// res.body += "

Working http server

"; +// res.body += "\n

URL /

"; +// return res; +// }); +// server.start(); +// return 0; +//} \ No newline at end of file diff --git a/package.json b/package.json index c3d6b51..88c8d46 100644 --- a/package.json +++ b/package.json @@ -2,5 +2,10 @@ "name": "transProxy", "author": "anulax1225", "git": "", - "packages": [] + "packages": [ + { + "author": "anulax1225", + "name": "bakanet" + } + ] } \ No newline at end of file