#pragma once #include "IBaseClash.h" #include #include "CTool.h" #include "CProcess.h" #include "Logger.h" class CLashConfig : public IBaseClash { public: CLashConfig(); ~CLashConfig(void); // ͨ¹ý IBaseClash ¼Ì³Ð virtual BOOL MakeClash() override; virtual BOOL InitClash() override; // ͨ¹ý IBaseClash ¼Ì³Ð virtual BOOL StartClash() override; virtual BOOL StopClash() override; virtual int GetHttpPort() override; virtual int GetSocketPort() override; virtual int GetClasApiPort() override; public: std::filesystem::path GetRunConfig(); BOOL SetProxy(); private: YAML::Node buildShadowsocks(CServerListMode* node); YAML::Node buildtrojan(CServerListMode* node); YAML::Node buildv2ray(CServerListMode* node); std::vector buildv2rayHost(CServerListMode* node); YAML::Node builTunConfig(); YAML::Node buildDnsConfig(); std::vector buildProxyGroups(); YAML::Node buildProxyproviders(); std::vector buildRules(); std::vector buildruleproviders(); private: void ThreadFun_process_Config(LPARAM lParam); void ThreadFun_ProcessMonitor_Config(LPARAM lParam); /*winrt::fire_and_forget _StartClash(); winrt::Windows::Foundation::IAsyncAction ProcessMonitor();*/ private: int m_socks_port; int m_http_port; int m_c_port; bool m_is_qut; CProcess* m_process; AsynTaskHandle m_Asyntask; AsynTaskHandle m_AsyntaskProcessMonitor; std::vector m_rules; std::filesystem::path m_run_config; };