This project requires a plugin to be delivered that loads into the NX Witness NVR system and works on a Ubuntu 16.04 and 18.04 Linux system and allows the NX Witness NVR system ([login to view URL]) to save and read video footage via the S3 protocol into cloud storage. There is a storage SDK provided by the vendor (attached), and a sample plugin implementation that has been provided by the vendor using the FTP protocol.
We will provide test S3 connection details for you to test with, ideally you would run the demo version of the NVR software locally and develop locally but commit back to our git repository regularly so that we can track progress and confirm that everything is heading in the right direction. Any issues would be tracked on our Gitlab instance that you would have access to.
We believe the libs3 C/C++ library would be the fastest most robust way to get this plugin implemented, but will happily take guidance if you would prefer to use another library.
[login to view URL]
Here are some example snippets of various S3 actions, using libs3 to interface with our S3 gateway:
[login to view URL]
Load and work on both an Ubuntu 16.04 and 18.04 system using the vendor's already defined plugin architecture within the NVR software.
Prompt in the user interface (in a similar way that the sample FTP plugin does) for the required connection details to be entered. This will include atleast, S3 Key, S3 Secret, S3 URL (HTTPS), S3 Bucket Name
The plugin should check if the bucket exists, if not it should create it with private ACL's set. If the bucket exists the plugin also must check the buckets ACL's and ensure they are private (Owner gets FULL_CONTROL. No one else has access rights), it should do this both on creation and also on re-connection to the bucket if they are not private it should reset them to avoid any leaking of data.
When completed, the .so that the SDK produces is copied to the NVR system's default plugin location (/opt/networkoptix/mediaserver/bin/plugins), once the NVR application is restarted the S3 option appears within the GUI of the NVR system under the storage tab. This is how it works with the sample FTP plugin, so I assume it's will work in a similar fashion and no actual GUI work is actually required as it's handled by the plugin SDK.
The freelancer that takes on this project should be familiar with Linux, be able to work with a vendor provided SDK that appears to have limited documentation, but has a working sample plugin similar to what is required. They should also have some understanding of the S3 protocol or have worked with it in the past.