feat: bandwidth with bytes/kbytes/gbytes seconds and fix for style.css

This commit is contained in:
wipedlifepotato 2025-08-18 19:43:52 +07:00
parent 1a958df8d3
commit aeb6dddcb1
3 changed files with 51 additions and 12 deletions

View file

@ -8,6 +8,7 @@
#include <thread> #include <thread>
#include <memory> #include <memory>
#include <regex>
#include "Daemon.h" #include "Daemon.h"
@ -186,12 +187,41 @@ namespace util
std::string bandwidth; i2p::config::GetOption("bandwidth", bandwidth); std::string bandwidth; i2p::config::GetOption("bandwidth", bandwidth);
if (bandwidth.length () > 0) if (bandwidth.length () > 0)
{ {
const auto NumBandwithRegex = std::regex(R"(^\d+$)");
const auto BandwithRegex = std::regex(R"((\d+)(b|kb|mb|gb))");
std::smatch bandWithMatch;
if (bandwidth.length () == 1 && ((bandwidth[0] >= 'K' && bandwidth[0] <= 'P') || bandwidth[0] == 'X' )) if (bandwidth.length () == 1 && ((bandwidth[0] >= 'K' && bandwidth[0] <= 'P') || bandwidth[0] == 'X' ))
{ {
i2p::context.SetBandwidth (bandwidth[0]); i2p::context.SetBandwidth (bandwidth[0]);
LogPrint(eLogInfo, "Daemon: Bandwidth set to ", i2p::context.GetBandwidthLimit (), "KBps"); LogPrint(eLogInfo, "Daemon: Bandwidth set to ", i2p::context.GetBandwidthLimit (), "KBps");
} }
else else if (std::regex_match(bandwidth, bandWithMatch, BandwithRegex)) {
const auto number = bandWithMatch[1].str();
const auto unit = bandWithMatch[2].str();
int limit = std::atoi(number.c_str());
std::cout << unit;
if (unit == "b")
{
limit /= 1000;
}
else if(unit == "mb")
{
limit *= 1000;
} else if(unit == "gb")
{
limit *= 1000000;
}
// if limit more than 32 bits then its will be negative
if (limit < 0)
{
LogPrint(eLogInfo, "Daemon: Unexpected bandwidth ", bandwidth, ". Set to 'low'");
i2p::context.SetBandwidth (i2p::data::CAPS_FLAG_LOW_BANDWIDTH2);
} else {
i2p::context.SetBandwidth(limit);
}
}
else if(std::regex_search(bandwidth, NumBandwithRegex))
{ {
auto value = std::atoi(bandwidth.c_str()); auto value = std::atoi(bandwidth.c_str());
if (value > 0) if (value > 0)

View file

@ -10,6 +10,7 @@
#include <sstream> #include <sstream>
#include <thread> #include <thread>
#include <memory> #include <memory>
#include <regex>
#include <boost/asio.hpp> #include <boost/asio.hpp>
#include <boost/algorithm/string.hpp> #include <boost/algorithm/string.hpp>
@ -42,6 +43,7 @@
namespace i2p { namespace i2p {
namespace http { namespace http {
static void LoadExtCSS (std::string fileName = "style.css") static void LoadExtCSS (std::string fileName = "style.css")
{ {
std::stringstream s; std::stringstream s;
@ -166,20 +168,18 @@ namespace http {
static void ShowPageHead (std::stringstream& s) static void ShowPageHead (std::stringstream& s)
{ {
std::string webroot; i2p::config::GetOption("http.webroot", webroot); std::string webroot; i2p::config::GetOption("http.webroot", webroot);
std::string theme; i2p::config::GetOption("http.theme", theme); std::string theme; i2p::config::GetOption("http.theme", theme);
if(theme != "light" && theme != "black" )
const auto isThemeRegex = std::regex("^(white|black|light)");
if (!std::regex_search(theme, isThemeRegex))
{ {
if (theme =="white") {
theme = "light";
} else {
LoadExtCSS(theme); LoadExtCSS(theme);
} }
else
{
LoadExtCSS();
} }
// Page language // Page language
std::string currLang = i2p::client::context.GetLanguage ()->GetLanguage(); // get current used language std::string currLang = i2p::client::context.GetLanguage ()->GetLanguage(); // get current used language
auto it = i2p::i18n::languages.find(currLang); auto it = i2p::i18n::languages.find(currLang);
@ -1482,6 +1482,12 @@ namespace http {
} }
else if (cmd == HTTP_COMMAND_RELOAD_CSS) else if (cmd == HTTP_COMMAND_RELOAD_CSS)
{ {
std::string theme; i2p::config::GetOption("http.theme", theme);
if (theme != "light" && theme != "black" && theme !="white")
{
}
LoadExtCSS(); LoadExtCSS();
} }
else else

View file

@ -683,6 +683,9 @@ namespace i2p
else if (limit > (int)i2p::data::LOW_BANDWIDTH_LIMIT) { SetBandwidth('M'); } else if (limit > (int)i2p::data::LOW_BANDWIDTH_LIMIT) { SetBandwidth('M'); }
else if (limit > 12) { SetBandwidth('L'); } else if (limit > 12) { SetBandwidth('L'); }
else { SetBandwidth('K'); } else { SetBandwidth('K'); }
LogPrint(eLogInfo, "RouterContext: Set bandwidth ", limit, ". kb/s");
m_BandwidthLimit = limit; // set precise limit m_BandwidthLimit = limit; // set precise limit
} }