Delete src/client_backend/uznnaoeu.gp4~
This commit is contained in:
@@ -1,150 +0,0 @@
|
|||||||
#include "utils.h"
|
|
||||||
#include <windows.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <iostream>
|
|
||||||
#include "log.h"
|
|
||||||
#include <tlhelp32.h>
|
|
||||||
#include <winternl.h>
|
|
||||||
#include <regex>
|
|
||||||
#include <filesystem>
|
|
||||||
#include <regex>
|
|
||||||
|
|
||||||
void split(const std::string& input, char delimiter, std::string& out1, std::string& out2) {
|
|
||||||
// Split a string at the delimiter. The delimiter only occurs once.
|
|
||||||
// The first part is stored in out1 and the second part in out2.
|
|
||||||
size_t pos = input.find(delimiter);
|
|
||||||
if (pos != std::string::npos) {
|
|
||||||
out1 = input.substr(0, pos);
|
|
||||||
out2 = input.substr(pos + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bool is_valid_path(const std::string& filename) {
|
|
||||||
for (char c : filename) {
|
|
||||||
if (c == '<' || c == '>' || c == '"' || c == '|' || c == '?' || c == '*' || c > 126 || c < 32 ) {
|
|
||||||
return 0; // Special character found
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!std::filesystem::exists(filename)) {
|
|
||||||
return 0; // File does not exist
|
|
||||||
}
|
|
||||||
return 1; // No special character found
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void startup(LPCTSTR lpApplicationName)
|
|
||||||
{
|
|
||||||
// additional information
|
|
||||||
STARTUPINFO si;
|
|
||||||
PROCESS_INFORMATION pi;
|
|
||||||
|
|
||||||
// set the size of the structures
|
|
||||||
ZeroMemory(&si, sizeof(si));
|
|
||||||
si.cb = sizeof(si);
|
|
||||||
ZeroMemory(&pi, sizeof(pi));
|
|
||||||
|
|
||||||
// start the program up
|
|
||||||
CreateProcess(lpApplicationName, // the path
|
|
||||||
NULL, // Command line
|
|
||||||
NULL, // Process handle not inheritable
|
|
||||||
NULL, // Thread handle not inheritable
|
|
||||||
FALSE, // Set handle inheritance to FALSE
|
|
||||||
0, // No creation flags
|
|
||||||
NULL, // Use parent's environment block
|
|
||||||
NULL, // Use parent's starting directory
|
|
||||||
&si, // Pointer to STARTUPINFO structure
|
|
||||||
&pi // Pointer to PROCESS_INFORMATION structure
|
|
||||||
);
|
|
||||||
// Close process and thread handles.
|
|
||||||
CloseHandle(pi.hProcess);
|
|
||||||
CloseHandle(pi.hThread);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::string get_filename(const std::string& path) {
|
|
||||||
auto pos = path.find_last_of("\\");
|
|
||||||
if (pos == std::string::npos) {
|
|
||||||
// No directory separator found, return the original path
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Return the substring after the last directory separator
|
|
||||||
return path.substr(pos + 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int strcasecmp(const std::string& s1, const std::string& s2) {
|
|
||||||
auto it1 = s1.begin();
|
|
||||||
auto it2 = s2.begin();
|
|
||||||
while (it1 != s1.end() && it2 != s2.end()) {
|
|
||||||
int diff = std::tolower(*it1) - std::tolower(*it2);
|
|
||||||
if (diff != 0)
|
|
||||||
return diff;
|
|
||||||
++it1;
|
|
||||||
++it2;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void kill_process(const std::string& path) {
|
|
||||||
HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, NULL);
|
|
||||||
PROCESSENTRY32 pEntry;
|
|
||||||
pEntry.dwSize = sizeof(pEntry);
|
|
||||||
BOOL hRes = Process32First(hSnapShot, &pEntry);
|
|
||||||
while (hRes)
|
|
||||||
{
|
|
||||||
if (strcasecmp(pEntry.szExeFile, get_filename(path).c_str()) == 0)
|
|
||||||
{
|
|
||||||
HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, 0, static_cast<DWORD>(pEntry.th32ProcessID));
|
|
||||||
if (hProcess != NULL)
|
|
||||||
{
|
|
||||||
TerminateProcess(hProcess, 9);
|
|
||||||
CloseHandle(hProcess);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
log(LOGLEVEL::ERR, "[kill_process()]: Error while killing process: ", path);
|
|
||||||
}
|
|
||||||
hRes = Process32Next(hSnapShot, &pEntry);
|
|
||||||
}
|
|
||||||
CloseHandle(hSnapShot);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool file_exists(const std::string& filePath) {
|
|
||||||
DWORD fileAttributes = GetFileAttributes(filePath.c_str());
|
|
||||||
|
|
||||||
if (fileAttributes == INVALID_FILE_ATTRIBUTES) {
|
|
||||||
// The file does not exist or there was an error
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if it's a regular file and not a directory
|
|
||||||
return (fileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int get_num_running_threads() {
|
|
||||||
DWORD runningThreads = 0;
|
|
||||||
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
|
|
||||||
|
|
||||||
if (hSnapshot != INVALID_HANDLE_VALUE) {
|
|
||||||
THREADENTRY32 te;
|
|
||||||
te.dwSize = sizeof(THREADENTRY32);
|
|
||||||
|
|
||||||
if (Thread32First(hSnapshot, &te)) {
|
|
||||||
do {
|
|
||||||
if (te.dwSize >= FIELD_OFFSET(THREADENTRY32, th32OwnerProcessID) +
|
|
||||||
sizeof(te.th32OwnerProcessID)) {
|
|
||||||
if (te.th32OwnerProcessID == GetCurrentProcessId()) {
|
|
||||||
runningThreads++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
te.dwSize = sizeof(THREADENTRY32);
|
|
||||||
} while (Thread32Next(hSnapshot, &te));
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseHandle(hSnapshot);
|
|
||||||
}
|
|
||||||
|
|
||||||
return runningThreads;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user