1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-15 00:19:24 +08:00
Files
Alas/blcrack/cracker/main.cpp
2025-11-01 00:23:46 +08:00

66 lines
1.9 KiB
C++

#include <dlfcn.h>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <thread>
#include "cracker.hpp"
#include "logger.hpp"
#include "server.hpp"
#include "ui/hook.hpp"
const std::string& get_logfile_file_full_path() {
static std::string cache_file = [] {
char cmdline[512] = {0};
int fd = open("/proc/self/cmdline", O_RDONLY);
if(fd != -1) {
read(fd, cmdline, sizeof(cmdline));
close(fd);
return "/storage/emulated/0/Android/data/" + std::string(cmdline) + "/cracker.log";
}
return std::string();
}();
return cache_file;
}
void init_logger() {
#if DEBUG_MODE
auto net_sink = std::make_shared<net_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(get_logfile_file_full_path());
auto sink_list = spdlog::sinks_init_list{net_sink, file_sink};
auto combined_logger = std::make_shared<spdlog::logger>(
"cracker_logger",
sink_list.begin(),
sink_list.end()
);
combined_logger->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%L%$] %v");
combined_logger->set_level(spdlog::level::info);
combined_logger->flush_on(spdlog::level::info);
spdlog::register_logger(combined_logger);
spdlog::set_default_logger(combined_logger);
#else
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>(get_logfile_file_full_path());
auto logger = std::make_shared<spdlog::logger>("cracker_logger", file_sink);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%L%$] %v");
logger->set_level(spdlog::level::info);
logger->flush_on(spdlog::level::info);
spdlog::register_logger(logger);
spdlog::set_default_logger(logger);
#endif
}
void start() {
init_logger();
SPDLOG_INFO("Cracker loaded !");
CrackerServer::Start();
hook_game_lua_for_ingame_ui();
}
__attribute__((constructor))
void init() {
std::thread(start).detach();
}