I am working with getting a profile G device to operate with XProtect’s remote recording retrieval feature. I have had to add the following code in the device to get it to work – the code means that the device allows the Onvif Soap request even if there is no user authentication provided by XProtect.
//The following are needed for Milestone's Video Retrieval functions
else if (soap_strcmp(request, “GetVideoSources”) == 0 ||
soap\_strcmp(request, "GetProfiles") == 0 ||
soap\_strcmp(request, "GetRecordingSummary") == 0 ||
soap\_strcmp(request, "GetMediaAttributes") == 0 ||
soap\_strcmp(request, "FindRecordings") == 0 ||
soap\_strcmp(request, "GetRecordingSearchResults") == 0 ||
soap\_strcmp(request, "EndSearch") == 0 ||
soap\_strcmp(request, "GetReplayUri") == 0 ||
soap\_strcmp(request, "GetRecordingJobs") == 0 ||
soap\_strcmp(request, "GetAudioSources") == 0)
{
return TRUE;
}
Without this then XProtect cannot get the device to respond to GetVideoSources and the retrieval process hangs. I don’t want to relax the security around these Onvif requests, especially the GetRecordingSummary, FindRecordings, GetRecordingSearchResults, GetReplayUri and GetRecordingJobs requests.
The device is using legacy WS-UsernameToken Auth. This appears to operate fine when adding the hardware to XProtect and for XProtect to retrieve the stream, but not for the recording retrieval.
I have attached a Wireshark of the communication when adding the hardware to XProtect in the Management Client then performing a manual recording retrieval in the Smart Client. The Smart Client shows the Retrieval job status but it is “stuck” with status In Progress and no progress bar.
I am using XProtect version 2024 R1 with a Professional+ Test Licence and Device Pack 13.2a. I am using the ONVIF driver.







