HCEHomeSS.h 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #ifndef _HC_EHOME_SS_H_
  2. #define _HC_EHOME_SS_H_
  3. #include "HCEHomePublic.h"
  4. #define MAX_KMS_USER_LEN 512 //KMS用户名最大长度
  5. #define MAX_KMS_PWD_LEN 512 //KMS密码最大长度
  6. #define MAX_CLOUD_AK_SK_LEN 64 //EHome5.0存储协议AK SK最大长度
  7. #define SS_CLIENT_FILE_PATH_PARAM_NAME "File-Path"
  8. #define SS_CLIENT_VRB_FILENAME_CODE "Filename-Code"
  9. #define SS_CLIENT_KMS_USER_NAME "KMS-Username"
  10. #define SS_CLIENT_KMS_PASSWIRD "KMS-Password"
  11. #define SS_CLIENT_CLOUD_AK_NAME "Access-Key"
  12. #define SS_CLIENT_CLOUD_SK_NAME "Secret-Key"
  13. #ifndef MAX_PATH
  14. #define MAX_PATH 260
  15. #endif
  16. enum NET_EHOME_SS_MSG_TYPE
  17. {
  18. NET_EHOME_SS_MSG_TOMCAT = 1, //Tomcat回调函数
  19. NET_EHOME_SS_MSG_KMS_USER_PWD, //KMS用户名密码校验
  20. NET_EHOME_SS_MSG_CLOUD_AK //EHome5.0存储协议AK回调
  21. };
  22. enum NET_EHOME_SS_CLIENT_TYPE
  23. {
  24. NET_EHOME_SS_CLIENT_TYPE_TOMCAT = 1, //Tomcat图片上传客户端
  25. NET_EHOME_SS_CLIENT_TYPE_VRB, //VRB图片上传客户端
  26. NET_EHOME_SS_CLIENT_TYPE_KMS, //KMS图片上传客户端
  27. NET_EHOME_SS_CLIENT_TYPE_CLOUD //EHome5.0存储协议客户端
  28. };
  29. //Tomcat图片服务器回调信息
  30. typedef struct tagNET_EHOME_SS_TOMCAT_MSG
  31. {
  32. char szDevUri[MAX_URL_LEN_SS]; //设备请求的URI
  33. DWORD dwPicNum; //图片数
  34. char* pPicURLs; //图片URL,每个URL MAX_URL_LEN_SS长度
  35. BYTE byRes[64];
  36. }NET_EHOME_SS_TOMCAT_MSG, *LPNET_EHOME_SS_TOMCAT_MSG;
  37. //信息回调函数
  38. typedef BOOL(CALLBACK *EHomeSSMsgCallBack)(LONG iHandle, NET_EHOME_SS_MSG_TYPE enumType
  39. , void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser);
  40. //存储回调函数
  41. typedef BOOL(CALLBACK *EHomeSSStorageCallBack)(LONG iHandle, const char* pFileName, void *pFileBuf, DWORD dwFileLen, char *pFilePath, void *pUser);
  42. //读写回调函数 byAct 0-读 1-写 2-删
  43. typedef BOOL(CALLBACK *EHomeSSRWCallBack)(LONG iHandle, BYTE byAct, const char* pFileName
  44. , void *pFileBuf, LONG& dwFileLen, const char* pFileUrl, void *pUser);
  45. //监听参数
  46. typedef struct tagNET_EHOME_SS_LISTEN_PARAM
  47. {
  48. NET_EHOME_IPADDRESS struAddress; //本地监听信息,IP为0.0.0.0的情况下,默认为本地地址,多个网卡的情况下,默认为从操作系统获取到的第一个
  49. char szKMS_UserName[MAX_KMS_USER_LEN];//KMS用户名
  50. char szKMS_Password[MAX_KMS_PWD_LEN];//KMS密码
  51. EHomeSSStorageCallBack fnSStorageCb; //图片服务器信息存储回调函数
  52. EHomeSSMsgCallBack fnSSMsgCb; //图片服务器信息Tomcat回调函数
  53. char szAccessKey[MAX_CLOUD_AK_SK_LEN]; //EHome5.0存储协议AK
  54. char szSecretKey[MAX_CLOUD_AK_SK_LEN]; //EHome5.0存储协议SK
  55. void * pUserData; //用户数据
  56. BYTE byHttps; //是否启用HTTPs
  57. BYTE byRes1[3];
  58. EHomeSSRWCallBack fnSSRWCb; //读写回调函数
  59. BYTE byRes[56];
  60. }NET_EHOME_SS_LISTEN_PARAM, *LPNET_EHOME_SS_LISTEN_PARAM;
  61. //监听Https参数
  62. typedef struct tagNET_EHOME_SS_LISTEN_HTTPS_PARAM
  63. {
  64. BYTE byHttps; //0-不启用HTTPS 1-启用HTTPS
  65. BYTE byVerifyMode; //0-单向认证(暂只支持单向认证)
  66. BYTE byCertificateFileType; //证书类型0-pem, 1-ANS1
  67. BYTE byPrivateKeyFileType; //私钥类型0-pem, 1-ANS1
  68. char szUserCertificateFile[MAX_PATH]; //公钥证书文件路径
  69. char szUserPrivateKeyFile[MAX_PATH]; //私钥证书文件路径
  70. DWORD dwSSLVersion; //SSL Method版本
  71. //0 - SSL23, 1 - SSL2, 2 - SSL3, 3 - TLS1.0, 4 - TLS1.1, 5 - TLS1.2
  72. //SSL23是兼容模式,会协商客户端和服务端使用的最高版本
  73. BYTE byRes3[360];
  74. }NET_EHOME_SS_LISTEN_HTTPS_PARAM, *LPNET_EHOME_SS_LISTEN_HTTPS_PARAM;
  75. //图片上传客户端参数
  76. typedef struct tagNET_EHOME_SS_CLIENT_PARAM
  77. {
  78. NET_EHOME_SS_CLIENT_TYPE enumType; //图片上传客户端类型
  79. NET_EHOME_IPADDRESS struAddress; //图片服务器地址
  80. BYTE byHttps; //是否启用HTTPs
  81. BYTE byRes[63];
  82. }NET_EHOME_SS_CLIENT_PARAM, *LPNET_EHOME_SS_CLIENT_PARAM;
  83. enum NET_EHOME_SS_INIT_CFG_TYPE
  84. {
  85. NET_EHOME_SS_INIT_CFG_SDK_PATH = 1, //设置SS组件加载路径(仅Linux版本支持)
  86. NET_EHOME_SS_INIT_CFG_CLOUD_TIME_DIFF, //设置运存储的请求时间差值,默认15分钟,最小5分钟,最大60分钟
  87. NET_EHOME_SS_INIT_CFG_PUBLIC_IP_PORT //设置公网地址(当存在内外网映射时)
  88. };
  89. typedef struct tagNET_EHOME_SS_LOCAL_SDK_PATH{
  90. char sPath[MAX_PATH];
  91. BYTE byRes[128];
  92. }NET_EHOME_SS_LOCAL_SDK_PATH, *LPNET_EHOME_SS_LOCAL_SDK_PATH;
  93. //初始化,反初始化
  94. NET_DVR_API BOOL CALLBACK NET_ESS_Init();
  95. NET_DVR_API BOOL CALLBACK NET_ESS_Fini();
  96. //获取错误码
  97. NET_DVR_API DWORD CALLBACK NET_ESS_GetLastError();
  98. //日志
  99. NET_DVR_API BOOL CALLBACK NET_ESS_SetLogToFile(LONG iLogLevel, const char *strLogDir, BOOL bAutoDel);
  100. //获取版本号
  101. NET_DVR_API DWORD CALLBACK NET_ESS_GetBuildVersion();
  102. //设置HTTP监听的Https参数
  103. NET_DVR_API BOOL CALLBACK NET_ESS_SetListenHttpsParam(NET_EHOME_SS_LISTEN_HTTPS_PARAM* pSSHttpsParam);
  104. //开启监听
  105. NET_DVR_API LONG CALLBACK NET_ESS_StartListen(NET_EHOME_SS_LISTEN_PARAM* pSSListenParam);
  106. //关闭监听
  107. NET_DVR_API BOOL CALLBACK NET_ESS_StopListen(LONG lListenHandle);
  108. //设置初始化参数
  109. NET_DVR_API BOOL NET_ESS_SetSDKInitCfg(NET_EHOME_SS_INIT_CFG_TYPE enumType, void* const lpInBuff);
  110. //创建图片上传/下载客户端
  111. NET_DVR_API LONG CALLBACK NET_ESS_CreateClient(NET_EHOME_SS_CLIENT_PARAM* pClientParam);
  112. //设置图片上传/下载客户端超时时间,单位ms,默认为5s
  113. NET_DVR_API BOOL CALLBACK NET_ESS_ClientSetTimeout(LONG lHandle, DWORD dwSendTimeout, DWORD dwRecvTimeout);
  114. //设置图片上传/下载客户端参数
  115. NET_DVR_API BOOL CALLBACK NET_ESS_ClientSetParam(LONG lHandle, const char* strParamName, const char* strParamVal);
  116. //图片上传/下载客户端执行上传
  117. NET_DVR_API BOOL CALLBACK NET_ESS_ClientDoUpload(LONG lHandle, char* strUrl, LONG dwUrlLen);
  118. //图片上传/下载客户端执行下载
  119. NET_DVR_API BOOL CALLBACK NET_ESS_ClientDoDownload(LONG lHandle, char* strUrl, void** pFileContent, DWORD& dwContentLen);
  120. //销毁客户端
  121. NET_DVR_API BOOL CALLBACK NET_ESS_DestroyClient(LONG lHandle);
  122. //计算HMAC-SHA256
  123. NET_DVR_API BOOL NET_ESS_HAMSHA256(const char* pSrc, const char* pSecretKey, char* pSingatureOut, DWORD dwSingatureLen);
  124. #endif //_HC_EHOME_SS_H_