#pragma once #include #include #include #include #include "util/types.hpp" #include "Utilities/mutex.h" namespace np { class dnshook { public: dnshook(); void add_dns_spy(u32 sock); void remove_dns_spy(u32 sock); bool is_dns(u32 sock); bool is_dns_queue(u32 sock); std::vector get_dns_packet(u32 sock); s32 analyze_dns_packet(s32 s, const u8* buf, u32 len); private: std::optional get_redir(const std::string& hostname); private: shared_mutex mutex; std::unordered_map>> m_dns_spylist; std::vector> m_redirs; }; } // namespace np