From c7ae4ffeb48d621ead01f9e1f312d8d0177d27f3 Mon Sep 17 00:00:00 2001 From: Luna Date: Wed, 21 May 2025 06:09:03 +0200 Subject: [PATCH] added whitelist and removed ai crap from html --- main.cpp | 62 +++++++++++++++++++- test.html | 172 +++++++++++++----------------------------------------- 2 files changed, 101 insertions(+), 133 deletions(-) diff --git a/main.cpp b/main.cpp index 62ea27e..c6a8fc7 100644 --- a/main.cpp +++ b/main.cpp @@ -192,19 +192,79 @@ char *search_substring(char *start_data, const char *substring, size_t size) return NULL; } +bool isNumber(std::string a) +{ + if (a.empty()) + return false; + for (int i = 0; i < a.length(); i++) + { + if (isdigit(a[i]) == 0) + return false; + } + return true; +} +bool check_ip(const char* ip) +{ + std::string buff; + std::vector tokens; + if (strcmp(ip, "localhost") == 0) + return true; + buff = ip; + tokens = split(ip, "."); + if (tokens.size() != 4) + return false; + for (int i = 0; i < tokens.size(); i++) + { + if (isNumber(tokens[i]) == false) + return false; + else if (atoi(tokens[i].c_str()) > 255) + return false; + } + return true; +} + +std::vector load_whitelist(const std::string &filename) +{ + std::vector ret; + std::ifstream file(filename); + std::string line; + while (std::getline(file, line)) + { + if (check_ip(line.c_str())) + ret.push_back(line); + } + return ret; +} int main() { netlib::server_raw server(15000000); server.open_server("0.0.0.0", 8080); - + std::vector whitelist = load_whitelist("whitelist.txt"); + std::println("{} ips found in whitelist", whitelist.size()); while (true) { std::vector readable = server.wait_readable(); //std::this_thread::sleep_for(std::chrono::milliseconds(50)); for (auto user: readable) { + sockaddr_in addr = {0}; + unsigned int addr_size = sizeof(addr); + char str[INET_ADDRSTRLEN]; + getpeername(user, (struct sockaddr *)&addr, &addr_size); + strcpy(str, inet_ntoa(addr.sin_addr)); + bool in_whitelist = false; + for (const auto& x: whitelist) + { + if (x == str) + in_whitelist = true; + } + if (in_whitelist == false) + { + std::println("Ip {} not in whitelist!", str); + server.disconnect_user(user); + } char * data = server.get_line(user); if (data) { diff --git a/test.html b/test.html index 544a663..20c8056 100644 --- a/test.html +++ b/test.html @@ -1,177 +1,85 @@ -//THIS IS NOT MY CODE, THIS IS AN AI GENERATED CODE TO TEST MY SERVER AND SEE HOW EVERYTHING WORKS -//I WILL CHANGE IT TO MY OWN WHEN MY SERVER WORKS PROPERLY - - - Drag and Drop File Upload + Sube musica -

Simple File Upload via Drag & Drop

-
-

Drag one or more files to this drop zone.

-
-