|
|
@@ -39,6 +39,9 @@ using namespace Recorder;
|
|
|
#define RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX "enc_B_"
|
|
|
#endif // !RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX
|
|
|
|
|
|
+#ifndef RVC_MIN_RECORD_FILESIZE
|
|
|
+#define RVC_MIN_RECORD_FILESIZE 1024
|
|
|
+#endif
|
|
|
|
|
|
static unsigned long GetFileSize(const char* pfilename)
|
|
|
{
|
|
|
@@ -72,10 +75,17 @@ static const char* GetFileName(const char* pfilename)
|
|
|
return strstr(pfilename, RVC_TRANSATCION_RECORD_SUFFIX);
|
|
|
}
|
|
|
|
|
|
-static void LogVideoSizeInfo(const char* pszMessage)
|
|
|
+static unsigned long GetRecordFileSize(const char* pszMessage, bool bencrypted)
|
|
|
{
|
|
|
unsigned long ufilesize = GetFileSize(pszMessage);
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_VIDEO_SIZE, CSimpleStringA::Format("%s file size is %u byte.", pszMessage, ufilesize).GetData());
|
|
|
+ if (false == bencrypted) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_RECORDER_VIDEO_SIZE, CSimpleStringA::Format("%s file size is %u byte.", pszMessage, ufilesize).GetData());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_ENCRYPTED_RECORDER_VIDEO_SIZE, CSimpleStringA::Format("encrypted file %s size is %u byte.", pszMessage, ufilesize).GetData());
|
|
|
+ }
|
|
|
+
|
|
|
+ return ufilesize;
|
|
|
}
|
|
|
|
|
|
static void rvcDbg(filecrypt_loglevel elevel, const char* fmt, ...)
|
|
|
@@ -458,17 +468,8 @@ ErrorCodeEnum CRecorderEntity::HandleExceptionRecordVideos()
|
|
|
}
|
|
|
|
|
|
SetRecordSessionID(strSession + strlen(RVC_TRANSATCION_RECORD_SUFFIX));
|
|
|
-
|
|
|
- while (--iSeriesNum >= 0) {
|
|
|
- CSimpleStringA strFilePath("");
|
|
|
- strFilePath = CSimpleStringA::Format("%s%s_%d.%s", m_RecordSaveDir.GetData(), strSession, iSeriesNum, strFormat);
|
|
|
- if (ExistsFile(strFilePath.GetData())) {
|
|
|
- AddToVideoRecordList(strFilePath.GetData());
|
|
|
- }
|
|
|
- else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("File {%s} is not exist.", strFilePath.GetData());
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+ Error = Error_Succeed;
|
|
|
|
|
|
return Error;
|
|
|
}
|
|
|
@@ -561,22 +562,34 @@ void CRecorderEntity::OnLog(const CAutoArray<CUUID> &SubIDs, const CUUID nLogID,
|
|
|
|
|
|
case LOG_EVT_RECORDER_SECTION_FINISHED:
|
|
|
{
|
|
|
- LogVideoSizeInfo(pszMessage);
|
|
|
- if (m_bEncFlag){
|
|
|
- HandleEncryptVideoRecord(pszMessage);
|
|
|
+ unsigned long uSize = GetRecordFileSize(pszMessage, false);
|
|
|
+ if (RVC_MIN_RECORD_FILESIZE < uSize) {
|
|
|
+ if (m_bEncFlag) {
|
|
|
+ HandleEncryptVideoRecord(pszMessage);
|
|
|
+ }
|
|
|
+ HandleSaveVideoRecord(pszMessage);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", pszMessage).GetData());
|
|
|
+ RvcDeleteFile(pszMessage);
|
|
|
}
|
|
|
- HandleSaveVideoRecord(pszMessage);
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
case LOG_EVT_RECORDER_WHOLE_FINISHED:
|
|
|
{
|
|
|
- LogVideoSizeInfo(pszMessage);
|
|
|
- if (m_bEncFlag){
|
|
|
- HandleEncryptVideoRecord(pszMessage);
|
|
|
+ unsigned long uSize = GetRecordFileSize(pszMessage, false);
|
|
|
+ if (RVC_MIN_RECORD_FILESIZE < uSize) {
|
|
|
+ if (m_bEncFlag) {
|
|
|
+ HandleEncryptVideoRecord(pszMessage);
|
|
|
+ }
|
|
|
+ HandleFinishedVideoRecord(pszMessage);
|
|
|
+ PostVideoRecordInfos();
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", pszMessage).GetData());
|
|
|
+ RvcDeleteFile(pszMessage);
|
|
|
}
|
|
|
- HandleFinishedVideoRecord(pszMessage);
|
|
|
- PostVideoRecordInfos();
|
|
|
}
|
|
|
break;
|
|
|
|
|
|
@@ -774,6 +787,11 @@ int CRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
|
|
|
return iRet;
|
|
|
}
|
|
|
|
|
|
+ if (!ExistsFile(videofilename)) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("File %s is not exist.", videofilename);
|
|
|
+ return iRet;
|
|
|
+ }
|
|
|
+
|
|
|
filecryption_callback_t cb = {0};
|
|
|
cb.dbg = &rvcDbg;
|
|
|
|
|
|
@@ -788,6 +806,9 @@ int CRecorderEntity::HandleEncryptVideoRecord(const char* videofilename)
|
|
|
}
|
|
|
return iRet;
|
|
|
}
|
|
|
+ else {
|
|
|
+ GetRecordFileSize(strOutFile, true);
|
|
|
+ }
|
|
|
|
|
|
bool bRet = RvcDeleteFile(videofilename);
|
|
|
if(!bRet) {
|
|
|
@@ -952,11 +973,20 @@ int CRecorderEntity::SaveExceptionRecordVideos()
|
|
|
if (0 == memcmp(FindFileData.cFileName, RVC_TRANSATCION_RECORD_SUFFIX, strlen(RVC_TRANSATCION_RECORD_SUFFIX)) ||
|
|
|
0 == memcmp(FindFileData.cFileName, RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX, strlen(RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX))){
|
|
|
CSimpleStringA srcfile = CSimpleStringA::Format("%s%s",m_TempDir.GetData(), FindFileData.cFileName);
|
|
|
+ unsigned long uSize = GetRecordFileSize(srcfile.GetData(), false);
|
|
|
+ if (RVC_MIN_RECORD_FILESIZE >= uSize) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", srcfile.GetData()).GetData());
|
|
|
+ RvcDeleteFile(srcfile.GetData());
|
|
|
+ goto on_next;
|
|
|
+ }
|
|
|
+
|
|
|
if (m_bEncFlag){
|
|
|
filecryption_callback_t cb = {0};
|
|
|
cb.dbg = &rvcDbg;
|
|
|
if (false == is_file_encrypted(srcfile.GetData(), &cb)){
|
|
|
- HandleEncryptVideoRecord(srcfile.GetData());
|
|
|
+ if (is_file_completed(srcfile.GetData(), &cb)) {
|
|
|
+ HandleEncryptVideoRecord(srcfile.GetData());
|
|
|
+ }
|
|
|
}
|
|
|
else{
|
|
|
char* pIndex = NULL;
|
|
|
@@ -1011,11 +1041,20 @@ on_next:
|
|
|
if (0 == memcmp(ptr->d_name, RVC_TRANSATCION_RECORD_SUFFIX, strlen(RVC_TRANSATCION_RECORD_SUFFIX)) ||
|
|
|
0 == memcmp(ptr->d_name, RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX, strlen(RVC_ENCRYPT_TRANSATCION_RECORD_SUFFIX))) {
|
|
|
CSimpleStringA srcfile = CSimpleStringA::Format("%s%s", m_TempDir.GetData(), ptr->d_name);
|
|
|
+ unsigned long uSize = GetRecordFileSize(srcfile.GetData(), false);
|
|
|
+ if (RVC_MIN_RECORD_FILESIZE >= uSize) {
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_EVT_INVALID_RECORD_FILE, CSimpleStringA::Format("invalid record file %s, delelte it.", pszMessage).GetData());
|
|
|
+ RvcDeleteFile(pszMessage);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
if (m_bEncFlag) {
|
|
|
filecryption_callback_t cb = { 0 };
|
|
|
cb.dbg = &rvcDbg;
|
|
|
if (false == is_file_encrypted(srcfile.GetData(), &cb)) {
|
|
|
- HandleEncryptVideoRecord(srcfile.GetData());
|
|
|
+ if (is_file_completed(srcfile.GetData(), &cb)) {
|
|
|
+ HandleEncryptVideoRecord(srcfile.GetData());
|
|
|
+ }
|
|
|
}
|
|
|
else {
|
|
|
char* pIndex = NULL;
|