config.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. struct log {
  36. bool enable = false;
  37. std::string dir;
  38. std::string name;
  39. bool succ = false;
  40. bool info = false;
  41. bool warn = false;
  42. bool error = false;
  43. };
  44. public:
  45. config();
  46. bool open(const std::string& ini_filepath);
  47. std::vector<std::string> lua_lib_files();
  48. private:
  49. // INI配置文件
  50. ylib::ini m_ini;
  51. private:
  52. /// <summary>
  53. /// 查询所有变量字符串
  54. /// </summary>
  55. /// <param name="text"></param>
  56. /// <returns></returns>
  57. std::vector<std::string> extractVariableNames(const std::string& text);
  58. /// <summary>
  59. /// 缓存配置
  60. /// </summary>
  61. void cache();
  62. public:
  63. scripts scripts;
  64. website website;
  65. log log;
  66. std::map<std::string, domain> domain;
  67. };