CLashConfig.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #pragma once
  2. #include "IBaseClash.h"
  3. #include <yaml-cpp/yaml.h>
  4. #include "CTool.h"
  5. #include "CProcess.h"
  6. #include "Logger.h"
  7. class CLashConfig : public IBaseClash
  8. {
  9. public:
  10. CLashConfig();
  11. ~CLashConfig(void);
  12. // ͨ¹ý IBaseClash ¼Ì³Ð
  13. virtual BOOL MakeClash() override;
  14. virtual BOOL InitClash() override;
  15. // ͨ¹ý IBaseClash ¼Ì³Ð
  16. virtual BOOL StartClash() override;
  17. virtual BOOL StopClash() override;
  18. virtual int GetHttpPort() override;
  19. virtual int GetSocketPort() override;
  20. virtual int GetClasApiPort() override;
  21. public:
  22. std::filesystem::path GetRunConfig();
  23. void SetProxy();
  24. private:
  25. YAML::Node buildShadowsocks(CServerListMode* node);
  26. YAML::Node buildtrojan(CServerListMode* node);
  27. YAML::Node buildv2ray(CServerListMode* node);
  28. std::vector<YAML::Node> buildv2rayHost(CServerListMode* node);
  29. YAML::Node builTunConfig();
  30. YAML::Node buildDnsConfig();
  31. std::vector<YAML::Node> buildProxyGroups();
  32. std::vector<YAML::Node> buildRules();
  33. std::vector<YAML::Node> buildruleproviders();
  34. private:
  35. void ThreadFun_process_Config(LPARAM lParam);
  36. void ThreadFun_ProcessMonitor_Config(LPARAM lParam);
  37. /*winrt::fire_and_forget _StartClash();
  38. winrt::Windows::Foundation::IAsyncAction ProcessMonitor();*/
  39. private:
  40. int m_socks_port;
  41. int m_http_port;
  42. int m_c_port;
  43. bool m_is_qut;
  44. CProcess* m_process;
  45. AsynTaskHandle<LPARAM> m_Asyntask;
  46. AsynTaskHandle<LPARAM> m_AsyntaskProcessMonitor;
  47. std::vector<std::string> m_rules;
  48. std::filesystem::path m_run_config;
  49. };