#include <iostream>
#include <string>
#include <stdint.h>
#include <fstream>
#include <vector>
#include <algorithm>
std::string sAppAboutString = R"(
-------------------------------------------------
xrayLogParse by hcpp20334
writtein to C++20
MSVC compiler and VS2026
-------------------------------------------------
)";
struct fsm {
void saveFile(std::string data,std::string filename) {
std::ofstream file(filename);
file.write(data.c_str(), data.size());
file.close();
}
std::ofstream log;
void initLogger() {
log = std::ofstream("parse.log");
}
void logger(std::string funcName,std::string data) {
std::cout << "( " << funcName << " ) -> " << data << "\n";
log << "( " << funcName << " ) -> " << data << "\n";
}
void closeLogger() {
log.close();
}
void readLogs(std::vector<std::string>& array) {
std::ifstream logs("logs.txt");
std::string sOutLogsData = "";
if (logs.is_open()) {
logger("readLogs()", "read logs.txt");
while (std::getline(logs, sOutLogsData)) {
logger("readLogs()", "pushed to "+sOutLogsData);
array.push_back(sOutLogsData);
}
}
else {
logger("readLogs()", "error logs.txt not found!");
}
}
fsm() {
std::cout << sAppAboutString;
}
~fsm() {
std::cout << " (fs) cleanup\n";
}
};
fsm* fs = new fsm();
struct str {
void fmt(std::vector<std::string>& vec) {
if (!vec.empty()) {
fs->logger("str->fmt()", "parsing..");
std::vector<std::string> buf;
for (auto& data : vec) {
std::string sln = data;
int64_t i64LastIndex = sln.rfind("connection to ");
if (i64LastIndex != std::string::npos) {
fs->logger("str->fmt()", "finded " + std::to_string(i64LastIndex));
std::string sRaw = sln.substr(i64LastIndex + 14);
buf.push_back(sRaw);
}
}
std::sort(buf.begin(), buf.end());
buf.erase(std::unique(buf.begin(), buf.end()), buf.end());
vec = std::move(buf);
buf.clear();
}
else {
fs->logger("str->fmt()", "vec empty!");
}
}
void saveToOutput(auto& vec) {
std::string sFmtStr = "";
for (auto& s : vec) {
sFmtStr += s + "\n";
}
fs->saveFile(sFmtStr, "output.txt");
}
void CleanupVec(auto& vec) {
if (!vec.empty()) {
vec.clear();
}
}
};
str* strf = new str();
int main() {
std::vector <std::string> vLogs;
fs->initLogger(); // init logger
fs->readLogs(vLogs); // read logs.txt
strf->fmt(vLogs); // fmt string
strf->saveToOutput(vLogs); // save output.txt
fs->closeLogger(); // close logger
strf->CleanupVec(vLogs);
delete fs; // delete fs
delete strf;// delete strf
}
компактный и кроссплатформенный парсер логов xray в throne
xrayParse_linux_x64
82.2 KB
рядом файл logs.txt c логами из трона кидаешь и он тебе все домены вытащит
есть обход белых списков.
один раз покупаете и пользуетесь пока все не сдохнет. цена 300 р. на айфоне не работает тк не приложения. Добавлю еще 3 человека и все.
один раз покупаете и пользуетесь пока все не сдохнет. цена 300 р. на айфоне не работает тк не приложения. Добавлю еще 3 человека и все.
одно место свободно под бс обход кому надо? 300 р на пока не сдохнет все)