sp_cfg.h 11 KB

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