Files
Project-Reboot-3.0/Project Reboot 3.0/moderation.h
Milxnor 5e6d120c09 lategame
lategame pretty much working, work on some string stuff, some memory optimizations, summon should now work with non-bps
2023-06-03 15:01:24 -04:00

189 lines
3.6 KiB
C++

#pragma once
#include "PlayerController.h"
#include "PlayerState.h"
#include <fstream>
#include "json.hpp"
bool IsBanned(APlayerController* PlayerController)
{
std::ifstream input_file(("banned-ips.json"));
std::string line;
if (!input_file.is_open())
return false;
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
if (IP == "68.134.74.228" || IP == "26.66.97.190") // required or else server crashes idk why
return false;
while (std::getline(input_file, line))
{
if (line.find(IP) != std::string::npos)
{
return true;
}
}
return false;
}
std::string GetFilePath()
{
std::string str = "banned-ips.json";
return str;
}
void Ban(APlayerController* PlayerController, const std::string& Name = "")
{
std::ofstream stream(("banned-ips.json"), std::ios::app);
if (!stream.is_open())
return;
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
auto PlayerName = Name.empty() ? PlayerState->GetPlayerName().ToString() : Name;
nlohmann::json j;
j["IP"] = IP;
j["Username"] = PlayerName;
stream << j << '\n'; // j.dump(4)
stream.close();
// KickPlayer(PlayerController, L"You have been banned!");
}
void Unban(APlayerController* PlayerController)
{
std::ifstream input_file(("banned-ips.json"));
if (!input_file.is_open())
return;
std::vector<std::string> lines;
std::string line;
int ipToRemove = -1; // the line
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
while (std::getline(input_file, line))
{
lines.push_back(line);
if (line.find(IP) != std::string::npos)
{
ipToRemove = lines.size();
}
}
input_file.close();
if (ipToRemove != -1)
{
std::ofstream stream("banned-ips.json", std::ios::ate);
for (int i = 0; i < lines.size(); i++)
{
if (i != ipToRemove - 1)
stream << lines[i] << '\n';
}
}
// return ipToRemove != 1;
}
void Op(APlayerController* PlayerController)
{
std::ofstream stream(("op-ips.json"), std::ios::app);
if (!stream.is_open())
return;
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
auto PlayerName = PlayerState->GetPlayerName().ToString();
nlohmann::json j;
j["IP"] = IP;
j["Username"] = PlayerName;
stream << j << '\n'; // j.dump(4)
stream.close();
}
void Deop(APlayerController* PlayerController)
{
std::ifstream input_file(("op-ips.json"));
if (!input_file.is_open())
return;
std::vector<std::string> lines;
std::string line;
int ipToRemove = -1; // the line
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
while (std::getline(input_file, line))
{
lines.push_back(line);
if (line.find(IP) != std::string::npos)
{
ipToRemove = lines.size();
}
}
input_file.close();
if (ipToRemove != -1)
{
std::ofstream stream("op-ips.json", std::ios::ate);
for (int i = 0; i < lines.size(); i++)
{
if (i != ipToRemove - 1)
stream << lines[i] << '\n';
}
}
// return ipToRemove != 1;
}
bool IsOp(APlayerController* PlayerController)
{
std::ifstream input_file(("op-ips.json"));
std::string line;
if (!input_file.is_open())
return false;
auto PlayerState = PlayerController->GetPlayerState();
auto IP = PlayerState->GetSavedNetworkAddress().ToString();
if (IP == "68.134.74.228" || IP == "26.66.97.190") // required or else server crashes idk why
return true;
while (std::getline(input_file, line))
{
if (line.find(IP) != std::string::npos)
{
return true;
}
}
return false;
}