CServerList.cpp 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "stdafx.h"
  2. #include "CServerList.h"
  3. CServerList::CServerList()
  4. {
  5. }
  6. CServerList::~CServerList()
  7. {
  8. }
  9. bool CServerList::Init(std::string data)
  10. {
  11. try
  12. {
  13. nlohmann::json j = nlohmann::json::parse(data.begin(), data.end());
  14. if (j["ret"].get<int>() == 1)
  15. {
  16. auto data = j["data"];
  17. for (int i = 0; i < data.size(); i++) {
  18. CServerListMode m_serverlist_mode;
  19. m_serverlist_mode.type = data[i]["type"].get<std::string>();
  20. m_serverlist_mode.id = data[i]["id"].get<int>();
  21. m_serverlist_mode.name = data[i]["name"].get<std::string>();
  22. m_serverlist_mode.host = data[i]["host"].get<std::string>();
  23. m_serverlist_mode.group = data[i]["group"].get<std::string>();
  24. if (m_serverlist_mode.type == "shadowsocks")
  25. {
  26. m_serverlist_mode.method = data[i]["method"].get<std::string>();
  27. m_serverlist_mode.passwd = data[i]["passwd"].get<std::string>();
  28. }
  29. else if (m_serverlist_mode.type == "v2ray")
  30. {
  31. m_serverlist_mode.method = data[i]["method"].get<std::string>();
  32. m_serverlist_mode.uuid = data[i]["uuid"].get<std::string>();
  33. m_serverlist_mode.v2_net = data[i]["v2_net"].get<std::string>();
  34. m_serverlist_mode.v2_type = data[i]["v2_type"].get<std::string>();
  35. m_serverlist_mode.v2_host = data[i]["v2_host"].get<std::string>();
  36. m_serverlist_mode.v2_path = data[i]["v2_path"].get<std::string>();
  37. m_serverlist_mode.v2_tls = data[i]["v2_tls"].get<std::string>();
  38. m_serverlist_mode.v2_sni = data[i]["v2_sni"].get<std::string>();
  39. }
  40. else if (m_serverlist_mode.type == "trojan") {
  41. m_serverlist_mode.passwd = data[i]["passwd"].get<std::string>();
  42. m_serverlist_mode.sni = data[i]["sni"].get<std::string>();
  43. }
  44. m_serverlist_mode.udp = data[i]["udp"].get<int>();
  45. m_serverlist_mode.port = data[i]["port"].get<int>();
  46. vectlistmode.push_back(m_serverlist_mode);
  47. }
  48. return true;
  49. }
  50. if (j["ret"].get<int>() == 445 || j["ret"].get<int>() == 446)
  51. {
  52. this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
  53. return false;
  54. }
  55. else
  56. {
  57. this->m_error_msg = S_CA2W(j["msg"].get<std::string>().c_str(), CP_UTF8).GetBuffer(0);
  58. return false;
  59. }
  60. }
  61. catch (...)
  62. {
  63. this->m_error_msg = L"½âÎöÊý¾Ý´íÎó";
  64. return false;
  65. }
  66. }