Skip to content

Commit

Permalink
remove using json and improve code readability
Browse files Browse the repository at this point in the history
  • Loading branch information
dr3mro committed Nov 26, 2024
1 parent ad19a1f commit 82938e6
Show file tree
Hide file tree
Showing 47 changed files with 363 additions and 264 deletions.
15 changes: 15 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,27 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -pedantic")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g")
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O2")

add_compile_options(-fdiagnostics-color=always -fdiagnostics-show-option)

# set(CMAKE_C_CLANG_TIDY clang-tidy -checks=-*,readability-*)
# set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,readability-*)

# option(CPPCHECK "Run CppCheck static code analysis" ON)

# if(CPPCHECK)
# message("Running CppCheck static code analysis...")
# find_program(cppcheck_exe NAMES cppcheck REQUIRED)
# set(cppcheck_opts --enable=all --inline-suppr --suppressions-list=${PROJECT_SOURCE_DIR}/cppcheck.supp)
# set(CMAKE_C_CPPCHECK ${cppcheck_exe} --std=c11 ${cppcheck_opts})
# set(CMAKE_CXX_CPPCHECK ${cppcheck_exe} --std=c++20 ${cppcheck_opts})
# endif()
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src")

# Suppress developer warnings and deprecated warnings
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings")
set(CMAKE_WARN_DEPRECATED OFF)
set(CMAKE_COLOR_DIAGNOSTICS ON)

# Get the current Git tag using the script
execute_process(COMMAND ${CMAKE_SOURCE_DIR}/get_tag.sh OUTPUT_VARIABLE GIT_TAG_MACRO OUTPUT_STRIP_TRAILING_WHITESPACE)
Expand Down
4 changes: 2 additions & 2 deletions CMakeUserPresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"conan": {}
},
"include": [
"build/Debug/generators/CMakePresets.json",
"build/Release/generators/CMakePresets.json"
"build/Release/generators/CMakePresets.json",
"build/Debug/generators/CMakePresets.json"
]
}
5 changes: 5 additions & 0 deletions cppcheck.supp
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
missingIncludeSystem
constParameter
readability-convert-member-functions-to-static
unusedFunction
unmatchedSuppression
4 changes: 2 additions & 2 deletions get_tag.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/env bash
#!/usr/bin/env bash

# Try to get the exact tag
current_tag=$(git describe --tags --exact-match 2>/dev/null)
Expand All @@ -14,4 +14,4 @@ if [ -z "$current_tag" ]; then
fi

# Output the current tag in a format suitable for a macro
echo "-DGIT_TAG=\"${current_tag}\""
echo "-DGIT_TAG=\"${current_tag}\""
6 changes: 3 additions & 3 deletions src/api/v2/basic/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

#include "api/v2/helper/helper.hpp"
#include "utils/global/callback.hpp"

