mirror of
https://github.com/0O0o0oOoO00/Alas.git
synced 2026-05-15 00:19:24 +08:00
66 lines
1.9 KiB
C++
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();
|
|
}
|