config.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include "define.h"
  3. #include "base/error.h"
  4. #include "base/singleton.hpp"
  5. #include "util/ini.h"
  6. #include "net/http_define.h"
  7. class config:public ylib::error_base,public ylib::singleton<config>{
  8. public:
  9. struct domain {
  10. bool https = false;
  11. ushort port = 0;
  12. network::http::ssl_config ssl;
  13. };
  14. struct scripts {
  15. std::vector<std::string> lib_dir;
  16. std::string module_dir;
  17. uint32 lua_cache_size = 0;
  18. uint32 auto_update_sec = 0;
  19. };
  20. struct website {
  21. struct __interceptor {
  22. std::string filepath;
  23. std::string regex_express;
  24. };
  25. std::string dir;
  26. std::string default_404;
  27. std::vector<std::string> default_index;
  28. std::string session_dir;
  29. uint32 session_timeout_sec;
  30. std::string Initialization_script;
  31. std::vector<__interceptor> interceptor_scripts;
  32. bool debug = false;
  33. std::vector<std::string> domain;
  34. };
  35. public:
  36. config();
  37. bool open(const std::string& ini_filepath);
  38. std::vector<std::string> lua_lib_files();
  39. private:
  40. // INI配置文件
  41. ylib::ini m_ini;
  42. private:
  43. /// <summary>
  44. /// 查询所有变量字符串
  45. /// </summary>
  46. /// <param name="text"></param>
  47. /// <returns></returns>
  48. std::vector<std::string> extractVariableNames(const std::string& text);
  49. /// <summary>
  50. /// 缓存配置
  51. /// </summary>
  52. void cache();
  53. public:
  54. scripts scripts;
  55. website website;
  56. std::map<std::string, domain> domain;
  57. };