#include "utils/global/httpcodes.hpp"
#define RATELIMIT "api::v2::Filters::RateLimit"
#define AUTH "api::v2::Filters::Auth"
#define ELAPSED "api::v2::MiddleWares::ElapsedTime"
Expand Down Expand Up @@ -36,10 +36,10 @@ namespace api
{
switch (code)
{
case 200:
case HttpStatus::OK:
Helper::successResponse(content, std::move(callback));
break;
case 500:
case HttpStatus::INTERNAL_SERVER_ERROR:
Helper::failureResponse(content, std::move(callback));
break;
default:
Expand Down
76 changes: 37 additions & 39 deletions src/configurator/configurator.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ class Configurator
std::unordered_set<std::string> blacklist;

DOSDetectorConfig()
: max_requests(getEnvironmentVariable("MAX_REQUESTS", Defaults::DosDetector::MAX_REQUESTS_)),
clean_freq(getEnvironmentVariable("CLN_FRQ", Defaults::DosDetector::CLN_FRQ_)),
max_fingerprints(getEnvironmentVariable("MAX_FPS", Defaults::DosDetector::MAX_FPS_)),
period(getEnvironmentVariable("PERIOD", std::chrono::seconds(Defaults::DosDetector::PERIOD_))),
ratelimit_duration(getEnvironmentVariable("RL_DURATION", std::chrono::seconds(Defaults::DosDetector::RL_DURATION_))),
ban_duration(getEnvironmentVariable("BAN_DURATION", std::chrono::seconds(Defaults::DosDetector::BAN_DURATION_))),
whitelist(getEnvironmentVariable("WHITELIST")),
blacklist(getEnvironmentVariable("BLACKLIST"))
{
max_requests = getEnvironmentVariable("MAX_REQUESTS", Defaults::DosDetector::MAX_REQUESTS_);
period = getEnvironmentVariable("PERIOD", std::chrono::seconds(Defaults::DosDetector::PERIOD_));
max_fingerprints = getEnvironmentVariable("MAX_FPS", Defaults::DosDetector::MAX_FPS_);
ratelimit_duration = getEnvironmentVariable("RL_DURATION", std::chrono::seconds(Defaults::DosDetector::RL_DURATION_));
ban_duration = getEnvironmentVariable("BAN_DURATION", std::chrono::seconds(Defaults::DosDetector::BAN_DURATION_));
clean_freq = getEnvironmentVariable("CLN_FRQ", Defaults::DosDetector::CLN_FRQ_);
whitelist = getEnvironmentVariable("WHITELIST");
blacklist = getEnvironmentVariable("BLACKLIST");
}

void printValues() const override
Expand Down Expand Up @@ -82,15 +82,14 @@ class Configurator
std::string_view host;

DatabaseConfig()
: ssl(getEnvironmentVariable(std::string_view("DB_SSL"), Defaults::Database::DB_SSL_)),
max_conn(getEnvironmentVariable(std::string_view("DB_MAX_CONN"), Defaults::Database::DB_MAX_CONN_)),
port(getEnvironmentVariable(std::string_view("DB_PORT"), Defaults::Database::DB_PORT_)),
name(getEnvironmentVariable(std::string_view("DB_NAME"), Defaults::Database::DB_NAME_)),
user(getEnvironmentVariable(std::string_view("DB_USER"), Defaults::Database::DB_USER_)),
pass(getEnvironmentVariable(std::string_view("DB_PASS"), Defaults::Database::DB_PASS_)),
host(getEnvironmentVariable(std::string_view("DB_HOST"), Defaults::Database::DB_HOST_))
{
host = getEnvironmentVariable(std::string_view("DB_HOST"), Defaults::Database::DB_HOST_);
port = getEnvironmentVariable(std::string_view("DB_PORT"), Defaults::Database::DB_PORT_);
name = getEnvironmentVariable(std::string_view("DB_NAME"), Defaults::Database::DB_NAME_);
user = getEnvironmentVariable(std::string_view("DB_USER"), Defaults::Database::DB_USER_);
pass = getEnvironmentVariable(std::string_view("DB_PASS"), Defaults::Database::DB_PASS_);
ssl = getEnvironmentVariable(std::string_view("DB_SSL"), Defaults::Database::DB_SSL_);
max_conn = getEnvironmentVariable(std::string_view("DB_MAX_CONN"), Defaults::Database::DB_MAX_CONN_);

optimize_performance(max_conn, 5);
}

Expand Down Expand Up @@ -125,20 +124,19 @@ class Configurator
std::string upload_dir;

ServerConfig()
: host(getEnvironmentVariable(std::string_view("SERVER_HOST"), Defaults::Server::SERVER_HOST_)),
name(getEnvironmentVariable(std::string_view("SERVER_NAME"), Defaults::Server::SERVER_NAME_)),
ver(getEnvironmentVariable(std::string_view("SERVER_VERSION"), Defaults::Server::SERVER_VER_)),
desc(getEnvironmentVariable(std::string_view("SERVER_DESCRIPTION"), Defaults::Server::SERVER_DESC_)),
port(getEnvironmentVariable(std::string_view("SERVER_PORT"), Defaults::Server::SERVER_PORT_)),
threads(getEnvironmentVariable(std::string_view("SERVER_THREADS"), Defaults::Server::SERVER_THREADS_)),
debug_level(getEnvironmentVariable(std::string_view("SERVER_DEBUG_LEVEL"), Defaults::Server::SERVER_DEBUG_LEVEL_)),
log_to_console(getEnvironmentVariable(std::string_view("SERVER_LOG_TO_CONSOLE"), Defaults::Server::SERVER_LOG_TO_CONSOLE_)),
log_to_file(getEnvironmentVariable(std::string_view("SERVER_LOG_TO_FILE"), Defaults::Server::SERVER_LOG_TO_FILE_)),
log_dir(getEnvironmentVariable(std::string_view("SERVER_LOG_DIR"), Defaults::Server::SERVER_LOG_DIR_)),
log_file(getEnvironmentVariable(std::string_view("SERVER_LOG_FILE"), Defaults::Server::SERVER_LOG_FILE_)),
upload_dir(getEnvironmentVariable(std::string_view("SERVER_UPLOAD_DIR"), Defaults::Server::SERVER_UPLOAD_DIR_))
{
host = getEnvironmentVariable(std::string_view("SERVER_HOST"), Defaults::Server::SERVER_HOST_);
port = getEnvironmentVariable(std::string_view("SERVER_PORT"), Defaults::Server::SERVER_PORT_);
name = getEnvironmentVariable(std::string_view("SERVER_NAME"), Defaults::Server::SERVER_NAME_);
ver = getEnvironmentVariable(std::string_view("SERVER_VERSION"), Defaults::Server::SERVER_VER_);
desc = getEnvironmentVariable(std::string_view("SERVER_DESCRIPTION"), Defaults::Server::SERVER_DESC_);
threads = getEnvironmentVariable(std::string_view("SERVER_THREADS"), Defaults::Server::SERVER_THREADS_);
debug_level = getEnvironmentVariable(std::string_view("SERVER_DEBUG_LEVEL"), Defaults::Server::SERVER_DEBUG_LEVEL_);
log_to_console = getEnvironmentVariable(std::string_view("SERVER_LOG_TO_CONSOLE"), Defaults::Server::SERVER_LOG_TO_CONSOLE_);
log_to_file = getEnvironmentVariable(std::string_view("SERVER_LOG_TO_FILE"), Defaults::Server::SERVER_LOG_TO_FILE_);
log_dir = getEnvironmentVariable(std::string_view("SERVER_LOG_DIR"), Defaults::Server::SERVER_LOG_DIR_);
log_file = getEnvironmentVariable(std::string_view("SERVER_LOG_FILE"), Defaults::Server::SERVER_LOG_FILE_);
upload_dir = getEnvironmentVariable(std::string_view("SERVER_UPLOAD_DIR"), Defaults::Server::SERVER_UPLOAD_DIR_);

optimize_performance(threads, 4);
}

Expand Down Expand Up @@ -170,11 +168,11 @@ class Configurator
std::string_view secret;

TokenManagerParameters()
: validity(getEnvironmentVariable(std::string_view("TOKEN_VALIDITY"), Defaults::TokenParameters::TOKEN_VALIDITY_)),
issuer(getEnvironmentVariable(std::string_view("TOKEN_ISSUER"), Defaults::TokenParameters::TOKEN_ISSUER_)),
type(getEnvironmentVariable(std::string_view("TOKEN_TYPE"), Defaults::TokenParameters::TOKEN_TYPE_)),
secret(getEnvironmentVariable(std::string_view("TOKEN_SECRET"), Defaults::TokenParameters::TOKEN_SECRET_))
{
issuer = getEnvironmentVariable(std::string_view("TOKEN_ISSUER"), Defaults::TokenParameters::TOKEN_ISSUER_);
type = getEnvironmentVariable(std::string_view("TOKEN_TYPE"), Defaults::TokenParameters::TOKEN_TYPE_);
validity = getEnvironmentVariable(std::string_view("TOKEN_VALIDITY"), Defaults::TokenParameters::TOKEN_VALIDITY_);
secret = getEnvironmentVariable(std::string_view("TOKEN_SECRET"), Defaults::TokenParameters::TOKEN_SECRET_);
}

void printValues() const override
Expand All @@ -196,10 +194,10 @@ class Configurator
std::string_view invite_path;

FrontEndConfig()
: port(getEnvironmentVariable(std::string_view("FRONTEND_PORT"), Defaults::FrontEnd::PORT_)),
host(getEnvironmentVariable(std::string_view("FRONTEND_HOST"), Defaults::FrontEnd::HOST_)),
invite_path(getEnvironmentVariable(std::string_view("FRONTEND_INVITE_PATH"), Defaults::FrontEnd::INVITE_PATH_))
{
host = getEnvironmentVariable(std::string_view("FRONTEND_HOST"), Defaults::FrontEnd::HOST_);
port = getEnvironmentVariable(std::string_view("FRONTEND_PORT"), Defaults::FrontEnd::PORT_);
invite_path = getEnvironmentVariable(std::string_view("FRONTEND_INVITE_PATH"), Defaults::FrontEnd::INVITE_PATH_);
}

void printValues() const override
Expand All @@ -220,10 +218,10 @@ class Configurator
std::string_view message_queue_path;

EmailSenderConfig()
: port(getEnvironmentVariable(std::string_view("EMAIL_SENDER_PORT"), Defaults::EmailSenderDaemon::PORT_)),
host(getEnvironmentVariable(std::string_view("EMAIL_SENDER_HOST"), Defaults::EmailSenderDaemon::HOST_)),
message_queue_path(getEnvironmentVariable(std::string_view("EMAIL_SENDER_QUEUE_PATH"), Defaults::EmailSenderDaemon::QUEUE_PATH_))
{
host = getEnvironmentVariable(std::string_view("EMAIL_SENDER_HOST"), Defaults::EmailSenderDaemon::HOST_);
port = getEnvironmentVariable(std::string_view("EMAIL_SENDER_PORT"), Defaults::EmailSenderDaemon::PORT_);
message_queue_path = getEnvironmentVariable(std::string_view("EMAIL_SENDER_QUEUE_PATH"), Defaults::EmailSenderDaemon::QUEUE_PATH_);
}

void printValues() const override
Expand Down
15 changes: 10 additions & 5 deletions src/configurator/envloader/envvars/envvars.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,22 @@
#include <fmt/format.h>

#include <cstdlib>
#include <iostream>

#include "utils/message/message.hpp"

std::optional<std::string_view> EnvVars::get(std::string_view key) const
std::optional<std::string_view> EnvVars::get(std::string_view key)
{
const char *value = std::getenv(key.data());
if (value)
// Retrieve the value associated with the environment variable key
const char *_key = key.data();
const char *value = std::getenv(_key);

// If the value exists, return it as a string_view
if (value != nullptr)
{
return value;
return std::string_view(value);
}

// Otherwise, return an empty optional
return std::nullopt;
}

Expand Down
8 changes: 4 additions & 4 deletions src/configurator/envloader/envvars/envvars.hpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
#pragma once

#include <optional>
#include <string>
#include <string_view>

class EnvVars
{
public:
protected:
// Method to get an environment variable by name
std::optional<std::string_view> get(std::string_view key) const;
static std::optional<std::string_view> get(std::string_view key);

// Method to set an environment variable
void set(std::string_view key, std::string_view value);
static void set(std::string_view key, std::string_view value);
};
Loading

0 comments on commit 82938e6

Please sign in to comment.