sp_cfg.h 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. #ifndef SP_CFG_H
  2. #define SP_CFG_H
  3. #pragma once
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #include "list.h"
  8. #include "spinlock.h"
  9. #include "shm_array.h"
  10. #include "y2k_time.h"
  11. #include "sp_def.h"
  12. #define SP_CFG_MAX_SYSEVT_BUF 260
  13. #define SP_CFG_MAX_REBOOT_INFO 10
  14. typedef struct sp_cfg_start_args_t {
  15. char* program;
  16. char* arguments;
  17. char* start_entities; /*split with ';' for supported multi entities*/
  18. char test_mode; /*1: run as test mode, trigger test deamon entity to invoke onTest*/
  19. char debug_mode; /*trace memory alloca and cpu etc resource */
  20. char guardian_mode;
  21. char sign_verifity;
  22. char ipc_type; /*0: pipe; 1: tcp*/
  23. char gui; /*0: console, 1:gui*/
  24. char root; /*0:not_root, 1:root*/
  25. int telnet_port; /** nConsolePort*/
  26. } sp_cfg_start_args_t;
  27. static int is_own_test_mode(char val)
  28. {
  29. if ((val & 1) || (val & 2))
  30. return 1;
  31. return 0;
  32. }
  33. static int detect_env_test_mode(char val)
  34. {
  35. if ((val & 4))
  36. return 1;
  37. else if ((val & 8))
  38. return 2;
  39. return 0;
  40. }
  41. typedef struct sp_cfg_path_t {
  42. char *name;
  43. char *path;
  44. }sp_cfg_path_t;
  45. typedef struct sp_cfg_root_ini_t {
  46. char* terminal_no;
  47. char* machine_type;
  48. char* machine_model;
  49. char* machine_sn;
  50. char* manufacturer;
  51. sp_version_t machine_version;
  52. float enroll_gps_x;
  53. float enroll_gps_y;
  54. char* site;
  55. int screen;
  56. char* enroll_address;
  57. char* root_version;//整体root配置的version,hash值
  58. char* center_version;//整体center配置的version,hash值
  59. char* shell_version;//整体shell配置的version,hash值
  60. char* root_config;//root配置的内容
  61. char* center_config;//集中配置的内容
  62. char* shell_config;//shell配置的内容
  63. /*vtm_err_msg version config*/
  64. char* vtm_err_msg_version;
  65. char* vtm_err_msg_config;
  66. array_header_t *arr_path;
  67. char *ref_sysroot_path;
  68. char *ref_addata_path;
  69. char *ref_entlog_path; //TODO:
  70. char *ref_syslog_path;
  71. char *ref_intlog_path;
  72. char *ref_uploadvideo_path;
  73. char *ref_uploadphoto_path;
  74. char *ref_localvideo_path;
  75. char *ref_downloads_path;
  76. char *ref_upgraded_path;
  77. char *ref_tmp_path;
  78. char *ref_centersetting_path;
  79. }sp_cfg_root_ini_t;
  80. typedef struct sp_cfg_pack_info_t {
  81. char *name;
  82. y2k_time_t install_time;
  83. int state;
  84. }sp_cfg_pack_info_t;
  85. typedef struct sp_cfg_version_info_t {
  86. sp_version_t version;
  87. sp_version_t previous_version;
  88. y2k_time_t switch_time;
  89. //array_header_t *arr_pack; // history versino has no light pack install info
  90. char *install_pack;
  91. int install_state;
  92. }sp_cfg_version_info_t;
  93. typedef struct sp_cfg_install_ini_t {
  94. sp_version_t install_version;
  95. y2k_time_t install_time;
  96. y2k_time_t current_startup_time;
  97. sp_version_t latter_install_version;
  98. char *latter_install_pack;
  99. array_header_t *arr_light_pack;
  100. char *light_packs;
  101. array_header_t *arr_version; // array of sp_cfg_version_info_t
  102. int total_run_count;
  103. int today_run_count;
  104. }sp_cfg_install_ini_t;
  105. typedef struct sp_cfg_shell_entity_t sp_cfg_shell_entity_t;
  106. typedef struct sp_cfg_shell_module_t sp_cfg_shell_module_t;
  107. typedef struct sp_cfg_shell_sysevent_t sp_cfg_shell_sysevent_t;
  108. typedef struct sp_cfg_shell_ini_t sp_cfg_shell_ini_t;
  109. typedef struct sp_cfg_t sp_cfg_t;
  110. typedef struct sp_cfg_run_info_t sp_cfg_run_info_t;
  111. typedef union _LARGE_TIME
  112. {
  113. FILETIME filetimePart;
  114. LONGLONG longPart;
  115. }LARGE_TIME;
  116. struct sp_cfg_shell_entity_t {
  117. int idx;
  118. char *name;
  119. int argc;
  120. char **argv;
  121. char *cmdline;
  122. int privilege;
  123. int debug_level;
  124. int devel_id;
  125. int log_record_level;
  126. sp_version_t version;
  127. int m_startTimes;
  128. int runType; ////1,Debug;2,Release 用于加载Debug版本还是Release版本的库文件,WIN才需要,UOS都是Release版本
  129. #if defined(_MSC_VER)
  130. LARGE_TIME m_EntityStartTime; //first
  131. LARGE_TIME m_EntityInitEndTime;
  132. LARGE_TIME m_EntityStartEndTime;
  133. #else
  134. SYSTEMTIME m_EntityStartTime; //first
  135. SYSTEMTIME m_EntityInitEndTime;
  136. SYSTEMTIME m_EntityStartEndTime;
  137. #endif //_MSC_VER
  138. sp_cfg_shell_module_t *mod;
  139. char *issuer; // authenticode signer
  140. };
  141. struct sp_cfg_shell_module_t {
  142. int idx;
  143. char *name;
  144. char *author;
  145. char *company;
  146. int runType;
  147. int debugFileExist;
  148. sp_version_t version;
  149. int mem_trace;
  150. };
  151. struct sp_cfg_shell_sysevent_t {
  152. char *name;
  153. array_header_t *arr_owner_entity;
  154. char init_value[SP_CFG_MAX_SYSEVT_BUF];
  155. int idx;
  156. };
  157. struct sp_cfg_shell_ini_t {
  158. sp_version_t software_version;
  159. char* env;
  160. char* CommonLaunchUrl;
  161. char* CenterConfigTotal;
  162. char* channelId;
  163. char* tokenSecret;
  164. char* token;
  165. array_header_t *arr_entity;
  166. array_header_t *arr_module;
  167. array_header_t *arr_sysevent;
  168. array_header_t *arr_startlist;
  169. int shell_debug_level;
  170. int log_record_level;
  171. int shell_state;
  172. int nConsolePort; // console service port
  173. char *spbase_sign_cert_hash;
  174. };
  175. struct sp_cfg_run_info_t {
  176. y2k_time_t startup_time;
  177. };
  178. struct sp_cfg_t {
  179. char *root_ini_path;
  180. char *shell_ini_path;
  181. char *install_ini_path;
  182. char *shellvar_ini_path;
  183. sp_cfg_root_ini_t *root_ini;
  184. sp_cfg_shell_ini_t *shell_ini;
  185. sp_cfg_install_ini_t *install_ini;
  186. sp_cfg_run_info_t *run_info;
  187. sp_cfg_start_args_t* args;
  188. spinlock_t lock;
  189. };
  190. typedef struct sp_dir_t sp_dir_t;
  191. int sp_cfg_create(sp_dir_t *dir, const sp_cfg_start_args_t* args, sp_cfg_t **p_cfg);
  192. void sp_cfg_destroy(sp_cfg_t *cfg);
  193. void sp_cfg_lock(sp_cfg_t *cfg);
  194. void sp_cfg_unlock(sp_cfg_t *cfg);
  195. SPBASE_API sp_cfg_shell_entity_t *sp_cfg_get_entity_by_name(sp_cfg_t *cfg, const char *name);
  196. SPBASE_API sp_cfg_shell_entity_t *sp_cfg_get_entity_by_idx(sp_cfg_t *cfg, int idx);
  197. sp_cfg_shell_entity_t *sp_cfg_get_entity_shell(sp_cfg_t *cfg);
  198. sp_cfg_shell_module_t *sp_cfg_get_module_by_name(sp_cfg_t *cfg, const char *name);
  199. SPBASE_API sp_cfg_shell_module_t *sp_cfg_get_module_by_idx(sp_cfg_t *cfg, int idx);
  200. sp_cfg_shell_module_t *sp_cfg_get_module_shell(sp_cfg_t *cfg);
  201. sp_cfg_shell_sysevent_t*sp_cfg_get_sysevent(sp_cfg_t *cfg, const char *name);
  202. SPBASE_API sp_cfg_version_info_t* sp_cfg_find_previous_version_info(sp_cfg_t *cfg, const sp_version_t *version);
  203. SPBASE_API sp_cfg_version_info_t* sp_cfg_find_version_info(sp_cfg_t *cfg, const sp_version_t *version);
  204. /*get path from root config*/
  205. char *sp_cfg_get_path(sp_cfg_t *cfg, const char *path_prefix);
  206. int sp_cfg_refresh_debug_level(sp_cfg_t *cfg, sp_cfg_shell_entity_t *cfg_ent);
  207. int sp_cfg_refresh_ent_version(sp_cfg_shell_entity_t* cfg_ent, const char* new_version);
  208. int sp_cfg_util_read_root_ini_version(sp_cfg_root_ini_t *ini, int major, int minor, int revision, int build);
  209. int sp_cfg_util_free_root_ini(sp_cfg_root_ini_t *ini);
  210. int sp_cfg_get_devel_id(sp_cfg_t *cfg, int idx);
  211. int sp_cfg_is_pack_installed(sp_cfg_t *cfg, const char*pack);
  212. int read_ini_install_state(const char *file, const char *section, const char *key);
  213. int sp_TryUpdateToken(char* oldToken, char* newToken);
  214. SPBASE_API int sp_TryUpdateCfg();
  215. SPBASE_API int sp_ModifyMemCfg(const char* configType, const char* module, const char* name, const char* value);
  216. int sp_TryUpdateCenterCfg(int *isUpdate, int *isReset, char *version);
  217. SPBASE_API int sp_tryReadFromCenterSetting(const char *section, const char *key, char *dst, int max_len);
  218. SPBASE_API int sp_TryUpdate_vtm_err_msg();
  219. SPBASE_API int sp_tryRefreshLogLevelFromCacheConfig();
  220. SPBASE_API void sp_cfg_setShellFirstStartTime(LARGE_TIME t_shellFirstStart);
  221. SPBASE_API void load_specialRunInfoInCentersetting(const char* fileName);
  222. SPBASE_API LARGE_TIME sp_cfg_getShellFirstStartTime();
  223. SPBASE_API int sp_cfg_getVer(char* ver);
  224. #define SP_MAX_VER_LEN 128
  225. #define SPSHELL_NAME "SpShell"
  226. //ROOT_INI_DEFINE
  227. #define MAX_CONFIG_LEN 2048
  228. #define CONFIG_HEAD "Terminal"
  229. #define CONFIG_NODE_TERMINALNO "terminalNo"
  230. #define CONFIG_NODE_BRANCHNO "branchNo"
  231. #define CONFIG_NODE_VERSIONNO "versionNo"
  232. #define CONFIG_NODE_MACHINETYPE "machineType"
  233. #define CONFIG_NODE_MACHINEVERSION "machineVersion"
  234. #define CONFIG_NODE_SITES "sites"
  235. #define CONFIG_NODE_SCREEN "screen"
  236. #define CONFIG_NODE_ENROLADDR "enroladdr"
  237. #define CONFIG_NODE_ENROLGPS "enrolgps"
  238. #define CONFIG_NODE_MANUFACTURER "manufacturer"
  239. #define CONFIG_NODE_MACHINEMODEL "machineModel"
  240. #define CONFIG_TERMINALINFO_HEAD "terminalinfo"
  241. #define CONFIG_HTTP_CONFIGLIST "configList"
  242. //SHELL_INI_DEFINE
  243. #define SHELL_MAIN_HEAD "Main"
  244. #define SHELL_MAIN_SOFTWAREVERSION "SoftwareVersion"
  245. #define SHELL_MAIN_CONSOLEPORT "ConsolePort"
  246. #define SHELL_ENTITY_HEAD "Entity"
  247. #define SHELL_SYSEVENT_HEAD "SysEvent"
  248. #define SHELL_STARTUP_HEAD "Startup"
  249. #define SHELL_STARTUP_NUMBER "Number"
  250. #define SHELL_MEMTRACE_HEAD "mem_trace"
  251. #define SHELL_DEBUG_HEAD "Debug"
  252. #define SHELL_KILLPROCESS_HEAD "killProcess"
  253. #define SHELL_KILLPROCESS_NUMBER "Number"
  254. #define SHELL_RUNSCRIPT_HEAD "RunScript"
  255. #define SHELL_RUNSCRIPT_NUMBER "Number"
  256. #define SHELL_MICROSERVICEURL_HEAD "MicroServiceURL"
  257. #define SHELL_MICROSERVICEURL_CenterConfigUrl "CenterConfigUrl"
  258. //新接口,包含集中配置、root配置,后续可能添加其他
  259. #define TOTALCONFIG_HEAD "data"
  260. #define TOTALCONFIG_CENTER_HEAD "center_config_dto"
  261. #define TOTALCONFIG_CENTER_VERSION "sm3"
  262. #define TOTALCONFIG_CENTER_UPDATE "update"
  263. #define TOTALCONFIG_CENTER_RESET "reset"
  264. #define TOTALCONFIG_SHELL_HEAD "shell_config_dto"
  265. #define TOTALCONFIG_SHELL_VERSION "version_no"
  266. #define TOTALCONFIG_SHELL_INI_VERSION "shell_version_no"
  267. #define TOTALCONFIG_SHELL_UPDATE "update"
  268. #define TOTALCONFIG_ROOT_HEAD "root_config_dto"
  269. #define TOTALCONFIG_ROOT_VERSION "version_no"
  270. #define TOTALCONFIG_ROOT_UPDATE "update"
  271. #define TOTALCONFIG_CONFIG_HEAD "config"
  272. #define TOTALCONFIG_CONFIG_MODULE "module"
  273. #define TOTALCONFIG_CONFIG_NAME "name"
  274. #define TOTALCONFIG_CONFIG_VALUE "value"
  275. #define VTMERRMSG_VERSION "vtm_err_msg_version_no"
  276. #define VTMERRMSG_FILENAME "vtm_err_msg"
  277. #define VTMERRMSG_CONFIG_TOTAL "total"
  278. #define VTMERRMSG_CONFIG_VERSION "version_no"
  279. #define VTMERRMSG_CONFIG_PAGETOTAL "page_total"
  280. #define VTMERRMSG_CONFIG_CONFIG "config"
  281. #define VTMERRMSG_CONFIG_ERRORCODE "errorCode"
  282. #define VTMERRMSG_CONFIG_DESCRIPETION "description"
  283. #define VTMERRMSG_CONFIG_REMARK "remark"
  284. #ifdef __cplusplus
  285. } // extern "C" {
  286. #endif
  287. #endif // SP_CFG_H