123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- #ifndef SP_CFG_H
- #define SP_CFG_H
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "list.h"
- #include "spinlock.h"
- #include "shm_array.h"
- #include "y2k_time.h"
- #include "sp_def.h"
- #define SP_CFG_MAX_SYSEVT_BUF 260
- #define SP_CFG_MAX_REBOOT_INFO 10
- typedef struct sp_cfg_start_args_t {
- char* program;
- char* arguments;
- char* start_entities; /*split with ';' for supported multi entities*/
- char test_mode; /*1: run as test mode, trigger test deamon entity to invoke onTest*/
- #ifndef DEVOPS_ON_PRD
- //非生产情况下,才支持测试模式
- char auto_test; /*1: run as auto test mode, loadup simulator adapter */
- #endif
- char debug_mode; /*trace memory alloca and cpu etc resource */
- char guardian_mode;
- char sign_verifity;
- char ipc_type; /*0: pipe; 1: tcp*/
- char gui; /*0: console, 1:gui*/
- char root; /*0:not_root, 1:root*/
- int telnet_port; /** nConsolePort*/
- } sp_cfg_start_args_t;
- static int is_own_test_mode(char val)
- {
- if ((val & 1) || (val & 2))
- return 1;
- return 0;
- }
- static int detect_env_test_mode(char val)
- {
- if ((val & 4))
- return 1;
- else if ((val & 8))
- return 2;
- return 0;
- }
- typedef struct sp_cfg_path_t {
- char *name;
- char *path;
- }sp_cfg_path_t;
- typedef struct sp_cfg_root_ini_t {
- char* terminal_no;
- char* machine_type;
- char* machine_model;
- char* machine_sn;
- char* manufacturer;
- sp_version_t machine_version;
- float enroll_gps_x;
- float enroll_gps_y;
- char* site;
- int screen;
- char* enroll_address;
- char* root_version;//整体root配置的version,hash值
- char* center_version;//整体center配置的version,hash值
- char* shell_version;//整体shell配置的version,hash值
- char* root_config;//root配置的内容
- char* center_config;//集中配置的内容
- char* shell_config;//shell配置的内容
- /*vtm_err_msg version config*/
- char* vtm_err_msg_version;
- char* vtm_err_msg_config;
- array_header_t *arr_path;
- char *ref_sysroot_path;
- char *ref_addata_path;
- char *ref_entlog_path; //TODO:
- char *ref_syslog_path;
- char *ref_intlog_path;
- char *ref_uploadvideo_path;
- char *ref_uploadphoto_path;
- char *ref_localvideo_path;
- char *ref_downloads_path;
- char *ref_upgraded_path;
- char *ref_tmp_path;
- char *ref_centersetting_path;
- }sp_cfg_root_ini_t;
- typedef struct sp_cfg_pack_info_t {
- char *name;
- y2k_time_t install_time;
- int state;
- }sp_cfg_pack_info_t;
- typedef struct sp_cfg_version_info_t {
- sp_version_t version;
- sp_version_t previous_version;
- y2k_time_t switch_time;
- //array_header_t *arr_pack; // history versino has no light pack install info
- char *install_pack;
- int install_state;
- }sp_cfg_version_info_t;
- typedef struct sp_cfg_install_ini_t {
- sp_version_t install_version;
- y2k_time_t install_time;
- y2k_time_t current_startup_time;
- sp_version_t latter_install_version;
- char *latter_install_pack;
- array_header_t *arr_light_pack;
- char *light_packs;
- array_header_t *arr_version; // array of sp_cfg_version_info_t
- int total_run_count;
- int today_run_count;
- }sp_cfg_install_ini_t;
- typedef struct sp_cfg_shell_entity_t sp_cfg_shell_entity_t;
- typedef struct sp_cfg_shell_module_t sp_cfg_shell_module_t;
- typedef struct sp_cfg_shell_sysevent_t sp_cfg_shell_sysevent_t;
- typedef struct sp_cfg_shell_ini_t sp_cfg_shell_ini_t;
- typedef struct sp_cfg_t sp_cfg_t;
- typedef struct sp_cfg_run_info_t sp_cfg_run_info_t;
- typedef union _LARGE_TIME
- {
- FILETIME filetimePart;
- LONGLONG longPart;
- }LARGE_TIME;
- struct sp_cfg_shell_entity_t {
- int idx;
- char *name;
- int argc;
- char **argv;
- char *cmdline;
- int privilege;
- int debug_level;
- int devel_id;
- int log_record_level;
- sp_version_t version;
- int m_startTimes;
- int runType; ////1,Debug;2,Release 用于加载Debug版本还是Release版本的库文件,WIN才需要,UOS都是Release版本
- #if defined(_MSC_VER)
- LARGE_TIME m_EntityStartTime; //first
- LARGE_TIME m_EntityInitEndTime;
- LARGE_TIME m_EntityStartEndTime;
- #else
- SYSTEMTIME m_EntityStartTime; //first
- SYSTEMTIME m_EntityInitEndTime;
- SYSTEMTIME m_EntityStartEndTime;
- #endif //_MSC_VER
-
- sp_cfg_shell_module_t *mod;
- char *issuer; // authenticode signer
- };
- struct sp_cfg_shell_module_t {
- int idx;
- char *name;
- char *author;
- char *company;
- int runType;
- int debugFileExist;
- sp_version_t version;
- int mem_trace;
- };
- struct sp_cfg_shell_sysevent_t {
- char *name;
- array_header_t *arr_owner_entity;
- char init_value[SP_CFG_MAX_SYSEVT_BUF];
- int idx;
- };
- struct sp_cfg_shell_ini_t {
- sp_version_t software_version;
- char* env;
- char* CommonLaunchUrl;
- char* CenterConfigTotal;
- char* channelId;
- char* tokenSecret;
- char* token;
- array_header_t *arr_entity;
- array_header_t *arr_module;
- array_header_t *arr_sysevent;
- array_header_t *arr_startlist;
- int shell_debug_level;
- int log_record_level;
- int shell_state;
- int nConsolePort; // console service port
- char *spbase_sign_cert_hash;
- };
- struct sp_cfg_run_info_t {
- y2k_time_t startup_time;
- };
- struct sp_cfg_t {
- char *root_ini_path;
- char *shell_ini_path;
- char *install_ini_path;
- char *shellvar_ini_path;
- sp_cfg_root_ini_t *root_ini;
- sp_cfg_shell_ini_t *shell_ini;
- sp_cfg_install_ini_t *install_ini;
- sp_cfg_run_info_t *run_info;
- sp_cfg_start_args_t* args;
- spinlock_t lock;
- };
- typedef struct sp_dir_t sp_dir_t;
- int sp_cfg_create(sp_dir_t *dir, const sp_cfg_start_args_t* args, sp_cfg_t **p_cfg);
- void sp_cfg_destroy(sp_cfg_t *cfg);
- void sp_cfg_lock(sp_cfg_t *cfg);
- void sp_cfg_unlock(sp_cfg_t *cfg);
- SPBASE_API sp_cfg_shell_entity_t *sp_cfg_get_entity_by_name(sp_cfg_t *cfg, const char *name);
- SPBASE_API sp_cfg_shell_entity_t *sp_cfg_get_entity_by_idx(sp_cfg_t *cfg, int idx);
- sp_cfg_shell_entity_t *sp_cfg_get_entity_shell(sp_cfg_t *cfg);
- sp_cfg_shell_module_t *sp_cfg_get_module_by_name(sp_cfg_t *cfg, const char *name);
- SPBASE_API sp_cfg_shell_module_t *sp_cfg_get_module_by_idx(sp_cfg_t *cfg, int idx);
- sp_cfg_shell_module_t *sp_cfg_get_module_shell(sp_cfg_t *cfg);
- sp_cfg_shell_sysevent_t*sp_cfg_get_sysevent(sp_cfg_t *cfg, const char *name);
- SPBASE_API sp_cfg_version_info_t* sp_cfg_find_previous_version_info(sp_cfg_t *cfg, const sp_version_t *version);
- SPBASE_API sp_cfg_version_info_t* sp_cfg_find_version_info(sp_cfg_t *cfg, const sp_version_t *version);
- /*get path from root config*/
- char *sp_cfg_get_path(sp_cfg_t *cfg, const char *path_prefix);
- int sp_cfg_refresh_debug_level(sp_cfg_t *cfg, sp_cfg_shell_entity_t *cfg_ent);
- int sp_cfg_refresh_ent_version(sp_cfg_shell_entity_t* cfg_ent, const char* new_version);
- int sp_cfg_util_read_root_ini_version(sp_cfg_root_ini_t *ini, int major, int minor, int revision, int build);
- int sp_cfg_util_free_root_ini(sp_cfg_root_ini_t *ini);
- int sp_cfg_get_devel_id(sp_cfg_t *cfg, int idx);
- int sp_cfg_is_pack_installed(sp_cfg_t *cfg, const char*pack);
- int read_ini_install_state(const char *file, const char *section, const char *key);
- int sp_TryUpdateToken(char* oldToken, char* newToken);
- SPBASE_API int sp_TryUpdateCfg();
- SPBASE_API int sp_ModifyMemCfg(const char* configType, const char* module, const char* name, const char* value);
- int sp_TryUpdateCenterCfg(int *isUpdate, int *isReset, char *version);
- SPBASE_API int sp_tryReadFromCenterSetting(const char *section, const char *key, char *dst, int max_len);
- SPBASE_API int sp_TryUpdate_vtm_err_msg();
- SPBASE_API int sp_tryRefreshLogLevelFromCacheConfig();
- SPBASE_API void sp_cfg_setShellFirstStartTime(LARGE_TIME t_shellFirstStart);
- SPBASE_API void load_specialRunInfoInCentersetting(const char* fileName);
- SPBASE_API LARGE_TIME sp_cfg_getShellFirstStartTime();
- SPBASE_API int sp_cfg_getVer(char* ver);
- SPBASE_API int sp_cfg_getDepVer(char* ver);
- SPBASE_API void get_upload_info(unsigned long* t_upload_TerminalSys_Suc, unsigned long* t_upload_TerminalUser_Suc,
- unsigned long* t_upload_BussinessSys_Suc, unsigned long* t_upload_BussinessUser_Suc, unsigned long* t_upload_beidou_Suc,
- unsigned long* t_upload_TerminalSys_Err, unsigned long* t_upload_TerminalUser_Err,
- unsigned long* t_upload_BussinessSys_Err, unsigned long* t_upload_BussinessUser_Err, unsigned long* t_upload_beidou_Err);
- SPBASE_API void get_upload_info2(unsigned long* t_discard_full, unsigned long* t_discard_RTI1002, unsigned long* curLogNum);
- #define SP_MAX_VER_LEN 128
- #define SPSHELL_NAME "SpShell"
- //ROOT_INI_DEFINE
- #define MAX_CONFIG_LEN 2048
- #define CONFIG_HEAD "Terminal"
- #define CONFIG_NODE_TERMINALNO "terminalNo"
- #define CONFIG_NODE_BRANCHNO "branchNo"
- #define CONFIG_NODE_VERSIONNO "versionNo"
- #define CONFIG_NODE_MACHINETYPE "machineType"
- #define CONFIG_NODE_MACHINEVERSION "machineVersion"
- #define CONFIG_NODE_SITES "sites"
- #define CONFIG_NODE_SCREEN "screen"
- #define CONFIG_NODE_ENROLADDR "enroladdr"
- #define CONFIG_NODE_ENROLGPS "enrolgps"
- #define CONFIG_NODE_MANUFACTURER "manufacturer"
- #define CONFIG_NODE_MACHINEMODEL "machineModel"
- #define CONFIG_TERMINALINFO_HEAD "terminalinfo"
- #define CONFIG_HTTP_CONFIGLIST "configList"
- //SHELL_INI_DEFINE
- #define SHELL_MAIN_HEAD "Main"
- #define SHELL_MAIN_SOFTWAREVERSION "SoftwareVersion"
- #define SHELL_MAIN_CONSOLEPORT "ConsolePort"
- #define SHELL_ENTITY_HEAD "Entity"
- #define SHELL_SYSEVENT_HEAD "SysEvent"
- #define SHELL_STARTUP_HEAD "Startup"
- #define SHELL_STARTUP_NUMBER "Number"
- #define SHELL_MEMTRACE_HEAD "mem_trace"
- #define SHELL_DEBUG_HEAD "Debug"
- #define SHELL_KILLPROCESS_HEAD "killProcess"
- #define SHELL_KILLPROCESS_NUMBER "Number"
- #define SHELL_RUNSCRIPT_HEAD "RunScript"
- #define SHELL_RUNSCRIPT_NUMBER "Number"
- #define SHELL_MICROSERVICEURL_HEAD "MicroServiceURL"
- #define SHELL_MICROSERVICEURL_CenterConfigUrl "CenterConfigUrl"
- //新接口,包含集中配置、root配置,后续可能添加其他
- #define TOTALCONFIG_HEAD "data"
- #define TOTALCONFIG_CENTER_HEAD "center_config_dto"
- #define TOTALCONFIG_CENTER_VERSION "sm3"
- #define TOTALCONFIG_CENTER_UPDATE "update"
- #define TOTALCONFIG_CENTER_RESET "reset"
- #define TOTALCONFIG_SHELL_HEAD "shell_config_dto"
- #define TOTALCONFIG_SHELL_VERSION "version_no"
- #define TOTALCONFIG_SHELL_INI_VERSION "shell_version_no"
- #define TOTALCONFIG_SHELL_UPDATE "update"
- #define TOTALCONFIG_ROOT_HEAD "root_config_dto"
- #define TOTALCONFIG_ROOT_VERSION "version_no"
- #define TOTALCONFIG_ROOT_UPDATE "update"
- #define TOTALCONFIG_CONFIG_HEAD "config"
- #define TOTALCONFIG_CONFIG_MODULE "module"
- #define TOTALCONFIG_CONFIG_NAME "name"
- #define TOTALCONFIG_CONFIG_VALUE "value"
- #define VTMERRMSG_VERSION "vtm_err_msg_version_no"
- #define VTMERRMSG_FILENAME "vtm_err_msg"
- #define VTMERRMSG_CONFIG_TOTAL "total"
- #define VTMERRMSG_CONFIG_VERSION "version_no"
- #define VTMERRMSG_CONFIG_PAGETOTAL "page_total"
- #define VTMERRMSG_CONFIG_CONFIG "config"
- #define VTMERRMSG_CONFIG_ERRORCODE "errorCode"
- #define VTMERRMSG_CONFIG_DESCRIPETION "description"
- #define VTMERRMSG_CONFIG_REMARK "remark"
- #ifdef __cplusplus
- } // extern "C" {
- #endif
- #endif // SP_CFG_H
|