From 6aed20c466784368a7374e8773fba1111deb2043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Verstraeten?= Date: Thu, 22 Jun 2023 15:53:46 +0200 Subject: [PATCH 01/80] Align to correct region --- machinery/data/config/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/machinery/data/config/config.json b/machinery/data/config/config.json index 326c88ab..980cc319 100644 --- a/machinery/data/config/config.json +++ b/machinery/data/config/config.json @@ -95,7 +95,7 @@ "s3": { "proxyuri": "http://proxy.kerberos.io", "bucket": "kerberosaccept", - "region": "eu-west1" + "region": "eu-west-1" }, "kstorage": {}, "dropbox": {}, @@ -112,4 +112,4 @@ "hub_private_key": "", "hub_site": "", "condition_uri": "" -} \ No newline at end of file +} From abeeb9520471f11eba59ea9e10c0e98b7ada4e0b Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 23 Jun 2023 16:14:01 +0200 Subject: [PATCH 02/80] make region editable through ENV + add new upload function to upload to Kerberos Hub --- README.md | 2 +- machinery/src/cloud/Cloud.go | 17 +++- machinery/src/cloud/KerberosHub.go | 125 +++++++++++++++++++++++++++++ machinery/src/components/Config.go | 6 +- 4 files changed, 142 insertions(+), 8 deletions(-) create mode 100644 machinery/src/cloud/KerberosHub.go diff --git a/README.md b/README.md index fde82b34..05348dcc 100644 --- a/README.md +++ b/README.md @@ -203,7 +203,7 @@ Next to attaching the configuration file, it is also possible to override the co | `AGENT_HUB_URI` | The Kerberos Hub API, defaults to our Kerberos Hub SAAS. | "https://api.hub.domain.com" | | `AGENT_HUB_KEY` | The access key linked to your account in Kerberos Hub. | "" | | `AGENT_HUB_PRIVATE_KEY` | The secret access key linked to your account in Kerberos Hub. | "" | -| `AGENT_HUB_USERNAME` | Your Kerberos Hub username, which owns the above access and secret keys. | "" | +| `AGENT_HUB_REGION` | The Kerberos Hub region, to which you want to upload. | "" | | `AGENT_HUB_SITE` | The site ID of a site you've created in your Kerberos Hub account. | "" | | `AGENT_KERBEROSVAULT_URI` | The Kerberos Vault API url. | "https://vault.domain.com/api" | | `AGENT_KERBEROSVAULT_ACCESS_KEY` | The access key of a Kerberos Vault account. | "" | diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 26e854f5..38c693e7 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -85,9 +85,9 @@ func HandleUpload(configuration *models.Configuration, communication *models.Com uploaded := false configured := false err = nil - if config.Cloud == "s3" { - uploaded, configured, err = UploadS3(configuration, fileName) - } else if config.Cloud == "kstorage" { + if config.Cloud == "s3" || config.Cloud == "kerberoshub" { + uploaded, configured, err = UploadKerberosHub(configuration, fileName) + } else if config.Cloud == "kstorage" || config.Cloud == "kerberosvault" { uploaded, configured, err = UploadKerberosVault(configuration, fileName) } else if config.Cloud == "dropbox" { uploaded, configured, err = UploadDropbox(configuration, fileName) @@ -103,6 +103,13 @@ func HandleUpload(configuration *models.Configuration, communication *models.Com // Todo: implement ftp upload } else if config.Cloud == "sftp" { // Todo: implement sftp upload + } else if config.Cloud == "aws" { + // Todo: need to be updated, was previously used for hub. + uploaded, configured, err = UploadS3(configuration, fileName) + } else if config.Cloud == "azure" { + // Todo: implement azure upload + } else if config.Cloud == "google" { + // Todo: implement google upload } // And so on... (have a look here -> https://github.com/kerberos-io/agent/issues/95) @@ -357,7 +364,9 @@ loop: communication.CloudTimestamp.Store(time.Now().Unix()) log.Log.Info("HandleHeartBeat: (200) Heartbeat received by Kerberos Hub.") } else { - communication.CloudTimestamp.Store(0) + if communication.CloudTimestamp != nil && communication.CloudTimestamp.Load() != nil { + communication.CloudTimestamp.Store(int64(0)) + } log.Log.Error("HandleHeartBeat: (400) Something went wrong while sending to Kerberos Hub.") } diff --git a/machinery/src/cloud/KerberosHub.go b/machinery/src/cloud/KerberosHub.go new file mode 100644 index 00000000..c5dd8eef --- /dev/null +++ b/machinery/src/cloud/KerberosHub.go @@ -0,0 +1,125 @@ +package cloud + +import ( + "errors" + "io/ioutil" + "net/http" + "os" + + "github.com/kerberos-io/agent/machinery/src/log" + "github.com/kerberos-io/agent/machinery/src/models" +) + +func UploadKerberosHub(configuration *models.Configuration, fileName string) (bool, bool, error) { + config := configuration.Config + + if config.HubURI == "" || + config.HubKey == "" || + config.HubPrivateKey == "" || + config.S3.Region == "" { + err := "UploadKerberosHub: Kerberos Hub not properly configured." + log.Log.Info(err) + return false, false, errors.New(err) + } + + // timestamp_microseconds_instanceName_regionCoordinates_numberOfChanges_token + // 1564859471_6-474162_oprit_577-283-727-375_1153_27.mp4 + // - Timestamp + // - Size + - + microseconds + // - device + // - Region + // - Number of changes + // - Token + + log.Log.Info("UploadKerberosHub: Uploading to Kerberos Hub (" + config.HubURI + ")") + log.Log.Info("UploadKerberosHub: Upload started for " + fileName) + fullname := "data/recordings/" + fileName + + // Check if we still have the file otherwise we abort the request. + file, err := os.OpenFile(fullname, os.O_RDWR, 0755) + if file != nil { + defer file.Close() + } + if err != nil { + err := "UploadKerberosHub: Upload Failed, file doesn't exists anymore." + log.Log.Info(err) + return false, true, errors.New(err) + } + + // Check if we are allowed to upload to the hub with these credentials. + // There might be different reasons like (muted, read-only..) + req, err := http.NewRequest("HEAD", config.HubURI+"/storage/upload", nil) + if err != nil { + errorMessage := "UploadKerberosHub: error reading HEAD request, " + config.HubURI + "/storage: " + err.Error() + log.Log.Error(errorMessage) + return false, true, errors.New(errorMessage) + } + + req.Header.Set("X-Kerberos-Storage-FileName", fileName) + req.Header.Set("X-Kerberos-Storage-Capture", "IPCamera") + req.Header.Set("X-Kerberos-Storage-Device", config.Key) + req.Header.Set("X-Kerberos-Hub-PublicKey", config.HubKey) + req.Header.Set("X-Kerberos-Hub-PrivateKey", config.HubPrivateKey) + req.Header.Set("X-Kerberos-Hub-Region", config.S3.Region) + + client := &http.Client{} + + resp, err := client.Do(req) + if resp != nil { + defer resp.Body.Close() + } + + if err == nil { + if resp != nil { + if err == nil { + if resp.StatusCode == 200 { + log.Log.Info("UploadKerberosHub: Upload allowed using the credentials provided (" + config.HubKey + ", " + config.HubPrivateKey + ")") + } else { + log.Log.Info("UploadKerberosHub: Upload NOT allowed using the credentials provided (" + config.HubKey + ", " + config.HubPrivateKey + ")") + return false, true, nil + } + } + } + } + + // Now we know we are allowed to upload to the hub, we can start uploading. + req, err = http.NewRequest("POST", config.HubURI+"/storage/upload", file) + if err != nil { + errorMessage := "UploadKerberosHub: error reading POST request, " + config.KStorage.URI + "/storage/upload: " + err.Error() + log.Log.Error(errorMessage) + return false, true, errors.New(errorMessage) + } + req.Header.Set("Content-Type", "video/mp4") + req.Header.Set("X-Kerberos-Storage-FileName", fileName) + req.Header.Set("X-Kerberos-Storage-Capture", "IPCamera") + req.Header.Set("X-Kerberos-Storage-Device", config.Key) + req.Header.Set("X-Kerberos-Hub-PublicKey", config.HubKey) + req.Header.Set("X-Kerberos-Hub-PrivateKey", config.HubPrivateKey) + req.Header.Set("X-Kerberos-Hub-Region", config.S3.Region) + + client = &http.Client{} + + resp, err = client.Do(req) + if resp != nil { + defer resp.Body.Close() + } + + if err == nil { + if resp != nil { + body, err := ioutil.ReadAll(resp.Body) + if err == nil { + if resp.StatusCode == 200 { + log.Log.Info("UploadKerberosHub: Upload Finished, " + resp.Status + ".") + return true, true, nil + } else { + log.Log.Info("UploadKerberosHub: Upload Failed, " + resp.Status + ", " + string(body)) + return false, true, nil + } + } + } + } + + errorMessage := "UploadKerberosHub: Upload Failed, " + err.Error() + log.Log.Info(errorMessage) + return false, true, errors.New(errorMessage) +} diff --git a/machinery/src/components/Config.go b/machinery/src/components/Config.go index b86a4387..f63f0582 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/components/Config.go @@ -401,12 +401,12 @@ func OverrideWithEnvironmentVariables(configuration *models.Configuration) { case "AGENT_HUB_PRIVATE_KEY": configuration.Config.HubPrivateKey = value break - case "AGENT_HUB_USERNAME": - configuration.Config.S3.Username = value - break case "AGENT_HUB_SITE": configuration.Config.HubSite = value break + case "AGENT_HUB_REGION": + configuration.Config.S3.Region = value + break /* When storing in a Kerberos Vault */ case "AGENT_KERBEROSVAULT_URI": From 2b425a2ddd74b62a5ac5d6f65bfb59eace3e374c Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 23 Jun 2023 17:16:13 +0200 Subject: [PATCH 03/80] add test video for verification --- machinery/data/test-480p.mp4 | Bin 0 -> 331079 bytes machinery/src/cloud/Cloud.go | 177 ++++++++++++++--------------- ui/src/pages/Settings/Settings.jsx | 33 ------ 3 files changed, 85 insertions(+), 125 deletions(-) create mode 100644 machinery/data/test-480p.mp4 diff --git a/machinery/data/test-480p.mp4 b/machinery/data/test-480p.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..982c9c07f24392cb2513f19909b746fdff9a668b GIT binary patch literal 331079 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

-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%0D2r*X#57pjAG$gCPa5`cQZ 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 {config.cloud === this.KERBEROS_HUB && ( <> - - this.onUpdateField('s3', 'proxyuri', value, config.s3) - } - /> - - this.onUpdateField('s3', 'bucket', value, config.s3) - } - /> - - this.onUpdateField('s3', 'username', value, config.s3) - } - /> )} {config.cloud === this.KERBEROS_VAULT && ( From 5c23a62ac3582e5e9e91fe0199fef7d823e05a8c Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 23 Jun 2023 19:01:04 +0200 Subject: [PATCH 04/80] New function to validate Kerberos Hub connectivity and subscription --- machinery/src/cloud/Cloud.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index e0514069..d45fd3e3 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -542,14 +542,14 @@ func VerifyHub(c *gin.Context) { err := c.BindJSON(&config) if err == nil { - hubKey := config.HubKey hubURI := config.HubURI + publicKey := config.HubKey + privateKey := config.HubPrivateKey - content := []byte(`{"message": "fake-message"}`) - body := bytes.NewReader(content) - req, err := http.NewRequest("POST", hubURI+"/queue/test", body) + req, err := http.NewRequest("POST", hubURI+"/subscription/verify", nil) if err == nil { - req.Header.Set("X-Kerberos-Cloud-Key", hubKey) + req.Header.Set("X-Kerberos-Hub-PublicKey", publicKey) + req.Header.Set("X-Kerberos-Hub-PrivateKey", privateKey) client := &http.Client{} resp, err := client.Do(req) From 95f43b64448369b43296ef9117f09266b43d5a82 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 23 Jun 2023 20:20:38 +0200 Subject: [PATCH 05/80] Fix for empty vault settings, throw error --- machinery/src/cloud/Cloud.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index d45fd3e3..3389578b 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -776,6 +776,10 @@ func VerifyPersistence(c *gin.Context) { Data: "VerifyPersistence: Something went wrong while verifying storage credentials:" + err.Error(), }) } + } else { + c.JSON(400, models.APIResponse{ + Data: "VerifyPersistence: please fill-in the required Kerberos Vault credentials.", + }) } } } else { From 36323b076f049370bbd9a50e5b85f6e108a90395 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 23 Jun 2023 21:13:13 +0200 Subject: [PATCH 06/80] Fix for Kerberos Vault persistence check --- machinery/src/cloud/Cloud.go | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 3389578b..2099385c 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -689,19 +689,8 @@ func VerifyPersistence(c *gin.Context) { if err == nil && uri != "" && accessKey != "" && secretAccessKey != "" { - // Open test-480p.mp4 - file, err := os.Open("./data/test-480p.mp4") - if err != nil { - msg := "VerifyPersistence: error reading test-480p.mp4: " + err.Error() - log.Log.Error(msg) - c.JSON(400, models.APIResponse{ - Data: msg, - }) - } - defer file.Close() - client := &http.Client{} - req, err := http.NewRequest("POST", uri+"/ping", file) + req, err := http.NewRequest("POST", uri+"/ping", nil) req.Header.Add("X-Kerberos-Storage-AccessKey", accessKey) req.Header.Add("X-Kerberos-Storage-SecretAccessKey", secretAccessKey) resp, err := client.Do(req) @@ -717,10 +706,19 @@ func VerifyPersistence(c *gin.Context) { timestamp := time.Now().Unix() fileName := strconv.FormatInt(timestamp, 10) + "_6-967003_" + config.Name + "_200-200-400-400_24_769.mp4" - content := []byte("test-file") - body := bytes.NewReader(content) - req, err := http.NewRequest("POST", uri+"/storage", body) + // Open test-480p.mp4 + file, err := os.Open("./data/test-480p.mp4") + if err != nil { + msg := "VerifyPersistence: error reading test-480p.mp4: " + err.Error() + log.Log.Error(msg) + c.JSON(400, models.APIResponse{ + Data: msg, + }) + } + defer file.Close() + + req, err := http.NewRequest("POST", uri+"/storage", file) if err == nil { req.Header.Set("Content-Type", "video/mp4") From 756b893ecd08292cd830b2ebefe0b698d8e39515 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sat, 24 Jun 2023 12:58:16 +0200 Subject: [PATCH 07/80] reference latest tags --- deployments/ansible-openshift/playbook.yml | 4 ++-- deployments/kubernetes/deployment-agent-volume.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployments/ansible-openshift/playbook.yml b/deployments/ansible-openshift/playbook.yml index 7ec508d6..14d47370 100644 --- a/deployments/ansible-openshift/playbook.yml +++ b/deployments/ansible-openshift/playbook.yml @@ -82,7 +82,7 @@ initContainers: - name: download-config - image: kerberos/agent:1b96d01 + image: kerberos/agent:latest volumeMounts: - name: kerberos-data mountPath: /home/agent/data/config @@ -96,7 +96,7 @@ containers: - name: agent - image: kerberos/agent:1b96d01 + image: kerberos/agent:latest volumeMounts: - name: kerberos-data mountPath: /home/agent/data/config diff --git a/deployments/kubernetes/deployment-agent-volume.yml b/deployments/kubernetes/deployment-agent-volume.yml index f58e9fd8..ed1ab57a 100644 --- a/deployments/kubernetes/deployment-agent-volume.yml +++ b/deployments/kubernetes/deployment-agent-volume.yml @@ -21,7 +21,7 @@ spec: initContainers: - name: download-config - image: kerberos/agent:1b96d01 + image: kerberos/agent:latest volumeMounts: - name: kerberos-data mountPath: /home/agent/data/config From bdc0039a24f34f42fe39a3952dd9482659efa8dc Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sat, 24 Jun 2023 20:22:51 +0200 Subject: [PATCH 08/80] fix: might be empty if not set, so will never fire motion alert --- machinery/src/computervision/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machinery/src/computervision/main.go b/machinery/src/computervision/main.go index 23c2f03c..da0d6de0 100644 --- a/machinery/src/computervision/main.go +++ b/machinery/src/computervision/main.go @@ -165,7 +165,7 @@ func ProcessMotion(motionCursor *pubsub.QueueCursor, configuration *models.Confi if detectMotion && isPixelChangeThresholdReached { // If offline mode is disabled, send a message to the hub - if config.Offline == "false" { + if config.Offline != "true" { if mqttClient != nil { if key != "" { mqttClient.Publish("kerberos/"+key+"/device/"+config.Key+"/motion", 2, false, "motion") From 8be0a04502b344d5ed15e89c6923accd5f08d8e0 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 25 Jun 2023 20:03:37 +0200 Subject: [PATCH 09/80] add balena deployment (app + block) --- README.md | 2 +- deployments/balena/README.md | 44 ++++++++++++++ deployments/balena/app/app/balena.yaml | 56 ++++++++++++++++++ deployments/balena/app/app/docker-compose.yml | 35 +++++++++++ deployments/balena/app/block/balena.yaml | 58 +++++++++++++++++++ .../balena/app/block/docker-compose.yml | 35 +++++++++++ 6 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 deployments/balena/README.md create mode 100644 deployments/balena/app/app/balena.yaml create mode 100644 deployments/balena/app/app/docker-compose.yml create mode 100644 deployments/balena/app/block/balena.yaml create mode 100644 deployments/balena/app/block/docker-compose.yml diff --git a/README.md b/README.md index 05348dcc..1cb4730d 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ If you want to connect to an USB or Raspberry Pi camera, [you'll need to run our Run Kerberos Agent with Balena super powers. Monitor your agent with seamless remote access, and an encrypted https endpoint. Checkout our fleet on [Balena Hub](https://hub.balena.io/fleets?0%5B0%5D%5Bn%5D=any&0%5B0%5D%5Bo%5D=full_text_search&0%5B0%5D%5Bv%5D=agent), and add your agent. -[![balena deploy button](https://www.balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent) +[![balena deploy button](https://www.balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent/tree/master/deployments/balena/app) **_Work In Progress_** - Currently we only support IP and USB Cameras, we have [an approach for leveraging the Raspberry Pi camera](https://github.com/kerberos-io/camera-to-rtsp), but this isn't working as expected with Balena. If you require this, you'll need to use the traditional Docker deployment with sidecar as mentioned above. diff --git a/deployments/balena/README.md b/deployments/balena/README.md new file mode 100644 index 00000000..88c0f6eb --- /dev/null +++ b/deployments/balena/README.md @@ -0,0 +1,44 @@ +# Deployment with Balena + +If you're looking for a way to quickly and easily get up and running with an Kerberos Agent for your home network, this is the project for you. + +This project is a [balenaCloud](https://www.balena.io/cloud) stack with the following services: + +- [Kerberos Agent](https://github.com/kerberos-io/agent) is a cutting edge video surveillance management system made available as Open Source under the MIT License. +- [RTSP simple server](https://github.com/kerberos-io/rtsp-simple-server) a proxy that translates a USB camera and RPi camera to a RTSP h264 stream. The stream can then be connected to Kerberos Agent with `rtsp://kerberos.local:8554/usbcam` or `rtsp://kerberos.local:8554/rpicam`. + +balenaCloud is a free service to remotely manage and update your IoT devices through an online dashboard interface, as well as providing remote access to the Kerberos Agent web interface without any additional configuation. + +## Getting Started + +You can one-click-deploy this project to balena using the button below: + +[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent/tree/master/deployments/balena/app) + +## Manual Deployment + +Alternatively, deployment can be carried out by manually creating a [balenaCloud account](https://dashboard.balena-cloud.com) and application, +flashing a device, downloading the project and pushing it via the [balena CLI](https://github.com/balena-io/balena-cli). + +### Application Environment Variables + +Application environment variables apply to all services within the application, and can be applied fleet-wide to apply to multiple devices. + +| Name | Description | +| -------------- | ------------------------------------------------------------------------ | +| `SET_HOSTNAME` | Set a custom hostname on application start. Default is `kerberos-agent`. | + +## Usage + +### Initial setup + +Once your device joins the fleet you'll need to allow some time for it to download the application. + +On your router or DHCP server assign a static IP to your AdGuard Home device. + +1. Connect to `http://YOUR-DEVICE-IP` or depending on the hostname `http://kerberos-agent.local` in your browser +2. Sign-in with the default username and password `root`, `root`. +3. Go to the configuration page and fill-in the RTSP url of your IPCamera or if using a USB or Raspberry Pi camera the proxy url as mentioned above. +4. Press save, and the Kerberos Agent will connect to your camera. + +Documentation for the Kerberos Agent and other services can be found at https://doc.kerberos.io/ diff --git a/deployments/balena/app/app/balena.yaml b/deployments/balena/app/app/balena.yaml new file mode 100644 index 00000000..c5a8cca6 --- /dev/null +++ b/deployments/balena/app/app/balena.yaml @@ -0,0 +1,56 @@ +name: video-surveillance +description: >- + Kerberos Agent is a cutting edge video surveillance management system + made available as Open Source under the MIT License +version: 3.0.0 +type: sw.application +assets: + repository: + type: blob.asset + data: + url: 'https://github.com/kerberos-io/agent' + logo: + type: blob.asset + data: + url: >- + https://raw.githubusercontent.com/kerberos-io/balena-agent/master/logo.png +data: + defaultDeviceType: raspberrypi3 + supportedDeviceTypes: + - raspberrypi4-64 + - fincm3 + - raspberrypi3 + - raspberrypi3-64 + - raspberrypi400-64 + - intel-nuc + - genericx86-64-ext +post-provisioning: >- + + Kerberos.io is a cutting edge video surveillance system with a strong focus on user experience, scalability, resilience, extension and integration. Kerberos.io provides different solutions, but from a high level point of view it comes into two flavours: Kerberos Agent and Kerberos Enterprise Suite. Bottom line Kerberos Enterprise Suite extends Kerberos Agent with additional components such as Kerberos Factory, Kerberos Vault and Kerberos Hub. + + ### Kerberos Agent + + - Installation in seconds (Docker, Balena, Snap, etc). + - Simplified and modern user interface. + - Multi architecture (ARMv7, ARMv8, amd64, etc). + - Multi camera support: IP Cameras (MJPEG/H264), USB cameras and Raspberry Pi Cameras through a RTSP proxy. + - Single camera per instance (e.g. One Docker container per camera). + - Integrations (Webhooks, MQTT, Script, etc). + - Cloud storage (Kerberos Hub, Kerberos Vault, Minio, Storj, etc). + - MIT License + + ### Kerberos Factory (part of [Kerberos Enterprise suite](https://doc.kerberos.io/enterprise/first-things-first/)) + + - Installation on top of Kubernetes (K8S). + - Camera support for IP camera only (RTSP/H264). + - Massive horizontal scaling, thanks to Kubernetes. + - Management of multiple Kerberos Agents through a single pane of glass. + - Low memory and CPU intensive. + - Modular and extensible design for building own extensions and integrations (e.g. a video analytics platform). + - Commercial licensed and closed source. + + ## How it works: A world of Agents 🕵🏼‍♂️ + + Kerberos.io applies the concept of agents. An agent is running next to or on your camera, and is processing a single camera feed. It applies motion based recording and make those recordings available through a user friendly web interface. Kerberos Agent allows you to connect to other cloud services or custom applications. Kerberos Agent is perfect for personal usage and/or is a great tool if you only have a couple of surveillance cameras to be processed. + + If you are looking for a solution that scales better with your video surveillance and/or video analytics requirements, [Kerberos Enterprise Suite might be a better fit](https://doc.kerberos.io/enterprise/first-things-first). \ No newline at end of file diff --git a/deployments/balena/app/app/docker-compose.yml b/deployments/balena/app/app/docker-compose.yml new file mode 100644 index 00000000..2774b564 --- /dev/null +++ b/deployments/balena/app/app/docker-compose.yml @@ -0,0 +1,35 @@ +version: '2.1' + +volumes: + kerberosagent_recordings: + kerberosagent_snapshots: + kerberosagent_config: + +services: + + # https://github.com/kerberos/agent + agent: + image: kerberos/agent:756b893 + network_mode: host + tty: true + restart: always + volumes: + - 'kerberosagent_recordings:/home/agent/data/recordings:rw' + - 'kerberosagent_snapshots:/home/agent/data/snapshots:rw' + - 'kerberosagent_config:/home/agent/data/config:rw' + + # https://github.com/kerberos/rtsp-simple-server + #rtsp-simple-server: + # build: ./rtsp-simple-server + # network_mode: host + # privileged: true + # restart: always + + # https://github.com/balenablocks/hostname + hostname: + image: balenablocks/hostname:latest + restart: no + labels: + io.balena.features.supervisor-api: 1 + environment: + SET_HOSTNAME: kerberos-agent diff --git a/deployments/balena/app/block/balena.yaml b/deployments/balena/app/block/balena.yaml new file mode 100644 index 00000000..246dbae5 --- /dev/null +++ b/deployments/balena/app/block/balena.yaml @@ -0,0 +1,58 @@ +name: agent +description: >- + Kerberos Agent is a cutting edge video surveillance management system + made available as Open Source under the MIT License +version: 3.0.0 +type: sw.block +assets: + repository: + type: blob.asset + data: + url: 'https://github.com/kerberos-io/agent' + logo: + type: blob.asset + data: + url: >- + https://raw.githubusercontent.com/kerberos-io/balena-agent/master/logo.png +data: + defaultDeviceType: raspberrypi3 + supportedDeviceTypes: + - raspberrypi4-64 + - fincm3 + - raspberrypi3 + - raspberrypi3-64 + - raspberrypi400-64 + - intel-nuc + - genericx86-64-ext +post-provisioning: >- + + ## Introduction + + Kerberos.io is a cutting edge video surveillance system with a strong focus on user experience, scalability, resilience, extension and integration. Kerberos.io provides different solutions, but from a high level point of view it comes into two flavours: Kerberos Agent and Kerberos Enterprise Suite. Bottom line Kerberos Enterprise Suite extends Kerberos Agent with additional components such as Kerberos Factory, Kerberos Vault and Kerberos Hub. + + ### Kerberos Agent + + - Installation in seconds (Docker, Balena, Snap, etc). + - Simplified and modern user interface. + - Multi architecture (ARMv7, ARMv8, amd64, etc). + - Multi camera support: IP Cameras (MJPEG/H264), USB cameras and Raspberry Pi Cameras through a RTSP proxy. + - Single camera per instance (e.g. One Docker container per camera). + - Integrations (Webhooks, MQTT, Script, etc). + - Cloud storage (Kerberos Hub, Kerberos Vault, Minio, Storj, etc). + - MIT License + + ### Kerberos Factory (part of [Kerberos Enterprise suite](https://doc.kerberos.io/enterprise/first-things-first/)) + + - Installation on top of Kubernetes (K8S). + - Camera support for IP camera only (RTSP/H264). + - Massive horizontal scaling, thanks to Kubernetes. + - Management of multiple Kerberos Agents through a single pane of glass. + - Low memory and CPU intensive. + - Modular and extensible design for building own extensions and integrations (e.g. a video analytics platform). + - Commercial licensed and closed source. + + ## How it works: A world of Agents 🕵🏼‍♂️ + + Kerberos.io applies the concept of agents. An agent is running next to or on your camera, and is processing a single camera feed. It applies motion based recording and make those recordings available through a user friendly web interface. Kerberos Agent allows you to connect to other cloud services or custom applications. Kerberos Agent is perfect for personal usage and/or is a great tool if you only have a couple of surveillance cameras to be processed. + + If you are looking for a solution that scales better with your video surveillance and/or video analytics requirements, [Kerberos Enterprise Suite might be a better fit](https://doc.kerberos.io/enterprise/first-things-first). \ No newline at end of file diff --git a/deployments/balena/app/block/docker-compose.yml b/deployments/balena/app/block/docker-compose.yml new file mode 100644 index 00000000..2774b564 --- /dev/null +++ b/deployments/balena/app/block/docker-compose.yml @@ -0,0 +1,35 @@ +version: '2.1' + +volumes: + kerberosagent_recordings: + kerberosagent_snapshots: + kerberosagent_config: + +services: + + # https://github.com/kerberos/agent + agent: + image: kerberos/agent:756b893 + network_mode: host + tty: true + restart: always + volumes: + - 'kerberosagent_recordings:/home/agent/data/recordings:rw' + - 'kerberosagent_snapshots:/home/agent/data/snapshots:rw' + - 'kerberosagent_config:/home/agent/data/config:rw' + + # https://github.com/kerberos/rtsp-simple-server + #rtsp-simple-server: + # build: ./rtsp-simple-server + # network_mode: host + # privileged: true + # restart: always + + # https://github.com/balenablocks/hostname + hostname: + image: balenablocks/hostname:latest + restart: no + labels: + io.balena.features.supervisor-api: 1 + environment: + SET_HOSTNAME: kerberos-agent From 1f5cb8ca88a01d3787e2b3e1d9068ed96aebedb8 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 25 Jun 2023 20:05:03 +0200 Subject: [PATCH 10/80] merge directories --- deployments/balena/app/{app => }/balena.yaml | 0 deployments/balena/app/{app => }/docker-compose.yml | 0 deployments/balena/{app => }/block/balena.yaml | 0 deployments/balena/{app => }/block/docker-compose.yml | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename deployments/balena/app/{app => }/balena.yaml (100%) rename deployments/balena/app/{app => }/docker-compose.yml (100%) rename deployments/balena/{app => }/block/balena.yaml (100%) rename deployments/balena/{app => }/block/docker-compose.yml (100%) diff --git a/deployments/balena/app/app/balena.yaml b/deployments/balena/app/balena.yaml similarity index 100% rename from deployments/balena/app/app/balena.yaml rename to deployments/balena/app/balena.yaml diff --git a/deployments/balena/app/app/docker-compose.yml b/deployments/balena/app/docker-compose.yml similarity index 100% rename from deployments/balena/app/app/docker-compose.yml rename to deployments/balena/app/docker-compose.yml diff --git a/deployments/balena/app/block/balena.yaml b/deployments/balena/block/balena.yaml similarity index 100% rename from deployments/balena/app/block/balena.yaml rename to deployments/balena/block/balena.yaml diff --git a/deployments/balena/app/block/docker-compose.yml b/deployments/balena/block/docker-compose.yml similarity index 100% rename from deployments/balena/app/block/docker-compose.yml rename to deployments/balena/block/docker-compose.yml From 4cbf0323f1afbd062287438614948fe57bd7318a Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 25 Jun 2023 20:21:44 +0200 Subject: [PATCH 11/80] Reference separate balena repositories --- README.md | 2 +- deployments/balena/README.md | 42 ++------------- deployments/balena/app/balena.yaml | 56 -------------------- deployments/balena/app/docker-compose.yml | 35 ------------- deployments/balena/block/balena.yaml | 58 --------------------- deployments/balena/block/docker-compose.yml | 35 ------------- 6 files changed, 4 insertions(+), 224 deletions(-) delete mode 100644 deployments/balena/app/balena.yaml delete mode 100644 deployments/balena/app/docker-compose.yml delete mode 100644 deployments/balena/block/balena.yaml delete mode 100644 deployments/balena/block/docker-compose.yml diff --git a/README.md b/README.md index 1cb4730d..0591fa41 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ If you want to connect to an USB or Raspberry Pi camera, [you'll need to run our Run Kerberos Agent with Balena super powers. Monitor your agent with seamless remote access, and an encrypted https endpoint. Checkout our fleet on [Balena Hub](https://hub.balena.io/fleets?0%5B0%5D%5Bn%5D=any&0%5B0%5D%5Bo%5D=full_text_search&0%5B0%5D%5Bv%5D=agent), and add your agent. -[![balena deploy button](https://www.balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent/tree/master/deployments/balena/app) +[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent) **_Work In Progress_** - Currently we only support IP and USB Cameras, we have [an approach for leveraging the Raspberry Pi camera](https://github.com/kerberos-io/camera-to-rtsp), but this isn't working as expected with Balena. If you require this, you'll need to use the traditional Docker deployment with sidecar as mentioned above. diff --git a/deployments/balena/README.md b/deployments/balena/README.md index 88c0f6eb..b2f83dff 100644 --- a/deployments/balena/README.md +++ b/deployments/balena/README.md @@ -2,43 +2,7 @@ If you're looking for a way to quickly and easily get up and running with an Kerberos Agent for your home network, this is the project for you. -This project is a [balenaCloud](https://www.balena.io/cloud) stack with the following services: +We provide two mechanisms to deploy Kerberos Agent to your Balena Cloud fleet: -- [Kerberos Agent](https://github.com/kerberos-io/agent) is a cutting edge video surveillance management system made available as Open Source under the MIT License. -- [RTSP simple server](https://github.com/kerberos-io/rtsp-simple-server) a proxy that translates a USB camera and RPi camera to a RTSP h264 stream. The stream can then be connected to Kerberos Agent with `rtsp://kerberos.local:8554/usbcam` or `rtsp://kerberos.local:8554/rpicam`. - -balenaCloud is a free service to remotely manage and update your IoT devices through an online dashboard interface, as well as providing remote access to the Kerberos Agent web interface without any additional configuation. - -## Getting Started - -You can one-click-deploy this project to balena using the button below: - -[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent/tree/master/deployments/balena/app) - -## Manual Deployment - -Alternatively, deployment can be carried out by manually creating a [balenaCloud account](https://dashboard.balena-cloud.com) and application, -flashing a device, downloading the project and pushing it via the [balena CLI](https://github.com/balena-io/balena-cli). - -### Application Environment Variables - -Application environment variables apply to all services within the application, and can be applied fleet-wide to apply to multiple devices. - -| Name | Description | -| -------------- | ------------------------------------------------------------------------ | -| `SET_HOSTNAME` | Set a custom hostname on application start. Default is `kerberos-agent`. | - -## Usage - -### Initial setup - -Once your device joins the fleet you'll need to allow some time for it to download the application. - -On your router or DHCP server assign a static IP to your AdGuard Home device. - -1. Connect to `http://YOUR-DEVICE-IP` or depending on the hostname `http://kerberos-agent.local` in your browser -2. Sign-in with the default username and password `root`, `root`. -3. Go to the configuration page and fill-in the RTSP url of your IPCamera or if using a USB or Raspberry Pi camera the proxy url as mentioned above. -4. Press save, and the Kerberos Agent will connect to your camera. - -Documentation for the Kerberos Agent and other services can be found at https://doc.kerberos.io/ +1. Use Kerberos Agent as [a block part of your larger application](https://github.com/kerberos-io/balena-agent-block). +2. Use Kerberos Agent as [a stand-a-lone application](https://github.com/kerberos-io/balena-agent). diff --git a/deployments/balena/app/balena.yaml b/deployments/balena/app/balena.yaml deleted file mode 100644 index c5a8cca6..00000000 --- a/deployments/balena/app/balena.yaml +++ /dev/null @@ -1,56 +0,0 @@ -name: video-surveillance -description: >- - Kerberos Agent is a cutting edge video surveillance management system - made available as Open Source under the MIT License -version: 3.0.0 -type: sw.application -assets: - repository: - type: blob.asset - data: - url: 'https://github.com/kerberos-io/agent' - logo: - type: blob.asset - data: - url: >- - https://raw.githubusercontent.com/kerberos-io/balena-agent/master/logo.png -data: - defaultDeviceType: raspberrypi3 - supportedDeviceTypes: - - raspberrypi4-64 - - fincm3 - - raspberrypi3 - - raspberrypi3-64 - - raspberrypi400-64 - - intel-nuc - - genericx86-64-ext -post-provisioning: >- - - Kerberos.io is a cutting edge video surveillance system with a strong focus on user experience, scalability, resilience, extension and integration. Kerberos.io provides different solutions, but from a high level point of view it comes into two flavours: Kerberos Agent and Kerberos Enterprise Suite. Bottom line Kerberos Enterprise Suite extends Kerberos Agent with additional components such as Kerberos Factory, Kerberos Vault and Kerberos Hub. - - ### Kerberos Agent - - - Installation in seconds (Docker, Balena, Snap, etc). - - Simplified and modern user interface. - - Multi architecture (ARMv7, ARMv8, amd64, etc). - - Multi camera support: IP Cameras (MJPEG/H264), USB cameras and Raspberry Pi Cameras through a RTSP proxy. - - Single camera per instance (e.g. One Docker container per camera). - - Integrations (Webhooks, MQTT, Script, etc). - - Cloud storage (Kerberos Hub, Kerberos Vault, Minio, Storj, etc). - - MIT License - - ### Kerberos Factory (part of [Kerberos Enterprise suite](https://doc.kerberos.io/enterprise/first-things-first/)) - - - Installation on top of Kubernetes (K8S). - - Camera support for IP camera only (RTSP/H264). - - Massive horizontal scaling, thanks to Kubernetes. - - Management of multiple Kerberos Agents through a single pane of glass. - - Low memory and CPU intensive. - - Modular and extensible design for building own extensions and integrations (e.g. a video analytics platform). - - Commercial licensed and closed source. - - ## How it works: A world of Agents 🕵🏼‍♂️ - - Kerberos.io applies the concept of agents. An agent is running next to or on your camera, and is processing a single camera feed. It applies motion based recording and make those recordings available through a user friendly web interface. Kerberos Agent allows you to connect to other cloud services or custom applications. Kerberos Agent is perfect for personal usage and/or is a great tool if you only have a couple of surveillance cameras to be processed. - - If you are looking for a solution that scales better with your video surveillance and/or video analytics requirements, [Kerberos Enterprise Suite might be a better fit](https://doc.kerberos.io/enterprise/first-things-first). \ No newline at end of file diff --git a/deployments/balena/app/docker-compose.yml b/deployments/balena/app/docker-compose.yml deleted file mode 100644 index 2774b564..00000000 --- a/deployments/balena/app/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '2.1' - -volumes: - kerberosagent_recordings: - kerberosagent_snapshots: - kerberosagent_config: - -services: - - # https://github.com/kerberos/agent - agent: - image: kerberos/agent:756b893 - network_mode: host - tty: true - restart: always - volumes: - - 'kerberosagent_recordings:/home/agent/data/recordings:rw' - - 'kerberosagent_snapshots:/home/agent/data/snapshots:rw' - - 'kerberosagent_config:/home/agent/data/config:rw' - - # https://github.com/kerberos/rtsp-simple-server - #rtsp-simple-server: - # build: ./rtsp-simple-server - # network_mode: host - # privileged: true - # restart: always - - # https://github.com/balenablocks/hostname - hostname: - image: balenablocks/hostname:latest - restart: no - labels: - io.balena.features.supervisor-api: 1 - environment: - SET_HOSTNAME: kerberos-agent diff --git a/deployments/balena/block/balena.yaml b/deployments/balena/block/balena.yaml deleted file mode 100644 index 246dbae5..00000000 --- a/deployments/balena/block/balena.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: agent -description: >- - Kerberos Agent is a cutting edge video surveillance management system - made available as Open Source under the MIT License -version: 3.0.0 -type: sw.block -assets: - repository: - type: blob.asset - data: - url: 'https://github.com/kerberos-io/agent' - logo: - type: blob.asset - data: - url: >- - https://raw.githubusercontent.com/kerberos-io/balena-agent/master/logo.png -data: - defaultDeviceType: raspberrypi3 - supportedDeviceTypes: - - raspberrypi4-64 - - fincm3 - - raspberrypi3 - - raspberrypi3-64 - - raspberrypi400-64 - - intel-nuc - - genericx86-64-ext -post-provisioning: >- - - ## Introduction - - Kerberos.io is a cutting edge video surveillance system with a strong focus on user experience, scalability, resilience, extension and integration. Kerberos.io provides different solutions, but from a high level point of view it comes into two flavours: Kerberos Agent and Kerberos Enterprise Suite. Bottom line Kerberos Enterprise Suite extends Kerberos Agent with additional components such as Kerberos Factory, Kerberos Vault and Kerberos Hub. - - ### Kerberos Agent - - - Installation in seconds (Docker, Balena, Snap, etc). - - Simplified and modern user interface. - - Multi architecture (ARMv7, ARMv8, amd64, etc). - - Multi camera support: IP Cameras (MJPEG/H264), USB cameras and Raspberry Pi Cameras through a RTSP proxy. - - Single camera per instance (e.g. One Docker container per camera). - - Integrations (Webhooks, MQTT, Script, etc). - - Cloud storage (Kerberos Hub, Kerberos Vault, Minio, Storj, etc). - - MIT License - - ### Kerberos Factory (part of [Kerberos Enterprise suite](https://doc.kerberos.io/enterprise/first-things-first/)) - - - Installation on top of Kubernetes (K8S). - - Camera support for IP camera only (RTSP/H264). - - Massive horizontal scaling, thanks to Kubernetes. - - Management of multiple Kerberos Agents through a single pane of glass. - - Low memory and CPU intensive. - - Modular and extensible design for building own extensions and integrations (e.g. a video analytics platform). - - Commercial licensed and closed source. - - ## How it works: A world of Agents 🕵🏼‍♂️ - - Kerberos.io applies the concept of agents. An agent is running next to or on your camera, and is processing a single camera feed. It applies motion based recording and make those recordings available through a user friendly web interface. Kerberos Agent allows you to connect to other cloud services or custom applications. Kerberos Agent is perfect for personal usage and/or is a great tool if you only have a couple of surveillance cameras to be processed. - - If you are looking for a solution that scales better with your video surveillance and/or video analytics requirements, [Kerberos Enterprise Suite might be a better fit](https://doc.kerberos.io/enterprise/first-things-first). \ No newline at end of file diff --git a/deployments/balena/block/docker-compose.yml b/deployments/balena/block/docker-compose.yml deleted file mode 100644 index 2774b564..00000000 --- a/deployments/balena/block/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '2.1' - -volumes: - kerberosagent_recordings: - kerberosagent_snapshots: - kerberosagent_config: - -services: - - # https://github.com/kerberos/agent - agent: - image: kerberos/agent:756b893 - network_mode: host - tty: true - restart: always - volumes: - - 'kerberosagent_recordings:/home/agent/data/recordings:rw' - - 'kerberosagent_snapshots:/home/agent/data/snapshots:rw' - - 'kerberosagent_config:/home/agent/data/config:rw' - - # https://github.com/kerberos/rtsp-simple-server - #rtsp-simple-server: - # build: ./rtsp-simple-server - # network_mode: host - # privileged: true - # restart: always - - # https://github.com/balenablocks/hostname - hostname: - image: balenablocks/hostname:latest - restart: no - labels: - io.balena.features.supervisor-api: 1 - environment: - SET_HOSTNAME: kerberos-agent From 729b38999e53ab225a11e84548b70add9802c046 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 25 Jun 2023 22:14:23 +0200 Subject: [PATCH 12/80] add deploy with balena --- README.md | 6 ++---- deployments/README.md | 9 +++++++++ deployments/balena/README.md | 17 +++++++++++++++-- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0591fa41..d0dabdab 100644 --- a/README.md +++ b/README.md @@ -78,13 +78,10 @@ If you want to connect to an USB or Raspberry Pi camera, [you'll need to run our ## Quickstart - Balena -Run Kerberos Agent with Balena super powers. Monitor your agent with seamless remote access, and an encrypted https endpoint. -Checkout our fleet on [Balena Hub](https://hub.balena.io/fleets?0%5B0%5D%5Bn%5D=any&0%5B0%5D%5Bo%5D=full_text_search&0%5B0%5D%5Bv%5D=agent), and add your agent. +Run Kerberos Agent with [Balena Cloud](https://www.balena.io/) super powers. Monitor your Kerberos Agent with seamless remote access, over the air updates, an encrypted public `https` endpoint and many more. Checkout our application `video-surveillance` on [Balena Hub](https://hub.balena.io/apps/2064752/video-surveillance), and create your first or fleet of Kerberos Agent(s). [![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent) -**_Work In Progress_** - Currently we only support IP and USB Cameras, we have [an approach for leveraging the Raspberry Pi camera](https://github.com/kerberos-io/camera-to-rtsp), but this isn't working as expected with Balena. If you require this, you'll need to use the traditional Docker deployment with sidecar as mentioned above. - ## A world of Kerberos Agents The Kerberos Agent is an isolated and scalable video (surveillance) management agent with a strong focus on user experience, scalability, resilience, extension and integration. Next to the Kerberos Agent, Kerberos.io provides many other tools such as [Kerberos Factory](https://github.com/kerberos-io/factory), [Kerberos Vault](https://github.com/kerberos-io/vault) and [Kerberos Hub](https://github.com/kerberos-io/hub) to provide additional capabilities: bring your own cloud, bring your own storage, central overview, live streaming, machine learning etc. @@ -122,6 +119,7 @@ We have documented the different deployment models [in the `deployments` directo - [Red Hat OpenShift with Ansible](https://github.com/kerberos-io/agent/tree/master/deployments#4-red-hat-ansible-and-openshift) - [Terraform](https://github.com/kerberos-io/agent/tree/master/deployments#5-terraform) - [Salt](https://github.com/kerberos-io/agent/tree/master/deployments#6-salt) +- [Balena](https://github.com/kerberos-io/agent/tree/master/deployments#1-balena) By default your Kerberos Agents will store all its configuration and recordings inside the container. To help you automate and have a more consistent data governance, you can attach volumes to configure and persist data of your Kerberos Agents, and/or configure each Kerberos Agent through environment variables. diff --git a/deployments/README.md b/deployments/README.md index c6b52508..184865b7 100644 --- a/deployments/README.md +++ b/deployments/README.md @@ -14,6 +14,7 @@ We will discuss following deployment models. - [5. Kerberos Factory](#5-kerberos-factory) - [6. Terraform](#6-terraform) - [7. Salt](#7-salt) +- [8. Balena](#8-balena) ## 0. Static binary @@ -58,3 +59,11 @@ To be written ## 7. Salt To be written + +## 8. Balena + +Balena Cloud provide a seamless way of building and deploying applications at scale through the conceps of `blocks`, `apps` and `fleets`. Once you have your `app` deployed, for example our Kerberos Agent, you can benefit from features such as: remote access, over the air updates, an encrypted public `https` endpoint and many more. + +Together with the Balena.io team we've build a Balena App, called [`video-surveillance`](https://hub.balena.io/apps/2064752/video-surveillance), which any can use to deploy a video surveillance system in a matter of minutes with all the expected management features you can think of. + +> Learn more [about Kerberos Agent with Balena](https://github.com/kerberos-io/agent/tree/master/deployments/balena). diff --git a/deployments/balena/README.md b/deployments/balena/README.md index b2f83dff..b9b6af92 100644 --- a/deployments/balena/README.md +++ b/deployments/balena/README.md @@ -1,8 +1,21 @@ # Deployment with Balena -If you're looking for a way to quickly and easily get up and running with an Kerberos Agent for your home network, this is the project for you. +Balena Cloud provide a seamless way of building and deploying applications at scale through the conceps of `blocks`, `apps` and `fleets`. Once you have your `app` deployed, for example our Kerberos Agent, you can benefit from features such as: remote access, over the air updates, an encrypted public `https` endpoint and many more. -We provide two mechanisms to deploy Kerberos Agent to your Balena Cloud fleet: +We provide two mechanisms to deploy Kerberos Agent to a Balena Cloud fleet: 1. Use Kerberos Agent as [a block part of your larger application](https://github.com/kerberos-io/balena-agent-block). 2. Use Kerberos Agent as [a stand-a-lone application](https://github.com/kerberos-io/balena-agent). + +## Block + +Within Balena you can build the concept of a block, which is the equivalent of container image or a function in a typical programming language. + +The idea of blocks, you can find a more thorough explanation [here](https://docs.balena.io/learn/develop/blocks/), is that you can compose and combine multiple `blocks` to level up to the concept an `app`. + +You as a developer can choose which `blocks` you would like to use, to build the desired `application` state you prefer. For example you can use the [Kerberos Agent block](https://hub.balena.io/blocks/2064662/agent) to compose a video surveillance system as part of your existing set of blocks. + +You can the `Kerberos Agent` block by defining following elements in your `compose` file. + + agent: + image: bh.cr/kerberos_io/agent From 4b6c25bb85c48c1bfc54b0a48d5994923b1f87ba Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 25 Jun 2023 23:25:42 +0200 Subject: [PATCH 13/80] documentation for balena apps --- README.md | 2 +- deployments/balena/README.md | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d0dabdab..8e2247e8 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ We have documented the different deployment models [in the `deployments` directo - [Red Hat OpenShift with Ansible](https://github.com/kerberos-io/agent/tree/master/deployments#4-red-hat-ansible-and-openshift) - [Terraform](https://github.com/kerberos-io/agent/tree/master/deployments#5-terraform) - [Salt](https://github.com/kerberos-io/agent/tree/master/deployments#6-salt) -- [Balena](https://github.com/kerberos-io/agent/tree/master/deployments#1-balena) +- [Balena](https://github.com/kerberos-io/agent/tree/master/deployments#8-balena) By default your Kerberos Agents will store all its configuration and recordings inside the container. To help you automate and have a more consistent data governance, you can attach volumes to configure and persist data of your Kerberos Agents, and/or configure each Kerberos Agent through environment variables. diff --git a/deployments/balena/README.md b/deployments/balena/README.md index b9b6af92..900d0dc3 100644 --- a/deployments/balena/README.md +++ b/deployments/balena/README.md @@ -4,14 +4,12 @@ Balena Cloud provide a seamless way of building and deploying applications at sc We provide two mechanisms to deploy Kerberos Agent to a Balena Cloud fleet: -1. Use Kerberos Agent as [a block part of your larger application](https://github.com/kerberos-io/balena-agent-block). -2. Use Kerberos Agent as [a stand-a-lone application](https://github.com/kerberos-io/balena-agent). +1. Use Kerberos Agent as [a block part of your application](https://github.com/kerberos-io/balena-agent-block). +2. Use Kerberos Agent as [a stand-alone application](https://github.com/kerberos-io/balena-agent). ## Block -Within Balena you can build the concept of a block, which is the equivalent of container image or a function in a typical programming language. - -The idea of blocks, you can find a more thorough explanation [here](https://docs.balena.io/learn/develop/blocks/), is that you can compose and combine multiple `blocks` to level up to the concept an `app`. +Within Balena you can build the concept of a block, which is the equivalent of container image or a function in a typical programming language. The idea of blocks, you can find a more thorough explanation [here](https://docs.balena.io/learn/develop/blocks/), is that you can compose and combine multiple `blocks` to level up to the concept an `app`. You as a developer can choose which `blocks` you would like to use, to build the desired `application` state you prefer. For example you can use the [Kerberos Agent block](https://hub.balena.io/blocks/2064662/agent) to compose a video surveillance system as part of your existing set of blocks. @@ -19,3 +17,15 @@ You can the `Kerberos Agent` block by defining following elements in your `compo agent: image: bh.cr/kerberos_io/agent + +## App + +Next to building individual `blocks` you as a developer can also decide to build up an application, composed of one or more `blocks` or third-party containers, and publish it as an `app` to the Balena Hub. This is exactly [what we've done..](https://hub.balena.io/apps/2064752/video-surveillance) + +On Balena Hub we have created the []`video-surveillance` application](https://hub.balena.io/apps/2064752/video-surveillance) that utilises the [Kerberos Agent `block`](https://hub.balena.io/blocks/2064662/agent). The idea of this application is that utilises the foundation of our Kerberos Agent, but that it might include more `blocks` over time to increase and improve functionalities from other community projects. + +To deploy the application you can simply press below `Deploy button` or you can navigate to the [Balena Hub apps page](https://hub.balena.io/apps/2064752/video-surveillance). + +[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent) + +You can find the source code, `balena.yaml` and `docker-compose.yaml` files in the [`balena-agent` repository](https://github.com/kerberos-io/balena-agent). From 4b8b6bf66aae5afa8a115e87c56ca9b0103926f8 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Mon, 26 Jun 2023 08:22:12 +0200 Subject: [PATCH 14/80] fix balena links --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8e2247e8..377f22c9 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ If you want to connect to an USB or Raspberry Pi camera, [you'll need to run our Run Kerberos Agent with [Balena Cloud](https://www.balena.io/) super powers. Monitor your Kerberos Agent with seamless remote access, over the air updates, an encrypted public `https` endpoint and many more. Checkout our application `video-surveillance` on [Balena Hub](https://hub.balena.io/apps/2064752/video-surveillance), and create your first or fleet of Kerberos Agent(s). -[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/agent) +[![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/balena-agent) ## A world of Kerberos Agents From bf97bd72f18989a8dda51835c399db939b177996 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 28 Jun 2023 08:41:51 +0200 Subject: [PATCH 15/80] add osusergo --- Dockerfile | 2 +- machinery/src/database/main.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 168de294..c242b5e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,7 +32,7 @@ RUN cat /go/src/github.com/kerberos-io/agent/machinery/version RUN cd /go/src/github.com/kerberos-io/agent/machinery && \ go mod download && \ - go build -tags timetzdata,netgo --ldflags '-s -w -extldflags "-static -latomic"' main.go && \ + go build -tags timetzdata,netgo,osusergo --ldflags '-s -w -extldflags "-static -latomic"' main.go && \ mkdir -p /agent && \ mv main /agent && \ mv version /agent && \ diff --git a/machinery/src/database/main.go b/machinery/src/database/main.go index 63be08ab..23b68d5a 100644 --- a/machinery/src/database/main.go +++ b/machinery/src/database/main.go @@ -28,10 +28,10 @@ func New() *mongo.Client { password := os.Getenv("MONGODB_PASSWORD") authentication := "SCRAM-SHA-256" - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - _init_ctx.Do(func() { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + _instance = new(DB) mongodbURI := fmt.Sprintf("mongodb://%s:%s@%s", username, password, host) if replicaset != "" { From bcfed04a07ba1f6ebe8fd59bd8e752e8141a641a Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 28 Jun 2023 17:09:29 +0200 Subject: [PATCH 16/80] add AGENT_TLS_INSECURE to enable Insecure TLS mode --- README.md | 1 + machinery/src/cloud/Cloud.go | 55 ++++++++++++++++++++++++---- machinery/src/cloud/KerberosHub.go | 14 +++++-- machinery/src/cloud/KerberosVault.go | 12 +++++- 4 files changed, 70 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 377f22c9..d77323d6 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,7 @@ Next to attaching the configuration file, it is also possible to override the co | Name | Description | Default Value | | --------------------------------------- | ----------------------------------------------------------------------------------------------- | ------------------------------ | | `AGENT_MODE` | You can choose to run this in 'release' for production, and or 'demo' for showcasing. | "release" | +| `AGENT_TLS_INSECURE` | Specify if you want to use `InsecureSkipVerify` for the internal HTTP client. | "false" | | `AGENT_USERNAME` | The username used to authenticate against the Kerberos Agent login page. | "root" | | `AGENT_PASSWORD` | The password used to authenticate against the Kerberos Agent login page. | "root" | | `AGENT_KEY` | A unique identifier for your Kerberos Agent, this is auto-generated but can be overriden. | "" | diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 2099385c..c4e8322d 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -2,6 +2,7 @@ package cloud import ( "bytes" + "crypto/tls" "encoding/base64" "encoding/json" "fmt" @@ -352,7 +353,16 @@ loop: req, _ := http.NewRequest("POST", url, buffy) req.Header.Set("Content-Type", "application/json") - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } + resp, err := client.Do(req) if resp != nil { resp.Body.Close() @@ -374,8 +384,6 @@ loop: buffy = bytes.NewBuffer(jsonStr) req, _ = http.NewRequest("POST", vaultURI+"/devices/heartbeat", buffy) req.Header.Set("Content-Type", "application/json") - - client = &http.Client{} resp, err = client.Do(req) if resp != nil { resp.Body.Close() @@ -550,7 +558,15 @@ func VerifyHub(c *gin.Context) { if err == nil { req.Header.Set("X-Kerberos-Hub-PublicKey", publicKey) req.Header.Set("X-Kerberos-Hub-PrivateKey", privateKey) - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } resp, err := client.Do(req) if err == nil { @@ -649,7 +665,15 @@ func VerifyPersistence(c *gin.Context) { req.Header.Set("X-Kerberos-Hub-PrivateKey", config.HubPrivateKey) req.Header.Set("X-Kerberos-Hub-Region", config.S3.Region) - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } resp, err := client.Do(req) if resp != nil { @@ -689,7 +713,16 @@ func VerifyPersistence(c *gin.Context) { if err == nil && uri != "" && accessKey != "" && secretAccessKey != "" { - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } + req, err := http.NewRequest("POST", uri+"/ping", nil) req.Header.Add("X-Kerberos-Storage-AccessKey", accessKey) req.Header.Add("X-Kerberos-Storage-SecretAccessKey", secretAccessKey) @@ -731,7 +764,15 @@ func VerifyPersistence(c *gin.Context) { req.Header.Set("X-Kerberos-Storage-Capture", "IPCamera") req.Header.Set("X-Kerberos-Storage-Directory", directory) - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } resp, err := client.Do(req) diff --git a/machinery/src/cloud/KerberosHub.go b/machinery/src/cloud/KerberosHub.go index c5dd8eef..783f4c1a 100644 --- a/machinery/src/cloud/KerberosHub.go +++ b/machinery/src/cloud/KerberosHub.go @@ -1,6 +1,7 @@ package cloud import ( + "crypto/tls" "errors" "io/ioutil" "net/http" @@ -62,7 +63,15 @@ func UploadKerberosHub(configuration *models.Configuration, fileName string) (bo req.Header.Set("X-Kerberos-Hub-PrivateKey", config.HubPrivateKey) req.Header.Set("X-Kerberos-Hub-Region", config.S3.Region) - client := &http.Client{} + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } resp, err := client.Do(req) if resp != nil { @@ -96,9 +105,6 @@ func UploadKerberosHub(configuration *models.Configuration, fileName string) (bo req.Header.Set("X-Kerberos-Hub-PublicKey", config.HubKey) req.Header.Set("X-Kerberos-Hub-PrivateKey", config.HubPrivateKey) req.Header.Set("X-Kerberos-Hub-Region", config.S3.Region) - - client = &http.Client{} - resp, err = client.Do(req) if resp != nil { defer resp.Body.Close() diff --git a/machinery/src/cloud/KerberosVault.go b/machinery/src/cloud/KerberosVault.go index 81df0470..d57eac21 100644 --- a/machinery/src/cloud/KerberosVault.go +++ b/machinery/src/cloud/KerberosVault.go @@ -1,6 +1,7 @@ package cloud import ( + "crypto/tls" "errors" "io/ioutil" "net/http" @@ -67,7 +68,16 @@ func UploadKerberosVault(configuration *models.Configuration, fileName string) ( req.Header.Set("X-Kerberos-Storage-Device", config.Key) req.Header.Set("X-Kerberos-Storage-Capture", "IPCamera") req.Header.Set("X-Kerberos-Storage-Directory", config.KStorage.Directory) - client := &http.Client{} + + var client *http.Client + if os.Getenv("AGENT_TLS_INSECURE") == "true" { + tr := &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + } + client = &http.Client{Transport: tr} + } else { + client = &http.Client{} + } resp, err := client.Do(req) if resp != nil { From 00917e3f88efd8fc6e3e645d9b3e1a65c7cff002 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 28 Jun 2023 19:28:07 +0200 Subject: [PATCH 17/80] add flag arguments instead of absolute arguments (we now support names) added option to define the config location, can be different than the relative location of the agent binary --- Dockerfile | 2 +- README.md | 4 ++-- machinery/.vscode/launch.json | 2 +- machinery/main.go | 28 +++++++++++++++++++--------- machinery/src/components/Config.go | 18 +++++++++--------- machinery/src/components/Kerberos.go | 10 +++++----- machinery/src/routers/http/Routes.go | 6 +++--- machinery/src/routers/http/Server.go | 4 ++-- machinery/src/routers/main.go | 4 ++-- 9 files changed, 44 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index c242b5e9..14517ed3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -147,4 +147,4 @@ HEALTHCHECK CMD curl --fail http://localhost:80 || exit 1 # Leeeeettttt'ssss goooooo!!! # Run the shizzle from the right working directory. WORKDIR /home/agent -CMD ["./main", "run", "opensource", "80"] +CMD ["./main", "-action", "run", "-port", "80"] diff --git a/README.md b/README.md index d77323d6..a15cd605 100644 --- a/README.md +++ b/README.md @@ -248,7 +248,7 @@ Go and open two terminals one for the `ui` project and one for the `machinery` p 1. Terminal A: cd machinery/ - go run main.go run camera 80 + go run main.go -action run -port 80 2. Terminal B: @@ -289,7 +289,7 @@ You can simply run the `machinery` using following commands. git clone https://github.com/kerberos-io/agent cd machinery - go run main.go run mycameraname 80 + go run main.go -action run -port 80 This will launch the Kerberos Agent and run a webserver on port `80`. You can change the port by your own preference. We strongly support the usage of [Goland](https://www.jetbrains.com/go/) or [Visual Studio Code](https://code.visualstudio.com/), as it comes with all the debugging and linting features builtin. diff --git a/machinery/.vscode/launch.json b/machinery/.vscode/launch.json index 93aef948..d6fb8eca 100644 --- a/machinery/.vscode/launch.json +++ b/machinery/.vscode/launch.json @@ -10,7 +10,7 @@ "request": "launch", "mode": "auto", "program": "main.go", - "args": ["run", "cameraname", "8080"], + "args": ["-action run"], "envFile": "${workspaceFolder}/.env", "buildFlags": "--tags dynamic", }, diff --git a/machinery/main.go b/machinery/main.go index 7a44250c..366a3765 100644 --- a/machinery/main.go +++ b/machinery/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "flag" "os" "time" @@ -49,7 +50,20 @@ func main() { } // Start the show ;) - action := os.Args[1] + // We'll parse the flags (named variables), and start the agent. + + var action string + var configDirectory string + var name string + var port string + var timeout string + + flag.StringVar(&action, "action", "version", "Tell us what you want do 'run' or 'version'") + flag.StringVar(&configDirectory, "config", ".", "Where is the configuration stored") + flag.StringVar(&name, "name", "agent", "Provide a name for the agent") + flag.StringVar(&port, "port", "80", "On which port should the agent run") + flag.StringVar(&timeout, "timeout", "2000", "Number of milliseconds to wait for the ONVIF discovery to complete") + flag.Parse() timezone, _ := time.LoadLocation("CET") log.Log.Init(timezone) @@ -60,14 +74,10 @@ func main() { log.Log.Info("You are currrently running Kerberos Agent " + VERSION) case "discover": - timeout := os.Args[2] log.Log.Info(timeout) case "run": { - name := os.Args[2] - port := os.Args[3] - // Print Kerberos.io ASCII art utils.PrintASCIIArt() @@ -82,7 +92,7 @@ func main() { configuration.Port = port // Open this configuration either from Kerberos Agent or Kerberos Factory. - components.OpenConfig(&configuration) + components.OpenConfig(configDirectory, &configuration) // We will override the configuration with the environment variables components.OverrideWithEnvironmentVariables(&configuration) @@ -103,7 +113,7 @@ func main() { if configuration.Config.Key == "" { key := utils.RandStringBytesMaskImpr(30) configuration.Config.Key = key - err := components.StoreConfig(configuration.Config) + err := components.StoreConfig(configDirectory, configuration.Config) if err == nil { log.Log.Info("Main: updated unique key for agent to: " + key) } else { @@ -121,10 +131,10 @@ func main() { CancelContext: &cancel, HandleBootstrap: make(chan string, 1), } - go components.Bootstrap(&configuration, &communication) + go components.Bootstrap(configDirectory, &configuration, &communication) // Start the REST API. - routers.StartWebserver(&configuration, &communication) + routers.StartWebserver(configDirectory, &configuration, &communication) } default: log.Log.Error("Main: Sorry I don't understand :(") diff --git a/machinery/src/components/Config.go b/machinery/src/components/Config.go index f63f0582..dd58a4bc 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/components/Config.go @@ -42,11 +42,11 @@ func GetImageFromFilePath() (image.Image, error) { // ReadUserConfig Reads the user configuration of the Kerberos Open Source instance. // This will return a models.User struct including the username, password, // selected language, and if the installation was completed or not. -func ReadUserConfig() (userConfig models.User) { +func ReadUserConfig(configDirectory string) (userConfig models.User) { for { jsonFile, err := os.Open("./data/config/user.json") if err != nil { - log.Log.Error("Config file is not found " + "./data/config/user.json, trying again in 5s: " + err.Error()) + log.Log.Error("Config file is not found " + configDirectory + "/data/config/user.json, trying again in 5s: " + err.Error()) time.Sleep(5 * time.Second) } else { log.Log.Info("Successfully Opened user.json") @@ -66,7 +66,7 @@ func ReadUserConfig() (userConfig models.User) { return } -func OpenConfig(configuration *models.Configuration) { +func OpenConfig(configDirectory string, configuration *models.Configuration) { // We are checking which deployment this is running, so we can load // into the configuration as expected. @@ -146,9 +146,9 @@ func OpenConfig(configuration *models.Configuration) { // Open device config for { - jsonFile, err := os.Open("./data/config/config.json") + jsonFile, err := os.Open(configDirectory + "/data/config/config.json") if err != nil { - log.Log.Error("Config file is not found " + "./data/config/config.json" + ", trying again in 5s.") + log.Log.Error("Config file is not found " + configDirectory + "/data/config/config.json" + ", trying again in 5s.") time.Sleep(5 * time.Second) } else { log.Log.Info("Successfully Opened config.json from " + configuration.Name) @@ -437,11 +437,11 @@ func OverrideWithEnvironmentVariables(configuration *models.Configuration) { } } -func SaveConfig(config models.Config, configuration *models.Configuration, communication *models.Communication) error { +func SaveConfig(configDirectory string, config models.Config, configuration *models.Configuration, communication *models.Communication) error { if !communication.IsConfiguring.IsSet() { communication.IsConfiguring.Set() - err := StoreConfig(config) + err := StoreConfig(configDirectory, config) if err != nil { communication.IsConfiguring.UnSet() return err @@ -462,7 +462,7 @@ func SaveConfig(config models.Config, configuration *models.Configuration, commu } } -func StoreConfig(config models.Config) error { +func StoreConfig(configDirectory string, config models.Config) error { // Save into database if os.Getenv("DEPLOYMENT") == "factory" || os.Getenv("MACHINERY_ENVIRONMENT") == "kubernetes" { // Write to mongodb @@ -484,7 +484,7 @@ func StoreConfig(config models.Config) error { // Save into file } else if os.Getenv("DEPLOYMENT") == "" || os.Getenv("DEPLOYMENT") == "agent" { res, _ := json.MarshalIndent(config, "", "\t") - err := ioutil.WriteFile("./data/config/config.json", res, 0644) + err := ioutil.WriteFile(configDirectory+"/data/config/config.json", res, 0644) return err } diff --git a/machinery/src/components/Kerberos.go b/machinery/src/components/Kerberos.go index d5c406c8..290f6dda 100644 --- a/machinery/src/components/Kerberos.go +++ b/machinery/src/components/Kerberos.go @@ -23,7 +23,7 @@ import ( "github.com/tevino/abool" ) -func Bootstrap(configuration *models.Configuration, communication *models.Communication) { +func Bootstrap(configDirectory string, configuration *models.Configuration, communication *models.Communication) { log.Log.Debug("Bootstrap: started") // We will keep track of the Kerberos Agent up time @@ -79,7 +79,7 @@ func Bootstrap(configuration *models.Configuration, communication *models.Commun for { // This will blocking until receiving a signal to be restarted, reconfigured, stopped, etc. - status := RunAgent(configuration, communication, mqttClient, uptimeStart, cameraSettings, decoder, subDecoder) + status := RunAgent(configDirectory, configuration, communication, mqttClient, uptimeStart, cameraSettings, decoder, subDecoder) if status == "stop" { break @@ -87,7 +87,7 @@ func Bootstrap(configuration *models.Configuration, communication *models.Commun if status == "not started" { // We will re open the configuration, might have changed :O! - OpenConfig(configuration) + OpenConfig(configDirectory, configuration) // We will override the configuration with the environment variables OverrideWithEnvironmentVariables(configuration) } @@ -107,7 +107,7 @@ func Bootstrap(configuration *models.Configuration, communication *models.Commun log.Log.Debug("Bootstrap: finished") } -func RunAgent(configuration *models.Configuration, communication *models.Communication, mqttClient mqtt.Client, uptimeStart time.Time, cameraSettings *models.Camera, decoder *ffmpeg.VideoDecoder, subDecoder *ffmpeg.VideoDecoder) string { +func RunAgent(configDirectory string, configuration *models.Configuration, communication *models.Communication, mqttClient mqtt.Client, uptimeStart time.Time, cameraSettings *models.Camera, decoder *ffmpeg.VideoDecoder, subDecoder *ffmpeg.VideoDecoder) string { log.Log.Debug("RunAgent: bootstrapping agent") config := configuration.Config @@ -284,7 +284,7 @@ func RunAgent(configuration *models.Configuration, communication *models.Communi (*communication.CancelContext)() // We will re open the configuration, might have changed :O! - OpenConfig(configuration) + OpenConfig(configDirectory, configuration) // We will override the configuration with the environment variables OverrideWithEnvironmentVariables(configuration) diff --git a/machinery/src/routers/http/Routes.go b/machinery/src/routers/http/Routes.go index 58f93992..b5d4adbd 100644 --- a/machinery/src/routers/http/Routes.go +++ b/machinery/src/routers/http/Routes.go @@ -17,7 +17,7 @@ import ( "github.com/kerberos-io/agent/machinery/src/utils" ) -func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configuration *models.Configuration, communication *models.Communication) *gin.RouterGroup { +func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirectory string, configuration *models.Configuration, communication *models.Communication) *gin.RouterGroup { r.GET("/ws", func(c *gin.Context) { websocket.WebsocketHandler(c, communication) @@ -40,7 +40,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configuratio var config models.Config err := c.BindJSON(&config) if err == nil { - err := components.SaveConfig(config, configuration, communication) + err := components.SaveConfig(configDirectory, config, configuration, communication) if err == nil { c.JSON(200, gin.H{ "data": "☄ Reconfiguring", @@ -165,7 +165,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configuratio var config models.Config err := c.BindJSON(&config) if err == nil { - err := components.SaveConfig(config, configuration, communication) + err := components.SaveConfig(configDirectory, config, configuration, communication) if err == nil { c.JSON(200, gin.H{ "data": "☄ Reconfiguring", diff --git a/machinery/src/routers/http/Server.go b/machinery/src/routers/http/Server.go index d00a3c4f..692a2802 100644 --- a/machinery/src/routers/http/Server.go +++ b/machinery/src/routers/http/Server.go @@ -35,7 +35,7 @@ import ( // @in header // @name Authorization -func StartServer(configuration *models.Configuration, communication *models.Communication) { +func StartServer(configDirectory string, configuration *models.Configuration, communication *models.Communication) { // Initialize REST API r := gin.Default() @@ -57,7 +57,7 @@ func StartServer(configuration *models.Configuration, communication *models.Comm } // Add all routes - AddRoutes(r, authMiddleware, configuration, communication) + AddRoutes(r, authMiddleware, configDirectory, configuration, communication) // Update environment variables environmentVariables := "./www/env.js" diff --git a/machinery/src/routers/main.go b/machinery/src/routers/main.go index 0e6ff11d..509dc1b6 100644 --- a/machinery/src/routers/main.go +++ b/machinery/src/routers/main.go @@ -5,6 +5,6 @@ import ( "github.com/kerberos-io/agent/machinery/src/routers/http" ) -func StartWebserver(configuration *models.Configuration, communication *models.Communication) { - http.StartServer(configuration, communication) +func StartWebserver(configDirectory string, configuration *models.Configuration, communication *models.Communication) { + http.StartServer(configDirectory, configuration, communication) } From f7ced6056d77a0f4483e5b08c3b80f0549e82af7 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 28 Jun 2023 20:24:41 +0200 Subject: [PATCH 18/80] update to port 80 + allow frontend to take into account a custom config directory --- README.md | 6 +++--- machinery/src/routers/http/Server.go | 14 +++++++------- ui/src/config.js | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index a15cd605..6b9f8622 100644 --- a/README.md +++ b/README.md @@ -233,9 +233,9 @@ On opening of the GitHub Codespace, some dependencies will be installed. Once th const dev = { ENV: 'dev', HOSTNAME: externalHost, - //API_URL: `${protocol}//${hostname}:8080/api`, - //URL: `${protocol}//${hostname}:8080`, - //WS_URL: `${websocketprotocol}//${hostname}:8080/ws`, + //API_URL: `${protocol}//${hostname}:80/api`, + //URL: `${protocol}//${hostname}:80`, + //WS_URL: `${websocketprotocol}//${hostname}:80/ws`, // Uncomment, and comment the above lines, when using codespaces or other special DNS names (which you can't control) API_URL: `${protocol}//${externalHost}/api`, diff --git a/machinery/src/routers/http/Server.go b/machinery/src/routers/http/Server.go index 692a2802..74622f9c 100644 --- a/machinery/src/routers/http/Server.go +++ b/machinery/src/routers/http/Server.go @@ -60,9 +60,9 @@ func StartServer(configDirectory string, configuration *models.Configuration, co AddRoutes(r, authMiddleware, configDirectory, configuration, communication) // Update environment variables - environmentVariables := "./www/env.js" + environmentVariables := configDirectory + "/www/env.js" if os.Getenv("AGENT_MODE") == "demo" { - demoEnvironmentVariables := "./www/env.demo.js" + demoEnvironmentVariables := configDirectory + "/www/env.demo.js" // Move demo environment variables to environment variables err := os.Rename(demoEnvironmentVariables, environmentVariables) if err != nil { @@ -71,11 +71,11 @@ func StartServer(configDirectory string, configuration *models.Configuration, co } // Add static routes to UI - r.Use(static.Serve("/", static.LocalFile("./www", true))) - r.Use(static.Serve("/dashboard", static.LocalFile("./www", true))) - r.Use(static.Serve("/media", static.LocalFile("./www", true))) - r.Use(static.Serve("/settings", static.LocalFile("./www", true))) - r.Use(static.Serve("/login", static.LocalFile("./www", true))) + r.Use(static.Serve("/", static.LocalFile(configDirectory+"/www", true))) + r.Use(static.Serve("/dashboard", static.LocalFile(configDirectory+"/www", true))) + r.Use(static.Serve("/media", static.LocalFile(configDirectory+"/www", true))) + r.Use(static.Serve("/settings", static.LocalFile(configDirectory+"/www", true))) + r.Use(static.Serve("/login", static.LocalFile(configDirectory+"/www", true))) r.Handle("GET", "/file/*filepath", Files) // Run the api on port diff --git a/ui/src/config.js b/ui/src/config.js index a587eed1..9462e62b 100644 --- a/ui/src/config.js +++ b/ui/src/config.js @@ -9,9 +9,9 @@ const dev = { ENV: 'dev', // Comment the below lines, when using codespaces or other special DNS names (which you can't control) HOSTNAME: hostname, - API_URL: `${protocol}//${hostname}:8080/api`, - URL: `${protocol}//${hostname}:8080`, - WS_URL: `${websocketprotocol}//${hostname}:8080/ws`, + API_URL: `${protocol}//${hostname}:80/api`, + URL: `${protocol}//${hostname}:80`, + WS_URL: `${websocketprotocol}//${hostname}:80/ws`, MODE: window['env']['mode'], // Uncomment, and comment the above lines, when using codespaces or other special DNS names (which you can't control) // HOSTNAME: externalHost, From 21c0e01137e627e6014c7560a7d313c37e35901e Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 12:28:44 +0200 Subject: [PATCH 19/80] add additional environment variables to tweak the internal agent "disable motion, disable liveview" --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b9f8622..c3e9aa72 100644 --- a/README.md +++ b/README.md @@ -183,8 +183,11 @@ Next to attaching the configuration file, it is also possible to override the co | `AGENT_CAPTURE_IPCAMERA_ONVIF_XADDR` | ONVIF endpoint/address running on the camera. | "" | | `AGENT_CAPTURE_IPCAMERA_ONVIF_USERNAME` | ONVIF username to authenticate against. | "" | | `AGENT_CAPTURE_IPCAMERA_ONVIF_PASSWORD` | ONVIF password to authenticate against. | "" | +| `AGENT_CAPTURE_MOTION` | Toggle for enabling or disabling motion. | "true" | +| `AGENT_CAPTURE_LIVEVIEW` | Toggle for enabling or disabling liveview. | "true" | +| `AGENT_CAPTURE_SNAPSHOTS` | Toggle for enabling or disabling snapshot generation. | "true" | | `AGENT_CAPTURE_RECORDING` | Toggle for enabling making recordings. | "true" | -| `AGENT_CAPTURE_CONTINUOUS` | Toggle for enabling continuous or motion based recording. | "false" | +| `AGENT_CAPTURE_CONTINUOUS` | Toggle for enabling continuous "true" or motion "false". | "false" | | `AGENT_CAPTURE_PRERECORDING` | If `CONTINUOUS` set to `false`, specify the recording time (seconds) before after motion event. | "10" | | `AGENT_CAPTURE_POSTRECORDING` | If `CONTINUOUS` set to `false`, specify the recording time (seconds) after motion event. | "20" | | `AGENT_CAPTURE_MAXLENGTH` | The maximum length of a single recording (seconds). | "30" | From 44ec8c0534cd4914dea14588f7728e935801d197 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 14:06:41 +0200 Subject: [PATCH 20/80] try upgrading the dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 14517ed3..71aa257c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ ENV GOSUMDB=off ########################################## # Installing some additional dependencies. -RUN apt-get update && apt-get install -y --no-install-recommends \ +RUN apt-get upgrade -y && apt-get update && apt-get install -y --no-install-recommends \ git build-essential cmake pkg-config unzip libgtk2.0-dev \ curl ca-certificates libcurl4-openssl-dev libssl-dev libjpeg62-turbo-dev && \ rm -rf /var/lib/apt/lists/* From c2ff7ff785a04f13ed80e5a20cfca33d005cf918 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:10:16 +0200 Subject: [PATCH 21/80] add missing custom config directory references --- machinery/main.go | 6 +++--- machinery/src/capture/main.go | 20 ++++++++++---------- machinery/src/cloud/Cloud.go | 16 ++++++++-------- machinery/src/components/Config.go | 8 ++++---- machinery/src/components/Kerberos.go | 4 ++-- machinery/src/log/main.go | 8 ++++---- machinery/src/routers/http/Routes.go | 10 +++++----- machinery/src/routers/http/Server.go | 8 +++++--- machinery/src/utils/main.go | 12 ++++++------ 9 files changed, 47 insertions(+), 45 deletions(-) diff --git a/machinery/main.go b/machinery/main.go index 366a3765..4bba8efa 100644 --- a/machinery/main.go +++ b/machinery/main.go @@ -66,7 +66,7 @@ func main() { flag.Parse() timezone, _ := time.LoadLocation("CET") - log.Log.Init(timezone) + log.Log.Init(configDirectory, timezone) switch action { @@ -102,11 +102,11 @@ func main() { // Check the folder permissions, it might be that we do not have permissions to write // recordings, update the configuration or save snapshots. - utils.CheckDataDirectoryPermissions() + utils.CheckDataDirectoryPermissions(configDirectory) // Set timezone timezone, _ := time.LoadLocation(configuration.Config.Timezone) - log.Log.Init(timezone) + log.Log.Init(configDirectory, timezone) // Check if we have a device Key or not, if not // we will generate one. diff --git a/machinery/src/capture/main.go b/machinery/src/capture/main.go index 2b52144b..82ca5d21 100644 --- a/machinery/src/capture/main.go +++ b/machinery/src/capture/main.go @@ -17,7 +17,7 @@ import ( "github.com/kerberos-io/joy4/av" ) -func CleanupRecordingDirectory(configuration *models.Configuration) { +func CleanupRecordingDirectory(configDirectory string, configuration *models.Configuration) { autoClean := configuration.Config.AutoClean if autoClean == "true" { maxSize := configuration.Config.MaxDirectorySize @@ -25,7 +25,7 @@ func CleanupRecordingDirectory(configuration *models.Configuration) { maxSize = 300 } // Total size of the recording directory. - recordingsDirectory := "./data/recordings" + recordingsDirectory := configDirectory + "/data/recordings" size, err := utils.DirSize(recordingsDirectory) if err == nil { sizeInMB := size / 1000 / 1000 @@ -51,7 +51,7 @@ func CleanupRecordingDirectory(configuration *models.Configuration) { } } -func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration, communication *models.Communication, streams []av.CodecData) { +func HandleRecordStream(queue *pubsub.Queue, configDirectory string, configuration *models.Configuration, communication *models.Communication, streams []av.CodecData) { config := configuration.Config @@ -134,13 +134,13 @@ func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration } // Create a symbol link. - fc, _ := os.Create("./data/cloud/" + name) + fc, _ := os.Create(configDirectory + "/data/cloud/" + name) fc.Close() recordingStatus = "idle" // Clean up the recording directory if necessary. - CleanupRecordingDirectory(configuration) + CleanupRecordingDirectory(configDirectory, configuration) } // If not yet started and a keyframe, let's make a recording @@ -192,7 +192,7 @@ func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration "769" name = s + ".mp4" - fullName = "./data/recordings/" + name + fullName = configDirectory + "/data/recordings/" + name // Running... log.Log.Info("Recording started") @@ -259,7 +259,7 @@ func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration } // Create a symbol link. - fc, _ := os.Create("./data/cloud/" + name) + fc, _ := os.Create(configDirectory + "/data/cloud/" + name) fc.Close() recordingStatus = "idle" @@ -315,7 +315,7 @@ func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration "769" name := s + ".mp4" - fullName := "./data/recordings/" + name + fullName := configDirectory + "/data/recordings/" + name // Running... log.Log.Info("HandleRecordStream: Recording started") @@ -406,11 +406,11 @@ func HandleRecordStream(queue *pubsub.Queue, configuration *models.Configuration } // Create a symbol linc. - fc, _ := os.Create("./data/cloud/" + name) + fc, _ := os.Create(configDirectory + "/data/cloud/" + name) fc.Close() // Clean up the recording directory if necessary. - CleanupRecordingDirectory(configuration) + CleanupRecordingDirectory(configDirectory, configuration) } } diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index c4e8322d..0bb6ae43 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -32,8 +32,8 @@ import ( "github.com/kerberos-io/agent/machinery/src/webrtc" ) -func PendingUpload() { - ff, err := utils.ReadDirectory("./data/cloud/") +func PendingUpload(configDirectory string) { + ff, err := utils.ReadDirectory(configDirectory + "/data/cloud/") if err == nil { for _, f := range ff { log.Log.Info(f.Name()) @@ -41,12 +41,12 @@ func PendingUpload() { } } -func HandleUpload(configuration *models.Configuration, communication *models.Communication) { +func HandleUpload(configDirectory string, configuration *models.Configuration, communication *models.Communication) { log.Log.Debug("HandleUpload: started") config := configuration.Config - watchDirectory := "./data/cloud/" + watchDirectory := configDirectory + "/data/cloud/" if config.Offline == "true" { log.Log.Debug("HandleUpload: stopping as Offline is enabled.") @@ -122,7 +122,7 @@ func HandleUpload(configuration *models.Configuration, communication *models.Com // Check if we need to remove the original recording // removeAfterUpload is set to false by default if config.RemoveAfterUpload == "true" { - err := os.Remove("./data/recordings/" + fileName) + err := os.Remove(configDirectory + "/data/recordings/" + fileName) if err != nil { log.Log.Error("HandleUpload: " + err.Error()) } @@ -614,7 +614,7 @@ func VerifyHub(c *gin.Context) { // @Summary Will verify the persistence. // @Description Will verify the persistence. // @Success 200 {object} models.APIResponse -func VerifyPersistence(c *gin.Context) { +func VerifyPersistence(c *gin.Context, configDirectory string) { var config models.Config err := c.BindJSON(&config) @@ -636,7 +636,7 @@ func VerifyPersistence(c *gin.Context) { } else { // Open test-480p.mp4 - file, err := os.Open("./data/test-480p.mp4") + file, err := os.Open(configDirectory + "/data/test-480p.mp4") if err != nil { msg := "VerifyPersistence: error reading test-480p.mp4: " + err.Error() log.Log.Error(msg) @@ -741,7 +741,7 @@ func VerifyPersistence(c *gin.Context) { "_6-967003_" + config.Name + "_200-200-400-400_24_769.mp4" // Open test-480p.mp4 - file, err := os.Open("./data/test-480p.mp4") + file, err := os.Open(configDirectory + "/test-480p.mp4") if err != nil { msg := "VerifyPersistence: error reading test-480p.mp4: " + err.Error() log.Log.Error(msg) diff --git a/machinery/src/components/Config.go b/machinery/src/components/Config.go index dd58a4bc..64953522 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/components/Config.go @@ -20,14 +20,14 @@ import ( "go.mongodb.org/mongo-driver/bson" ) -func GetImageFromFilePath() (image.Image, error) { - snapshotDirectory := "./data/snapshots" +func GetImageFromFilePath(configDirectory string) (image.Image, error) { + snapshotDirectory := configDirectory + "/data/snapshots" files, err := ioutil.ReadDir(snapshotDirectory) if err == nil && len(files) > 1 { sort.Slice(files, func(i, j int) bool { return files[i].ModTime().Before(files[j].ModTime()) }) - filePath := "./data/snapshots/" + files[1].Name() + filePath := configDirectory + "/data/snapshots/" + files[1].Name() f, err := os.Open(filePath) if err != nil { return nil, err @@ -44,7 +44,7 @@ func GetImageFromFilePath() (image.Image, error) { // selected language, and if the installation was completed or not. func ReadUserConfig(configDirectory string) (userConfig models.User) { for { - jsonFile, err := os.Open("./data/config/user.json") + jsonFile, err := os.Open(configDirectory + "/data/config/user.json") if err != nil { log.Log.Error("Config file is not found " + configDirectory + "/data/config/user.json, trying again in 5s: " + err.Error()) time.Sleep(5 * time.Second) diff --git a/machinery/src/components/Kerberos.go b/machinery/src/components/Kerberos.go index 290f6dda..d00acd22 100644 --- a/machinery/src/components/Kerberos.go +++ b/machinery/src/components/Kerberos.go @@ -260,10 +260,10 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu } // Handle recording, will write an mp4 to disk. - go capture.HandleRecordStream(queue, configuration, communication, streams) + go capture.HandleRecordStream(queue, configDirectory, configuration, communication, streams) // Handle Upload to cloud provider (Kerberos Hub, Kerberos Vault and others) - go cloud.HandleUpload(configuration, communication) + go cloud.HandleUpload(configDirectory, configuration, communication) // Handle ONVIF actions go onvif.HandleONVIFActions(configuration, communication) diff --git a/machinery/src/log/main.go b/machinery/src/log/main.go index d34b7fc1..11c562ef 100644 --- a/machinery/src/log/main.go +++ b/machinery/src/log/main.go @@ -21,7 +21,7 @@ var Log = Logging{ var gologging = logging.MustGetLogger("gologger") -func ConfigureGoLogging(timezone *time.Location) { +func ConfigureGoLogging(configDirectory string, timezone *time.Location) { // Logging var format = logging.MustStringFormatter( `%{color}%{time:15:04:05.000} %{shortfunc} ▶ %{level:.4s} %{id:03x}%{color:reset} %{message}`, @@ -32,7 +32,7 @@ func ConfigureGoLogging(timezone *time.Location) { stdBackend := logging.NewLogBackend(os.Stderr, "", 0) stdBackendLeveled := logging.NewBackendFormatter(stdBackend, format) fileBackend := logging.NewLogBackend(&lumberjack.Logger{ - Filename: "./data/log/machinery.txt", + Filename: configDirectory + "/data/log/machinery.txt", MaxSize: 2, // megabytes Compress: true, // disabled by default }, "", 0) @@ -75,10 +75,10 @@ type Logging struct { Level string } -func (self *Logging) Init(timezone *time.Location) { +func (self *Logging) Init(configDirectory string, timezone *time.Location) { switch self.Logger { case "go-logging": - ConfigureGoLogging(timezone) + ConfigureGoLogging(configDirectory, timezone) case "logrus": ConfigureLogrus(timezone) default: diff --git a/machinery/src/routers/http/Routes.go b/machinery/src/routers/http/Routes.go index b5d4adbd..b728a526 100644 --- a/machinery/src/routers/http/Routes.go +++ b/machinery/src/routers/http/Routes.go @@ -78,7 +78,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect } // The total number of recordings stored in the directory. - recordingDirectory := "./data/recordings" + recordingDirectory := configDirectory + "/data/recordings" numberOfRecordings := utils.NumberOfMP4sInDirectory(recordingDirectory) // All days stored in this agent. @@ -115,7 +115,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect if eventFilter.NumberOfElements == 0 { eventFilter.NumberOfElements = 10 } - recordingDirectory := "./data/recordings" + recordingDirectory := configDirectory + "/data/recordings" files, err := utils.ReadDirectory(recordingDirectory) if err == nil { events := utils.GetSortedDirectory(files) @@ -137,7 +137,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect }) api.GET("/days", func(c *gin.Context) { - recordingDirectory := "./data/recordings" + recordingDirectory := configDirectory + "/data/recordings" files, err := utils.ReadDirectory(recordingDirectory) if err == nil { events := utils.GetSortedDirectory(files) @@ -205,7 +205,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect }) api.POST("/persistence/verify", func(c *gin.Context) { - cloud.VerifyPersistence(c) + cloud.VerifyPersistence(c, configDirectory) }) // Streaming handler @@ -215,7 +215,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect // We will only send an image once per second. time.Sleep(time.Second * 1) log.Log.Info("AddRoutes (/stream): reading from MJPEG stream") - img, err := components.GetImageFromFilePath() + img, err := components.GetImageFromFilePath(configDirectory) return img, err } h := components.StartMotionJPEG(imageFunction, 80) diff --git a/machinery/src/routers/http/Server.go b/machinery/src/routers/http/Server.go index 74622f9c..7f5ba2cd 100644 --- a/machinery/src/routers/http/Server.go +++ b/machinery/src/routers/http/Server.go @@ -76,7 +76,9 @@ func StartServer(configDirectory string, configuration *models.Configuration, co r.Use(static.Serve("/media", static.LocalFile(configDirectory+"/www", true))) r.Use(static.Serve("/settings", static.LocalFile(configDirectory+"/www", true))) r.Use(static.Serve("/login", static.LocalFile(configDirectory+"/www", true))) - r.Handle("GET", "/file/*filepath", Files) + r.Handle("GET", "/file/*filepath", func(c *gin.Context) { + Files(c, configDirectory) + }) // Run the api on port err = r.Run(":" + configuration.Port) @@ -85,8 +87,8 @@ func StartServer(configDirectory string, configuration *models.Configuration, co } } -func Files(c *gin.Context) { +func Files(c *gin.Context, configDirectory string) { c.Header("Access-Control-Allow-Origin", "*") c.Header("Content-Type", "video/mp4") - c.File("./data/recordings" + c.Param("filepath")) + c.File(configDirectory + "/data/recordings" + c.Param("filepath")) } diff --git a/machinery/src/utils/main.go b/machinery/src/utils/main.go index 8fa4f448..3a68670e 100644 --- a/machinery/src/utils/main.go +++ b/machinery/src/utils/main.go @@ -110,15 +110,15 @@ func CountDigits(i int64) (count int) { return count } -func CheckDataDirectoryPermissions() error { - recordingsDirectory := "./data/recordings" - configDirectory := "./data/config" - snapshotsDirectory := "./data/snapshots" - cloudDirectory := "./data/cloud" +func CheckDataDirectoryPermissions(configDirectory string) error { + recordingsDirectory := configDirectory + "/data/recordings" + configurationDirectory := configDirectory + "/data/config" + snapshotsDirectory := configDirectory + "/data/snapshots" + cloudDirectory := configDirectory + "/data/cloud" err := CheckDirectoryPermissions(recordingsDirectory) if err == nil { - err = CheckDirectoryPermissions(configDirectory) + err = CheckDirectoryPermissions(configurationDirectory) if err == nil { err = CheckDirectoryPermissions(snapshotsDirectory) if err == nil { From c519b01092d916cc7d3300278f03da00a1ffe97c Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:23:11 +0200 Subject: [PATCH 22/80] add snapcraft and try to snap the build --- .github/workflows/docker.yml | 6 ++++++ snap/hooks/configure | 6 ++++++ snap/snapcraft.yaml | 23 +++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 snap/hooks/configure create mode 100644 snap/snapcraft.yaml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 09596396..c97ef6e3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -43,6 +43,7 @@ jobs: run: docker buildx build --platform linux/$(echo ${{matrix.architecture}} | tr - /) -t $REPO-arch:arch-$(echo ${{matrix.architecture}} | tr / -)-${{steps.short-sha.outputs.sha}} --output type=tar,dest=output-${{matrix.architecture}}.tar . - name: Strip binary run: mkdir -p output/ && tar -xf output-${{matrix.architecture}}.tar -C output && rm output-${{matrix.architecture}}.tar && cd output/ && tar -cf ../agent-${{matrix.architecture}}.tar -C home/agent . && rm -rf output + # We'll make a GitHub release and push the build (tar) as an artifact - uses: rickstaa/action-create-tag@v1 with: tag: ${{ steps.short-sha.outputs.sha }} @@ -54,6 +55,11 @@ jobs: name: ${{ steps.short-sha.outputs.sha }} tag: ${{ steps.short-sha.outputs.sha }} artifacts: "agent-${{matrix.architecture}}.tar" + # You can now run snapcraft shell commands + - name: Install Snapcraft + uses: samuelmeuli/action-snapcraft@v2 + - name: Use Snapcraft + run: tar -xf agent-${{matrix.architecture}}.tar -C agent && cp -r snap/* agent/ && cd agent && snapcraft build-other: runs-on: ubuntu-latest permissions: diff --git a/snap/hooks/configure b/snap/hooks/configure new file mode 100644 index 00000000..d85976c1 --- /dev/null +++ b/snap/hooks/configure @@ -0,0 +1,6 @@ +#!/bin/sh -e + +cp -R $SNAP/data $SNAP_COMMON/ +cp -R $SNAP/www $SNAP_COMMON/ +cp -R $SNAP/version $SNAP_COMMON/ +cp -R $SNAP/mp4fragment $SNAP_COMMON/ \ No newline at end of file diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml new file mode 100644 index 00000000..63971d3a --- /dev/null +++ b/snap/snapcraft.yaml @@ -0,0 +1,23 @@ +name: kerberosio # you probably want to 'snapcraft register ' +base: core22 # the base snap is the execution environment for this snap +version: '3.0.0' # just for humans, typically '1.2+git' or '1.3.2' +summary: A stand-alone open source video surveillance system # 79 char long summary +description: | + Kerberos Agent is an isolated and scalable video (surveillance) management + agent made available as Open Source under the MIT License. This means that + all the source code is available for you or your company, and you can use, + transform and distribute the source code; as long you keep a reference of + the original license. Kerberos Agent can be used for commercial usage. + +grade: stable # stable # must be 'stable' to release into candidate/stable channels +confinement: strict # use 'strict' once you have the right plugs and slots +environment: + GIN_MODE: release +apps: + agent: + command: main -config /var/snap/kerberosio/common + plugs: [ network, network-bind ] +parts: + agent: + source: . #https://github.com/kerberos-io/agent/releases/download/21c0e01/agent-amd64.tar + plugin: dump \ No newline at end of file From 5a1a62a723f4829fdf7086e95a9f79a34fd1cf55 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:31:18 +0200 Subject: [PATCH 23/80] Update docker.yml --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c97ef6e3..b4e19f1d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -59,7 +59,7 @@ jobs: - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v2 - name: Use Snapcraft - run: tar -xf agent-${{matrix.architecture}}.tar -C agent && cp -r snap/* agent/ && cd agent && snapcraft + run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: runs-on: ubuntu-latest permissions: From d879174f4c6c24e0069693a4cf44c763dc0dd1d7 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:40:28 +0200 Subject: [PATCH 24/80] add user to lxd group for snapcraft build --- .github/workflows/docker.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index b4e19f1d..c6d745bb 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -58,6 +58,8 @@ jobs: # You can now run snapcraft shell commands - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v2 + - name: add user to lxd group + run: sudo usermod -a -G lxd $USER - name: Use Snapcraft run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: From 04f4bc9bf23cbfbd81319c1b8805adafb3ca473a Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:47:56 +0200 Subject: [PATCH 25/80] Update docker.yml --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c6d745bb..f833a39f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -59,7 +59,7 @@ jobs: - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v2 - name: add user to lxd group - run: sudo usermod -a -G lxd $USER + run: usermod -a -G lxd $USER && lxd init --auto - name: Use Snapcraft run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: From d7580744e2ab9400ab95894bda61657084155719 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 20:52:58 +0200 Subject: [PATCH 26/80] Update docker.yml --- .github/workflows/docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f833a39f..7079b9e4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -59,7 +59,7 @@ jobs: - name: Install Snapcraft uses: samuelmeuli/action-snapcraft@v2 - name: add user to lxd group - run: usermod -a -G lxd $USER && lxd init --auto + run: sudo usermod -a -G lxd $USER && lxd init --auto - name: Use Snapcraft run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: From baca44beefac51b6d54670861fafe9d065f3d173 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 21:07:12 +0200 Subject: [PATCH 27/80] Update docker.yml --- .github/workflows/docker.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 7079b9e4..12cfb724 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -55,11 +55,15 @@ jobs: name: ${{ steps.short-sha.outputs.sha }} tag: ${{ steps.short-sha.outputs.sha }} artifacts: "agent-${{matrix.architecture}}.tar" - # You can now run snapcraft shell commands - - name: Install Snapcraft - uses: samuelmeuli/action-snapcraft@v2 - - name: add user to lxd group - run: sudo usermod -a -G lxd $USER && lxd init --auto + # Taken from GoReleaser's own release workflow. + # The available Snapcraft Action has some bugs described in the issue below. + # The mkdirs are a hack for https://github.com/goreleaser/goreleaser/issues/1715. + - name: Setup Snapcraft + run: | + sudo apt-get update + sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft + mkdir -p $HOME/.cache/snapcraft/download + mkdir -p $HOME/.cache/snapcraft/stage-packages - name: Use Snapcraft run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: From 12902e2482554969082b3f481f9208e2a7851c22 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 29 Jun 2023 23:15:34 +0200 Subject: [PATCH 28/80] disable snapcraft for the time being --- .github/workflows/docker.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 12cfb724..45fb18b3 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -55,17 +55,17 @@ jobs: name: ${{ steps.short-sha.outputs.sha }} tag: ${{ steps.short-sha.outputs.sha }} artifacts: "agent-${{matrix.architecture}}.tar" - # Taken from GoReleaser's own release workflow. - # The available Snapcraft Action has some bugs described in the issue below. - # The mkdirs are a hack for https://github.com/goreleaser/goreleaser/issues/1715. - - name: Setup Snapcraft - run: | - sudo apt-get update - sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft - mkdir -p $HOME/.cache/snapcraft/download - mkdir -p $HOME/.cache/snapcraft/stage-packages - - name: Use Snapcraft - run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft + # Taken from GoReleaser's own release workflow. + # The available Snapcraft Action has some bugs described in the issue below. + # The mkdirs are a hack for https://github.com/goreleaser/goreleaser/issues/1715. + #- name: Setup Snapcraft + # run: | + # sudo apt-get update + # sudo apt-get -yq --no-install-suggests --no-install-recommends install snapcraft + # mkdir -p $HOME/.cache/snapcraft/download + # mkdir -p $HOME/.cache/snapcraft/stage-packages + #- name: Use Snapcraft + # run: tar -xf agent-${{matrix.architecture}}.tar && snapcraft build-other: runs-on: ubuntu-latest permissions: From 20d2517e74d033f0425832e3b2d521c682c75852 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sat, 1 Jul 2023 07:42:12 +0200 Subject: [PATCH 29/80] add snapcraft --- README.md | 12 ++++++++++++ deployments/README.md | 10 ++++++++++ 2 files changed, 22 insertions(+) diff --git a/README.md b/README.md index c3e9aa72..a7e3e758 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ [![donate](https://brianmacdonald.github.io/Ethonate/svg/eth-donate-blue.svg)](https://brianmacdonald.github.io/Ethonate/address#0xf4a759C9436E2280Ea9cdd23d3144D95538fF4bE) Twitter Widget [![Discord Shield](https://discordapp.com/api/guilds/1039619181731135499/widget.png?style=shield)](https://discord.gg/Bj77Vqfp2G) +[![kerberosio](https://snapcraft.io/kerberosio/badge.svg)](https://snapcraft.io/kerberosio) [**Docker Hub**](https://hub.docker.com/r/kerberos/agent) | [**Documentation**](https://doc.kerberos.io) | [**Website**](https://kerberos.io) | [**View Demo**](https://demo.kerberos.io) @@ -82,6 +83,16 @@ Run Kerberos Agent with [Balena Cloud](https://www.balena.io/) super powers. Mon [![deploy with balena](https://balena.io/deploy.svg)](https://dashboard.balena-cloud.com/deploy?repoUrl=https://github.com/kerberos-io/balena-agent) +## Quickstart - Snap + +Run Kerberos Agent with our [Snapcraft package](https://snapcraft.io/kerberosio). + + snap install kerberosio + +Once installed you can find your Kerberos Agent configration at `/var/snap/kerberosio/common`. Run the Kerberos Agent as following + + kerberosio.agent -action=run -port=80 + ## A world of Kerberos Agents The Kerberos Agent is an isolated and scalable video (surveillance) management agent with a strong focus on user experience, scalability, resilience, extension and integration. Next to the Kerberos Agent, Kerberos.io provides many other tools such as [Kerberos Factory](https://github.com/kerberos-io/factory), [Kerberos Vault](https://github.com/kerberos-io/vault) and [Kerberos Hub](https://github.com/kerberos-io/hub) to provide additional capabilities: bring your own cloud, bring your own storage, central overview, live streaming, machine learning etc. @@ -120,6 +131,7 @@ We have documented the different deployment models [in the `deployments` directo - [Terraform](https://github.com/kerberos-io/agent/tree/master/deployments#5-terraform) - [Salt](https://github.com/kerberos-io/agent/tree/master/deployments#6-salt) - [Balena](https://github.com/kerberos-io/agent/tree/master/deployments#8-balena) +- [Snap](https://github.com/kerberos-io/agent/tree/master/deployments#9-snap) By default your Kerberos Agents will store all its configuration and recordings inside the container. To help you automate and have a more consistent data governance, you can attach volumes to configure and persist data of your Kerberos Agents, and/or configure each Kerberos Agent through environment variables. diff --git a/deployments/README.md b/deployments/README.md index 184865b7..2a14ea86 100644 --- a/deployments/README.md +++ b/deployments/README.md @@ -67,3 +67,13 @@ Balena Cloud provide a seamless way of building and deploying applications at sc Together with the Balena.io team we've build a Balena App, called [`video-surveillance`](https://hub.balena.io/apps/2064752/video-surveillance), which any can use to deploy a video surveillance system in a matter of minutes with all the expected management features you can think of. > Learn more [about Kerberos Agent with Balena](https://github.com/kerberos-io/agent/tree/master/deployments/balena). + +## 9. Snap + +Run Kerberos Agent with our [Snapcraft package](https://snapcraft.io/kerberosio). + + snap install kerberosio + +Once installed you can find your Kerberos Agent configration at `/var/snap/kerberosio/common`. Run the Kerberos Agent as following + + kerberosio.agent -action=run -port=80 From 2b112d29cf5dba31ec817865857915a4041baf97 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sat, 1 Jul 2023 11:52:13 +0200 Subject: [PATCH 30/80] further detail snap deployment --- README.md | 3 ++- deployments/README.md | 8 +++----- deployments/snap/README.md | 15 +++++++++++++++ deployments/snap/snapstore.png | Bin 0 -> 631329 bytes 4 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 deployments/snap/README.md create mode 100644 deployments/snap/snapstore.png diff --git a/README.md b/README.md index a7e3e758..b016b9b9 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ There are a myriad of cameras out there (USB, IP and other cameras), and it migh 1. [Quickstart - Docker](#quickstart---docker) 2. [Quickstart - Balena](#quickstart---balena) +3. [Quickstart - Snap](#quickstart---snap) ### Introduction @@ -91,7 +92,7 @@ Run Kerberos Agent with our [Snapcraft package](https://snapcraft.io/kerberosio) Once installed you can find your Kerberos Agent configration at `/var/snap/kerberosio/common`. Run the Kerberos Agent as following - kerberosio.agent -action=run -port=80 + sudo kerberosio.agent -action=run -port=80 ## A world of Kerberos Agents diff --git a/deployments/README.md b/deployments/README.md index 2a14ea86..85697ef1 100644 --- a/deployments/README.md +++ b/deployments/README.md @@ -70,10 +70,8 @@ Together with the Balena.io team we've build a Balena App, called [`video-survei ## 9. Snap -Run Kerberos Agent with our [Snapcraft package](https://snapcraft.io/kerberosio). +The Snap Store, also known as the Ubuntu Store , is a commercial centralized software store operated by Canonical. Similar to AppImage or Flatpak the Snap Store is able to provide up to date software no matter what version of Linux you are running and how old your libraries are. - snap install kerberosio +We have published our own snap `Kerberos Agent` on the Snap Store, allowing you to seamless install a Kerberos Agent on your Linux devive. -Once installed you can find your Kerberos Agent configration at `/var/snap/kerberosio/common`. Run the Kerberos Agent as following - - kerberosio.agent -action=run -port=80 +> Learn more [about Kerberos Agent with Snap](https://github.com/kerberos-io/agent/tree/master/deployments/snap). diff --git a/deployments/snap/README.md b/deployments/snap/README.md new file mode 100644 index 00000000..ac00b662 --- /dev/null +++ b/deployments/snap/README.md @@ -0,0 +1,15 @@ +# Deployment with Snap Store + +By browsing to the Snap Store, you'll be able [to find our own snap `Kerberos Agent`](https://snapcraft.io/kerberosio). You can either install the `Kerberos Agent` through the command line. + + snap install kerberosio + +Or use the Desktop client to have a visual interface. + +![Kerberos Agent on Snap Store](./snapstore.png) + +Once installed you can find your Kerberos Agent configration at `/var/snap/kerberosio/common`. Run the Kerberos Agent as following. + + sudo kerberosio.agent -action=run -port=80 + +If successfull you'll be able to browse to port `80` or if you defined a different port. This will open the Kerberos Agent interface. diff --git a/deployments/snap/snapstore.png b/deployments/snap/snapstore.png new file mode 100644 index 0000000000000000000000000000000000000000..1c5aa3caf39ca08edebacc16ae5f9769c09c1416 GIT binary patch literal 631329 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

G?qb`n#e1)*A{?AIqoZSXc)(+^GF3o^BVgJUL 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[Yk*m3VH7Yao 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

VPX3uH2~`sQ}d!T8+t z4ahc=$Iqww&WH67aJLu5Bmv~;jexH#V0R;+Kp>6KL!5kgts|na2XFE)@@iiT;IrMX zQWT@PHN$Q$8ZXjf1)B@hF0d*-`1;PT#VvXeUX0o@xPtl29^VZofk zSRk<(?%*h{r$E{%Lbz!{`c1+AlQ@0>IXLWl$ZzT~ieXA&P$(Y?$|Z)(%+eZbj!Bwj zOG#81G@y8kCp4#%c_mSA$IB*9wyjG^0Zns8$&Q&eojLj<5|1Rt`H7Yc8HZHjpQ5ZP3~+Me=Re zWj;E@uHN%76?z=-`LSglo67dd%-Z-8yK33Z-Kk0CUgY~hwcTlI1*eXoFT#n(5J6ml zOZTsE%Fbg|N0$|}iEV@<5xAD15;m|4&u3i8CpIe@29QbYzoJOrN4stafgnp&jkE0W#}FY+$OkfFAqYlaccu zx`s*5+HLQeD;kZHs6_KUb%*CQ^TgL}J7w0_ZF6&2yJrasm~5l-J;+TU{!w2RY98n$dLqa;e2D+kQo`bem)!{VAxj+7Wnbq?1&oAOh)4Fl2J-am!#IwFf%; zD*^5^o(f^U<=RqGG~aQZTX1oIJzA~N6KJZqne~E1J9@K=6Ow%Kc6@Gel1a~#xux|a zbT6xSJ=Sgriz8o=M(lSVK3XE&zk7NuWT;UgBd*VL?M(nM3O;JZna7K6+xW7?nsy$- z-=*dJNRAaRbg9}&^vdtF|m}&^h(k!Dhs-h#JcGa6a#iOpMG-Nii(`(+AVz z?6m3+svIux7qTaKHU?b3cvoC;UB~bPY7mIV9pG=qyr((ZW4n+n?79KpcD>9ojc=IL zQ^!gLUEF(p96#tyBSzsli0RXE4!^Tfzr4Rb%E{5>`Cg>zb%C#_jwVMi|FwbIQ(YUZ z$f0lAv`O8=?r^qB6~A#Y$LL;999EUWzj{Uc@8TmYfVQ?Gm4`yzdAn@~alrk}_d3GW z9u%Bc+^P6+29}L|MCnr6{Uc$1Y{rL@qK$Lsp~3N;&Y$W901&IwME#l-x_*uo7;t#l zb_HJvT5|MUVB7);^gq|P=IaxU-h!IaUj7Fn(FFEf{OWSuSh*Sby>dHr>LB9tR7~J= za7Xga6C8|5M?>{PIQ?m20?T6KYn5wAHFTrPEha~;?>S6+V#tL6tnJ<;dVH>dWY1mA z);v0tCPWC@MbtO%ZlRgpNQ`UJg!C5WHF10S`ig}4`H9FD}7LPmXF|C+F_-o(>gU zf5umVZ>Zkon?B9e+l{E+vo@OT_#1Cu?-KQYeH3Jkyp(dt2#UTSJ3p& zc)}01sj8kFWxa5;Fc=po@O_uxq9LBG$2mcgJGe_~hx0-qW=?sos!Y8_QfV^F5*@O} zJQMR5acL8eZd3B!!n4LOyKC~UBSAcHpnpx+& zuf$bT#-!Q67qg+|ml7c3g|sK?l0n6q(%|RL(VJcSm8VJa&>Qzc)?=sdfnu%sW~#7; z4&eB5xfLPf;wO{`DDjprm!@4z5zAsjxqV>u0OCn1XbI5#c4F+VvV*AGn zf{QsXGbzBmb~m}@#zB`J@D{sR9XQLvkk_n1kfkg0wTj}+2AV+wwMQ}Pvc}~rFh4A` zyjE8AWNjI^!B1sF(0;pvw|E^yXh78o-6B zYb*CKkx*!DRW}ACF|L39p19$_x?CkIF##FXJgSy_0PvPDA-|YFe{eyBk9}}3&_4Pi zOs4gBK}b+M_V$M`=<6UqTY-3du-N_NwQIko{!T19#Ms|Nw|c#ce!;L!^K(tErdoH6 ze0aUX2H#S>Q$*$1*ibZQrC42kfj-$NFc|&1g>sozWDU8ev>E5ffef&w900qwI?HV$ z_GvY4nEoa&L`8A3Ti_QQ9yGu4uiHjc-O-#*9F{+l_#gg|_H!V+c>t?F?_NUCn#)`Z_OHQ!`u{aV5lY`1{VO2xCTQK)Vf5PVsFtl?;bP!go1w3)SQ(0j!fWGC&r zTmuxVU<02G|1=N#i_0B|WaNYZ3&?EX2F<(7F9{doc-XWe^!|2}vZ>dlD@r=e? zSrt(j`z7DX^20gqm9%+GC?p!0aF>2BO0y|{e6e>$q1MmM8jc2GMAG^m-cF)s5(7c<2%(MIt0H0ajE__+e*f+^teGS!A(OKiSBY2vqDGn(CBpM)pb&yET)uY*Mp#26f;opdmkX*lZw-=hyA%YJkrx`z?ECj`_fxQpfUNiyVUlghsGs5>=cStQ3N~5wJ=|N zF}>o*`CM(y9OugWCOWv}XQx?rI;oP;cT|I^w{KKF3r!*nzXHo`nKJ!5hy#l|y$m0E z!=PSK>W= zA5TA;eb$Tu%+Ffg15tSKxTA3o)~45Xp@S=KY_Sh*v+9;>jY-9 zlTawH4|IpeASsU;6!jN}Z*%L9h!ymRot-F#NMn5czVjR9rb9RpxR+!;mh7JXJy4siW0LhKjOKA`N-R( z70=;oZT3ZK!seq7-kNQD8l8jl5S&A+y=%-QiXOWJ&1=@-38&1AuqxKWBOgFT_4I(1kO)oS!hw=^;NgF1Rid{@)ev!yrhR>( zYlA7`U;p2ryqok6x;&@^XMql(bE!-D8x!I&B%(u5*2%QCDzIJ#`DnE`MOY{FheD-` zu9|72uh01pw8s>~c!(bT?fj(!)59YWoUtTDUp3S7;qCv%WA?0Td86nmw;K}an3oyq zoz4OF=*aBnKTF8s;ZNO+CITdPpWZ=)U`rvmEibDOPuM8dem`uh+_G?122)^T_8#mI z*`yNX9=4ia5bW(KRz@st4BGm2YVjwZT=Ui-lQ?3!Yj*uo&wf$4t9=n*^hmw9lJ5?J z% zk%QH5rL7IN+_fljFp(eL86?RR8N|gF=4-JFrRhhD{s%B5MNz3iH{dx8%f`Z5&5>l$ za4x!Nzdl$=vZw~~>-hbR@YK4Gq)cI$o-&xe15W@hz9 zib{~oP@V+yh0~?-(1ZWyYuH7_g_v~>{4CbRjvwlekS7yx_BA`D7@2y0Dj^PfHL zmwgwjC=?C#k33Omx238$BWm;qtQ3xxQ71TDawlFl*tM67;$C!8$v zC31wD4;HE*xC_kXYvS4$D>FFdlCZ?zd{KfaKPFsHN!p7sEgbi98-6zz+_dP3KTOcamZir4CWAjkW!A=k zeCA*X_Y~<%mjtklzh(Rj>hXm$h#FJ_3_+n%>k>ePNR$i)yJ^m8RA5$|7u4F2FwOMh z^{wlvVF~idl8t0f4oYSVw)cMh6t}iXXL5r(#)5#r&y8uL3GIL za7!aEKhQjzyWOJ?{+P!_$JmP~OAm%FhvJ%XjFnwb^y7*-uIbZ96~bn&!)QPIl$w>j zBfh&m<(v%OHLUI1%d2nmpJK`eDM+)boYk+FRLXvwMj}@(;HJ5ISncr9pk^ zetQdYh{uqoXN^--&(6#^L0lns{I77e^Q({O4!M#8zh%?xf*0Nl)67d7kE9awNh2#BbZxLL;&3 z#OzD+t{AfNkA57K`wMjFSdH5zFgjtJ+Qfgem6ge^*eytsG&{P!g5D0)m)9If>YP9g@I^ z?@n^Gi)I(LIJ*VCVXmFDRL!I;bCaVj;IXvE$pf%8`vB3}C^B+g9Y&Cv0GD1yciby* z5>oi&ud#wJnn%xf;}ot{j$YWmDcKHaN+u3$y;1i?2rkr&SF0<|nqEpiRYpUb>x}~T z0FD^V3wcwTmv+sMB1m2-#C5a*boMC;?@UIXWc-QY61X=d0%h!XdPEcBuDf@B=3KzR zZDAqbiwE8OmVjHaG#09B54b)KhaOrPSACK2R~Ozpl?0F%=h(SBEp^|7e1FZs*EFt) z`MUhnShy+E_UjK~(*MI=NdNGYTzp6vb{gf*{2$2?G|A!RF|H!_SA1j<6QKzvlp=Ys|PSi4cNKj_xxPrgl_X21z1XB1qTO8942t71j;$;G`mUn&~rB z;-Kea4{N+fEUCwP`xp*Jk8S$ZiFVC5S6-+5l{Stx<66JXws=^l&Gex@1jlt7=pw2oYYO*|06uQEsyT=7Dt{ z`#fY_kY!*{3jQ+7_wh%2Rrgs2=zQ>J>UL>eqlL4atxqJiI7(&lhAE7}Eg8M3a}h;&u~ zUdvpsM*E>dSQH5VMl@8_7q#DPw4?$?=ZM#NoO` z5xYj+WWB9-i4U3&L;?HMCN>U{hC~~e16H?jD_Iy2&2^V=s*aWfkS0%{ACvP~@N8P4 z)5<^G>JLW4GB{CPBYp5-*G8(gJ|q@CO9wnRC3a9=A>4=>jNE)MxE|!F{3jz2kjVzV zl-B*LxJZoTDk+L|wl#k*$Q*fza~Tqt2fVARCP_Qm#eq(dy>0lkH>{VNu{+%ejFo91 zM!{lsby=dsiAD;9!R@frFJ*1mrO2F-_QkdVJS&*m>bvwqh zNy8Jh>Mnw|M!i~^5Ij*&uCw=qs=InnmYGKAXmO^d>Bg|YNYM0u0x1m9e+8r*-=P~F zTo;EmR`T5``>sj*T`?h|v4LfnK}4VGKm3h1oKCIYm2f^P836p2I30k7ia}0Srn*WX4ySwQyQe!E3p|8 zcz9AsmS4|077{>!A!+AdCnnzO1%Rq*qbd7`!_#l==|H~Z=I2DeA~K|aauc=?HH#A? zQZ7(J3=S=C!-x9jH#bS1z!WbBt(a~Le9Q*jYM`xsbse%=ZQ~c1=KZl~jAa(7#%4Vy zhm@hKJ2`kkK@woDKoc-?&V%ze42BW6HyWxwsBIhSM?aMpz|Vn?ZjhT;BVvnKH7fk+ zEcnf;fnvitRNtQTGu}3EVwz4-CZ}>jD8y`@vQU{FNBV5CZ1)~uY|C>fk^~l)r!FEiQbjQ~G)r%(6brxf`Wo4ZjRHLc4Cdu`_pK}>s z)Tjfw8cZ?%=6e?_e7c&yH(6!fv0^*XOpC}l(?9R0H4HNrQqrEWeOZt7rF|1+M|AFE z5wRMN-b~f?82xd+LkE&|p3~5VJn+`#ll#|oyuyN;$gVd5@E zZ;O@Fqc(4igmUXJ;(NKijFx#P!h%fAn-YI>`dDz!tFEa8?jq5^ zI43Tnc@k-D_o@8;c=xH)q%v*|dnLN?UwKUigzlzpG)TGL{f7r?kl8oYL4!C9$!@fpa<6;O`?^Fb zVK7f<`YvugrS{_F_D&@~r-U8{+7%&A2OY(uaZPk(v6O5Es6_3+G zixTq!H~)&RCeuv9a%WWMl{UE&1Gjvr5P@1jF(Fk?2CmBGiTmN=(Kk22s(C*>Gv{cT zu-@C~AIZ_o7$Qs}BQ`nEgA!KODWfh}Yk;@E>CCRD>}3FazYm#pE2@BUyz*-^w7!rdb2jxHUS!#$0`dI|4XxoGzFhz*~Uj-#a;69NhjNGAI?WhG})B@*$zfm zGyNX<-U50M6XK9VRm}qGDaKIo4+2P>{7mBCkjQJ=M8~QC>Loqnme~kQfrq&0SO*c-(1KTPYV^Qdoc!aNeUWqdX*h;CKf z*oS7rDwCmtl@}k(W2wo##W$dk_MRd*q0CkWaLix5DhqVtyQDW`+XgfL2R|uv8r8TQ zc-JJ%x1bXuDPEx^q}iecX|b;Ovocy|H}xL*HaTVBLeL#YxMVl}-<58-Qo|NhBPpu! z*}e=rh#PpP3YsJwpBzO0INw-6^qsgy1rSu>=j|N0+xXm3EvR7TTWN-s_CAb`f!TUMfCq`QWtSF;{6cWG; za~VLB#|(GLdKJaTiC@BR5(ta;$prdv^yx86{>V(MC7k~UNfktS3HOQ)8f$4SO<_{rHj_-o)=#ap`L{3oA@uzZd ztR2QvcN1(O6`3t>IQOz)*_YRjef&)C>XTa(&;Hq=@;c4`_XeRu#&oBW|K^;5>2RE? zusv3_H&%xI6y;=ot75Sls=V0C$FFes$frhCa?fh(qk|elx!5SS70IkkMJYI6)6ksQ zkqJxH|K4Aj)h-U9PB=kdrp)F5AMR4pOFkp!b_)`YD8An zG)e77PlujDKDmtbP|S?t?kNn%?alzd!@y8#4S|Euyj}48TQ9{o>s89Vw_FOJvnS7L z{WDS$4U)vZa&Y{WAEQ9fNeTcjMhknNn^0)zScny^9IedXS9_IH6NY*d-E%*E%8t5H zz4}P-64?`pX5&#R+b%$LIe!E~(p9T6qqn|^nAE*m{qGa)xz?XL@x(FxwQPsk+##p5&LoHWKY~u`pXI0| zeqV3W>Wxr%n|M`GvtjbU$wb2fT4=Dq{;PN@N8QrYjWwaQAO+;_;`wfM(9tZxg|+OW zlXS*YKE0$UuMoO>$_7q?mozM&^ce=ldJ=)(kl9ULlwjkLcl!j)>!beGe2Dve&CV`; z>nLQ*$_D0!eRmW@MN+f8@I)u^q{gAC;Z|~I$y?Xn)*TN*Fxf8c7gOsk-)U5Sc>_(Mcc5UryHOtg*e3 zc%OGVe=h+_7!a;)6PA>l@qSJgIWmX)=`XB5e(093QQ)Ld`6B^w5B&)qjHJWng0y=HiuD=$f^Wi<`y_uoXxKqOAAKg!Ve#OGQp zxRo6y$?n6iiNoioE64ghe3F+xxb1pID3O{zoeUE%OD?UiN$AHE_SAfl>zv%$~%DM9Wcb4XP-r&$)?j9bfQzszDHEre2hR?9#3K!>0aef_KJ zjRDITi#cza;7=O@BfQT9^|a;*XC{Ipch52fu;)f!G)qe;NLwC7U1>yYO9Dj0Z<~dz zeoHwnw9xE&yaM~bSrRX)qovY4SCyt)6DGwgiITt9y2ql<_2xVNRgB}te0vOYS4HqP z`__ta_#R$%=|4=Q=P4pcWQdLJQ;U++xV4wcRzF@HzyPwr)GYU%H-FEChF&}gYIl$4 zzRahMoyNn7+fX~?g~*jH#!$ORHZZ=9@L%P^-4WWVu4&e?pWfM3ocDk512(Qx4*!(s zN8#Ex$)wI3>R4=B2DM0sNC}f$*4QrNJjtu>+wmbCsgUB!ILdlqycXj9p!tqyyRmfG z$y$HHZWJaNt0;-sU)X2kT8HNwKO};+h%|v*m}vM2wOcp$d{cD|V-q8GeO}BF+31ik zZl4^+Jv0Nkh+C&%JtYpgpQwK*fd-}#EF<^|HdPHH2xBf@BD>9^B?$c?98tdK#xn&N zbG;s6hs;GTpa$fB^>;#UDC%9b--e!8B$yS%^h2PriF#b0gL!GPGdx{__C^b0Z$wbWDngwJ9zfF@bJb6BJiS)BN z$s_WFIJxF)LR?anrwrgxl^tpEkh~vv_c*k(>6(N}hmIy-bny_+%e?|4!>LC@2CAGg z4%4?FHYyqwXa+OFYUP4^;5eFkdv2T_r2N^UV-LU52G{*_!LM((qM?!eF@K|W5#@?2 z1GQhe%W59hrip?+J%;ej$X2D}gG0h6979n$WAr@-XSJ|(*yU&<#k(_V6H#L!XJA4SK% z?KR-bZ9KdcOz&0T@`-FBcyMlU6+OH_j_e>izJbbDv$%!{HmDF_1Oa5ok6oo3FROgr z5U8RvxQe*RTFUKU76x4vA4H027iyQmm3>7Kn5D?8VuEVs7RSqs)M)$X`t2;#S20>E zxs7a&jrJ30o2{5od%B6YqSI_-NoA~&ucotsCBjkuD!fX=Nj|~K`@p?@5d|d`$mkcN zVNmLCnctoKO?G^VdzQuh_>P>zpN=9ho{YQ<$B-H|Y{rh0c#=)WUS3G*M^c&gq14#3 z*X6yWA&JmEwDr&+s{{^yuhD|0Bt>bN z3Pn%xle`^Iq7tbpYn!^+%qG(?qVo@I*Aqm!`i00fMJ2w(ne}1UP=oYUW*wwz4QO^h z(LqS1bDGvR-=jhCF4ZG%-NBUo)99PPg|LG7+2UGq zRAEph$T@K+()uT)^NmhG50{;t-Hq6r=Clbi`}iEJf3dl}I|}&=M^QbyyStnlQO+Qk zNvhB^oT?IX*R9lLriM$>EI;HOIpb_pDZJqMZobah-PP5+xiNrW#*6A8PrQ)xNRFIm zKap?@D~}V5)JVK!Vf5+B%0X$5>t+awFXcL}tXcV;pqG@VR34R>aGoib+|*~2nz%6& z7-{38k38sYs|_+UU~sl3_t!v&a18E{2)4I9?7Q7p9o}TdVi~Qic#Fop6j50!Slw#I z&-pKW$lE2ak*O$mgw94 z?SHLT5T%IQTvuQrONtud+*I6i?RsZs!|GTs(LU)vs>70JL5SE)3&I+FkszG_D(R*r z-BeXs-@=fBbZf_gnuEo2r|l@S@^2R1*S8eR;7sGRTpN#j%jYMoTr3OJhx-;wnQjzJ z#MXUD06>5w4VPiFF@gw>O#B=hS?PO=2;AxU*8+A>GnzFS!$a$`FW-42;}X1n2$Dt0 zFCS7eTDc|{4?7>lDm_~mE^a{=8TUR`GEG5F0<5KQbuXwDCyJe_n~I@z`k;!p4zfb8 zuVEPqv)`1@A-D@0!WshV{{nIbDa46iY?M=PN;SGkJbxtP8k9nyuWduJw|m@XV+2Wk z#03Azw`b<}{1)XlW4m%0Z~XoK18;{KUCd)}E}Oki4J%CQj3opc*6>{zvE4YGPo8p; z(QIt)nY^vKj$>G_uevrQij#RNxqzDpg&L_R*a}fed7On-O|>|c`y`w2jZZC3?iv4Q zRc3TAff7Drnde~Kw;SRq%_H@hq;;)iq2NCYG)9aYqd#Y)3w-`1G0@}u8{x$R|B}_j zLGpiFE!RsH1Q+@i^*$yhhVifmcX!|&tin?RA65T|YXp|$(;^|ZC6jKV26fz6R+VJ8 z_flavU1;60ruz^@%af2Uvukx6;evP_YF!tjsqVA(>g%(9kZQ?C`n`+JZJEyEtj91F zb+u`f269#cZ)=HVJq<<)AZU5^uQ@(Q0I{*)Fweix7`YhFBr<}|l(azn9?{3;2eQa1 zuO9V_xl6K`NX`CWSKQ9!)^=V}#SBv#>w;wlQ#PueR<_&{Ug9n+gH|~s10tiA?8LeL z$kryn4pYA@o_9Z9U?4V4PiyWIndgrj;(v9M$>POzf`sT46ck`<|IG+QgP|zmAVpw+ zbn(wxN-EOr%5=k#)3jbVI5;tRX$cL}hPk^az+u(Juuq5acit;wu~q)Y)YhnJFe6RrdzJvi4_bjKp@A1;`m17L4>es*3p|NLKV1&+JWybT6D7(dsZ zk!j;>A}7PKaMH>oEx%u`r&oyYT&de$T;kz6%O0g~Hh#l1M4u@DYo;mBc=i*rUYQAE z7#A2Bi05ES?*!J<+Y!kpZPDUwA|Ozsnr__g|c1}9nQ0gb0D-Vg{6(FOStETTkKuE zJ7gtHHgpFk2K!~m=&|tiix+O>1BPsS%v7JgB~IQd$rC4L&@!a0=J@pi2sKb+*jAYh zNGAV-<-};*AIS0O5TQB46%dFuFJBDT3I^Syv zrka;C_u*Y=pX(TWCGFA@1#*}h)7~Ozdg}g;jflzFID0!jV3WkfrKR2 zJW9vS++MP1QEFjhkxB!!JmViE#w^7x0@=+Y_Pydmb`euBW?*wUMQGgGG`7gaCDDc9 zHGPUODJODwku* z6g6hr^G$8p28(`w{26^yI6a`+$`7THa|5NUgO3heWI4zhE-p*=nwMAR4vFj4o6o&` z0{_ZJFvA7K%2JDo<+-}Kh4~Ke2Q6=623bUl`_WSQm6>gmQ@w1CWdY==>@>p#rH`2h zyxPklpdS82q8dMa=}e^U`bj9SZ0-&J>%o_G(n!YeuB1=1d*mt0ABo=NK^zwQ=pvz! zW=Ug0-!gz!f?xB3hb_TIs8FaRYlV&kgT;=9!AHq=K0ec8!MPS6O-%iAe#yyw@2N>C zX%pq)m2aTF=7!r$q()1kDoRn425f?o-00y64{Y^n^Ij1Apv`o8Ym8^v@?Mv`)MX&X z{cBG9!$D+G_O5vFDYOQjD797Y)m_(QJJj?2+D|KKK#tFwI+{ci)XnFXqN1WxS_uH^ z8~Z>$^8Y{EScJiydYSM7C@+<$uQ*5$!o_$0%q);-7J3@Py%|oBiS#=bKGQmSFc6Z$ z`?X{d1dK=?%;R_u8)m@~>2(#W@(ojzj1|BxIoXj5zR+iQd_UgVS`D<~j`X|mw2Sm( zJj-mI*e%U-y#(9*EN^Obe3aEw?}|TNbYs%gtj@0oyRtGf=abL(spAHs4LpKC-x47d z6esRYO<~J=df$s7wAZ)p(*ujd_z(EPuXPtD2&Y&$lO}A>6Ffm^_^Oh@oQRpn^Y^y9 zu}(jx#JE>kT<||fx@OLLCx47~9Z9n;+SjXejJ_67-i}m1rmxdoObBvH+7HFuetf@G2S$}08{8QGp!!;B6bB9kc06Q)Y(+4p$?PF^EcNASNwD+#MuxV($9-T(w z*)mKwo0DE2wUE9H;XouBbTar27VuBQDLBUag3a_)X)1gEnDz@Gx*lhcrtnoRm;J84 z$R68zDD_s`)r4ElAb27yWCOlx#3^{zkPKjO{>V)m@HCq_fCHpQI!~pF^i%lP28CH! zoRJ!C>!lx-7AVBG-W+E4%m{H)TB^6NpYfIFb|k9Dhce;Z^m2-F1o{Y?dol(HTsS<3 zM`a!opFZ`QPF-j94MinV4DDW425ztc4R&>eu3k*Y<3ZdOoqJyp?L|IG@xsQjuk2|r z*nexkr)ac06K&t?M)_|0!l`sZ|A4No^rb;QUgdl4*VqPJ5yWg)5BK-`pzOi@)y$cz zo3fNy*Mm;`7O{~5G2hEdMCoqiUrN+qwHMYrSVYER<@tQ9uhzn%pgKIfDhixDC&Fv9 z0MlTl@|tg{!SQ=!qZvro>g@m9*#(PXsb%rgM0#^RI=vV-gY3~JQN5^%f72~mZYK?x zwb%WL1Jpr^1x_rMH3j|ab68u6`v93~WpUq`eFhIV_d#MeJKpcc>xxCQ1tm8Q zP?Hks=sRdPs*)0raP%cnNKuw2N%%S^#<=pUR=j5D#J~XC#kv$e`_=b9e==|qJ5rI7 zrdC}_OsXg=U$8=SeNfwV_qxedc zq#B_fq3ZEE>!r@7Zk!#=1iGcZ@ONa?C2!eV>)(?M_$OYdBP+4r<$GKeSTx#DG0Tkj z*MAkl!y=>D5*wFTKN9mEID*@PjiTjrYprLd&AXn0*n46*l^IK-oQf%mfrGGT=I@cq z%gd8FE(alxH{1Bzvr{f{;V2O{sc3iHjC)L_CG%}S^f8(6L!&i!P32v(4BW@e1|(hu&H};wp7>1 zqe!AR8CD3ytC@70#h{FBTnId=C#AP2c0};GwI5CaS7e;Nttz0`n!rX3Em)-AM)kQ(M&qNFL_)w_(be69nE26rRf_ff!{?pc+egGl z_ovl&hbIR#sVEWQHo@9Ei0@ljSlRPwjlztF_0JcojaBUCwPvz-?W_$wc+=9f(KE3l zGB^!W9d0%R0jcp__XtYy2{Tu--(Dx1NQ?TJDOw|X79z?S9W#$BOzyP)h=fX8UP9Tm za0GlEZN<1<80NG;e&CKb6IULRsT^7S{3ov0&GQ@Z(>{mOyhVX|L}v_`$({*=9Sr~V zP5*?t`Ud6?dMs4+<-&V8+YQ4hc@k$xPW^krCjrQ}16edEJ zka$l*QE+L$jwQy%lu3Tba|r`N%GARyS$XtBXRX*FZ2swgYgtk8-9I5}}OH8oG- z8$bHmI)2U;^r?8v9CBeipzFivHX@J~J&YvNKW5_Tg?Tj^gV*t?>Yvh`Y{iTM4|@lj~XccR%mi*7g2n;|Gj!j$`a~9D~PtljmPS^=A*-&$5q@G&iyV6DJ`^ZAoEV^@pcd@-G&0~&OH9{)>@0HA$nD(x-B}^Ob4_Rz?OuyqoYDQl zW@cwi{CIoib&?x7!cIy`nL9Z6>JpxLc8pSgbj<;wf zdNnb1lcR~)3%ZMYM~h|!6&2uKk9Z$jTkP%gKm>v#tI6C5*u1QZ%ct*S8DAs<0}(Ip zSUJYWwG4A}>r}@jRf+x%e~WZx5&Ws=t0w(zmyre{mR?W7+J^^~@^d(TZ-F-a`0kL7 zu{7uYjV><5ch(?fV+7r|e9tVW$6ZBNt8MBx3INjy-0mpa-$YSSme3_qp>f#5lJ-C^ zT7{VFu2jcDth%aOjqLW$-kJk7K$#4l4w85c)4BY=-Tv#qMo~qEy}|N-E7{Hjv06Dq zgTh&q@v_#7&|K)?te;DsiR8Yf4T}n%blFN)J@3Q0`hwN@4qem_EW}2=ONVc}wn^@B zdMjXblr(%}x`DuT(S@Q79!2s2QUVJZs#`MOBsX%%8Mm}b3vvmHtoGX1-83{Nkq@?} zFRNg!cl-M!`@E?c)RMa$-=}X=1#EIbK6^6Nj@wE!Fs>xl*IIjX6~@kx?l%Y9$G2cO z;v+4dbxhg$E;4ODQ{_gBF% zq%J%$W?&*(PcL6CbT32F;+m{af5P~AnSTJwyor<$F8I96CZg=ROzT8qfBka~MkLy{ z^>(Sy9>&+kd+8uXJVUE8bPysRr6hlv@*EuCoVsVjC*TF%g5*}9_Res@;Lkg@ z7tz;Qrw4Pma5n7zsJr!&TRe&BqTo}{7+*0}b&^gFw%2+3_t+CBK5mm>RI04nTK;+Q zr-NyJ%hrjvUCqK&tXsyDwKj|9Om^{4CvI(vh7l4xJTi!gh?S&INAp#eJ0Swu!*F^Y zIxHnREh#Hck07<_P=XI1YXTld$H>ZBloSlTl7Bs&NQ^VzpvNE#WQg=iQ>v_S!6)?K zL6OHtX@XCyDPYttj*~k=rF7{F^)Jj7m00#@mZX+RBs7Xou~yi zRN5W|*U$9{XfuLXfPtTa<|4jKmvso-bdXpHqPLSc+J(TE*!IC}WP|@-OGZ16;&%Wd zgp5`2%Y3$=b0joHCCQ}wsPnHDDD{%a+QlgD28!^f4iU@b22J_1&B}m269{_X<4R;u)3in(sn?(S^Y5v^t61@#?~Yw3%vpR@u{o zR({Ji-n)vjh6WwrANoujJ4_{l2$py{M>y^o(n0;aQsWqDOA6*Nli7j=hfp7XOdtFn z8TNc~1$mzZxkG3=J%5<;MxIcxb3KN){*UU}#`|#qn=X<0zIETb1Kj_3`RhezMezx|?YePjZ>w;S(BD|U}d1LypmUKRB$0orsTE~`N4`TfLe zjk9Ep0J6NSKQ%r5X4Lmdr*UCLg^rGnUD1rO@8G~v__Cd5p}~o%M88Q>^Ej}(50zfR zT3AG6zaTFo>+#W-l#1%6WSpaR-fpfoo{HQ&Q)EuT<`|`-!Tong>$RJoOkQN`FuyVH z5D1PrAC1iTJuMY|>yhr77dDG~=7|}t#M9T}{@Jy9D?dk>PQ^s#0&#%rMldfhHxd@5 zei4hD6x?_z5@MII7nXi9pgfz@Tvmwr!n8yIAG$KBxI(n(!vUzbw`Kt~0IBi^mNc0w zivPv`O(QS|z(!PWmnA^TXmH+bdFk=RUa8ZID~iDS$ct6Cc+jLzygt)!z$zs>4-w&p zi-l-cxvb%JweqF5m)j4GFnsBSI#HhlFc1u1cwY{97xxn(3Vmh}cg1bDI^bhqgm4MY zgfl?&Z=`55GVJ^R{!tLWL>GpYqVAVAf%;>SUc(~qYiBe)@AmU7oUOxi5sUWu;EKEZ zfPRQF!}sr{waN^x24E>Eq&ogludg#6I;xr{TI28T?xv|Vb@!Kz*UxGnsl3T`X?dBcFSN=TN9vZ>0c5Bw!$2HscM*rx0 z7;Mjro12lv*6k3?EVmo-7tiN+%cEy^#SDplPv_Fv^ zuT&+@*v+*U?cVPl?Q1yiLrgt4=N!;qnD{fo$5HqkXk=vlO%<42;Im>$q(X7uNjBT_ z+;uUKl2DEkg#;H5W+WwLI_-{*k7p~Graoj+-3|>5{C-C!FowM{@^rRN_u<3);YEn* z#3v@zF~9p*iL8~AL*AYuNT7ppH<0uciUF`kzkZk-Qn2VuH9nN|rCWA|>{aTH(t98J zKQGC&tJR%fYYO!I1D#o1@m4Vn_x_`_TDU6sFN>dfQByfbIW0U$3X&Aws?g1cdi!@^ z|CH=~CVRcA600JRYt#*8h&`*bIU1->}umj&9T&=}Ua>i%8N}sWW24bnby9KCEsS z-495Mn37w&5Y$mb^B}z|{IuUeuq-@Xofh!pw4JZN<*Z%wYe*TdVeYJf&ySQ_{j1qh zHz>bueqkZ4xA?Vw@^jY~)0@kvcTg#eQP=>(|R?kGDr81W7 zJVAD6rp=<+==Ud^Xrwi4cRGRJEK$U`uF90wjvJRBui<=nY3e}UhnqL|raswsS?1Fu zxuotgavF4(Z^W2VF~?Tccdt2R3`bl38HI#1F8;LqS8UhLEe+6UQ{H+0Dbwf2>w^H$ zjC=DolncthxFp}q2fRF=~o}qk=oQJft-_sphI$2WArVsv?Evh*M z{?kdr54tLRE{pqGPses#=dB5EF1>~QPRJk5f<`rrjp-sH`{pVFpYbsOO!oW1bkZB3 zOVHS1S({2(%QflM<+UPF5QvJf1*j9_-CN&_dxP2pR@}QlQW(fkkLmy_%-e1zzwpAM zqJrw`@Z8+oJBKfh#FXzg!e)R1-qt)K&9T%5;@d512z<+teLJ-IyDJL+>raP= zn2t=gq&rs$no|E$K{WqUL4qf7)I&#z_%ZGwcbWi;u{n_@UtdbtO5gSU=*za$0HP@M zM7_~(pOmzDz<1tQ;4HD5EBcy128fd=G(asud6$dT^RKl8aBURYgT1LVPWiy{Pchee-W*G|~Y%QJ~b<#Y_oIGZZRaOH~X=NS5%^L%B7hC`45Y}&TqnyO7wjeqr;E1Jugpf$eiIo0}?ixIO>^NLHeOXGm{v zuld)ny*H_`u`(Z9PE(!*;EH5|2}-zjJR!L8S=7%a zJmX!)A&J_)U9znsq)nJA0j>@_kes_WN-V_7-ht4VOyAIL;ykYDm+6dVgiy%OXG&k) z7`BO-R}+pdfulDwx%6~?W^#+w5ru~5TNvI?#C-G_&4d>qHfEQXfVuPUc3JK7F|y8E zL21PVF4t80aiiwj6WR%O6J-SlKaAw^ySTYcvc+Ea^z>XBXWYFkDbweW6^FYG^n3Dh zK8NWrLPmK6fj8!g+Y|SeyTA1-boNVbDMYEI$fEfPRMW1eN~R->Uc4KMIbdP|p5D8_ z+EEU;V~LX?{~7!q;4C5c3qSV&^^dnH%)3rT`i2Zj-U}_+t-tTEcLCp{(m`a5cz@GG z`va?<;U8-$!~K7uP|?eo7#J8>=+8h&@*i-2Z$OeBy*E6<3I>&`-iq&hHJuiz6Z#q6 zV8b}_gG443XE&1X!h8uW1Z9-^BJP7sx(ELoHF=WbLOP!c?Un75%dZUxl;qyzur*(A zP8xoi3sY7f!S`+>;&J^?`izjF7$iG`0LVuYv~&Y!vrwF!bq z8*;aLxYNI6ZM#mb_WVogF<4M>-fZo^Ix!)=NP1wgm|_zrk*?}f^1v%HK(=TcjlpoO zucj#}#~NzB*%6_>ut&6o2s!n6@|s$nm)mS!epHaS<0>pI&E;N!|7>X)`nXAy+;1nW zdaT9nm}n~}PHuGeO-XW1kJ5RK+(?f9$jqPdTW#G*UtS@k}eGuTPP43J4%h2F#W-4Ct zsvqp1PLY;#J#Nw1NhRSi0;eeDKr%hUH&zC_vs1rnB%POTOV-+GyS_UFJe1CEPb`~~ zc_j}GDDSjHhq}Dxtm^s9EjLv<0R4jXD}qo9(j48KPY zQc}{)QW3zX;M+6Yy-sK|dSA|+qSBi{3@z-$!gnt`g1d0kUqlk|qx-7wS^(@H_{7_F z?DYgk8P0D|o)`Oc{Yx@UdHAzqMWWh@wfwKws6VDW@cCo@(j!}_Q~(57IzE43nL?%s zpm6=T(8$-Z%Nt_s3&-T37)n_(@kl<5Kg$Txc?FH&lDl*zS=^hY_+Wf&(fXQJD#X4% z(fSx@FcHf}PZ6MSs=SRG`t+h)Z2jS!2eJZZvo5-ZY|O^Y{^uiK>b~Jaubsy69oC0u zez~Z-cUxinodD{jBlOQj+5YLsxJGp4P1biV6hsYi z(YBz2*l~qKIqVUuVZXz8)vfziAc-TSM#n_#SqzjDHq;hVbRV5mal)~1O8lO^RuAJ@ z4TgDWSR=@MZU6|*qoV|(HSFI}xC!I)J-O4okdFyZjU%_kW41GXRmrTUwTkiP1bj7^ zEObCfPgYy1a58vSfR2Y-)IKCPVp@0HLI?Rs$eWZ7j~Kz*7dF;0b`IR|*%!gyxBc6* zgZHwJFwX9-W&$Yfb|Bv3-HChrC@2lxkMS>ta?zgC(@vfFJ%!uY!hy@w?5vDkhM00< zD#v8Q#k&tWI&V@1>~i%*+|>2;DS#Nu*zho>&qeBL&SCoOw$BY|^C}ThT(@DHuh?-j z;2nIbi+ppZ*XVkjB1&)n2=h2NI>@nHneYRIZs)x-qgOkq7?PKU&F=n>TQ`1*b<1{n zA>+88>Cv@6dpB0WZ&fP54V|q8;6V#HK*Gp*u3xG z6bz?R`5k!6c=rcuTG0v4!lmw8Rk;Inw-Oind(uW)=Cja0YyHcItm)s2a`LlYl`K-n z&n@$hlR$}!Ew;$jqTbXLHoR#Szht&CpVwHE(=DooEXH90&pyKPgKD>&HUr=Nbe`n8 zlodj=>38={ia*$!`OXJwO_>uzNDuM(l&|nH4H4IDS4~BV#^-L=7knb_4w@FQ&I>u` zYINVH1w0i9;l15hXgq6ytrNxZN=vGxrR8^XDhi4}Wj@DNQ;W08baZd4y;NyrMV%5c znS<|ZtY!xbAOEKEYv|~ZTwPwC)jpI=&CMy!mbs1PMvz%}$sjH_*imh7Zx2~MXc>5d zTOqqoKTz(yEWSDhTtZQA`&f|zWW|5}1i8|n4gO|jA)#FrA(=uF@?IH^tA5HMz_kHZ z_7X*&sLzP}9Lt$^^+Q|Q#V75U9k_`DTX?hc-fh3Dh<;GIBR(m@&@-7#yf|8%!}?b! z*RS_1rYtqofJuOdi4D7C#hI4n4eMr54N)RVa;UghoHK?#59y_2Fw;1F*~$t+i0Lct z(1u#&v#t{|-@h_gTv{sTfd_-|GD3Xp*UaU;(a*)0KcLdu6&ZuSAtIZx&(Raqi#vAu|5^VM*E$M&^&UpN(*49|<>o$A< zph*cotnD+IJG)1(f;ivt_*0fcDA75YJEDvZc%@IMHxTf&;2f6-pzZC-;25Qe45np; ziBMAGYANS;E)&r~g4no!erH43VH`U!#wQH?nYd6k8)Mye^-eB_wa12|2Q_njUqO3Y zFX5$deEpw=l?km5!t-2jYp%THY*C+K7u)la7DKDY|8M$~An;3dJRLZ|1_0LeFpG%q zB6zzqgR3uBwspooe6&PJ_pP9GMx+e9H_5GGlmPxuvCN{a)Ur++HDvJVi?^!AF5(!# zlVqFtO35JUgC@zHhOczhYI?w{yEEAV1XpK)qT}rpww816PJOqy01@zJ><){}J^q0c z{~9o_tjfl^w|L_d;wMsSrYlRN01I*5>10VLB_$=s=DMo|F`Lc6G((|Ct1NfgN>k&w zQI~`hW^C&F#sSx6sXFA~;J_W@iD2XAm?v+a)$i(QJU(}l_wVA78JD>fz}Y8J2?89u zap*4|l8|l%Wm~CFczuSwyHYh28#929c-MOy8p9jT^sKP*Iukpr`?1hvDYE>9&zaUo zFhlR#iWu=(ZU~^lFnN_o1=1pF@U!O@#hhA@kg}@*a|fVSwK`~aJMu2=#Szh?9TPbd$Wi3 z_VTybx)CzHub4lF48@nS0mBjya<`zJoG%=Gjek^Xa?A;ng`6x|3Aw)VrnxkEQ1HZ@ zQTN9!3=%N(4=)N>UW>gM2^&9hfJ$!-w&O&++vbb9g-(463&I3dWQw@yUU&)Dd;hTu zh}5UZvZRBMU@1Q**#MTl^S2b z(UgT0-eZ*HX_}LVht+R29KzalcaLgvQ{mqs_2^|5?e@w_^>)p%TA}EFyYlu{xXf(q zIWeK{3s8hLq7Duq^LZl;QQ8CeKfukd{B=ztu@MN6*?huiUOC$J%kQ zoNv_a6i!R9mOTHlqCdkwgHAYVpyw!o6G3T<%HRggNq0B_y<%Il;a*le_Fid;H6vFD zjWZ6B*N&G|I;Y`gJ{#UUW%A<$cF_?<#!qp3L&X6gM^FGnN5k!HXx9R9pv|G0o9~4n zd)hc~hs!lK%V}k7QbKYxm%Is?iAdYconH!9J(&2;cKgIHVn1kWD+&n-O)XEq$x~@z zIIXrjtyhU{mKG<0h)Zcrd_Thx>A&CDz$?tp&%C?y6!yDjOBZtqFz{F>Ng<~~ZWLD} z&JuVFI29myK}G$j4K44gC5>K_VLAw6FgxC>S@jov$oD!xY;5xXogwK;#Rxmf|_A;%{4c@d3TP$tKU?YRq_x-@MgJ*U@a@~wy_TOOdo_fSuE+{HlH~9% z(b<=RP&}Hmp`us$mhT8`idPj0(zJ?;O{Cl6LWh)?+c+~Ep``W+W%_5nTE(1XB;;T5 z{Jsy|`!b$36=Ynr9=14NIf~%J=y=8XRk|L!c=@=lR4_;Hc>iG=|4T8FjP6H8W+pq} zsfd5QCB|%T-~YLZBC$9vC42dH?-7GxijF>o4$=V2a4-d_1e*OEX+4-ube)B?r^qu%R|)X%r-D^*@Zd@VjHDI5lwku%C~Wxt@p zB}N<1+3ta-`^@F&Un%Ij(tiv85gj<@CM&M)Tbs8}Q}}4)#-s86;aRyi{g3YU9C`ti zd)r*Yku%MNT$W(ohLG>c?dt)?q3+-qx86bY2yXEM@x%}>(exY%oWa9UM|e{@h;e&$ z;d8nbP!o*sExWjo2t(ld?-o*AoNt!hCfB=yZuvgOSJL`{ZQuI9Bb^DCD<`sFSoMrd zR!Q9Y7f(=;k$q|(O!?oKqFx9s?qkCE0hX1;&4brgRjw-*{++476p4Y2@SK1wlb?Hl z?x?`zqQdBVH?JEkD6jE9--GQ-pf=mRl&S&-IvWC7#ZBD|(M(u~x3&JLQ6MT}1E^C^ zoRW2?o=cotU}vi!0yiy%?lxUvy}3c79|npYQVD8uvW)v1W?4&z!fJ5dvfYvezzytim5*!Q}GZ%_7PC6rdW za7@!+i8gZLYvm?rCT!2_<7jH39n-%aZB1U@!GTK*(l1kObErAL{9ff443 zr$sy4yAxngTM+;8ob0sAVSY|?oRY`14`o?n-@9$HH}!42U9+Nr4>G*`;UzbHdw+K$ zHLNBHEQMy@(lryb{m+TF|xEk&kCa22F8teIkO0>qBX!g{TGxBiE7rW~Q!uJbguHLP2FDkBZiNVNg?1 zb83Ibs>VoXRJueQy!X6d4m?O*8qoeiSy>6qijr7#JI!vwUQ)&qah*76@$wiNpl$oBM z{-E9v07!@ojk_6sk)^zbgl!txUEURfk{X+In7Ws)@k(15uGZ+^;DisaP-S`G=a)%vV!J+RZUS9nsq9YV(@JZv4_AfXG&1*Gn@XQuEd|x3l{jH#Wp<}%1K4OcEfme zHNLh+4d{^IyW8C9wKW_po&gE2{o18IWJ8*^qJsMTU?nA`+n<}lx-G6)ZB8nd>MGAm0T)%#AC>2 z$tiSGdt_T<*IiJfN6XK7i3r2uFJf-<&l#tblvrkD{!^;|W0736VMiIGw2s@TuyeZlhPYLe_!I{X(d`^DW$GDTt$#QAdXwKFGPjkJn zDRaC|TY|K*v5RPt2PJy5eNO8;A(sbg{H+_u<-&sMz5 zPk;M-(AM=<4iXmPS9w@|xV%hklgl#@e}lM;SXb?LI1H#q2?D^8W3+f9LI`(0FDG`MIu%nmb|HzvFiHX$=O5 zCcz}KzP}Z=WCW5VgJ~Uyhj_JeMoi~&V*snGWcg+yy~EqwYAy*aaHK2L} zKpF_W&TQDUkRa6I`BQ^IU$i}{t!Yk$@EAMd`W5tGUp>*b=$c7Fe-YergB>D~%XA5; zs1rI$LL}Im3hnKkhJQ<)1beH7AXiZb%Yj;Nsru+ekZ&XZ=yWoBo4JJ-8}fE;cbiDf<(P5BGDB4CRR#KO`u^lPq} zc}ksLOdftczB6Jc<>KM)nMg`z>ZTYRXK(jYjn(ngjN=b>e!dB(QSZc`D0k-W`G#Lq zUsCn{0KpE`oQo%RK32aA@f+W*$HRrH^g*w76z?QSHe<*ivPL|za=3b?0aQHf*gEe0 zCTW@0ga%tiHq1V$xzP8G%*uO zDaZjW?jE7KT?={vbYCowPe@4h0mYWuLQaOd>KPzc?M%uWqaoo&Gxi6wr{zG~#=2I#ZJQS= z-%?GW>q=7?|CHUO8@~@z(8T!b``z5{V5R!T$m}ElG5KvcHu&Wspq;-az1lHKfZSN-D$$m z^)Pi!iPe&1ohi;{_TV0BdRhT_+vw>Fcw|hDTO7pR-6$}Id-K{DsR20S zF#KiYw=fU6xooQFEb?Esh(e(ua*)dCQ2Za1vHR}7jDQkq^9!

_Fa&%dz5zfFb6$ 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 literal 0 HcmV?d00001 From 5308376a672618461706fc8b10759ef4425e9d48 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 4 Jul 2023 21:04:16 +0200 Subject: [PATCH 31/80] add terraform deployment example --- deployments/README.md | 4 ++- deployments/terraform/README.md | 41 ++++++++++++++++++++++++++++ deployments/terraform/docker.tf | 47 +++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 deployments/terraform/README.md create mode 100644 deployments/terraform/docker.tf diff --git a/deployments/README.md b/deployments/README.md index 85697ef1..44323dcf 100644 --- a/deployments/README.md +++ b/deployments/README.md @@ -54,7 +54,9 @@ All of the previously deployments, `docker`, `kubernetes` and `openshift` are gr ## 6. Terraform -To be written +Terraform is a tool for infrastructure provisioning to build infrastructure through code, often called Infrastructure as Code. So, Terraform allows you to automate and manage your infrastructure, your platform, and the services that run on that platform. By using Terraform you can deploy your Kerberos Agents remotely at scale. + +> Learn more [about Kerberos Agent with Terraform](https://github.com/kerberos-io/agent/tree/master/deployments/terraform). ## 7. Salt diff --git a/deployments/terraform/README.md b/deployments/terraform/README.md new file mode 100644 index 00000000..25330ed5 --- /dev/null +++ b/deployments/terraform/README.md @@ -0,0 +1,41 @@ +# Deployment with Terraform + +If you are using Terraform as part of your DevOps stack, you might utilise it to deploy your Kerberos Agents. Within this deployment folder we have added an example Terraform file `docker.tf`, which installs the Kerberos Agent `docker` container on a remote system over `SSH`. We might create our own provider in the future, or add additional examples for example `snap`, `kubernetes`, etc. + +For this example we will install Kerberos Agent using `docker` on a remote `linux` machine. Therefore we'll make sure we have the `TelkomIndonesia/linux` provider initialised. + + terraform init + +Once initialised you should see similar output: + + Initializing the backend... + + Initializing provider plugins... + - Reusing previous version of telkomindonesia/linux from the dependency lock file + - Using previously-installed telkomindonesia/linux v0.7.0 + +Go and open the `docker.tf` file and locate the `linux` provider, modify following credentials accordingly. Make sure they match for creating an `SSH` connection. + + provider "linux" { + host = "x.y.z.u" + port = 22 + user = "root" + password = "password" + } + +Apply the `docker.tf` file, to install `docker` and the `kerberos/agent` docker container. + + terraform apply + +Once done you should see following output, and you should be able to reach the remote machine on port `80` or if configured differently the specified port you've defined. + + Do you want to perform these actions? + Terraform will perform the actions described above. + Only 'yes' will be accepted to approve. + + Enter a value: yes + + linux_script.install_docker_kerberos_agent: Modifying... [id=a56cf7b0-db66-4f9b-beec-8a4dcef2a0c7] + linux_script.install_docker_kerberos_agent: Modifications complete after 3s [id=a56cf7b0-db66-4f9b-beec-8a4dcef2a0c7] + + Apply complete! Resources: 0 added, 1 changed, 0 destroyed. diff --git a/deployments/terraform/docker.tf b/deployments/terraform/docker.tf new file mode 100644 index 00000000..5a46b72a --- /dev/null +++ b/deployments/terraform/docker.tf @@ -0,0 +1,47 @@ +terraform { + required_providers { + linux = { + source = "TelkomIndonesia/linux" + version = "0.7.0" + } + } +} + +provider "linux" { + host = "x.y.z.u" + port = 22 + user = "root" + password = "password" +} + +locals { + image = "kerberos/agent" + version = "latest" + port = 80 +} + +resource "linux_script" "install_docker" { + lifecycle_commands { + create = "apt update && apt install -y $PACKAGE_NAME" + read = "apt-cache policy $PACKAGE_NAME | grep 'Installed:' | grep -v '(none)' | awk '{ print $2 }' | xargs | tr -d '\n'" + update = "apt update && apt install -y $PACKAGE_NAME" + delete = "apt remove -y $PACKAGE_NAME" + } + environment = { + PACKAGE_NAME = "docker" + } +} + +resource "linux_script" "install_docker_kerberos_agent" { + lifecycle_commands { + create = "docker pull $IMAGE:$VERSION && docker run -d -p $PORT:80 --name agent $IMAGE:$VERSION" + read = "docker inspect agent" + update = "docker pull $IMAGE:$VERSION && docker rm agent --force && docker run -d -p $PORT:80 --name agent $IMAGE:$VERSION" + delete = "docker rm agent --force" + } + environment = { + IMAGE = local.image + VERSION = local.version + PORT = local.port + } +} \ No newline at end of file From 470f8f1cb677ff3ba5de6bcc9b399c98db5119d7 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 11 Jul 2023 21:57:07 +0200 Subject: [PATCH 32/80] some deployments might miss the variable, such as Kerberos Factory, we'll default these values to "true" --- machinery/src/capture/main.go | 2 +- machinery/src/cloud/Cloud.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machinery/src/capture/main.go b/machinery/src/capture/main.go index 82ca5d21..a7a6065c 100644 --- a/machinery/src/capture/main.go +++ b/machinery/src/capture/main.go @@ -19,7 +19,7 @@ import ( func CleanupRecordingDirectory(configDirectory string, configuration *models.Configuration) { autoClean := configuration.Config.AutoClean - if autoClean == "true" { + if autoClean != "false" { maxSize := configuration.Config.MaxDirectorySize if maxSize == 0 { maxSize = 300 diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 0bb6ae43..350f1f10 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -121,7 +121,7 @@ func HandleUpload(configDirectory string, configuration *models.Configuration, c // Check if we need to remove the original recording // removeAfterUpload is set to false by default - if config.RemoveAfterUpload == "true" { + if config.RemoveAfterUpload != "false" { err := os.Remove(configDirectory + "/data/recordings/" + fileName) if err != nil { log.Log.Error("HandleUpload: " + err.Error()) From 4c03132b8353dac9dbfa25ed039759c0c717e3f0 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 12 Jul 2023 09:58:31 +0200 Subject: [PATCH 33/80] Fail agent when no mongodb can be reached in Kerberos Factory deployment --- machinery/src/components/Config.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/machinery/src/components/Config.go b/machinery/src/components/Config.go index 64953522..262fa6d1 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/components/Config.go @@ -84,9 +84,14 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { collection := db.Collection("configuration") var globalConfig models.Config - err := collection.FindOne(context.Background(), bson.M{ + res := collection.FindOne(context.Background(), bson.M{ "type": "global", - }).Decode(&globalConfig) + }) + + if res.Err() != nil { + log.Log.Error("Could not find global configuration, using default configuration.") + } + err := res.Decode(&globalConfig) if err != nil { log.Log.Error("Could not find global configuration, using default configuration.") } @@ -94,10 +99,14 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { var customConfig models.Config deploymentName := os.Getenv("DEPLOYMENT_NAME") - err = collection.FindOne(context.Background(), bson.M{ + res = collection.FindOne(context.Background(), bson.M{ "type": "config", "name": deploymentName, - }).Decode(&customConfig) + }) + if res.Err() != nil { + log.Log.Error("Could not find configuration for " + deploymentName + ", using global configuration.") + } + err = res.Decode(&customConfig) if err != nil { log.Log.Error("Could not find configuration for " + deploymentName + ", using global configuration.") } From 25403ccdab5f6d6b68256b6514ac5b4363c3b5bf Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 12 Jul 2023 17:48:43 +0200 Subject: [PATCH 34/80] dont restart if previously was not set! https://github.com/kerberos-io/agent/issues/110 --- machinery/src/components/Kerberos.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/machinery/src/components/Kerberos.go b/machinery/src/components/Kerberos.go index d00acd22..f9f3aa9b 100644 --- a/machinery/src/components/Kerberos.go +++ b/machinery/src/components/Kerberos.go @@ -165,7 +165,8 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu } if cameraSettings.RTSP != rtspUrl || cameraSettings.SubRTSP != subRtspUrl || cameraSettings.Width != width || cameraSettings.Height != height || cameraSettings.Num != num || cameraSettings.Denum != denum || cameraSettings.Codec != videoStream.(av.VideoCodecData).Type() { - if cameraSettings.Initialized { + + if cameraSettings.RTSP != "" && cameraSettings.SubRTSP != "" && cameraSettings.Initialized { decoder.Close() if subStreamEnabled { subDecoder.Close() From 414f74758cb3f11de3e7d96ec5b1f016a7286c95 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 26 Jul 2023 19:22:19 +0200 Subject: [PATCH 35/80] remove curly brackets --- ui/src/pages/Settings/Settings.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/pages/Settings/Settings.jsx b/ui/src/pages/Settings/Settings.jsx index db8a0cdb..3c4561a0 100644 --- a/ui/src/pages/Settings/Settings.jsx +++ b/ui/src/pages/Settings/Settings.jsx @@ -729,7 +729,7 @@ class Settings extends React.Component { /> )} {verifyOnvifError && ( - + )} {loadingHub && ( From 384448d12326d68e306c08050967053f268a6f3c Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Mon, 31 Jul 2023 08:49:34 +0200 Subject: [PATCH 36/80] panic when no mongodb + remove files when no longer available + do not cleanup recordings by default, however cleanup when recordings have been uploaded --- machinery/src/capture/main.go | 2 +- machinery/src/cloud/KerberosHub.go | 2 +- machinery/src/cloud/KerberosVault.go | 2 +- machinery/src/components/Config.go | 12 ++++++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/machinery/src/capture/main.go b/machinery/src/capture/main.go index a7a6065c..82ca5d21 100644 --- a/machinery/src/capture/main.go +++ b/machinery/src/capture/main.go @@ -19,7 +19,7 @@ import ( func CleanupRecordingDirectory(configDirectory string, configuration *models.Configuration) { autoClean := configuration.Config.AutoClean - if autoClean != "false" { + if autoClean == "true" { maxSize := configuration.Config.MaxDirectorySize if maxSize == 0 { maxSize = 300 diff --git a/machinery/src/cloud/KerberosHub.go b/machinery/src/cloud/KerberosHub.go index 783f4c1a..59aaea9d 100644 --- a/machinery/src/cloud/KerberosHub.go +++ b/machinery/src/cloud/KerberosHub.go @@ -44,7 +44,7 @@ func UploadKerberosHub(configuration *models.Configuration, fileName string) (bo if err != nil { err := "UploadKerberosHub: Upload Failed, file doesn't exists anymore." log.Log.Info(err) - return false, true, errors.New(err) + return false, false, errors.New(err) } // Check if we are allowed to upload to the hub with these credentials. diff --git a/machinery/src/cloud/KerberosVault.go b/machinery/src/cloud/KerberosVault.go index d57eac21..9abdf1fe 100644 --- a/machinery/src/cloud/KerberosVault.go +++ b/machinery/src/cloud/KerberosVault.go @@ -44,7 +44,7 @@ func UploadKerberosVault(configuration *models.Configuration, fileName string) ( if err != nil { err := "UploadKerberosVault: Upload Failed, file doesn't exists anymore." log.Log.Info(err) - return false, true, errors.New(err) + return false, false, errors.New(err) } publicKey := config.KStorage.CloudKey diff --git a/machinery/src/components/Config.go b/machinery/src/components/Config.go index 262fa6d1..b7286f5d 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/components/Config.go @@ -90,11 +90,18 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { if res.Err() != nil { log.Log.Error("Could not find global configuration, using default configuration.") + panic("Could not find global configuration, using default configuration.") } err := res.Decode(&globalConfig) if err != nil { log.Log.Error("Could not find global configuration, using default configuration.") + panic("Could not find global configuration, using default configuration.") } + if globalConfig.Type != "global" { + log.Log.Error("Could not find global configuration, might missed the mongodb connection.") + panic("Could not find global configuration, might missed the mongodb connection.") + } + configuration.GlobalConfig = globalConfig var customConfig models.Config @@ -110,6 +117,11 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { if err != nil { log.Log.Error("Could not find configuration for " + deploymentName + ", using global configuration.") } + + if customConfig.Type != "config" { + log.Log.Error("Could not find custom configuration, might missed the mongodb connection.") + panic("Could not find custom configuration, might missed the mongodb connection.") + } configuration.CustomConfig = customConfig // We will merge both configs in a single config file. From aa76dd1ec8c404e5334cb0e384bd23776a18bc44 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 25 Aug 2023 09:05:53 +0200 Subject: [PATCH 37/80] enable PTZ preset + introduce new MQTT messaging between Hub and Agent (introduction e2e encryption) --- machinery/.vscode/launch.json | 2 +- machinery/go.mod | 2 +- machinery/go.sum | 4 +- machinery/src/api/onvif.go | 1 + machinery/src/computervision/main.go | 9 +- machinery/src/models/Onvif.go | 3 + machinery/src/onvif/main.go | 80 ++++++++- machinery/src/routers/mqtt/main.go | 235 +++++++++++++++++++++++++-- machinery/src/webrtc/main.go | 8 +- 9 files changed, 310 insertions(+), 34 deletions(-) create mode 100644 machinery/src/api/onvif.go diff --git a/machinery/.vscode/launch.json b/machinery/.vscode/launch.json index d6fb8eca..505a4a5f 100644 --- a/machinery/.vscode/launch.json +++ b/machinery/.vscode/launch.json @@ -10,7 +10,7 @@ "request": "launch", "mode": "auto", "program": "main.go", - "args": ["-action run"], + "args": ["-action", "run"], "envFile": "${workspaceFolder}/.env", "buildFlags": "--tags dynamic", }, diff --git a/machinery/go.mod b/machinery/go.mod index 8bd0e751..37901295 100644 --- a/machinery/go.mod +++ b/machinery/go.mod @@ -25,7 +25,7 @@ require ( github.com/gorilla/websocket v1.5.0 github.com/kellydunn/golang-geo v0.7.0 github.com/kerberos-io/joy4 v1.0.58 - github.com/kerberos-io/onvif v0.0.5 + github.com/kerberos-io/onvif v0.0.6 github.com/minio/minio-go/v6 v6.0.57 github.com/nsmith5/mjpeg v0.0.0-20200913181537-54b8ada0e53e github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 diff --git a/machinery/go.sum b/machinery/go.sum index e96e66ef..2f560e27 100644 --- a/machinery/go.sum +++ b/machinery/go.sum @@ -266,8 +266,8 @@ github.com/kellydunn/golang-geo v0.7.0 h1:A5j0/BvNgGwY6Yb6inXQxzYwlPHc6WVZR+Mrar github.com/kellydunn/golang-geo v0.7.0/go.mod h1:YYlQPJ+DPEzrHx8kT3oPHC/NjyvCCXE+IuKGKdrjrcU= github.com/kerberos-io/joy4 v1.0.58 h1:R8EECSF+bG7o2yHC6cX/lF77Z+bDVGl6OioLZ3+5MN4= github.com/kerberos-io/joy4 v1.0.58/go.mod h1:nZp4AjvKvTOXRrmDyAIOw+Da+JA5OcSo/JundGfOlFU= -github.com/kerberos-io/onvif v0.0.5 h1:kq9mnHZkih9Jl4DyIJ4Rzt++Y3DDKy3nI8S2ESEfZ5w= -github.com/kerberos-io/onvif v0.0.5/go.mod h1:Hr2dJOH2LM5SpYKk17gYZ1CMjhGhUl+QlT5kwYogrW0= +github.com/kerberos-io/onvif v0.0.6 h1:+nvDuxGzQgHjc7V7kiYxUIcw1bO6R9esAMcxWRiKcwA= +github.com/kerberos-io/onvif v0.0.6/go.mod h1:Hr2dJOH2LM5SpYKk17gYZ1CMjhGhUl+QlT5kwYogrW0= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U= diff --git a/machinery/src/api/onvif.go b/machinery/src/api/onvif.go new file mode 100644 index 00000000..778f64ec --- /dev/null +++ b/machinery/src/api/onvif.go @@ -0,0 +1 @@ +package api diff --git a/machinery/src/computervision/main.go b/machinery/src/computervision/main.go index da0d6de0..5b0f8bbb 100644 --- a/machinery/src/computervision/main.go +++ b/machinery/src/computervision/main.go @@ -41,7 +41,8 @@ func ProcessMotion(motionCursor *pubsub.QueueCursor, configuration *models.Confi log.Log.Info("ProcessMotion: Motion detection enabled.") - key := config.HubKey + hubKey := config.HubKey + deviceKey := config.Key // Allocate a VideoFrame frame := ffmpeg.AllocVideoFrame() @@ -167,10 +168,10 @@ func ProcessMotion(motionCursor *pubsub.QueueCursor, configuration *models.Confi // If offline mode is disabled, send a message to the hub if config.Offline != "true" { if mqttClient != nil { - if key != "" { - mqttClient.Publish("kerberos/"+key+"/device/"+config.Key+"/motion", 2, false, "motion") + if hubKey != "" { + mqttClient.Publish("kerberos/"+hubKey+"/device/"+deviceKey+"/motion", 2, false, "motion") } else { - mqttClient.Publish("kerberos/device/"+config.Key+"/motion", 2, false, "motion") + mqttClient.Publish("kerberos/device/"+deviceKey+"/motion", 2, false, "motion") } } } diff --git a/machinery/src/models/Onvif.go b/machinery/src/models/Onvif.go index c1952aad..c7869a7e 100644 --- a/machinery/src/models/Onvif.go +++ b/machinery/src/models/Onvif.go @@ -12,4 +12,7 @@ type OnvifActionPTZ struct { Down int `json:"down" bson:"down"` Center int `json:"center" bson:"center"` Zoom float64 `json:"zoom" bson:"zoom"` + X float64 `json:"x" bson:"x"` + Y float64 `json:"y" bson:"y"` + Z float64 `json:"z" bson:"z"` } diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index e90d8b5b..9bf90f14 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -45,14 +45,25 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode if err == nil { - if onvifAction.Action == "ptz" { + if onvifAction.Action == "absolute-move" { + + // We will move the camera to zero position. + x := ptzAction.X + y := ptzAction.Y + z := ptzAction.Z + err := AbsolutePanTiltMove(device, configurations, token, x, y, z) + if err != nil { + log.Log.Error("HandleONVIFActions (AbsolutePanTitleMove): " + err.Error()) + } + + } else if onvifAction.Action == "ptz" { if err == nil { if ptzAction.Center == 1 { // We will move the camera to zero position. - err := AbsolutePanTiltMove(device, configurations, token, 0, 0) + err := AbsolutePanTiltMove(device, configurations, token, 0, 0, 0) if err != nil { log.Log.Error("HandleONVIFActions (AbsolutePanTitleMove): " + err.Error()) } @@ -179,18 +190,73 @@ func GetPTZConfigurationsFromDevice(device *onvif.Device) (ptz.GetConfigurations return configurations, err } -func AbsolutePanTiltMove(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float32, tilt float32) error { +func GetPositionFromDevice(configuration models.Configuration) (xsd.PTZVector, error) { + + // We'll try to receive the PTZ configurations from the server + var status ptz.GetStatusResponse + var position xsd.PTZVector + + // Connect to Onvif device + cameraConfiguration := configuration.Config.Capture.IPCamera + device, err := ConnectToOnvifDevice(&cameraConfiguration) + if err == nil { + + // Get token from the first profile + token, err := GetTokenFromProfile(device, 0) + if err == nil { + + // Get the PTZ configurations from the device + resp, err := device.CallMethod(ptz.GetStatus{ + ProfileToken: token, + }) + + if err == nil { + defer resp.Body.Close() + b, err := io.ReadAll(resp.Body) + if err == nil { + stringBody := string(b) + decodedXML, et, err := getXMLNode(stringBody, "GetStatusResponse") + if err != nil { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } else { + if err := decodedXML.DecodeElement(&status, et); err != nil { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } + } + } + } + position = status.PTZStatus.Position + return position, err + } else { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } + } else { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } +} + +func AbsolutePanTiltMove(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, tilt float64, zoom float64) error { - absoluteVector := xsd.Vector2D{ - X: float64(pan), - Y: float64(tilt), + absolutePantiltVector := xsd.Vector2D{ + X: pan, + Y: tilt, Space: configuration.PTZConfiguration.DefaultAbsolutePantTiltPositionSpace, } + absoluteZoomVector := xsd.Vector1D{ + X: zoom, + Space: configuration.PTZConfiguration.DefaultAbsoluteZoomPositionSpace, + } + res, err := device.CallMethod(ptz.AbsoluteMove{ ProfileToken: token, Position: xsd.PTZVector{ - PanTilt: absoluteVector, + PanTilt: absolutePantiltVector, + Zoom: absoluteZoomVector, }, }) diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index 3b382e8a..037b15a0 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -10,9 +10,29 @@ import ( mqtt "github.com/eclipse/paho.mqtt.golang" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" + "github.com/kerberos-io/agent/machinery/src/onvif" "github.com/kerberos-io/agent/machinery/src/webrtc" ) +// The message structure which is used to send over +// and receive messages from the MQTT broker +type Message struct { + Mid string `json:"mid"` + Timestamp int64 `json:"timestamp"` + Encrypted bool `json:"encrypted"` + PublicKey string `json:"public_key"` + Fingerprint string `json:"fingerprint"` + Payload Payload `json:"payload"` +} + +// The payload structure which is used to send over +// and receive messages from the MQTT broker +type Payload struct { + Action string `json:"action"` + DeviceId string `json:"device_id"` + Value map[string]interface{} `json:"value"` +} + // We'll cache the MQTT settings to know if we need to reinitialize the MQTT client connection. // If we update the configuration but no new MQTT settings are provided, we don't need to restart it. var PREV_MQTTURI string @@ -34,6 +54,50 @@ func HasMQTTClientModified(configuration *models.Configuration) bool { return false } +func PackageMQTTMessage(msg Message) ([]byte, error) { + // We'll generate an unique id, and encrypt it using the private key. + msg.Mid = "0123456789+1" + msg.Timestamp = time.Now().Unix() + msg.Encrypted = false + msg.PublicKey = "" + msg.Fingerprint = "" + payload, err := json.Marshal(msg) + return payload, err +} + +// Configuring MQTT to subscribe for various bi-directional messaging +// Listen and reply (a generic method to share and retrieve information) +// +// !!! NEW METHOD TO COMMUNICATE: only create a single subscription for all communication. +// and an additional publish messages back +// +// - [SUBSCRIPTION] kerberos/agent/{hubkey} (hub -> agent) +// - [PUBLISH] kerberos/hub/{hubkey} (agent -> hub) +// +// !!! LEGACY METHODS BELOW, WE SHOULD LEVERAGE THE ABOVE METHOD! +// +// [SUBSCRIPTIONS] +// +// SD Streaming (Base64 JPEGs) +// - kerberos/{hubkey}/device/{devicekey}/request-live: use for polling of SD live streaming (as long the user requests stream, we'll send JPEGs over). +// +// HD Streaming (WebRTC) +// - kerberos/register: use for receiving HD live streaming requests. +// - candidate/cloud: remote ICE candidates are shared over this line. +// - kerberos/webrtc/keepalivehub/{devicekey}: use for polling of HD streaming (as long the user requests stream, we'll send it over). +// - kerberos/webrtc/peers/{devicekey}: we'll keep track of the number of peers (we can have more than 1 concurrent listeners). +// +// ONVIF capabilities +// - kerberos/onvif/{devicekey}: endpoint to execute ONVIF commands such as (PTZ, Zoom, IO, etc) +// +// [PUBlISH] +// Next to subscribing to various topics, we'll also publish messages to various topics, find a list of available Publish methods. +// +// - kerberos/webrtc/packets/{devicekey}: use for forwarding WebRTC (RTP Packets) over MQTT -> Complex firewall. +// - kerberos/webrtc/keepalive/{devicekey}: use for keeping alive forwarded WebRTC stream +// - {devicekey}/{sessionid}/answer: once a WebRTC request is received through (kerberos/register), we'll draft an answer and send it back to the remote WebRTC client. +// - kerberos/{hubkey}/device/{devicekey}/motion: a motion signal + func ConfigureMQTT(configuration *models.Configuration, communication *models.Communication) mqtt.Client { config := configuration.Config @@ -109,6 +173,9 @@ func ConfigureMQTT(configuration *models.Configuration, communication *models.Co // We managed to connect to the MQTT broker, hurray! log.Log.Info("ConfigureMQTT: " + mqttClientID + " connected to " + mqttURL) + // Create a susbcription for listen and reply + MQTTListenerHandler(c, hubKey, configuration, communication) + // Create a subscription to know if send out a livestream or not. MQTTListenerHandleLiveSD(c, hubKey, configuration, communication) @@ -140,6 +207,159 @@ func ConfigureMQTT(configuration *models.Configuration, communication *models.Co return nil } +func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { + if hubKey == "" { + log.Log.Info("MQTTListenerHandler: no hub key provided, not subscribing to kerberos/hub/{hubkey}") + } else { + topicOnvif := fmt.Sprintf("kerberos/agent/%s", hubKey) + mqttClient.Subscribe(topicOnvif, 1, func(c mqtt.Client, msg mqtt.Message) { + + // Decode the message, we are expecting following format. + // { + // mid: string, "unique id for the message" + // timestamp: int64, "unix timestamp when the message was generated" + // encrypted: boolean, + // fingerprint: string, "fingerprint of the message to validate authenticity" + // payload: Payload, "a json object which might be encrypted" + // } + + var message Message + json.Unmarshal(msg.Payload(), &message) + if message.Mid != "" && message.Timestamp != 0 { + // Messages might be encrypted, if so we'll + // need to decrypt them. + var payload Payload + if message.Encrypted { + // We'll find out the key we use to decrypt the message. + // TODO -> still needs to be implemented. + // Use to fingerprint to act accordingly. + } else { + payload = message.Payload + } + + // We will receive all messages from our hub, so we'll need to filter to the relevant device. + if payload.DeviceId != configuration.Config.Key { + // Not relevant for this device, so we'll ignore it. + } else { + // We'll find out which message we received, and act accordingly. + switch payload.Action { + case "record": + HandleRecording(mqttClient, hubKey, payload, configuration, communication) + case "get-ptz-position": + HandleGetPTZPosition(mqttClient, hubKey, payload, configuration, communication) + case "update-ptz-position": + HandleUpdatePTZPosition(mqttClient, hubKey, payload, configuration, communication) + } + } + } + }) + } +} + +// We received a recording request, we'll send it to the motion handler. +type RecordPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the recording request. +} + +func HandleRecording(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + + // Convert map[string]interface{} to RecordPayload + jsonData, _ := json.Marshal(value) + var recordPayload RecordPayload + json.Unmarshal(jsonData, &recordPayload) + + if recordPayload.Timestamp != 0 { + motionDataPartial := models.MotionDataPartial{ + Timestamp: recordPayload.Timestamp, + } + communication.HandleMotion <- motionDataPartial + } +} + +// We received a preset position request, we'll request it through onvif and send it back. +type PTZPositionPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. +} + +func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + + // Convert map[string]interface{} to PTZPositionPayload + jsonData, _ := json.Marshal(value) + var positionPayload PTZPositionPayload + json.Unmarshal(jsonData, &positionPayload) + + if positionPayload.Timestamp != 0 { + // Get Position from device + pos, err := onvif.GetPositionFromDevice(*configuration) + if err != nil { + log.Log.Error("HandlePTZPosition: error getting position from device: " + err.Error()) + } else { + // Needs to wrapped! + posString := fmt.Sprintf("%f,%f,%f", pos.PanTilt.X, pos.PanTilt.Y, pos.Zoom.X) + message := Message{ + Payload: Payload{ + Action: "ptz-position", + DeviceId: configuration.Config.Key, + Value: map[string]interface{}{ + "timestamp": positionPayload.Timestamp, + "position": posString, + }, + }, + } + payload, err := PackageMQTTMessage(message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandlePTZPosition: something went wrong while sending position to hub: " + string(payload)) + } + } + } +} + +func HandleUpdatePTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + + // Convert map[string]interface{} to PTZPositionPayload + jsonData, _ := json.Marshal(value) + var onvifAction models.OnvifAction + json.Unmarshal(jsonData, &onvifAction) + + if onvifAction.Action != "" { + if communication.CameraConnected { + communication.HandleONVIF <- onvifAction + log.Log.Info("MQTTListenerHandleONVIF: Received an action - " + onvifAction.Action) + } else { + log.Log.Info("MQTTListenerHandleONVIF: received action, but camera is not connected.") + } + } +} + +func DisconnectMQTT(mqttClient mqtt.Client, config *models.Config) { + if mqttClient != nil { + // Cleanup all subscriptions + + // New methods + mqttClient.Unsubscribe("kerberos/agent/" + PREV_HubKey) + + // Legacy methods + mqttClient.Unsubscribe("kerberos/" + PREV_HubKey + "/device/" + PREV_AgentKey + "/request-live") + mqttClient.Unsubscribe(PREV_AgentKey + "/register") + mqttClient.Unsubscribe("kerberos/webrtc/keepalivehub/" + PREV_AgentKey) + mqttClient.Unsubscribe("kerberos/webrtc/peers/" + PREV_AgentKey) + mqttClient.Unsubscribe("candidate/cloud") + mqttClient.Unsubscribe("kerberos/onvif/" + PREV_AgentKey) + + mqttClient.Disconnect(1000) + mqttClient = nil + log.Log.Info("DisconnectMQTT: MQTT client disconnected.") + } +} + +// ################################################################################################# +// Below you'll find legacy methods, as of now we'll have a single subscription, which scales better + func MQTTListenerHandleLiveSD(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { config := configuration.Config topicRequest := "kerberos/" + hubKey + "/device/" + config.Key + "/request-live" @@ -243,18 +463,3 @@ func MQTTListenerHandleONVIF(mqttClient mqtt.Client, hubKey string, configuratio } }) } - -func DisconnectMQTT(mqttClient mqtt.Client, config *models.Config) { - if mqttClient != nil { - // Cleanup all subscriptions - mqttClient.Unsubscribe("kerberos/" + PREV_HubKey + "/device/" + PREV_AgentKey + "/request-live") - mqttClient.Unsubscribe(PREV_AgentKey + "/register") - mqttClient.Unsubscribe("kerberos/webrtc/keepalivehub/" + PREV_AgentKey) - mqttClient.Unsubscribe("kerberos/webrtc/peers/" + PREV_AgentKey) - mqttClient.Unsubscribe("candidate/cloud") - mqttClient.Unsubscribe("kerberos/onvif/" + PREV_AgentKey) - mqttClient.Disconnect(1000) - mqttClient = nil - log.Log.Info("DisconnectMQTT: MQTT client disconnected.") - } -} diff --git a/machinery/src/webrtc/main.go b/machinery/src/webrtc/main.go index 4c52efd2..56b8a175 100644 --- a/machinery/src/webrtc/main.go +++ b/machinery/src/webrtc/main.go @@ -91,14 +91,14 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati config := configuration.Config - name := config.Key + deviceKey := config.Key stunServers := []string{config.STUNURI} turnServers := []string{config.TURNURI} turnServersUsername := config.TURNUsername turnServersCredential := config.TURNPassword // Create WebRTC object - w := CreateWebRTC(name, stunServers, turnServers, turnServersUsername, turnServersCredential) + w := CreateWebRTC(deviceKey, stunServers, turnServers, turnServersUsername, turnServersCredential) sd, err := w.DecodeSessionDescription(handshake.Sdp) if err == nil { @@ -187,7 +187,7 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati candidatesMux.Lock() defer candidatesMux.Unlock() - topic := fmt.Sprintf("%s/%s/candidate/edge", name, handshake.Cuuid) + topic := fmt.Sprintf("%s/%s/candidate/edge", deviceKey, handshake.Cuuid) log.Log.Info("InitializeWebRTCConnection: Send candidate to " + topic) candiInit := candidate.ToJSON() sdpmid := "0" @@ -203,7 +203,7 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati peerConnections[handshake.Cuuid] = peerConnection if err == nil { - topic := fmt.Sprintf("%s/%s/answer", name, handshake.Cuuid) + topic := fmt.Sprintf("%s/%s/answer", deviceKey, handshake.Cuuid) log.Log.Info("InitializeWebRTCConnection: Send SDP answer to " + topic) mqttClient.Publish(topic, 2, false, []byte(base64.StdEncoding.EncodeToString([]byte(answer.SDP)))) } From 410a62e9ef03e67a3a682f7ecf9bc05b45e427ee Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Mon, 28 Aug 2023 09:30:08 +0200 Subject: [PATCH 38/80] Some cameras do not support AbsoluteMovement, therefore we'll simulate it with ContinuousMove and a polling mechanism --- machinery/src/onvif/main.go | 319 ++++++++++++++++++++++++++++++++---- 1 file changed, 289 insertions(+), 30 deletions(-) diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index 9bf90f14..e3e34398 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -51,9 +51,34 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode x := ptzAction.X y := ptzAction.Y z := ptzAction.Z - err := AbsolutePanTiltMove(device, configurations, token, x, y, z) - if err != nil { - log.Log.Error("HandleONVIFActions (AbsolutePanTitleMove): " + err.Error()) + + // Check which PTZ Space we need to use + functions, _, _ := GetPTZFunctionsFromDevice(configurations) + + // Check if we need to use absolute or continuous move + canAbsoluteMove := false + canContinuousMove := false + + if len(functions) > 0 { + for _, function := range functions { + if function == "AbsolutePanTiltMove" || function == "AbsoluteZoomMove" { + canAbsoluteMove = true + } else if function == "ContinuousPanTiltMove" || function == "ContinuousZoomMove" { + canContinuousMove = true + } + } + } + + if canAbsoluteMove { + err = AbsolutePanTiltMove(device, configurations, token, x, y, z) + if err != nil { + log.Log.Error("HandleONVIFActions (AbsolutePanTitleMove): " + err.Error()) + } + } else if canContinuousMove { + err = AbsolutePanTiltMoveFake(device, configurations, token, x, y, z) + if err != nil { + log.Log.Error("HandleONVIFActions (AbsolutePanTitleMoveFake): " + err.Error()) + } } } else if onvifAction.Action == "ptz" { @@ -191,11 +216,7 @@ func GetPTZConfigurationsFromDevice(device *onvif.Device) (ptz.GetConfigurations } func GetPositionFromDevice(configuration models.Configuration) (xsd.PTZVector, error) { - - // We'll try to receive the PTZ configurations from the server - var status ptz.GetStatusResponse var position xsd.PTZVector - // Connect to Onvif device cameraConfiguration := configuration.Config.Capture.IPCamera device, err := ConnectToOnvifDevice(&cameraConfiguration) @@ -204,31 +225,14 @@ func GetPositionFromDevice(configuration models.Configuration) (xsd.PTZVector, e // Get token from the first profile token, err := GetTokenFromProfile(device, 0) if err == nil { - // Get the PTZ configurations from the device - resp, err := device.CallMethod(ptz.GetStatus{ - ProfileToken: token, - }) - + position, err := GetPosition(device, token) if err == nil { - defer resp.Body.Close() - b, err := io.ReadAll(resp.Body) - if err == nil { - stringBody := string(b) - decodedXML, et, err := getXMLNode(stringBody, "GetStatusResponse") - if err != nil { - log.Log.Error("GetPositionFromDevice: " + err.Error()) - return position, err - } else { - if err := decodedXML.DecodeElement(&status, et); err != nil { - log.Log.Error("GetPositionFromDevice: " + err.Error()) - return position, err - } - } - } + return position, err + } else { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err } - position = status.PTZStatus.Position - return position, err } else { log.Log.Error("GetPositionFromDevice: " + err.Error()) return position, err @@ -239,6 +243,37 @@ func GetPositionFromDevice(configuration models.Configuration) (xsd.PTZVector, e } } +func GetPosition(device *onvif.Device, token xsd.ReferenceToken) (xsd.PTZVector, error) { + // We'll try to receive the PTZ configurations from the server + var status ptz.GetStatusResponse + var position xsd.PTZVector + + // Get the PTZ configurations from the device + resp, err := device.CallMethod(ptz.GetStatus{ + ProfileToken: token, + }) + + if err == nil { + defer resp.Body.Close() + b, err := io.ReadAll(resp.Body) + if err == nil { + stringBody := string(b) + decodedXML, et, err := getXMLNode(stringBody, "GetStatusResponse") + if err != nil { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } else { + if err := decodedXML.DecodeElement(&status, et); err != nil { + log.Log.Error("GetPositionFromDevice: " + err.Error()) + return position, err + } + } + } + } + position = status.PTZStatus.Position + return position, err +} + func AbsolutePanTiltMove(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, tilt float64, zoom float64) error { absolutePantiltVector := xsd.Vector2D{ @@ -270,6 +305,230 @@ func AbsolutePanTiltMove(device *onvif.Device, configuration ptz.GetConfiguratio return err } +// This function will simulate the AbsolutePanTiltMove function. +// However the AboslutePanTiltMove function is not working on all cameras. +// So we'll use the ContinuousMove function to simulate the AbsolutePanTiltMove function using the position polling. +func AbsolutePanTiltMoveFake(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, tilt float64, zoom float64) error { + position, err := GetPosition(device, token) + if position.PanTilt.X >= pan-0.01 && position.PanTilt.X <= pan+0.01 && position.PanTilt.Y >= tilt-0.01 && position.PanTilt.Y <= tilt+0.01 && position.Zoom.X >= zoom-0.01 && position.Zoom.X <= zoom+0.01 { + log.Log.Debug("AbsolutePanTiltMoveFake: already at position") + } else { + + // The speed of panning, the higher the faster we'll pan the camera + // value is a range between 0 and 1. + speed := 0.6 + wait := 100 * time.Millisecond + + err := ZoomOutCompletely(device, configuration, token) + + // We'll move quickly to the position (might be inaccurate) + err = PanUntilPosition(device, configuration, token, pan, speed, wait) + err = TiltUntilPosition(device, configuration, token, tilt, speed, wait) + + // Now we'll move a bit slower to make sure we are ok (will be more accurate) + speed = 0.2 + wait = 200 * time.Millisecond + + err = PanUntilPosition(device, configuration, token, pan, speed, wait) + err = TiltUntilPosition(device, configuration, token, tilt, speed, wait) + err = ZoomUntilPosition(device, configuration, token, zoom, speed, wait) + + return err + } + return err +} + +func ZoomOutCompletely(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken) error { + // Zoom out completely!!! + zoomOut := xsd.Vector1D{ + X: -1, + Space: configuration.PTZConfiguration.DefaultContinuousZoomVelocitySpace, + } + _, err := device.CallMethod(ptz.ContinuousMove{ + ProfileToken: token, + Velocity: xsd.PTZSpeedZoom{ + Zoom: zoomOut, + }, + }) + for { + position, _ := GetPosition(device, token) + if position.Zoom.X == 0 { + break + } + time.Sleep(250 * time.Millisecond) + } + + device.CallMethod(ptz.Stop{ + ProfileToken: token, + Zoom: true, + }) + return err +} + +func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, speed float64, wait time.Duration) error { + position, err := GetPosition(device, token) + + if position.PanTilt.X >= pan-0.01 && position.PanTilt.X <= pan+0.01 { + + } else { + + // We'll need to determine if we need to move CW or CCW. + // Check the current position and compare it with the desired position. + directionX := speed + if position.PanTilt.X > pan { + directionX = speed * -1 + } + + panTiltVector := xsd.Vector2D{ + X: directionX, + Y: 0, + Space: configuration.PTZConfiguration.DefaultContinuousPanTiltVelocitySpace, + } + res, err := device.CallMethod(ptz.ContinuousMove{ + ProfileToken: token, + Velocity: xsd.PTZSpeedPanTilt{ + PanTilt: panTiltVector, + }, + }) + + if err != nil { + log.Log.Error("ContinuousPanTiltMove (Pan): " + err.Error()) + } + + bs, _ := ioutil.ReadAll(res.Body) + log.Log.Debug("ContinuousPanTiltMove (Pan): " + string(bs)) + + // While moving we'll check if we reached the desired position. + // or if we overshot the desired position. + for { + position, _ := GetPosition(device, token) + if position.PanTilt.X == -1 || position.PanTilt.X == 1 || (directionX > 0 && position.PanTilt.X >= pan) || (directionX < 0 && position.PanTilt.X <= pan) || (position.PanTilt.X >= pan-0.005 && position.PanTilt.X <= pan+0.005) { + break + } + time.Sleep(wait) + } + + _, errStop := device.CallMethod(ptz.Stop{ + ProfileToken: token, + PanTilt: true, + }) + + if errStop != nil { + log.Log.Error("ContinuousPanTiltMove (Pan): " + errStop.Error()) + } + } + return err +} + +func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, tilt float64, speed float64, wait time.Duration) error { + position, err := GetPosition(device, token) + + if position.PanTilt.Y >= tilt-0.01 && position.PanTilt.Y <= tilt+0.01 { + + } else { + + // We'll need to determine if we need to move CW or CCW. + // Check the current position and compare it with the desired position. + directionY := speed + if position.PanTilt.Y > tilt { + directionY = speed * -1 + } + + panTiltVector := xsd.Vector2D{ + X: 0, + Y: directionY, + Space: configuration.PTZConfiguration.DefaultContinuousPanTiltVelocitySpace, + } + res, err := device.CallMethod(ptz.ContinuousMove{ + ProfileToken: token, + Velocity: xsd.PTZSpeedPanTilt{ + PanTilt: panTiltVector, + }, + }) + + if err != nil { + log.Log.Error("ContinuousPanTiltMove (Tilt): " + err.Error()) + } + + bs, _ := ioutil.ReadAll(res.Body) + log.Log.Debug("ContinuousPanTiltMove (Tilt) " + string(bs)) + + // While moving we'll check if we reached the desired position. + // or if we overshot the desired position. + for { + position, _ := GetPosition(device, token) + if position.PanTilt.Y == -1 || position.PanTilt.Y == 1 || (directionY > 0 && position.PanTilt.Y >= tilt) || (directionY < 0 && position.PanTilt.Y <= tilt) || (position.PanTilt.Y >= tilt-0.005 && position.PanTilt.Y <= tilt+0.005) { + break + } + time.Sleep(wait) + } + + _, errStop := device.CallMethod(ptz.Stop{ + ProfileToken: token, + PanTilt: true, + }) + + if errStop != nil { + log.Log.Error("ContinuousPanTiltMove (Tilt): " + errStop.Error()) + } + } + return err +} + +func ZoomUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, zoom float64, speed float64, wait time.Duration) error { + position, err := GetPosition(device, token) + + if position.Zoom.X >= zoom-0.01 && position.Zoom.X <= zoom+0.01 { + + } else { + + // We'll need to determine if we need to move CW or CCW. + // Check the current position and compare it with the desired position. + directionZ := speed + if position.Zoom.X > zoom { + directionZ = speed * -1 + } + + zoomVector := xsd.Vector1D{ + X: directionZ, + Space: configuration.PTZConfiguration.DefaultContinuousZoomVelocitySpace, + } + res, err := device.CallMethod(ptz.ContinuousMove{ + ProfileToken: token, + Velocity: xsd.PTZSpeedZoom{ + Zoom: zoomVector, + }, + }) + + if err != nil { + log.Log.Error("ContinuousPanTiltMove (Zoom): " + err.Error()) + } + + bs, _ := ioutil.ReadAll(res.Body) + log.Log.Debug("ContinuousPanTiltMove (Zoom) " + string(bs)) + + // While moving we'll check if we reached the desired position. + // or if we overshot the desired position. + for { + position, _ := GetPosition(device, token) + if position.Zoom.X == -1 || position.Zoom.X == 1 || (directionZ > 0 && position.Zoom.X >= zoom) || (directionZ < 0 && position.Zoom.X <= zoom) || (position.Zoom.X >= zoom-0.005 && position.Zoom.X <= zoom+0.005) { + break + } + time.Sleep(wait) + } + + _, errStop := device.CallMethod(ptz.Stop{ + ProfileToken: token, + Zoom: true, + }) + + if errStop != nil { + log.Log.Error("ContinuousPanTiltMove (Zoom): " + errStop.Error()) + } + } + return err +} + func ContinuousPanTilt(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, tilt float64) error { panTiltVector := xsd.Vector2D{ @@ -292,7 +551,7 @@ func ContinuousPanTilt(device *onvif.Device, configuration ptz.GetConfigurations bs, _ := ioutil.ReadAll(res.Body) log.Log.Debug("ContinuousPanTiltMove: " + string(bs)) - time.Sleep(500 * time.Millisecond) + time.Sleep(200 * time.Millisecond) res, errStop := device.CallMethod(ptz.Stop{ ProfileToken: token, From 65a739ea75016d4ea1060b42403d532cf18149c7 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 29 Aug 2023 14:30:25 +0200 Subject: [PATCH 39/80] logging PTZ functions --- machinery/src/onvif/main.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index e3e34398..2a8fd3d6 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -55,6 +55,9 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode // Check which PTZ Space we need to use functions, _, _ := GetPTZFunctionsFromDevice(configurations) + // Log functions + log.Log.Debug("HandleONVIFActions: functions: " + strings.Join(functions, ", ")) + // Check if we need to use absolute or continuous move canAbsoluteMove := false canContinuousMove := false From c71cb71d081bebebd52f7ed36f18e1b4af6bece1 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 29 Aug 2023 14:43:14 +0200 Subject: [PATCH 40/80] We should reenable debugging, modifying to Info for now --- machinery/src/onvif/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index 2a8fd3d6..5b9f195c 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -56,7 +56,7 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode functions, _, _ := GetPTZFunctionsFromDevice(configurations) // Log functions - log.Log.Debug("HandleONVIFActions: functions: " + strings.Join(functions, ", ")) + log.Log.Info("HandleONVIFActions: functions: " + strings.Join(functions, ", ")) // Check if we need to use absolute or continuous move canAbsoluteMove := false From 31cc3d8939944329b8f7d6a0b6d1869aaa39acd6 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 29 Aug 2023 14:53:48 +0200 Subject: [PATCH 41/80] Rely on continuous move will fix the PTZFunctions later --- machinery/src/onvif/main.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index 5b9f195c..e1632a88 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -59,7 +59,7 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode log.Log.Info("HandleONVIFActions: functions: " + strings.Join(functions, ", ")) // Check if we need to use absolute or continuous move - canAbsoluteMove := false + /*canAbsoluteMove := false canContinuousMove := false if len(functions) > 0 { @@ -70,9 +70,17 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode canContinuousMove = true } } + }*/ + + // Ideally we should be able to use the AbsolutePanTiltMove function, but it looks like + // the current detection through GetPTZFuntionsFromDevice is not working properly. Therefore we will fallback + // on the ContinuousPanTiltMove function which is more compatible with more cameras. + err = AbsolutePanTiltMoveFake(device, configurations, token, x, y, z) + if err != nil { + log.Log.Error("HandleONVIFActions (AbsolutePanTitleMoveFake): " + err.Error()) } - if canAbsoluteMove { + /*if canAbsoluteMove { err = AbsolutePanTiltMove(device, configurations, token, x, y, z) if err != nil { log.Log.Error("HandleONVIFActions (AbsolutePanTitleMove): " + err.Error()) @@ -82,7 +90,7 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode if err != nil { log.Log.Error("HandleONVIFActions (AbsolutePanTitleMoveFake): " + err.Error()) } - } + }*/ } else if onvifAction.Action == "ptz" { From ecabc478476a486d5595d3f7a0d845ae1a75f4a6 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 30 Aug 2023 14:12:07 +0200 Subject: [PATCH 42/80] integrate ondevice configurated presets --- machinery/docs/docs.go | 78 +++++++++++++++- machinery/docs/swagger.json | 78 +++++++++++++++- machinery/docs/swagger.yaml | 50 +++++++++++ machinery/go.mod | 4 +- machinery/go.sum | 4 +- machinery/src/cloud/Cloud.go | 15 +++- machinery/src/models/ApiResponse.go | 5 ++ machinery/src/models/Onvif.go | 6 ++ machinery/src/onvif/main.go | 124 +++++++++++++++++++++++--- machinery/src/routers/http/Methods.go | 102 +++++++++++++++++++++ machinery/src/routers/http/Routes.go | 2 + 11 files changed, 448 insertions(+), 20 deletions(-) diff --git a/machinery/docs/docs.go b/machinery/docs/docs.go index 64defbe2..18ec24c0 100644 --- a/machinery/docs/docs.go +++ b/machinery/docs/docs.go @@ -54,6 +54,35 @@ const docTemplate = `{ } } }, + "/api/camera/onvif/gotopreset": { + "post": { + "description": "Will activate the desired ONVIF preset.", + "tags": [ + "camera" + ], + "summary": "Will activate the desired ONVIF preset.", + "operationId": "camera-onvif-gotopreset", + "parameters": [ + { + "description": "OnvifPreset", + "name": "config", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.OnvifPreset" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.APIResponse" + } + } + } + } + }, "/api/camera/onvif/login": { "post": { "description": "Try to login into ONVIF supported camera.", @@ -112,6 +141,35 @@ const docTemplate = `{ } } }, + "/api/camera/onvif/presets": { + "post": { + "description": "Will return the ONVIF presets for the specific camera.", + "tags": [ + "camera" + ], + "summary": "Will return the ONVIF presets for the specific camera.", + "operationId": "camera-onvif-presets", + "parameters": [ + { + "description": "OnvifCredentials", + "name": "config", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.OnvifCredentials" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.APIResponse" + } + } + } + } + }, "/api/camera/onvif/zoom": { "post": { "description": "Zooming in or out the camera.", @@ -317,8 +375,15 @@ const docTemplate = `{ "models.APIResponse": { "type": "object", "properties": { + "can_pan_tilt": { + "type": "boolean" + }, + "can_zoom": { + "type": "boolean" + }, "data": {}, - "message": {} + "message": {}, + "ptz_functions": {} } }, "models.Authentication": { @@ -621,6 +686,17 @@ const docTemplate = `{ } } }, + "models.OnvifPreset": { + "type": "object", + "properties": { + "onvif_credentials": { + "$ref": "#/definitions/models.OnvifCredentials" + }, + "preset": { + "type": "string" + } + } + }, "models.OnvifZoom": { "type": "object", "properties": { diff --git a/machinery/docs/swagger.json b/machinery/docs/swagger.json index 4d54f9d2..796543bc 100644 --- a/machinery/docs/swagger.json +++ b/machinery/docs/swagger.json @@ -46,6 +46,35 @@ } } }, + "/api/camera/onvif/gotopreset": { + "post": { + "description": "Will activate the desired ONVIF preset.", + "tags": [ + "camera" + ], + "summary": "Will activate the desired ONVIF preset.", + "operationId": "camera-onvif-gotopreset", + "parameters": [ + { + "description": "OnvifPreset", + "name": "config", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.OnvifPreset" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.APIResponse" + } + } + } + } + }, "/api/camera/onvif/login": { "post": { "description": "Try to login into ONVIF supported camera.", @@ -104,6 +133,35 @@ } } }, + "/api/camera/onvif/presets": { + "post": { + "description": "Will return the ONVIF presets for the specific camera.", + "tags": [ + "camera" + ], + "summary": "Will return the ONVIF presets for the specific camera.", + "operationId": "camera-onvif-presets", + "parameters": [ + { + "description": "OnvifCredentials", + "name": "config", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/models.OnvifCredentials" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/models.APIResponse" + } + } + } + } + }, "/api/camera/onvif/zoom": { "post": { "description": "Zooming in or out the camera.", @@ -309,8 +367,15 @@ "models.APIResponse": { "type": "object", "properties": { + "can_pan_tilt": { + "type": "boolean" + }, + "can_zoom": { + "type": "boolean" + }, "data": {}, - "message": {} + "message": {}, + "ptz_functions": {} } }, "models.Authentication": { @@ -613,6 +678,17 @@ } } }, + "models.OnvifPreset": { + "type": "object", + "properties": { + "onvif_credentials": { + "$ref": "#/definitions/models.OnvifCredentials" + }, + "preset": { + "type": "string" + } + } + }, "models.OnvifZoom": { "type": "object", "properties": { diff --git a/machinery/docs/swagger.yaml b/machinery/docs/swagger.yaml index 1d9ac0f0..2d50c8d2 100644 --- a/machinery/docs/swagger.yaml +++ b/machinery/docs/swagger.yaml @@ -2,8 +2,13 @@ basePath: / definitions: models.APIResponse: properties: + can_pan_tilt: + type: boolean + can_zoom: + type: boolean data: {} message: {} + ptz_functions: {} type: object models.Authentication: properties: @@ -202,6 +207,13 @@ definitions: tilt: type: number type: object + models.OnvifPreset: + properties: + onvif_credentials: + $ref: '#/definitions/models.OnvifCredentials' + preset: + type: string + type: object models.OnvifZoom: properties: onvif_credentials: @@ -310,6 +322,25 @@ paths: summary: Will return the ONVIF capabilities for the specific camera. tags: - camera + /api/camera/onvif/gotopreset: + post: + description: Will activate the desired ONVIF preset. + operationId: camera-onvif-gotopreset + parameters: + - description: OnvifPreset + in: body + name: config + required: true + schema: + $ref: '#/definitions/models.OnvifPreset' + responses: + "200": + description: OK + schema: + $ref: '#/definitions/models.APIResponse' + summary: Will activate the desired ONVIF preset. + tags: + - camera /api/camera/onvif/login: post: description: Try to login into ONVIF supported camera. @@ -348,6 +379,25 @@ paths: summary: Panning or/and tilting the camera. tags: - camera + /api/camera/onvif/presets: + post: + description: Will return the ONVIF presets for the specific camera. + operationId: camera-onvif-presets + parameters: + - description: OnvifCredentials + in: body + name: config + required: true + schema: + $ref: '#/definitions/models.OnvifCredentials' + responses: + "200": + description: OK + schema: + $ref: '#/definitions/models.APIResponse' + summary: Will return the ONVIF presets for the specific camera. + tags: + - camera /api/camera/onvif/zoom: post: description: Zooming in or out the camera. diff --git a/machinery/go.mod b/machinery/go.mod index 37901295..8468dbdb 100644 --- a/machinery/go.mod +++ b/machinery/go.mod @@ -3,7 +3,7 @@ module github.com/kerberos-io/agent/machinery go 1.19 // replace github.com/kerberos-io/joy4 v1.0.57 => ../../../../github.com/kerberos-io/joy4 -// replace github.com/kerberos-io/onvif v0.0.5 => ../../../../github.com/kerberos-io/onvif +// replace github.com/kerberos-io/onvif v0.0.6 => ../../../../github.com/kerberos-io/onvif require ( github.com/InVisionApp/conjungo v1.1.0 @@ -25,7 +25,7 @@ require ( github.com/gorilla/websocket v1.5.0 github.com/kellydunn/golang-geo v0.7.0 github.com/kerberos-io/joy4 v1.0.58 - github.com/kerberos-io/onvif v0.0.6 + github.com/kerberos-io/onvif v0.0.7 github.com/minio/minio-go/v6 v6.0.57 github.com/nsmith5/mjpeg v0.0.0-20200913181537-54b8ada0e53e github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 diff --git a/machinery/go.sum b/machinery/go.sum index 2f560e27..f8b60450 100644 --- a/machinery/go.sum +++ b/machinery/go.sum @@ -266,8 +266,8 @@ github.com/kellydunn/golang-geo v0.7.0 h1:A5j0/BvNgGwY6Yb6inXQxzYwlPHc6WVZR+Mrar github.com/kellydunn/golang-geo v0.7.0/go.mod h1:YYlQPJ+DPEzrHx8kT3oPHC/NjyvCCXE+IuKGKdrjrcU= github.com/kerberos-io/joy4 v1.0.58 h1:R8EECSF+bG7o2yHC6cX/lF77Z+bDVGl6OioLZ3+5MN4= github.com/kerberos-io/joy4 v1.0.58/go.mod h1:nZp4AjvKvTOXRrmDyAIOw+Da+JA5OcSo/JundGfOlFU= -github.com/kerberos-io/onvif v0.0.6 h1:+nvDuxGzQgHjc7V7kiYxUIcw1bO6R9esAMcxWRiKcwA= -github.com/kerberos-io/onvif v0.0.6/go.mod h1:Hr2dJOH2LM5SpYKk17gYZ1CMjhGhUl+QlT5kwYogrW0= +github.com/kerberos-io/onvif v0.0.7 h1:LIrXjTH7G2W9DN69xZeJSB0uS3W1+C3huFO8kTqx7/A= +github.com/kerberos-io/onvif v0.0.7/go.mod h1:Hr2dJOH2LM5SpYKk17gYZ1CMjhGhUl+QlT5kwYogrW0= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U= diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 350f1f10..7adf988d 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -279,6 +279,8 @@ loop: onvifEnabled := "false" onvifZoom := "false" onvifPanTilt := "false" + onvifPresets := "false" + var onvifPresetsList []byte if config.Capture.IPCamera.ONVIFXAddr != "" { cameraConfiguration := configuration.Config.Capture.IPCamera device, err := onvif.ConnectToOnvifDevice(&cameraConfiguration) @@ -293,6 +295,15 @@ loop: if canPanTilt { onvifPanTilt = "true" } + // Try to read out presets + presets, err := onvif.GetPresetsFromDevice(device) + if err == nil && len(presets) > 0 { + onvifPresets = "true" + onvifPresetsList, err = json.Marshal(presets) + if err != nil { + log.Log.Error("HandleHeartBeat: error while marshalling presets: " + err.Error()) + } + } } } } @@ -339,6 +350,8 @@ loop: "onvif" : "%s", "onvif_zoom" : "%s", "onvif_pantilt" : "%s", + "onvif_presets": "%s", + "onvif_presets_list": %s, "cameraConnected": "%s", "numberoffiles" : "33", "timestamp" : 1564747908, @@ -346,7 +359,7 @@ loop: "docker" : true, "kios" : false, "raspberrypi" : false - }`, config.Key, system.Version, system.CPUId, username, key, name, isEnterprise, system.Hostname, system.Architecture, system.TotalMemory, system.UsedMemory, system.FreeMemory, system.ProcessUsedMemory, macs, ips, "0", "0", "0", uptimeString, boottimeString, config.HubSite, onvifEnabled, onvifZoom, onvifPanTilt, cameraConnected) + }`, config.Key, system.Version, system.CPUId, username, key, name, isEnterprise, system.Hostname, system.Architecture, system.TotalMemory, system.UsedMemory, system.FreeMemory, system.ProcessUsedMemory, macs, ips, "0", "0", "0", uptimeString, boottimeString, config.HubSite, onvifEnabled, onvifZoom, onvifPanTilt, onvifPresets, onvifPresetsList, cameraConnected) var jsonStr = []byte(object) buffy := bytes.NewBuffer(jsonStr) diff --git a/machinery/src/models/ApiResponse.go b/machinery/src/models/ApiResponse.go index bc2edfe5..1b4fab25 100644 --- a/machinery/src/models/ApiResponse.go +++ b/machinery/src/models/ApiResponse.go @@ -29,3 +29,8 @@ type OnvifZoom struct { OnvifCredentials OnvifCredentials `json:"onvif_credentials,omitempty" bson:"onvif_credentials"` Zoom float64 `json:"zoom,omitempty" bson:"zoom"` } + +type OnvifPreset struct { + OnvifCredentials OnvifCredentials `json:"onvif_credentials,omitempty" bson:"onvif_credentials"` + Preset string `json:"preset,omitempty" bson:"preset"` +} diff --git a/machinery/src/models/Onvif.go b/machinery/src/models/Onvif.go index c7869a7e..5ecb1172 100644 --- a/machinery/src/models/Onvif.go +++ b/machinery/src/models/Onvif.go @@ -15,4 +15,10 @@ type OnvifActionPTZ struct { X float64 `json:"x" bson:"x"` Y float64 `json:"y" bson:"y"` Z float64 `json:"z" bson:"z"` + Preset string `json:"preset" bson:"preset"` +} + +type OnvifActionPreset struct { + Name string `json:"name" bson:"name"` + Token string `json:"token" bson:"token"` } diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index e1632a88..46c70533 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -78,6 +78,8 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode err = AbsolutePanTiltMoveFake(device, configurations, token, x, y, z) if err != nil { log.Log.Error("HandleONVIFActions (AbsolutePanTitleMoveFake): " + err.Error()) + } else { + log.Log.Info("HandleONVIFActions (AbsolutePanTitleMoveFake): successfully moved camera") } /*if canAbsoluteMove { @@ -92,6 +94,17 @@ func HandleONVIFActions(configuration *models.Configuration, communication *mode } }*/ + } else if onvifAction.Action == "preset" { + + // Execute the preset + preset := ptzAction.Preset + err := GoToPresetFromDevice(device, preset) + if err != nil { + log.Log.Error("HandleONVIFActions (GotoPreset): " + err.Error()) + } else { + log.Log.Info("HandleONVIFActions (GotoPreset): successfully moved camera") + } + } else if onvifAction.Action == "ptz" { if err == nil { @@ -311,7 +324,7 @@ func AbsolutePanTiltMove(device *onvif.Device, configuration ptz.GetConfiguratio } bs, _ := ioutil.ReadAll(res.Body) - log.Log.Debug("AbsoluteMove: " + string(bs)) + log.Log.Info("AbsoluteMove: " + string(bs)) return err } @@ -330,18 +343,17 @@ func AbsolutePanTiltMoveFake(device *onvif.Device, configuration ptz.GetConfigur speed := 0.6 wait := 100 * time.Millisecond - err := ZoomOutCompletely(device, configuration, token) - // We'll move quickly to the position (might be inaccurate) - err = PanUntilPosition(device, configuration, token, pan, speed, wait) - err = TiltUntilPosition(device, configuration, token, tilt, speed, wait) + err = ZoomOutCompletely(device, configuration, token) + err = PanUntilPosition(device, configuration, token, pan, zoom, speed, wait) + err = TiltUntilPosition(device, configuration, token, tilt, zoom, speed, wait) // Now we'll move a bit slower to make sure we are ok (will be more accurate) - speed = 0.2 + speed = 0.1 wait = 200 * time.Millisecond - err = PanUntilPosition(device, configuration, token, pan, speed, wait) - err = TiltUntilPosition(device, configuration, token, tilt, speed, wait) + err = PanUntilPosition(device, configuration, token, pan, zoom, speed, wait) + err = TiltUntilPosition(device, configuration, token, tilt, zoom, speed, wait) err = ZoomUntilPosition(device, configuration, token, zoom, speed, wait) return err @@ -376,10 +388,10 @@ func ZoomOutCompletely(device *onvif.Device, configuration ptz.GetConfigurations return err } -func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, speed float64, wait time.Duration) error { +func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, zoom float64, speed float64, wait time.Duration) error { position, err := GetPosition(device, token) - if position.PanTilt.X >= pan-0.01 && position.PanTilt.X <= pan+0.01 { + if position.PanTilt.X >= pan-0.005 && position.PanTilt.X <= pan+0.005 { } else { @@ -422,6 +434,7 @@ func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsR _, errStop := device.CallMethod(ptz.Stop{ ProfileToken: token, PanTilt: true, + Zoom: true, }) if errStop != nil { @@ -431,10 +444,10 @@ func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsR return err } -func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, tilt float64, speed float64, wait time.Duration) error { +func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, tilt float64, zoom float64, speed float64, wait time.Duration) error { position, err := GetPosition(device, token) - if position.PanTilt.Y >= tilt-0.01 && position.PanTilt.Y <= tilt+0.01 { + if position.PanTilt.Y >= tilt-0.005 && position.PanTilt.Y <= tilt+0.005 { } else { @@ -477,6 +490,7 @@ func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurations _, errStop := device.CallMethod(ptz.Stop{ ProfileToken: token, PanTilt: true, + Zoom: true, }) if errStop != nil { @@ -489,7 +503,7 @@ func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurations func ZoomUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, zoom float64, speed float64, wait time.Duration) error { position, err := GetPosition(device, token) - if position.Zoom.X >= zoom-0.01 && position.Zoom.X <= zoom+0.01 { + if position.Zoom.X >= zoom-0.005 && position.Zoom.X <= zoom+0.005 { } else { @@ -530,6 +544,7 @@ func ZoomUntilPosition(device *onvif.Device, configuration ptz.GetConfigurations _, errStop := device.CallMethod(ptz.Stop{ ProfileToken: token, + PanTilt: true, Zoom: true, }) @@ -635,6 +650,89 @@ func GetCapabilitiesFromDevice(device *onvif.Device) []string { return capabilities } +func GetPresetsFromDevice(device *onvif.Device) ([]models.OnvifActionPreset, error) { + var presets []models.OnvifActionPreset + var presetsResponse ptz.GetPresetsResponse + + // Get token from the first profile + token, err := GetTokenFromProfile(device, 0) + if err == nil { + resp, err := device.CallMethod(ptz.GetPresets{ + ProfileToken: token, + }) + + defer resp.Body.Close() + b, err := io.ReadAll(resp.Body) + if err == nil { + stringBody := string(b) + decodedXML, et, err := getXMLNode(stringBody, "GetPresetsResponse") + if err != nil { + log.Log.Error("GetPresetsFromDevice: " + err.Error()) + return presets, err + } else { + if err := decodedXML.DecodeElement(&presetsResponse, et); err != nil { + log.Log.Error("GetPresetsFromDevice: " + err.Error()) + return presets, err + } + + for _, preset := range presetsResponse.Preset { + p := models.OnvifActionPreset{ + Name: string(preset.Name), + Token: string(preset.Token), + } + + presets = append(presets, p) + } + + return presets, err + } + } else { + log.Log.Error("GetPresetsFromDevice: " + err.Error()) + } + } else { + log.Log.Error("GetPresetsFromDevice: " + err.Error()) + } + + return presets, err +} + +func GoToPresetFromDevice(device *onvif.Device, presetName string) error { + var goToPresetResponse ptz.GotoPresetResponse + + // Get token from the first profile + token, err := GetTokenFromProfile(device, 0) + if err == nil { + + resp, err := device.CallMethod(ptz.GotoPreset{ + ProfileToken: token, + PresetToken: xsd.ReferenceToken(presetName), + }) + + defer resp.Body.Close() + b, err := io.ReadAll(resp.Body) + if err == nil { + stringBody := string(b) + decodedXML, et, err := getXMLNode(stringBody, "GotoPresetResponses") + if err != nil { + log.Log.Error("GoToPresetFromDevice: " + err.Error()) + return err + } else { + if err := decodedXML.DecodeElement(&goToPresetResponse, et); err != nil { + log.Log.Error("GoToPresetFromDevice: " + err.Error()) + return err + } + return err + } + } else { + log.Log.Error("GoToPresetFromDevice: " + err.Error()) + } + } else { + log.Log.Error("GoToPresetFromDevice: " + err.Error()) + } + + return err +} + func getXMLNode(xmlBody string, nodeName string) (*xml.Decoder, *xml.StartElement, error) { xmlBytes := bytes.NewBufferString(xmlBody) decodedXML := xml.NewDecoder(xmlBytes) diff --git a/machinery/src/routers/http/Methods.go b/machinery/src/routers/http/Methods.go index 79fa4258..fa0aaa7a 100644 --- a/machinery/src/routers/http/Methods.go +++ b/machinery/src/routers/http/Methods.go @@ -250,3 +250,105 @@ func DoOnvifZoom(c *gin.Context) { }) } } + +// GetOnvifPresets godoc +// @Router /api/camera/onvif/presets [post] +// @ID camera-onvif-presets +// @Tags camera +// @Param config body models.OnvifCredentials true "OnvifCredentials" +// @Summary Will return the ONVIF presets for the specific camera. +// @Description Will return the ONVIF presets for the specific camera. +// @Success 200 {object} models.APIResponse +func GetOnvifPresets(c *gin.Context) { + var onvifCredentials models.OnvifCredentials + err := c.BindJSON(&onvifCredentials) + + if err == nil && onvifCredentials.ONVIFXAddr != "" { + + configuration := &models.Configuration{ + Config: models.Config{ + Capture: models.Capture{ + IPCamera: models.IPCamera{ + ONVIFXAddr: onvifCredentials.ONVIFXAddr, + ONVIFUsername: onvifCredentials.ONVIFUsername, + ONVIFPassword: onvifCredentials.ONVIFPassword, + }, + }, + }, + } + + cameraConfiguration := configuration.Config.Capture.IPCamera + device, err := onvif.ConnectToOnvifDevice(&cameraConfiguration) + if err == nil { + presets, err := onvif.GetPresetsFromDevice(device) + if err == nil { + c.JSON(200, gin.H{ + "presets": presets, + }) + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } +} + +// GoToOnvifPReset godoc +// @Router /api/camera/onvif/gotopreset [post] +// @ID camera-onvif-gotopreset +// @Tags camera +// @Param config body models.OnvifPreset true "OnvifPreset" +// @Summary Will activate the desired ONVIF preset. +// @Description Will activate the desired ONVIF preset. +// @Success 200 {object} models.APIResponse +func GoToOnvifPreset(c *gin.Context) { + var onvifPreset models.OnvifPreset + err := c.BindJSON(&onvifPreset) + + if err == nil && onvifPreset.OnvifCredentials.ONVIFXAddr != "" { + + configuration := &models.Configuration{ + Config: models.Config{ + Capture: models.Capture{ + IPCamera: models.IPCamera{ + ONVIFXAddr: onvifPreset.OnvifCredentials.ONVIFXAddr, + ONVIFUsername: onvifPreset.OnvifCredentials.ONVIFUsername, + ONVIFPassword: onvifPreset.OnvifCredentials.ONVIFPassword, + }, + }, + }, + } + + cameraConfiguration := configuration.Config.Capture.IPCamera + device, err := onvif.ConnectToOnvifDevice(&cameraConfiguration) + if err == nil { + err := onvif.GoToPresetFromDevice(device, onvifPreset.Preset) + if err == nil { + c.JSON(200, gin.H{ + "data": "Camera preset activated: " + onvifPreset.Preset, + }) + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } + } else { + c.JSON(400, gin.H{ + "data": "Something went wrong: " + err.Error(), + }) + } +} diff --git a/machinery/src/routers/http/Routes.go b/machinery/src/routers/http/Routes.go index b728a526..cd3bedac 100644 --- a/machinery/src/routers/http/Routes.go +++ b/machinery/src/routers/http/Routes.go @@ -227,6 +227,8 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect // the camera. api.POST("/camera/onvif/login", LoginToOnvif) api.POST("/camera/onvif/capabilities", GetOnvifCapabilities) + api.POST("/camera/onvif/presets", GetOnvifPresets) + api.POST("/camera/onvif/gotopreset", GoToOnvifPreset) api.POST("/camera/onvif/pantilt", DoOnvifPanTilt) api.POST("/camera/onvif/zoom", DoOnvifZoom) api.POST("/camera/verify/:streamType", capture.VerifyCamera) From 6325e37aaed8f524ab99c7307f3c625ef9fefcba Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 7 Sep 2023 08:16:46 +0200 Subject: [PATCH 43/80] empty presets caused hub connection failing --- machinery/src/cloud/Cloud.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 7adf988d..4d095161 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -303,9 +303,25 @@ loop: if err != nil { log.Log.Error("HandleHeartBeat: error while marshalling presets: " + err.Error()) } + } else { + if err != nil { + log.Log.Error("HandleHeartBeat: error while getting presets: " + err.Error()) + } else { + log.Log.Debug("HandleHeartBeat: no presets found.") + } + onvifPresetsList = []byte("[]") } + } else { + log.Log.Error("HandleHeartBeat: error while getting PTZ configurations: " + err.Error()) + onvifPresetsList = []byte("[]") } + } else { + log.Log.Error("HandleHeartBeat: error while connecting to ONVIF device: " + err.Error()) + onvifPresetsList = []byte("[]") } + } else { + log.Log.Debug("HandleHeartBeat: ONVIF is not enabled.") + onvifPresetsList = []byte("[]") } // Check if the agent is running inside a cluster (Kerberos Factory) or as From ebd655ac731e3e93c8e8820396c999c949340f83 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 12 Sep 2023 10:50:36 +0200 Subject: [PATCH 44/80] Allow remote configuration through MQTT + restructure config method --- machinery/main.go | 8 +- machinery/src/cloud/Cloud.go | 1 + machinery/src/components/Kerberos.go | 25 +++- .../{components/Config.go => config/main.go} | 4 +- machinery/src/models/Config.go | 4 +- machinery/src/routers/http/Routes.go | 7 +- machinery/src/routers/mqtt/main.go | 115 +++++++++++++++++- 7 files changed, 143 insertions(+), 21 deletions(-) rename machinery/src/{components/Config.go => config/main.go} (99%) diff --git a/machinery/main.go b/machinery/main.go index 4bba8efa..6855d9ee 100644 --- a/machinery/main.go +++ b/machinery/main.go @@ -9,6 +9,8 @@ import ( "github.com/kerberos-io/agent/machinery/src/components" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" + + configService "github.com/kerberos-io/agent/machinery/src/config" "github.com/kerberos-io/agent/machinery/src/routers" "github.com/kerberos-io/agent/machinery/src/utils" "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer" @@ -92,10 +94,10 @@ func main() { configuration.Port = port // Open this configuration either from Kerberos Agent or Kerberos Factory. - components.OpenConfig(configDirectory, &configuration) + configService.OpenConfig(configDirectory, &configuration) // We will override the configuration with the environment variables - components.OverrideWithEnvironmentVariables(&configuration) + configService.OverrideWithEnvironmentVariables(&configuration) // Printing final configuration utils.PrintConfiguration(&configuration) @@ -113,7 +115,7 @@ func main() { if configuration.Config.Key == "" { key := utils.RandStringBytesMaskImpr(30) configuration.Config.Key = key - err := components.StoreConfig(configDirectory, configuration.Config) + err := configService.StoreConfig(configDirectory, configuration.Config) if err == nil { log.Log.Info("Main: updated unique key for agent to: " + key) } else { diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index 4d095161..bf0d8810 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -302,6 +302,7 @@ loop: onvifPresetsList, err = json.Marshal(presets) if err != nil { log.Log.Error("HandleHeartBeat: error while marshalling presets: " + err.Error()) + onvifPresetsList = []byte("[]") } } else { if err != nil { diff --git a/machinery/src/components/Kerberos.go b/machinery/src/components/Kerberos.go index f9f3aa9b..67956837 100644 --- a/machinery/src/components/Kerberos.go +++ b/machinery/src/components/Kerberos.go @@ -14,6 +14,7 @@ import ( "github.com/kerberos-io/agent/machinery/src/capture" "github.com/kerberos-io/agent/machinery/src/cloud" "github.com/kerberos-io/agent/machinery/src/computervision" + configService "github.com/kerberos-io/agent/machinery/src/config" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" "github.com/kerberos-io/agent/machinery/src/onvif" @@ -72,7 +73,7 @@ func Bootstrap(configDirectory string, configuration *models.Configuration, comm // We'll create a MQTT handler, which will be used to communicate with Kerberos Hub. // Configure a MQTT client which helps for a bi-directional communication - mqttClient := routers.ConfigureMQTT(configuration, communication) + mqttClient := routers.ConfigureMQTT(configDirectory, configuration, communication) // Run the agent and fire up all the other // goroutines which do image capture, motion detection, onvif, etc. @@ -87,15 +88,15 @@ func Bootstrap(configDirectory string, configuration *models.Configuration, comm if status == "not started" { // We will re open the configuration, might have changed :O! - OpenConfig(configDirectory, configuration) + configService.OpenConfig(configDirectory, configuration) // We will override the configuration with the environment variables - OverrideWithEnvironmentVariables(configuration) + configService.OverrideWithEnvironmentVariables(configuration) } // Reset the MQTT client, might have provided new information, so we need to reconnect. if routers.HasMQTTClientModified(configuration) { routers.DisconnectMQTT(mqttClient, &configuration.Config) - mqttClient = routers.ConfigureMQTT(configuration, communication) + mqttClient = routers.ConfigureMQTT(configDirectory, configuration, communication) } // We will create a new cancelable context, which will be used to cancel and restart. @@ -134,6 +135,10 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu width := videoStream.(av.VideoCodecData).Width() height := videoStream.(av.VideoCodecData).Height() + // Set config values as well + configuration.Config.Capture.IPCamera.Width = width + configuration.Config.Capture.IPCamera.Height = height + var queue *pubsub.Queue var subQueue *pubsub.Queue @@ -162,6 +167,13 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu time.Sleep(time.Second * 3) return status } + + width := videoStream.(av.VideoCodecData).Width() + height := videoStream.(av.VideoCodecData).Height() + + // Set config values as well + configuration.Config.Capture.IPCamera.Width = width + configuration.Config.Capture.IPCamera.Height = height } if cameraSettings.RTSP != rtspUrl || cameraSettings.SubRTSP != subRtspUrl || cameraSettings.Width != width || cameraSettings.Height != height || cameraSettings.Num != num || cameraSettings.Denum != denum || cameraSettings.Codec != videoStream.(av.VideoCodecData).Type() { @@ -190,6 +202,7 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu cameraSettings.Denum = denum cameraSettings.Codec = videoStream.(av.VideoCodecData).Type() cameraSettings.Initialized = true + } else { log.Log.Info("RunAgent: camera settings did not change, keeping decoder") } @@ -285,10 +298,10 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu (*communication.CancelContext)() // We will re open the configuration, might have changed :O! - OpenConfig(configDirectory, configuration) + configService.OpenConfig(configDirectory, configuration) // We will override the configuration with the environment variables - OverrideWithEnvironmentVariables(configuration) + configService.OverrideWithEnvironmentVariables(configuration) // Here we are cleaning up everything! if configuration.Config.Offline != "true" { diff --git a/machinery/src/components/Config.go b/machinery/src/config/main.go similarity index 99% rename from machinery/src/components/Config.go rename to machinery/src/config/main.go index b7286f5d..8ad4e594 100644 --- a/machinery/src/components/Config.go +++ b/machinery/src/config/main.go @@ -1,4 +1,4 @@ -package components +package config import ( "context" @@ -210,7 +210,7 @@ func OverrideWithEnvironmentVariables(configuration *models.Configuration) { configuration.Config.Key = value break case "AGENT_NAME": - configuration.Config.Name = value + configuration.Config.FriendlyName = value break case "AGENT_TIMEZONE": configuration.Config.Timezone = value diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 5d1ec2e5..72bc260e 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -70,9 +70,11 @@ type Capture struct { // IPCamera configuration, such as the RTSP url of the IPCamera and the FPS. // Also includes ONVIF integration type IPCamera struct { + Width int `json:"width"` + Height int `json:"height"` + FPS string `json:"fps"` RTSP string `json:"rtsp"` SubRTSP string `json:"sub_rtsp"` - FPS string `json:"fps"` ONVIF string `json:"onvif,omitempty" bson:"onvif"` ONVIFXAddr string `json:"onvif_xaddr,omitempty" bson:"onvif_xaddr"` ONVIFUsername string `json:"onvif_username,omitempty" bson:"onvif_username"` diff --git a/machinery/src/routers/http/Routes.go b/machinery/src/routers/http/Routes.go index cd3bedac..b8159467 100644 --- a/machinery/src/routers/http/Routes.go +++ b/machinery/src/routers/http/Routes.go @@ -12,6 +12,7 @@ import ( "github.com/kerberos-io/agent/machinery/src/cloud" "github.com/kerberos-io/agent/machinery/src/components" + configService "github.com/kerberos-io/agent/machinery/src/config" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" "github.com/kerberos-io/agent/machinery/src/utils" @@ -40,7 +41,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect var config models.Config err := c.BindJSON(&config) if err == nil { - err := components.SaveConfig(configDirectory, config, configuration, communication) + err := configService.SaveConfig(configDirectory, config, configuration, communication) if err == nil { c.JSON(200, gin.H{ "data": "☄ Reconfiguring", @@ -165,7 +166,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect var config models.Config err := c.BindJSON(&config) if err == nil { - err := components.SaveConfig(configDirectory, config, configuration, communication) + err := configService.SaveConfig(configDirectory, config, configuration, communication) if err == nil { c.JSON(200, gin.H{ "data": "☄ Reconfiguring", @@ -215,7 +216,7 @@ func AddRoutes(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware, configDirect // We will only send an image once per second. time.Sleep(time.Second * 1) log.Log.Info("AddRoutes (/stream): reading from MJPEG stream") - img, err := components.GetImageFromFilePath(configDirectory) + img, err := configService.GetImageFromFilePath(configDirectory) return img, err } h := components.StartMotionJPEG(imageFunction, 80) diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index 037b15a0..06987d9b 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -8,6 +8,8 @@ import ( "time" mqtt "github.com/eclipse/paho.mqtt.golang" + "github.com/gofrs/uuid" + configService "github.com/kerberos-io/agent/machinery/src/config" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" "github.com/kerberos-io/agent/machinery/src/onvif" @@ -55,12 +57,22 @@ func HasMQTTClientModified(configuration *models.Configuration) bool { } func PackageMQTTMessage(msg Message) ([]byte, error) { - // We'll generate an unique id, and encrypt it using the private key. - msg.Mid = "0123456789+1" + // Create a Version 4 UUID. + u2, err := uuid.NewV4() + if err != nil { + log.Log.Error("failed to generate UUID: " + err.Error()) + } + + // We'll generate an unique id, and encrypt / decrypt it using the private key if available. + msg.Mid = u2.String() msg.Timestamp = time.Now().Unix() + + // At the moment we don't do the encryption part, but we'll implement it + // once the legacy methods (subscriptions are moved). msg.Encrypted = false msg.PublicKey = "" msg.Fingerprint = "" + payload, err := json.Marshal(msg) return payload, err } @@ -98,7 +110,7 @@ func PackageMQTTMessage(msg Message) ([]byte, error) { // - {devicekey}/{sessionid}/answer: once a WebRTC request is received through (kerberos/register), we'll draft an answer and send it back to the remote WebRTC client. // - kerberos/{hubkey}/device/{devicekey}/motion: a motion signal -func ConfigureMQTT(configuration *models.Configuration, communication *models.Communication) mqtt.Client { +func ConfigureMQTT(configDirectory string, configuration *models.Configuration, communication *models.Communication) mqtt.Client { config := configuration.Config @@ -174,8 +186,9 @@ func ConfigureMQTT(configuration *models.Configuration, communication *models.Co log.Log.Info("ConfigureMQTT: " + mqttClientID + " connected to " + mqttURL) // Create a susbcription for listen and reply - MQTTListenerHandler(c, hubKey, configuration, communication) + MQTTListenerHandler(c, hubKey, configDirectory, configuration, communication) + // Legacy methods below -> should be converted to the above method. // Create a subscription to know if send out a livestream or not. MQTTListenerHandleLiveSD(c, hubKey, configuration, communication) @@ -207,7 +220,7 @@ func ConfigureMQTT(configuration *models.Configuration, communication *models.Co return nil } -func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { +func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory string, configuration *models.Configuration, communication *models.Communication) { if hubKey == "" { log.Log.Info("MQTTListenerHandler: no hub key provided, not subscribing to kerberos/hub/{hubkey}") } else { @@ -225,6 +238,7 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configuration *m var message Message json.Unmarshal(msg.Payload(), &message) + if message.Mid != "" && message.Timestamp != 0 { // Messages might be encrypted, if so we'll // need to decrypt them. @@ -249,6 +263,10 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configuration *m HandleGetPTZPosition(mqttClient, hubKey, payload, configuration, communication) case "update-ptz-position": HandleUpdatePTZPosition(mqttClient, hubKey, payload, configuration, communication) + case "request-config": + HandleRequestConfig(mqttClient, hubKey, payload, configuration, communication) + case "update-config": + HandleUpdateConfig(mqttClient, hubKey, payload, configDirectory, configuration, communication) } } } @@ -336,10 +354,95 @@ func HandleUpdatePTZPosition(mqttClient mqtt.Client, hubKey string, payload Payl } } +// We received a request config request, we'll fetch the current config and send it back. +type RequestConfigPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. +} + +func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + + // Convert map[string]interface{} to RequestConfigPayload + jsonData, _ := json.Marshal(value) + var configPayload RequestConfigPayload + json.Unmarshal(jsonData, &configPayload) + + if configPayload.Timestamp != 0 { + // Get Config from the device + + key := configuration.Config.Key + name := configuration.Config.Name + + if key != "" && name != "" { + + var configMap map[string]interface{} + inrec, _ := json.Marshal(configuration.Config) + json.Unmarshal(inrec, &configMap) + + message := Message{ + Payload: Payload{ + Action: "receive-config", + DeviceId: configuration.Config.Key, + Value: configMap, + }, + } + payload, err := PackageMQTTMessage(message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while sending config to hub: " + string(payload)) + } + + } else { + log.Log.Info("HandleRequestConfig: no config available") + } + + log.Log.Info("HandleRequestConfig: Received a request for the config") + } +} + +// We received a update config request, we'll update the current config and send a confirmation back. +type UpdateConfigPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. + Config models.Config `json:"config"` +} + +func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload Payload, configDirectory string, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + + // Convert map[string]interface{} to UpdateConfigPayload + jsonData, _ := json.Marshal(value) + var configPayload UpdateConfigPayload + json.Unmarshal(jsonData, &configPayload) + + if configPayload.Timestamp != 0 { + + config := configPayload.Config + err := configService.SaveConfig(configDirectory, config, configuration, communication) + if err == nil { + log.Log.Info("HandleUpdateConfig: Config updated") + + message := Message{ + Payload: Payload{ + Action: "acknowledge-update-config", + DeviceId: configuration.Config.Key, + }, + } + payload, err := PackageMQTTMessage(message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while sending acknowledge config to hub: " + string(payload)) + } + } else { + log.Log.Info("HandleUpdateConfig: Config update failed") + } + } +} + func DisconnectMQTT(mqttClient mqtt.Client, config *models.Config) { if mqttClient != nil { // Cleanup all subscriptions - // New methods mqttClient.Unsubscribe("kerberos/agent/" + PREV_HubKey) From 59358acb304991449fc5c57a2a98f2cff3aad42c Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 12 Sep 2023 15:17:56 +0200 Subject: [PATCH 45/80] add logging + empty friendly name --- machinery/src/models/Config.go | 2 +- machinery/src/routers/mqtt/main.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 72bc260e..72e02c82 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -15,7 +15,7 @@ type Config struct { Type string `json:"type"` Key string `json:"key"` Name string `json:"name"` - FriendlyName string `json:"friendly_name"` + FriendlyName string `json:"friendly_name,omitempty" bson:"friendly_name,omitempty"` Time string `json:"time" bson:"time"` Offline string `json:"offline"` AutoClean string `json:"auto_clean"` diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index 06987d9b..01e320af 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -256,6 +256,8 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory // Not relevant for this device, so we'll ignore it. } else { // We'll find out which message we received, and act accordingly. + log.Log.Info("MQTTListenerHandler: received message with action: " + payload.Action) + switch payload.Action { case "record": HandleRecording(mqttClient, hubKey, payload, configuration, communication) From 280a81809a6c0df5fde35a27a4a3ac235eb03dd4 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Tue, 12 Sep 2023 22:38:26 +0200 Subject: [PATCH 46/80] Update Config.go --- machinery/src/models/Config.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 72e02c82..72bc260e 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -15,7 +15,7 @@ type Config struct { Type string `json:"type"` Key string `json:"key"` Name string `json:"name"` - FriendlyName string `json:"friendly_name,omitempty" bson:"friendly_name,omitempty"` + FriendlyName string `json:"friendly_name"` Time string `json:"time" bson:"time"` Offline string `json:"offline"` AutoClean string `json:"auto_clean"` From 47f4c1961795555b90bff9ce9bbb9db59ee90e64 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Wed, 13 Sep 2023 08:14:25 +0200 Subject: [PATCH 47/80] Update Config.go --- machinery/src/models/Config.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 72bc260e..56de8fdb 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -21,7 +21,7 @@ type Config struct { AutoClean string `json:"auto_clean"` RemoveAfterUpload string `json:"remove_after_upload"` MaxDirectorySize int64 `json:"max_directory_size"` - Timezone string `json:"timezone,omitempty" bson:"timezone,omitempty"` + Timezone string `json:"timezone"` Capture Capture `json:"capture"` Timetable []*Timetable `json:"timetable"` Region *Region `json:"region"` @@ -76,9 +76,9 @@ type IPCamera struct { RTSP string `json:"rtsp"` SubRTSP string `json:"sub_rtsp"` ONVIF string `json:"onvif,omitempty" bson:"onvif"` - ONVIFXAddr string `json:"onvif_xaddr,omitempty" bson:"onvif_xaddr"` - ONVIFUsername string `json:"onvif_username,omitempty" bson:"onvif_username"` - ONVIFPassword string `json:"onvif_password,omitempty" bson:"onvif_password"` + ONVIFXAddr string `json:"onvif_xaddr" bson:"onvif_xaddr"` + ONVIFUsername string `json:"onvif_username" bson:"onvif_username"` + ONVIFPassword string `json:"onvif_password" bson:"onvif_password"` } // USBCamera configuration, such as the device path (/dev/video*) From 910bb3c079a4eb791dd904faf484ee973e15a1b1 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 14 Sep 2023 10:13:50 +0200 Subject: [PATCH 48/80] merging timetable was giving issues --- machinery/src/config/main.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/machinery/src/config/main.go b/machinery/src/config/main.go index 8ad4e594..6dceb561 100644 --- a/machinery/src/config/main.go +++ b/machinery/src/config/main.go @@ -157,6 +157,9 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { conjungo.Merge(&s3, configuration.CustomConfig.S3, opts) configuration.Config.S3 = &s3 + // Merge timetable manually because it's an array + configuration.Config.Timetable = configuration.CustomConfig.Timetable + // Cleanup opts = nil From 24136f8b158c236ff6d8daae3ffed80e5d128b26 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Thu, 14 Sep 2023 10:47:18 +0200 Subject: [PATCH 49/80] we didn't reset the main configuration, causing some config vars still to be set --- machinery/src/config/main.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/machinery/src/config/main.go b/machinery/src/config/main.go index 6dceb561..dc5805e9 100644 --- a/machinery/src/config/main.go +++ b/machinery/src/config/main.go @@ -141,8 +141,13 @@ func OpenConfig(configDirectory string, configuration *models.Configuration) { }, ) - // Merge Config toplevel + // Reset main configuration Config. + configuration.Config = models.Config{} + + // Merge the global settings in the main config conjungo.Merge(&configuration.Config, configuration.GlobalConfig, opts) + + // Now we might override some settings with the custom config conjungo.Merge(&configuration.Config, configuration.CustomConfig, opts) // Merge Kerberos Vault settings From 25392559401e1020b1af282af2842d08e539a23f Mon Sep 17 00:00:00 2001 From: Leonardo Papini Date: Thu, 14 Sep 2023 12:47:28 +0200 Subject: [PATCH 50/80] i18n: Italian translations --- ui/public/locales/it/translation.json | 215 ++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 ui/public/locales/it/translation.json diff --git a/ui/public/locales/it/translation.json b/ui/public/locales/it/translation.json new file mode 100644 index 00000000..126fdb2a --- /dev/null +++ b/ui/public/locales/it/translation.json @@ -0,0 +1,215 @@ +{ + "breadcrumb": { + "watch_recordings": "Guarda registrazioni", + "configure": "Configura" + }, + "buttons": { + "save": "Salva", + "verify_connection": "Verifica connessione" + }, + "navigation": { + "profile": "Profilo", + "admin": "admin", + "management": "Gestione", + "dashboard": "Dashboard", + "recordings": "Registrazioni", + "settings": "Impostazioni", + "help_support": "Aiuto e supporto", + "swagger": "Swagger API", + "documentation": "Documentazione", + "ui_library": "Biblioteca UI", + "layout": "Lingua e layout", + "choose_language": "Scegli lingua" + }, + "dashboard": { + "title": "Dashboard", + "heading": "Panoramica della videosorveglianza", + "number_of_days": "Numero di giorni", + "total_recordings": "Registrazioni totali", + "connected": "Connesso", + "not_connected": "Non connesso", + "offline_mode": "Modalità offline", + "latest_events": "Ultimi eventi", + "configure_connection": "Configura connessione", + "no_events": "Nessun evento", + "no_events_description": "Non sono state trovate registrazioni, assicurati che il Kerberos Agent sia configurato correttamente.", + "motion_detected": "Movimento rilevato", + "live_view": "Vista in diretta", + "loading_live_view": "Caricamento vista in diretta", + "loading_live_view_description": "Attendi mentre viene caricata la vista in diretta. Se non l'hai ancora fatto, configura la connessione con la videocamera nelle pagine di impostazione.", + "time": "Ora", + "description": "Descrizione", + "name": "Nome" + }, + "recordings": { + "title": "Registrazioni", + "heading": "Tutte le tue registrazioni in un posto solo", + "search_media": "Cerca video" + }, + "settings": { + "title": "Impostazioni", + "heading": "Panoramica impostazioni videocamera e Agent", + "submenu": { + "all": "All", + "overview": "Panoramica", + "camera": "Videocamera", + "recording": "Registrazione", + "streaming": "Streaming", + "conditions": "Criteri", + "persistence": "Persistenza" + }, + "info": { + "kerberos_hub_demo": "Dai un'occhiata al nostro ambiente demo di Kerberos Hub per vederlo in azione!", + "configuration_updated_success": "La configurazione è stata aggiornata con successo.", + "configuration_updated_error": "Si è verificato un problema durante il salvataggio.", + "verify_hub": "Controllo delle impostazioni di Kerberos Hub.", + "verify_hub_success": "Impostazioni di Kerberos Hub verificate correttamente.", + "verify_hub_error": "Si è verificato un problema durante la verifica delle impostazioni di Kerberos Hub", + "verify_persistence": "Controlla le impostazioni della persistenza.", + "verify_persistence_success": "Impostazioni della persistenza verificate correttamente.", + "verify_persistence_error": "Si è verificato un problema durante la verifica delle impostazioni della persistenza", + "verify_camera": "Controllo delle impostazioni della videocamera.", + "verify_camera_success": "Impostazioni videocamera verificate correttamente.", + "verify_camera_error": "Si è verificato un problema durante la verifica delle impostazioni della videocamera", + "verify_onvif": "Controllo delle impostazioni ONVIF.", + "verify_onvif_success": "Impostazioni ONVIF verificate correttamente.", + "verify_onvif_error": "Si è verificato un problema durante la verifica delle impostazioni ONVIF" + }, + "overview": { + "general": "Generale", + "description_general": "Impostazioni generali del Kerberos Agent", + "key": "Chiave", + "camera_name": "Nome videocamera", + "timezone": "Fuso orario", + "select_timezone": "Seleziona un fuso orario", + "advanced_configuration": "Configurazione avanzata", + "description_advanced_configuration": "Opzioni di configurazione dettagliate per abilitare o disabilitare parti specifiche del Kerberos Agent", + "offline_mode": "Modalità offline", + "description_offline_mode": "Disabilita traffico in uscita" + }, + "camera": { + "camera": "Videocamera", + "description_camera": "Le impostazioni della fotocamera sono necessarie per stabilire una connessione con la videocamera scelta.", + "only_h264": "Al momento sono supportati solo streams RTSP H264.", + "rtsp_url": "Url RTSP", + "rtsp_h264": "Connessione RTSP H264 alla videocamera.", + "sub_rtsp_url": "Sub-url RTSP (per lo streaming in diretta)", + "sub_rtsp_h264": "URL RTSP supplementare della videocamera con risoluzione inferiore per lo streaming in diretta.", + "onvif": "ONVIF", + "description_onvif": "Credenziali per interagire con le funzionalità ONVIF come PTZ o altre funzioni fornite dalla videocamera.", + "onvif_xaddr": "ONVIF xaddr", + "onvif_username": "ONVIF username", + "onvif_password": "ONVIF password", + "verify_connection": "Verifica connessione", + "verify_sub_connection": "Verifica sub-connessione" + }, + "recording": { + "recording": "Registrazione", + "description_recording": "Specificare se effettuare le registrazioni con un'impostazione continua 24/7 oppure basata sulla rilevazione di movimento.", + "continuous_recording": "Registrazione continua", + "description_continuous_recording": "Effettuare registrazioni 24/7 o basate sul movimento.", + "max_duration": "massima durata video (in secondi)", + "description_max_duration": "Durata massima della registrazione.", + "pre_recording": "pre registrazione (buffering dei key frames)", + "description_pre_recording": "Secondi prima del verificarsi di un evento.", + "post_recording": "post registrazione (in)", + "description_post_recording": "Secondi dopo il verificarsi di un evento.", + "threshold": "Soglia di registrazione (in pixel)", + "description_threshold": "Numero di pixel modificati per avviare la registrazione", + "autoclean": "Cancellazione automatica", + "description_autoclean": "Specificare se l'Agente Kerberos può cancellare le registrazioni quando viene raggiunta una specifica capacità di archiviazione (in MB). Questo rimuoverà le registrazioni più vecchie quando la capacità viene raggiunta.", + "autoclean_enable": "Abilita cancellazione automatica", + "autoclean_description_enable": "Rimuovere la registrazione più vecchia al raggiungimento della capacità.", + "autoclean_max_directory_size": "Dimensione massima della cartella (in MB)", + "autoclean_description_max_directory_size": "Dimensione massima in MB delle registrazioni salvate.", + "fragmentedrecordings": "Registrazioni frammentate", + "description_fragmentedrecordings": "Quando le registrazioni sono frammentate, sono adatte ad uno stream HLS. Se attivato, il contenitore MP4 avrà un aspetto leggermente diverso.", + "fragmentedrecordings_enable": "Abilita frammentazione", + "fragmentedrecordings_description_enable": "Per utilizzare gli stream HLS sono necessarie registrazioni frammentate.", + "fragmentedrecordings_duration": "durata frammento", + "fragmentedrecordings_description_duration": "Durata del singolo frammento." + }, + "streaming": { + "stun_turn": "STUN/TURN per WebRTC", + "description_stun_turn": "Per lo streaming in diretta a massima risoluzione viene impiegato WebRTC. Una delle funzionalità chiave è la funzione ICE-candidate, che consente di attraversare il NAT utilizzando i concetti di STUN/TURN.", + "stun_server": "STUN server", + "turn_server": "TURN server", + "turn_username": "Username", + "turn_password": "Password", + "stun_turn_forward": "Inoltro e transcodifica", + "stun_turn_description_forward": "Ottimizzazioni e miglioramenti per la comunicazione TURN/STUN.", + "stun_turn_webrtc": "Inoltro al broker WebRTC", + "stun_turn_description_webrtc": "Inoltro dello stream h264 via MQTT", + "stun_turn_transcode": "Transcodifica stream", + "stun_turn_description_transcode": "Conversione stream in risoluzione inferiore", + "stun_turn_downscale": "Riduzione risoluzione (in % o risoluzione originale)", + "mqtt": "MQTT", + "description_mqtt": "Un broker MQTT è usato per comunicare da", + "description2_mqtt": "al Kerberos Agent, per ottenere, ad esempio, funzionalità di livestreaming o ONVIF (PTZ).", + "mqtt_brokeruri": "Uri Broker", + "mqtt_username": "Username", + "mqtt_password": "Password" + }, + "conditions": { + "timeofinterest": "Periodo di interesse", + "description_timeofinterest": "Effettua registrazioni solamente all'interno di specifici intervalli orari (basato sul fuso orario).", + "timeofinterest_enabled": "Abilitato", + "timeofinterest_description_enabled": "Se abilitato, è possibile specificare una finestra temporale", + "sunday": "Domenica", + "monday": "Lunedì", + "tuesday": "Martedì", + "wednesday": "Mercoledì", + "thursday": "Giovedì", + "friday": "Venerdì", + "saturday": "Sabato", + "externalcondition": "Condizione esterna", + "description_externalcondition": "È possibile attivare o disattivare la dipendenza da un servizio di registrazione esterna.", + "regionofinterest": "Regione di interesse", + "description_regionofinterest": "Definendo una o più regioni, il movimento verrà tracciato solo nelle regioni definite." + }, + "persistence": { + "kerberoshub": "Kerberos Hub", + "description_kerberoshub": "Kerberos Agents can send heartbeats to a central", + "description2_kerberoshub": "installation. Heartbeats and other relevant information are synced to Kerberos Hub to show realtime information about your video landscape.", + "persistence": "Persistence", + "saasoffering": "Kerberos Hub (SAAS offering)", + "description_persistence": "Having the ability to store your recordings is the beginning of everything. You can choose between our", + "description2_persistence": ", or a 3rd party provider", + "select_persistence": "Select a persistence", + "kerberoshub_proxyurl": "Kerberos Hub Proxy URL", + "kerberoshub_description_proxyurl": "The Proxy endpoint for uploading your recordings.", + "kerberoshub_apiurl": "Kerberos Hub API URL", + "kerberoshub_description_apiurl": "The API endpoint for uploading your recordings.", + "kerberoshub_publickey": "Public key", + "kerberoshub_description_publickey": "The public key granted to your Kerberos Hub account.", + "kerberoshub_privatekey": "Private key", + "kerberoshub_description_privatekey": "The private key granted to your Kerberos Hub account.", + "kerberoshub_site": "Site", + "kerberoshub_description_site": "The site ID the Kerberos Agents are belonging to in Kerberos Hub.", + "kerberoshub_region": "Region", + "kerberoshub_description_region": "The region we are storing our recordings in.", + "kerberoshub_bucket": "Bucket", + "kerberoshub_description_bucket": "The bucket we are storing our recordings in.", + "kerberoshub_username": "Username/Directory (should match Kerberos Hub username)", + "kerberoshub_description_username": "The username of your Kerberos Hub account.", + "kerberosvault_apiurl": "Kerberos Vault API URL", + "kerberosvault_description_apiurl": "The Kerberos Vault API", + "kerberosvault_provider": "Provider", + "kerberosvault_description_provider": "The provider to which your recordings will be send.", + "kerberosvault_directory": "Directory (should match Kerberos Hub username)", + "kerberosvault_description_directory": "Sub directory the recordings will be stored in your provider.", + "kerberosvault_accesskey": "Access key", + "kerberosvault_description_accesskey": "The access key of your Kerberos Vault account.", + "kerberosvault_secretkey": "Secret key", + "kerberosvault_description_secretkey": "The secret key of your Kerberos Vault account.", + "dropbox_directory": "Cartella", + "dropbox_description_directory": "La sottcartella dell'account Dropbox in cui saranno salvate le registrazioni.", + "dropbox_accesstoken": "Access token", + "dropbox_description_accesstoken": "L'access token del tuo account/app Dropbox.", + "verify_connection": "Verifica connessione", + "remove_after_upload": "Una volta che le registrazioni sono state caricate su una certa persistenza, si potrebbe volerle rimuovere dall'agente Kerberos locale.", + "remove_after_upload_description": "Cancella le registrazioni dopo che sono state caricate correttamente.", + "remove_after_upload_enabled": "Abilita cancellazione al caricamento" + } + } +} \ No newline at end of file From ba6cdef9d5c6cd3c11927f818e18aa92c917bd87 Mon Sep 17 00:00:00 2001 From: LeoSpyke <44040856+LeoSpyke@users.noreply.github.com> Date: Fri, 15 Sep 2023 08:17:12 +0000 Subject: [PATCH 51/80] i18n(it): translate persistence and bugfix --- ui/public/locales/it/translation.json | 74 +++++++++++++-------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/ui/public/locales/it/translation.json b/ui/public/locales/it/translation.json index 126fdb2a..122ec398 100644 --- a/ui/public/locales/it/translation.json +++ b/ui/public/locales/it/translation.json @@ -68,10 +68,10 @@ "verify_persistence": "Controlla le impostazioni della persistenza.", "verify_persistence_success": "Impostazioni della persistenza verificate correttamente.", "verify_persistence_error": "Si è verificato un problema durante la verifica delle impostazioni della persistenza", - "verify_camera": "Controllo delle impostazioni della videocamera.", + "verify_camera": "Controlla le impostazioni della videocamera.", "verify_camera_success": "Impostazioni videocamera verificate correttamente.", "verify_camera_error": "Si è verificato un problema durante la verifica delle impostazioni della videocamera", - "verify_onvif": "Controllo delle impostazioni ONVIF.", + "verify_onvif": "Controlla le impostazioni ONVIF.", "verify_onvif_success": "Impostazioni ONVIF verificate correttamente.", "verify_onvif_error": "Si è verificato un problema durante la verifica delle impostazioni ONVIF" }, @@ -131,7 +131,7 @@ }, "streaming": { "stun_turn": "STUN/TURN per WebRTC", - "description_stun_turn": "Per lo streaming in diretta a massima risoluzione viene impiegato WebRTC. Una delle funzionalità chiave è la funzione ICE-candidate, che consente di attraversare il NAT utilizzando i concetti di STUN/TURN.", + "description_stun_turn": "Per lo streaming in diretta a massima risoluzione viene impiegato WebRTC. Una delle sue funzionalità chiave è la ICE-candidate, che consente di attraversare il NAT utilizzando i concetti di STUN/TURN.", "stun_server": "STUN server", "turn_server": "TURN server", "turn_username": "Username", @@ -141,8 +141,8 @@ "stun_turn_webrtc": "Inoltro al broker WebRTC", "stun_turn_description_webrtc": "Inoltro dello stream h264 via MQTT", "stun_turn_transcode": "Transcodifica stream", - "stun_turn_description_transcode": "Conversione stream in risoluzione inferiore", - "stun_turn_downscale": "Riduzione risoluzione (in % o risoluzione originale)", + "stun_turn_description_transcode": "Conversione dello stream in una risoluzione inferiore", + "stun_turn_downscale": "Riduzione della risoluzione (in % o risoluzione originale)", "mqtt": "MQTT", "description_mqtt": "Un broker MQTT è usato per comunicare da", "description2_mqtt": "al Kerberos Agent, per ottenere, ad esempio, funzionalità di livestreaming o ONVIF (PTZ).", @@ -163,51 +163,51 @@ "friday": "Venerdì", "saturday": "Sabato", "externalcondition": "Condizione esterna", - "description_externalcondition": "È possibile attivare o disattivare la dipendenza da un servizio di registrazione esterna.", + "description_externalcondition": "È possibile attivare o disattivare la dipendenza da un servizio esterno di registrazione.", "regionofinterest": "Regione di interesse", - "description_regionofinterest": "Definendo una o più regioni, il movimento verrà tracciato solo nelle regioni definite." + "description_regionofinterest": "Definendo una o più regioni, il movimento verrà tracciato solo al loro interno." }, "persistence": { "kerberoshub": "Kerberos Hub", "description_kerberoshub": "Kerberos Agents can send heartbeats to a central", "description2_kerberoshub": "installation. Heartbeats and other relevant information are synced to Kerberos Hub to show realtime information about your video landscape.", - "persistence": "Persistence", - "saasoffering": "Kerberos Hub (SAAS offering)", - "description_persistence": "Having the ability to store your recordings is the beginning of everything. You can choose between our", - "description2_persistence": ", or a 3rd party provider", - "select_persistence": "Select a persistence", - "kerberoshub_proxyurl": "Kerberos Hub Proxy URL", - "kerberoshub_description_proxyurl": "The Proxy endpoint for uploading your recordings.", - "kerberoshub_apiurl": "Kerberos Hub API URL", - "kerberoshub_description_apiurl": "The API endpoint for uploading your recordings.", - "kerberoshub_publickey": "Public key", - "kerberoshub_description_publickey": "The public key granted to your Kerberos Hub account.", - "kerberoshub_privatekey": "Private key", - "kerberoshub_description_privatekey": "The private key granted to your Kerberos Hub account.", - "kerberoshub_site": "Site", - "kerberoshub_description_site": "The site ID the Kerberos Agents are belonging to in Kerberos Hub.", - "kerberoshub_region": "Region", - "kerberoshub_description_region": "The region we are storing our recordings in.", + "persistence": "Persistenza", + "saasoffering": "Kerberos Hub (soluzione SAAS)", + "description_persistence": "La possibilità di poter salvare le tue registrazioni rappresenta l'inizio di tutto. Puoi scegliere tra il nostro", + "description2_persistence": ", oppure un provider di terze parti", + "select_persistence": "Seleziona una persistenza", + "kerberoshub_proxyurl": "URL Proxy Kerberos Hub", + "kerberoshub_description_proxyurl": "Endpoint del Proxy per l'upload delle registrazioni.", + "kerberoshub_apiurl": "API URL Kerberos Hub", + "kerberoshub_description_apiurl": "Endpoint API per l'upload delle registrazioni.", + "kerberoshub_publickey": "Chiave pubblica", + "kerberoshub_description_publickey": "Chiave pubblica dell'account Kerberos Hub.", + "kerberoshub_privatekey": "Chiave privata", + "kerberoshub_description_privatekey": "Chiave privata dell'account Kerberos Hub.", + "kerberoshub_site": "Sito", + "kerberoshub_description_site": "ID del sito a cui appartengono i Kerberos Agents in Kerberos Hub.", + "kerberoshub_region": "Regione", + "kerberoshub_description_region": "La regione in cui memorizziamo le registrazioni.", "kerberoshub_bucket": "Bucket", - "kerberoshub_description_bucket": "The bucket we are storing our recordings in.", - "kerberoshub_username": "Username/Directory (should match Kerberos Hub username)", - "kerberoshub_description_username": "The username of your Kerberos Hub account.", - "kerberosvault_apiurl": "Kerberos Vault API URL", - "kerberosvault_description_apiurl": "The Kerberos Vault API", + "kerberoshub_description_bucket": "Bucket in cui memorizziamo le registrazioni.", + "kerberoshub_username": "Username/Cartella (dovrebbe essere uguale allo username di Kerberos Hub)", + "kerberoshub_description_username": "Username del tuo account Kerberos Hub.", + "kerberosvault_apiurl": "API URL Kerberos Vault", + "kerberosvault_description_apiurl": "API di Kerberos Vault", "kerberosvault_provider": "Provider", - "kerberosvault_description_provider": "The provider to which your recordings will be send.", - "kerberosvault_directory": "Directory (should match Kerberos Hub username)", - "kerberosvault_description_directory": "Sub directory the recordings will be stored in your provider.", + "kerberosvault_description_provider": "Provider al quale saranno inviate le registrazioni.", + "kerberosvault_directory": "Cartella (dovrebbe essere uguale allo username di Kerberos Hub)", + "kerberosvault_description_directory": "Sotto cartella in cui saranno memorizzate le tue registrazioni nel provider.", "kerberosvault_accesskey": "Access key", - "kerberosvault_description_accesskey": "The access key of your Kerberos Vault account.", + "kerberosvault_description_accesskey": "Access key del tuo account Kerberos Vault.", "kerberosvault_secretkey": "Secret key", - "kerberosvault_description_secretkey": "The secret key of your Kerberos Vault account.", + "kerberosvault_description_secretkey": "Secret key del tuo account Kerberos Vault.", "dropbox_directory": "Cartella", - "dropbox_description_directory": "La sottcartella dell'account Dropbox in cui saranno salvate le registrazioni.", + "dropbox_description_directory": "Sottcartella dell'account Dropbox in cui saranno salvate le registrazioni.", "dropbox_accesstoken": "Access token", - "dropbox_description_accesstoken": "L'access token del tuo account/app Dropbox.", + "dropbox_description_accesstoken": "Access token del tuo account/app Dropbox.", "verify_connection": "Verifica connessione", - "remove_after_upload": "Una volta che le registrazioni sono state caricate su una certa persistenza, si potrebbe volerle rimuovere dall'agente Kerberos locale.", + "remove_after_upload": "Una volta che le registrazioni sono state caricate su una certa persistenza, si potrebbe volerle rimuovere dal Kerberos Agent locale.", "remove_after_upload_description": "Cancella le registrazioni dopo che sono state caricate correttamente.", "remove_after_upload_enabled": "Abilita cancellazione al caricamento" } From 839185dac8f0ce9a3ebd3126785a37f8b3e4b989 Mon Sep 17 00:00:00 2001 From: ABHISHEK FADAKE <31249309+fadkeabhi@users.noreply.github.com> Date: Tue, 3 Oct 2023 19:24:47 +0530 Subject: [PATCH 52/80] Added transaltions for hindi language --- ui/public/locales/hi/translation.json | 215 ++++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 ui/public/locales/hi/translation.json diff --git a/ui/public/locales/hi/translation.json b/ui/public/locales/hi/translation.json new file mode 100644 index 00000000..edd484f9 --- /dev/null +++ b/ui/public/locales/hi/translation.json @@ -0,0 +1,215 @@ +{ + "breadcrumb": { + "watch_recordings": "रिकॉर्डिंग देखें", + "configure": "कॉन्फ़िगर" + }, + "buttons": { + "save": "सेव्ह", + "verify_connection": "कनेक्शन चेक करें" + }, + "navigation": { + "profile": "प्रोफ़ाइल", + "admin": "व्यवस्थापक", + "management": "प्रबंध", + "dashboard": "डैशबोर्ड", + "recordings": "रिकॉर्डिंग", + "settings": "सेटिंग", + "help_support": "मदद", + "swagger": "स्वैगर एपीआई", + "documentation": "प्रलेखन", + "ui_library": "यूआई लाइब्रेरी", + "layout": "भाषा और लेआऊट", + "choose_language": "भाषा चुनें" + }, + "dashboard": { + "title": "डैशबोर्ड", + "heading": "आपके वीडियो निगरानी का अवलोकन", + "number_of_days": "दिनों की संख्या", + "total_recordings": "कुल रिकॉर्डिंग", + "connected": "जुड़े है", + "not_connected": "जुड़े नहीं हैं", + "offline_mode": "ऑफ़लाइन मोड", + "latest_events": "नवीनतम घटनाए", + "configure_connection": "कनेक्शन कॉन्फ़िगर करें", + "no_events": "कोई घटनाए नहीं", + "no_events_description": "कोई रिकॉर्डिंग नहीं मिली, सुनिश्चित करें कि आपका Kerberos एजेंट ठीक से कॉन्फ़िगर किया गया है।", + "motion_detected": "मोशन का पता चला", + "live_view": "लाइव देखें", + "loading_live_view": "लाइव दृश्य लोड हो रहा है", + "loading_live_view_description": "रुकिए हम आपका लाइव व्यू यहां लोड कर रहे हैं। ", + "time": "समय", + "description": "विवरण", + "name": "नाम" + }, + "recordings": { + "title": "रिकॉर्डिंग", + "heading": "आपकी सभी रिकॉर्डिंग एक ही स्थान पर", + "search_media": "मीडिया खोजें" + }, + "settings": { + "title": "सेटिंग", + "heading": "अपना कैमरा ऑनबोर्ड करें", + "submenu": { + "all": "सभी", + "overview": "अवलोकन", + "camera": "कैमरा", + "recording": "रिकॉर्डिंग", + "streaming": "स्ट्रीमिंग", + "conditions": "कंडीशन", + "persistence": "परसीस्टेन्स" + }, + "info": { + "kerberos_hub_demo": "Kerberos हब को क्रियाशील देखने के लिए हमारे Kerberos हब डेमो पर एक नज़र डालें!", + "configuration_updated_success": "आपका कॉन्फ़िगरेशन सफलतापूर्वक अपडेट कर दिया गया है.", + "configuration_updated_error": "सहेजते समय कुछ ग़लत हो गया.", + "verify_hub": "अपनी Kerberos हब सेटिंग सत्यापित की जा रही है।", + "verify_hub_success": "कर्बेरोस हब सेटिंग्स सफलतापूर्वक सत्यापित हो गईं।", + "verify_hub_error": "कर्बरोस हब का सत्यापन करते समय कुछ गलत हो गया", + "verify_persistence": "आपकी दृढ़ता सेटिंग सत्यापित की जा रही है.", + "verify_persistence_success": "दृढ़ता सेटिंग्स सफलतापूर्वक सत्यापित की गई हैं।", + "verify_persistence_error": "दृढ़ता की पुष्टि करते समय कुछ गलत हो गया", + "verify_camera": "अपनी कैमरा सेटिंग सत्यापित कर रहा है।", + "verify_camera_success": "कैमरा सेटिंग्स सफलतापूर्वक सत्यापित हो गईं।", + "verify_camera_error": "कैमरा सेटिंग्स सत्यापित करते समय कुछ गलत हो गया", + "verify_onvif": "अपनी ONVIF सेटिंग्स सत्यापित कर रहा हूँ।", + "verify_onvif_success": "ONVIF सेटिंग्स सफलतापूर्वक सत्यापित हो गईं।", + "verify_onvif_error": "ONVIF सेटिंग्स सत्यापित करते समय कुछ गलत हो गया" + }, + "overview": { + "general": "सामान्य", + "description_general": "आपके Kerberos एजेंट के लिए सामान्य सेटिंग्स", + "key": "की", + "camera_name": "कैमरे का नाम", + "timezone": "समय क्षेत्र", + "select_timezone": "समयक्षेत्र चुनें", + "advanced_configuration": "एडवांस कॉन्फ़िगरेशन", + "description_advanced_configuration": "Kerberos एजेंट के विशिष्ट भागों को सक्षम या अक्षम करने के लिए विस्तृत कॉन्फ़िगरेशन विकल्प", + "offline_mode": "ऑफ़लाइन मोड", + "description_offline_mode": "सभी आउटगोइंग ट्रैफ़िक अक्षम करें" + }, + "camera": { + "camera": "कैमरा", + "description_camera": "आपकी पसंद के कैमरे से कनेक्शन बनाने के लिए कैमरा सेटिंग्स की आवश्यकता होती है।", + "only_h264": "वर्तमान में केवल H264 RTSP स्ट्रीम समर्थित हैं।", + "rtsp_url": "RTSP URL", + "rtsp_h264": "आपके कैमरे से H264 RTSP कनेक्शन।", + "sub_rtsp_url": "दुसरी RTSP URL (लाइवस्ट्रीमिंग के लिए प्रयुक्त)", + "sub_rtsp_h264": "आपके कैमरे के कम रिज़ॉल्यूशन के लिए एक दुसरी RTSP कनेक्शन।", + "onvif": "ONVIF", + "description_onvif": "ONVIF क्षमताओं के साथ संचार करने के लिए क्रेडेन्शियल। ", + "onvif_xaddr": "ONVIF xaddr", + "onvif_username": "ONVIF उपयोक्तानाम", + "onvif_password": "ओएनवीआईएफ पासवर्ड", + "verify_connection": "कनेक्शन सत्यापित करें", + "verify_sub_connection": "उप कनेक्शन सत्यापित करें" + }, + "recording": { + "recording": "रिकॉर्डिंग", + "description_recording": "निर्दिष्ट करें कि आप रिकॉर्डिंग कैसे करना चाहेंगे. ", + "continuous_recording": "लगातार रिकॉर्डिंग", + "description_continuous_recording": "24/7 या गति आधारित रिकॉर्डिंग करें।", + "max_duration": "अधिकतम वीडियो अवधि (सेकंड)", + "description_max_duration": "रिकॉर्डिंग की अधिकतम अवधि.", + "pre_recording": "पूर्व रिकॉर्डिंग (key frames buffered)", + "description_pre_recording": "किसी घटना के घटित होने से सेकंड पहले.", + "post_recording": "पोस्ट रिकॉर्डिंग (सेकंड)", + "description_post_recording": "किसी घटना के घटित होने के सेकंड बाद.", + "threshold": "रिकॉर्डिंग सीमा (पिक्सेल)", + "description_threshold": "रिकॉर्ड करने के लिए पिक्सेल की संख्या बदल दी गई", + "autoclean": "अपने आप क्लीन करे", + "description_autoclean": "निर्दिष्ट करें कि क्या Kerberos एजेंट एक विशिष्ट क्षमता (एमबी) तक पहुंचने पर रिकॉर्डिंग को क्लीन कर सकता है। ", + "autoclean_enable": "स्वतः क्लीन सक्षम करें", + "autoclean_description_enable": "क्षमता पूरी होने पर सबसे पुरानी रिकॉर्डिंग हटा दें।", + "autoclean_max_directory_size": "अधिकतम डिरेक्टरी आकार (एमबी)", + "autoclean_description_max_directory_size": "संग्रहीत रिकॉर्डिंग की अधिकतम एमबी।", + "fragmentedrecordings": "खंडित रिकॉर्डिंग", + "description_fragmentedrecordings": "जब रिकॉर्डिंग खंडित हो जाती हैं तो वे HLS स्ट्रीम के लिए उपयुक्त होती हैं। ", + "fragmentedrecordings_enable": "विखंडन सक्षम करें", + "fragmentedrecordings_description_enable": "HLS के लिए खंडित रिकॉर्डिंग आवश्यक हैं।", + "fragmentedrecordings_duration": "खंड अवधि", + "fragmentedrecordings_description_duration": "एक टुकड़े की अवधि." + }, + "streaming": { + "stun_turn": "WebRTC के लिए STUN/TURN", + "description_stun_turn": "पूर्ण-रिज़ॉल्यूशन लाइवस्ट्रीमिंग के लिए हम WebRTC की अवधारणा का उपयोग करते हैं। ", + "stun_server": "STUN server", + "turn_server": "TURN server", + "turn_username": "उपयोगकर्ता नाम", + "turn_password": "पासवर्ड", + "stun_turn_forward": "फोरवर्डींग और ट्रांसकोडिंग", + "stun_turn_description_forward": "TURN/STUN संचार के लिए अनुकूलन और संवर्द्धन।", + "stun_turn_webrtc": "WebRTC ब्रोकर को फोरवर्डींग किया जा रहा है", + "stun_turn_description_webrtc": "MQTT के माध्यम से h264 स्ट्रीम को फोरवर्डींग करें", + "stun_turn_transcode": "ट्रांसकोड स्ट्रीम", + "stun_turn_description_transcode": "स्ट्रीम को कम रिज़ॉल्यूशन में बदलें", + "stun_turn_downscale": "डाउनस्केल रिज़ॉल्यूशन (% या मूल रिज़ॉल्यूशन में)", + "mqtt": "MQTT", + "description_mqtt": "एक MQTT ब्रोकर का उपयोग काम्युनिकेट करने के लिए किया जाता है", + "description2_mqtt": "उदाहरण के लिए लाइवस्ट्रीमिंग या ONVIF (PTZ) क्षमताओं को प्राप्त करने के लिए Kerberos एजेंट को।", + "mqtt_brokeruri": "Broker Uri", + "mqtt_username": "उपयोगकर्ता नाम", + "mqtt_password": "पासवर्ड" + }, + "conditions": { + "timeofinterest": "रुचि का समय", + "description_timeofinterest": "रिकॉर्डिंग केवल विशिष्ट समय अंतराल (समय क्षेत्र के आधार पर) के बीच करें।", + "timeofinterest_enabled": "सक्रिय", + "timeofinterest_description_enabled": "सक्षम होने पर आप समय विंडो निर्दिष्ट कर सकते हैं", + "sunday": "रविवार", + "monday": "सोमवार", + "tuesday": "मंगलवार", + "wednesday": "बुधवार", + "thursday": "गुरुवार", + "friday": "शुक्रवार", + "saturday": "शनिवार", + "externalcondition": "बाह्य स्थिति", + "description_externalcondition": "बाहरी वेबसेवा के आधार पर रिकॉर्डिंग को सक्षम या अक्षम किया जा सकता है।", + "regionofinterest": "दिलचस्पी के क्षेत्र", + "description_regionofinterest": "एक या अधिक क्षेत्रों को परिभाषित करने से, गति को केवल आपके द्वारा परिभाषित क्षेत्रों में ही ट्रैक किया जाएगा।" + }, + "persistence": { + "kerberoshub": "Kerberos हब", + "description_kerberoshub": "Kerberos एजेंट दिल की धड़कनों को सेंट्रल में भेज सकते हैं", + "description2_kerberoshub": "आपके वीडियो परिदृश्य के बारे में वास्तविक समय की जानकारी दिखाने के लिए दिल की धड़कन और अन्य प्रासंगिक जानकारी को केर्बरोस हब से समन्वयित किया जाता है।", + "persistence": "अटलता", + "saasoffering": "Kerberos हब (SAAS offering)", + "description_persistence": "अपनी रिकॉर्डिंग संग्रहीत करने की क्षमता होना हर चीज़ की शुरुआत है। ", + "description2_persistence": ", या कोई तृतीय पक्ष प्रदाता", + "select_persistence": "एक दृढ़ता का चयन करें", + "kerberoshub_proxyurl": "Kerberos हब प्रॉक्सी URL", + "kerberoshub_description_proxyurl": "आपकी रिकॉर्डिंग अपलोड करने के लिए प्रॉक्सी एंडपॉइंट।", + "kerberoshub_apiurl": "Kerberos हब API URL", + "kerberoshub_description_apiurl": "आपकी रिकॉर्डिंग अपलोड करने के लिए API एंडपॉइंट।", + "kerberoshub_publickey": "सार्वजनिक की", + "kerberoshub_description_publickey": "आपके Kerberos हब खाते को दी गई सार्वजनिक की।", + "kerberoshub_privatekey": "निजी चाबी", + "kerberoshub_description_privatekey": "आपके Kerberos हब खाते को दी गई निजी की।", + "kerberoshub_site": "साइट", + "kerberoshub_description_site": "साइट आईडी Kerberos एजेंट Kerberos हब से संबंधित हैं।", + "kerberoshub_region": "क्षेत्र", + "kerberoshub_description_region": "जिस क्षेत्र में हम अपनी रिकॉर्डिंग संग्रहीत कर रहे हैं।", + "kerberoshub_bucket": "बकेट", + "kerberoshub_description_bucket": "जिस बकेट में हम अपनी रिकॉर्डिंग संग्रहीत कर रहे हैं।", + "kerberoshub_username": "उपयोगकर्ता नाम/निर्देशिका (Kerberos हब उपयोगकर्ता नाम से मेल खाना चाहिए)", + "kerberoshub_description_username": "आपके Kerberos हब खाते का उपयोगकर्ता नाम।", + "kerberosvault_apiurl": "Kerberos वॉल्ट API URL", + "kerberosvault_description_apiurl": "कर्बरोस वॉल्ट एपीआई", + "kerberosvault_provider": "प्रदाता", + "kerberosvault_description_provider": "वह प्रदाता जिसे आपकी रिकॉर्डिंग भेजी जाएगी।", + "kerberosvault_directory": "निर्देशिका (Kerberos हब उपयोगकर्ता नाम से मेल खाना चाहिए)", + "kerberosvault_description_directory": "उप निर्देशिका रिकॉर्डिंग आपके प्रदाता में संग्रहीत की जाएगी।", + "kerberosvault_accesskey": "प्रवेश की चाबी", + "kerberosvault_description_accesskey": "आपके Kerberos वॉल्ट खाते की एक्सेस की।", + "kerberosvault_secretkey": "गुप्त की", + "kerberosvault_description_secretkey": "आपके कर्बेरोस वॉल्ट खाते की गुप्त की।", + "dropbox_directory": "निर्देशिका", + "dropbox_description_directory": "वह उप निर्देशिका जहां रिकॉर्डिंग आपके ड्रॉपबॉक्स खाते में संग्रहीत की जाएगी।", + "dropbox_accesstoken": "एक्सेस टोकन", + "dropbox_description_accesstoken": "आपके ड्रॉपबॉक्स खाते/ऐप का एक्सेस टोकन।", + "verify_connection": "कनेक्शन सत्यापित करें", + "remove_after_upload": "एक बार जब रिकॉर्डिंग कुछ दृढ़ता पर अपलोड हो जाती है, तो हो सकता है कि आप उन्हें स्थानीय Kerberos एजेंट से हटाना चाहें।", + "remove_after_upload_description": "सफलतापूर्वक अपलोड होने के बाद रिकॉर्डिंग हटा दें।", + "remove_after_upload_enabled": "अपलोड पर डिलीट सक्षम" + } + } +} From 0c70ab6158ccfb692d0f51c8e8a13657e2f4269e Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 20 Oct 2023 13:31:02 +0200 Subject: [PATCH 53/80] Refactor MQTT endpoints + Introduce End-to-End encryption using RSA and AES keys + finetune PTZ --- README.md | 4 + machinery/data/config/config.json | 3 +- machinery/src/cloud/Cloud.go | 51 ++-- machinery/src/components/Kerberos.go | 2 +- machinery/src/computervision/main.go | 18 +- machinery/src/config/main.go | 18 ++ machinery/src/encryption/main.go | 148 ++++++++++ machinery/src/models/Communication.go | 2 +- machinery/src/models/Config.go | 9 + machinery/src/models/MQTT.go | 151 ++++++++++ machinery/src/onvif/main.go | 22 +- machinery/src/routers/mqtt/main.go | 397 ++++++++++---------------- machinery/src/webrtc/main.go | 88 +++--- 13 files changed, 610 insertions(+), 303 deletions(-) create mode 100644 machinery/src/encryption/main.go create mode 100644 machinery/src/models/MQTT.go diff --git a/README.md b/README.md index b016b9b9..058373a1 100644 --- a/README.md +++ b/README.md @@ -227,6 +227,10 @@ Next to attaching the configuration file, it is also possible to override the co | `AGENT_KERBEROSVAULT_DIRECTORY` | The directory, in the provider, where the recordings will be stored in. | "" | | `AGENT_DROPBOX_ACCESS_TOKEN` | The Access Token from your Dropbox app, that is used to leverage the Dropbox SDK. | "" | | `AGENT_DROPBOX_DIRECTORY` | The directory, in the provider, where the recordings will be stored in. | "" | +| `AGENT_ENCRYPTION` | Enable 'true' or disable 'false' end-to-end encryption through MQTT (recordings will follow). | "false" | +| `AGENT_ENCRYPTION_FINGERPRINT` | The fingerprint of the keypair (public/private keys), so you know which one to use. | "" | +| `AGENT_ENCRYPTION_PRIVATE_KEY` | The private key (assymetric/RSA) to decryptand sign requests send over MQTT. | "" | +| `AGENT_ENCRYPTION_SYMMETRIC_KEY` | The symmetric key (AES) to encrypt and decrypt request send over MQTT. | "" | ## Contribute with Codespaces diff --git a/machinery/data/config/config.json b/machinery/data/config/config.json index 980cc319..27bc12c8 100644 --- a/machinery/data/config/config.json +++ b/machinery/data/config/config.json @@ -111,5 +111,6 @@ "hub_key": "", "hub_private_key": "", "hub_site": "", - "condition_uri": "" + "condition_uri": "", + "encryption": {} } diff --git a/machinery/src/cloud/Cloud.go b/machinery/src/cloud/Cloud.go index bf0d8810..b2dc551c 100644 --- a/machinery/src/cloud/Cloud.go +++ b/machinery/src/cloud/Cloud.go @@ -458,19 +458,17 @@ func HandleLiveStreamSD(livestreamCursor *pubsub.QueueCursor, configuration *mod // Allocate frame frame := ffmpeg.AllocVideoFrame() - key := "" + hubKey := "" if config.Cloud == "s3" && config.S3 != nil && config.S3.Publickey != "" { - key = config.S3.Publickey + hubKey = config.S3.Publickey } else if config.Cloud == "kstorage" && config.KStorage != nil && config.KStorage.CloudKey != "" { - key = config.KStorage.CloudKey + hubKey = config.KStorage.CloudKey } // This is the new way ;) if config.HubKey != "" { - key = config.HubKey + hubKey = config.HubKey } - topic := "kerberos/" + key + "/device/" + config.Key + "/live" - lastLivestreamRequest := int64(0) var cursorError error @@ -491,7 +489,27 @@ func HandleLiveStreamSD(livestreamCursor *pubsub.QueueCursor, configuration *mod continue } log.Log.Info("HandleLiveStreamSD: Sending base64 encoded images to MQTT.") - sendImage(frame, topic, mqttClient, pkt, decoder, decoderMutex) + _, err := computervision.GetRawImage(frame, pkt, decoder, decoderMutex) + if err == nil { + bytes, _ := computervision.ImageToBytes(&frame.Image) + encoded := base64.StdEncoding.EncodeToString(bytes) + + valueMap := make(map[string]interface{}) + valueMap["image"] = encoded + message := models.Message{ + Payload: models.Payload{ + Action: "receive-sd-stream", + DeviceId: configuration.Config.Key, + Value: valueMap, + }, + } + payload, err := models.PackageMQTTMessage(configuration, message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while sending acknowledge config to hub: " + string(payload)) + } + } } // Cleanup the frame. @@ -505,15 +523,6 @@ func HandleLiveStreamSD(livestreamCursor *pubsub.QueueCursor, configuration *mod log.Log.Debug("HandleLiveStreamSD: finished") } -func sendImage(frame *ffmpeg.VideoFrame, topic string, mqttClient mqtt.Client, pkt av.Packet, decoder *ffmpeg.VideoDecoder, decoderMutex *sync.Mutex) { - _, err := computervision.GetRawImage(frame, pkt, decoder, decoderMutex) - if err == nil { - bytes, _ := computervision.ImageToBytes(&frame.Image) - encoded := base64.StdEncoding.EncodeToString(bytes) - mqttClient.Publish(topic, 0, false, encoded) - } -} - func HandleLiveStreamHD(livestreamCursor *pubsub.QueueCursor, configuration *models.Configuration, communication *models.Communication, mqttClient mqtt.Client, codecs []av.CodecData, decoder *ffmpeg.VideoDecoder, decoderMutex *sync.Mutex) { config := configuration.Config @@ -532,25 +541,23 @@ func HandleLiveStreamHD(livestreamCursor *pubsub.QueueCursor, configuration *mod if config.Capture.ForwardWebRTC == "true" { // We get a request with an offer, but we'll forward it. - for m := range communication.HandleLiveHDHandshake { + /*for m := range communication.HandleLiveHDHandshake { // Forward SDP m.CloudKey = config.Key request, err := json.Marshal(m) if err == nil { mqttClient.Publish("kerberos/webrtc/request", 2, false, request) } - } + }*/ } else { log.Log.Info("HandleLiveStreamHD: Waiting for peer connections.") for handshake := range communication.HandleLiveHDHandshake { log.Log.Info("HandleLiveStreamHD: setting up a peer connection.") - key := config.Key + "/" + handshake.Cuuid - webrtc.CandidatesMutex.Lock() + key := config.Key + "/" + handshake.SessionID _, ok := webrtc.CandidateArrays[key] if !ok { - webrtc.CandidateArrays[key] = make(chan string, 30) + webrtc.CandidateArrays[key] = make(chan string) } - webrtc.CandidatesMutex.Unlock() webrtc.InitializeWebRTCConnection(configuration, communication, mqttClient, videoTrack, audioTrack, handshake, webrtc.CandidateArrays[key]) } diff --git a/machinery/src/components/Kerberos.go b/machinery/src/components/Kerberos.go index 67956837..947e2d68 100644 --- a/machinery/src/components/Kerberos.go +++ b/machinery/src/components/Kerberos.go @@ -264,7 +264,7 @@ func RunAgent(configDirectory string, configuration *models.Configuration, commu } // Handle livestream HD (high resolution over WEBRTC) - communication.HandleLiveHDHandshake = make(chan models.SDPPayload, 1) + communication.HandleLiveHDHandshake = make(chan models.RequestHDStreamPayload, 1) if subStreamEnabled { livestreamHDCursor := subQueue.Latest() go cloud.HandleLiveStreamHD(livestreamHDCursor, configuration, communication, mqttClient, subStreams, subDecoder, &decoderMutex) diff --git a/machinery/src/computervision/main.go b/machinery/src/computervision/main.go index 5b0f8bbb..664a8a15 100644 --- a/machinery/src/computervision/main.go +++ b/machinery/src/computervision/main.go @@ -169,9 +169,23 @@ func ProcessMotion(motionCursor *pubsub.QueueCursor, configuration *models.Confi if config.Offline != "true" { if mqttClient != nil { if hubKey != "" { - mqttClient.Publish("kerberos/"+hubKey+"/device/"+deviceKey+"/motion", 2, false, "motion") + message := models.Message{ + Payload: models.Payload{ + Action: "motion", + DeviceId: configuration.Config.Key, + Value: map[string]interface{}{ + "timestamp": time.Now().Unix(), + }, + }, + } + payload, err := models.PackageMQTTMessage(configuration, message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("ProcessMotion: failed to package MQTT message: " + err.Error()) + } } else { - mqttClient.Publish("kerberos/device/"+deviceKey+"/motion", 2, false, "motion") + mqttClient.Publish("kerberos/agent/"+deviceKey, 2, false, "motion") } } } diff --git a/machinery/src/config/main.go b/machinery/src/config/main.go index dc5805e9..03b6bda4 100644 --- a/machinery/src/config/main.go +++ b/machinery/src/config/main.go @@ -461,6 +461,24 @@ func OverrideWithEnvironmentVariables(configuration *models.Configuration) { case "AGENT_DROPBOX_DIRECTORY": configuration.Config.Dropbox.Directory = value break + + /* When encryption is enabled */ + case "AGENT_ENCRYPTION": + if value == "true" { + configuration.Config.Encryption.Enabled = true + } else { + configuration.Config.Encryption.Enabled = false + } + break + case "AGENT_ENCRYPTION_FINGERPRINT": + configuration.Config.Encryption.Fingerprint = value + break + case "AGENT_ENCRYPTION_PRIVATE_KEY": + configuration.Config.Encryption.PrivateKey = value + break + case "AGENT_ENCRYPTION_SYMMETRIC_KEY": + configuration.Config.Encryption.SymmetricKey = value + break } } } diff --git a/machinery/src/encryption/main.go b/machinery/src/encryption/main.go new file mode 100644 index 00000000..6713fb95 --- /dev/null +++ b/machinery/src/encryption/main.go @@ -0,0 +1,148 @@ +package encryption + +import ( + "bytes" + "crypto" + "crypto/aes" + "crypto/cipher" + "crypto/md5" + "crypto/rand" + "crypto/rsa" + "crypto/sha256" + "encoding/base64" + "errors" + "hash" +) + +// DecryptWithPrivateKey decrypts data with private key +func DecryptWithPrivateKey(ciphertext string, privateKey *rsa.PrivateKey) ([]byte, error) { + + // decode our encrypted string into cipher bytes + cipheredValue, _ := base64.StdEncoding.DecodeString(ciphertext) + + // decrypt the data + out, err := rsa.DecryptPKCS1v15(nil, privateKey, cipheredValue) + + return out, err +} + +// SignWithPrivateKey signs data with private key +func SignWithPrivateKey(data []byte, privateKey *rsa.PrivateKey) ([]byte, error) { + + // hash the data with sha256 + hashed := sha256.Sum256(data) + + // sign the data + signature, err := rsa.SignPKCS1v15(nil, privateKey, crypto.SHA256, hashed[:]) + + return signature, err +} + +func AesEncrypt(content string, password string) (string, error) { + salt := make([]byte, 8) + _, err := rand.Read(salt) + if err != nil { + return "", err + } + key, iv, err := DefaultEvpKDF([]byte(password), salt) + + block, err := aes.NewCipher(key) + if err != nil { + return "", err + } + + mode := cipher.NewCBCEncrypter(block, iv) + cipherBytes := PKCS5Padding([]byte(content), aes.BlockSize) + mode.CryptBlocks(cipherBytes, cipherBytes) + + data := make([]byte, 16+len(cipherBytes)) + copy(data[:8], []byte("Salted__")) + copy(data[8:16], salt) + copy(data[16:], cipherBytes) + + cipherText := base64.StdEncoding.EncodeToString(data) + return cipherText, nil +} + +func AesDecrypt(cipherText string, password string) (string, error) { + data, err := base64.StdEncoding.DecodeString(cipherText) + if err != nil { + return "", err + } + if string(data[:8]) != "Salted__" { + return "", errors.New("invalid crypto js aes encryption") + } + + salt := data[8:16] + cipherBytes := data[16:] + key, iv, err := DefaultEvpKDF([]byte(password), salt) + if err != nil { + return "", err + } + + block, err := aes.NewCipher(key) + if err != nil { + return "", err + } + + mode := cipher.NewCBCDecrypter(block, iv) + mode.CryptBlocks(cipherBytes, cipherBytes) + + result := PKCS5UnPadding(cipherBytes) + return string(result), nil +} + +// https://stackoverflow.com/questions/27677236/encryption-in-javascript-and-decryption-with-php/27678978#27678978 +// https://github.com/brix/crypto-js/blob/8e6d15bf2e26d6ff0af5277df2604ca12b60a718/src/evpkdf.js#L55 +func EvpKDF(password []byte, salt []byte, keySize int, iterations int, hashAlgorithm string) ([]byte, error) { + var block []byte + var hasher hash.Hash + derivedKeyBytes := make([]byte, 0) + switch hashAlgorithm { + case "md5": + hasher = md5.New() + default: + return []byte{}, errors.New("not implement hasher algorithm") + } + for len(derivedKeyBytes) < keySize*4 { + if len(block) > 0 { + hasher.Write(block) + } + hasher.Write(password) + hasher.Write(salt) + block = hasher.Sum([]byte{}) + hasher.Reset() + + for i := 1; i < iterations; i++ { + hasher.Write(block) + block = hasher.Sum([]byte{}) + hasher.Reset() + } + derivedKeyBytes = append(derivedKeyBytes, block...) + } + return derivedKeyBytes[:keySize*4], nil +} + +func DefaultEvpKDF(password []byte, salt []byte) (key []byte, iv []byte, err error) { + // https://github.com/brix/crypto-js/blob/8e6d15bf2e26d6ff0af5277df2604ca12b60a718/src/cipher-core.js#L775 + keySize := 256 / 32 + ivSize := 128 / 32 + derivedKeyBytes, err := EvpKDF(password, salt, keySize+ivSize, 1, "md5") + if err != nil { + return []byte{}, []byte{}, err + } + return derivedKeyBytes[:keySize*4], derivedKeyBytes[keySize*4:], nil +} + +// https://stackoverflow.com/questions/41579325/golang-how-do-i-decrypt-with-des-cbc-and-pkcs7 +func PKCS5UnPadding(src []byte) []byte { + length := len(src) + unpadding := int(src[length-1]) + return src[:(length - unpadding)] +} + +func PKCS5Padding(src []byte, blockSize int) []byte { + padding := blockSize - len(src)%blockSize + padtext := bytes.Repeat([]byte{byte(padding)}, padding) + return append(src, padtext...) +} diff --git a/machinery/src/models/Communication.go b/machinery/src/models/Communication.go index 93c526d2..8c547464 100644 --- a/machinery/src/models/Communication.go +++ b/machinery/src/models/Communication.go @@ -26,7 +26,7 @@ type Communication struct { HandleHeartBeat chan string HandleLiveSD chan int64 HandleLiveHDKeepalive chan string - HandleLiveHDHandshake chan SDPPayload + HandleLiveHDHandshake chan RequestHDStreamPayload HandleLiveHDPeers chan string HandleONVIF chan OnvifAction IsConfiguring *abool.AtomicBool diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 56de8fdb..397ac85d 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -42,6 +42,7 @@ type Config struct { HubPrivateKey string `json:"hub_private_key" bson:"hub_private_key"` HubSite string `json:"hub_site" bson:"hub_site"` ConditionURI string `json:"condition_uri" bson:"condition_uri"` + Encryption *Encryption `json:"encryption" bson:"encryption"` } // Capture defines which camera type (Id) you are using (IP, USB or Raspberry Pi camera), @@ -157,3 +158,11 @@ type Dropbox struct { AccessToken string `json:"access_token,omitempty" bson:"access_token,omitempty"` Directory string `json:"directory,omitempty" bson:"directory,omitempty"` } + +// Encryption +type Encryption struct { + Enabled bool `json:"enabled" bson:"enabled"` + Fingerprint string `json:"fingerprint" bson:"fingerprint"` + PrivateKey string `json:"private_key" bson:"private_key"` + SymmetricKey string `json:"symmetric_key" bson:"symmetric_key"` +} diff --git a/machinery/src/models/MQTT.go b/machinery/src/models/MQTT.go new file mode 100644 index 00000000..febcff2d --- /dev/null +++ b/machinery/src/models/MQTT.go @@ -0,0 +1,151 @@ +package models + +import ( + "crypto/rsa" + "crypto/x509" + "encoding/base64" + "encoding/json" + "encoding/pem" + "io/ioutil" + "strings" + "time" + + "github.com/gofrs/uuid" + "github.com/kerberos-io/agent/machinery/src/encryption" + "github.com/kerberos-io/agent/machinery/src/log" +) + +func PackageMQTTMessage(configuration *Configuration, msg Message) ([]byte, error) { + // Create a Version 4 UUID. + u2, err := uuid.NewV4() + if err != nil { + log.Log.Error("failed to generate UUID: " + err.Error()) + } + + // We'll generate an unique id, and encrypt / decrypt it using the private key if available. + msg.Mid = u2.String() + msg.DeviceId = msg.Payload.DeviceId + msg.Timestamp = time.Now().Unix() + + // At the moment we don't do the encryption part, but we'll implement it + // once the legacy methods (subscriptions are moved). + msg.Encrypted = false + if configuration.Config.Encryption.Enabled { + msg.Encrypted = true + } + msg.PublicKey = "" + msg.Fingerprint = "" + + if msg.Encrypted { + pload := msg.Payload + + // Pload to base64 + data, err := json.Marshal(pload) + if err != nil { + log.Log.Error("failed to marshal payload: " + err.Error()) + } + + // Encrypt the value + privateKey := configuration.Config.Encryption.PrivateKey + r := strings.NewReader(privateKey) + pemBytes, _ := ioutil.ReadAll(r) + block, _ := pem.Decode(pemBytes) + if block == nil { + log.Log.Error("MQTTListenerHandler: error decoding PEM block containing private key") + } else { + // Parse private key + b := block.Bytes + key, err := x509.ParsePKCS8PrivateKey(b) + if err != nil { + log.Log.Error("MQTTListenerHandler: error parsing private key: " + err.Error()) + } + + // Conver key to *rsa.PrivateKey + rsaKey, _ := key.(*rsa.PrivateKey) + + // Create a 16bit key random + k := configuration.Config.Encryption.SymmetricKey + encryptedValue, err := encryption.AesEncrypt(string(data), k) + + // Sign the encrypted value + signature, err := encryption.SignWithPrivateKey([]byte(encryptedValue), rsaKey) + base64Signature := base64.StdEncoding.EncodeToString(signature) + + msg.Payload.EncryptedValue = encryptedValue + msg.Payload.Signature = base64Signature + msg.Payload.Value = make(map[string]interface{}) + } + } + + payload, err := json.Marshal(msg) + return payload, err +} + +// The message structure which is used to send over +// and receive messages from the MQTT broker +type Message struct { + Mid string `json:"mid"` + DeviceId string `json:"device_id"` + Timestamp int64 `json:"timestamp"` + Encrypted bool `json:"encrypted"` + PublicKey string `json:"public_key"` + Fingerprint string `json:"fingerprint"` + Payload Payload `json:"payload"` +} + +// The payload structure which is used to send over +// and receive messages from the MQTT broker +type Payload struct { + Action string `json:"action"` + DeviceId string `json:"device_id"` + Signature string `json:"signature"` + EncryptedValue string `json:"encrypted_value"` + Value map[string]interface{} `json:"value"` +} + +// We received a recording request, we'll send it to the motion handler. +type RecordPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the recording request. +} + +// We received a preset position request, we'll request it through onvif and send it back. +type PTZPositionPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. +} + +// We received a request config request, we'll fetch the current config and send it back. +type RequestConfigPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. +} + +// We received a update config request, we'll update the current config and send a confirmation back. +type UpdateConfigPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp of the preset request. + Config Config `json:"config"` +} + +// We received a request SD stream request +type RequestSDStreamPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp +} + +// We received a request HD stream request +type RequestHDStreamPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp + HubKey string `json:"hub_key"` // hub key + SessionID string `json:"session_id"` // session id + SessionDescription string `json:"session_description"` // session description +} + +// We received a receive HD candidates request +type ReceiveHDCandidatesPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp + SessionID string `json:"session_id"` // session id + Candidate string `json:"candidate"` // candidate +} + +type NavigatePTZPayload struct { + Timestamp int64 `json:"timestamp"` // timestamp + DeviceId string `json:"device_id"` // device id + Action string `json:"action"` // action +} diff --git a/machinery/src/onvif/main.go b/machinery/src/onvif/main.go index 46c70533..c6b90d06 100644 --- a/machinery/src/onvif/main.go +++ b/machinery/src/onvif/main.go @@ -391,7 +391,7 @@ func ZoomOutCompletely(device *onvif.Device, configuration ptz.GetConfigurations func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsResponse, token xsd.ReferenceToken, pan float64, zoom float64, speed float64, wait time.Duration) error { position, err := GetPosition(device, token) - if position.PanTilt.X >= pan-0.005 && position.PanTilt.X <= pan+0.005 { + if position.PanTilt.X >= pan-0.01 && position.PanTilt.X <= pan+0.01 { } else { @@ -423,9 +423,15 @@ func PanUntilPosition(device *onvif.Device, configuration ptz.GetConfigurationsR // While moving we'll check if we reached the desired position. // or if we overshot the desired position. + + // Break after 3seconds + now := time.Now() for { position, _ := GetPosition(device, token) - if position.PanTilt.X == -1 || position.PanTilt.X == 1 || (directionX > 0 && position.PanTilt.X >= pan) || (directionX < 0 && position.PanTilt.X <= pan) || (position.PanTilt.X >= pan-0.005 && position.PanTilt.X <= pan+0.005) { + if position.PanTilt.X == -1 || position.PanTilt.X == 1 || (directionX > 0 && position.PanTilt.X >= pan) || (directionX < 0 && position.PanTilt.X <= pan) || (position.PanTilt.X >= pan-0.01 && position.PanTilt.X <= pan+0.01) { + break + } + if time.Since(now) > 3*time.Second { break } time.Sleep(wait) @@ -479,11 +485,17 @@ func TiltUntilPosition(device *onvif.Device, configuration ptz.GetConfigurations // While moving we'll check if we reached the desired position. // or if we overshot the desired position. + + // Break after 3seconds + now := time.Now() for { position, _ := GetPosition(device, token) if position.PanTilt.Y == -1 || position.PanTilt.Y == 1 || (directionY > 0 && position.PanTilt.Y >= tilt) || (directionY < 0 && position.PanTilt.Y <= tilt) || (position.PanTilt.Y >= tilt-0.005 && position.PanTilt.Y <= tilt+0.005) { break } + if time.Since(now) > 3*time.Second { + break + } time.Sleep(wait) } @@ -534,11 +546,17 @@ func ZoomUntilPosition(device *onvif.Device, configuration ptz.GetConfigurations // While moving we'll check if we reached the desired position. // or if we overshot the desired position. + + // Break after 3seconds + now := time.Now() for { position, _ := GetPosition(device, token) if position.Zoom.X == -1 || position.Zoom.X == 1 || (directionZ > 0 && position.Zoom.X >= zoom) || (directionZ < 0 && position.Zoom.X <= zoom) || (position.Zoom.X >= zoom-0.005 && position.Zoom.X <= zoom+0.005) { break } + if time.Since(now) > 3*time.Second { + break + } time.Sleep(wait) } diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index 01e320af..b75bf92a 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -1,40 +1,26 @@ package mqtt import ( + "crypto/rsa" + "crypto/x509" "encoding/json" + "encoding/pem" "fmt" + "io/ioutil" "math/rand" "strconv" + "strings" "time" mqtt "github.com/eclipse/paho.mqtt.golang" - "github.com/gofrs/uuid" configService "github.com/kerberos-io/agent/machinery/src/config" + "github.com/kerberos-io/agent/machinery/src/encryption" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" "github.com/kerberos-io/agent/machinery/src/onvif" "github.com/kerberos-io/agent/machinery/src/webrtc" ) -// The message structure which is used to send over -// and receive messages from the MQTT broker -type Message struct { - Mid string `json:"mid"` - Timestamp int64 `json:"timestamp"` - Encrypted bool `json:"encrypted"` - PublicKey string `json:"public_key"` - Fingerprint string `json:"fingerprint"` - Payload Payload `json:"payload"` -} - -// The payload structure which is used to send over -// and receive messages from the MQTT broker -type Payload struct { - Action string `json:"action"` - DeviceId string `json:"device_id"` - Value map[string]interface{} `json:"value"` -} - // We'll cache the MQTT settings to know if we need to reinitialize the MQTT client connection. // If we update the configuration but no new MQTT settings are provided, we don't need to restart it. var PREV_MQTTURI string @@ -56,58 +42,15 @@ func HasMQTTClientModified(configuration *models.Configuration) bool { return false } -func PackageMQTTMessage(msg Message) ([]byte, error) { - // Create a Version 4 UUID. - u2, err := uuid.NewV4() - if err != nil { - log.Log.Error("failed to generate UUID: " + err.Error()) - } - - // We'll generate an unique id, and encrypt / decrypt it using the private key if available. - msg.Mid = u2.String() - msg.Timestamp = time.Now().Unix() - - // At the moment we don't do the encryption part, but we'll implement it - // once the legacy methods (subscriptions are moved). - msg.Encrypted = false - msg.PublicKey = "" - msg.Fingerprint = "" - - payload, err := json.Marshal(msg) - return payload, err -} - // Configuring MQTT to subscribe for various bi-directional messaging // Listen and reply (a generic method to share and retrieve information) // -// !!! NEW METHOD TO COMMUNICATE: only create a single subscription for all communication. -// and an additional publish messages back -// // - [SUBSCRIPTION] kerberos/agent/{hubkey} (hub -> agent) // - [PUBLISH] kerberos/hub/{hubkey} (agent -> hub) // // !!! LEGACY METHODS BELOW, WE SHOULD LEVERAGE THE ABOVE METHOD! -// -// [SUBSCRIPTIONS] -// -// SD Streaming (Base64 JPEGs) -// - kerberos/{hubkey}/device/{devicekey}/request-live: use for polling of SD live streaming (as long the user requests stream, we'll send JPEGs over). -// -// HD Streaming (WebRTC) -// - kerberos/register: use for receiving HD live streaming requests. -// - candidate/cloud: remote ICE candidates are shared over this line. -// - kerberos/webrtc/keepalivehub/{devicekey}: use for polling of HD streaming (as long the user requests stream, we'll send it over). -// - kerberos/webrtc/peers/{devicekey}: we'll keep track of the number of peers (we can have more than 1 concurrent listeners). -// -// ONVIF capabilities -// - kerberos/onvif/{devicekey}: endpoint to execute ONVIF commands such as (PTZ, Zoom, IO, etc) -// // [PUBlISH] // Next to subscribing to various topics, we'll also publish messages to various topics, find a list of available Publish methods. -// -// - kerberos/webrtc/packets/{devicekey}: use for forwarding WebRTC (RTP Packets) over MQTT -> Complex firewall. -// - kerberos/webrtc/keepalive/{devicekey}: use for keeping alive forwarded WebRTC stream -// - {devicekey}/{sessionid}/answer: once a WebRTC request is received through (kerberos/register), we'll draft an answer and send it back to the remote WebRTC client. // - kerberos/{hubkey}/device/{devicekey}/motion: a motion signal func ConfigureMQTT(configDirectory string, configuration *models.Configuration, communication *models.Communication) mqtt.Client { @@ -187,25 +130,6 @@ func ConfigureMQTT(configDirectory string, configuration *models.Configuration, // Create a susbcription for listen and reply MQTTListenerHandler(c, hubKey, configDirectory, configuration, communication) - - // Legacy methods below -> should be converted to the above method. - // Create a subscription to know if send out a livestream or not. - MQTTListenerHandleLiveSD(c, hubKey, configuration, communication) - - // Create a subscription for the WEBRTC livestream. - MQTTListenerHandleLiveHDHandshake(c, hubKey, configuration, communication) - - // Create a subscription for keeping alive the WEBRTC livestream. - MQTTListenerHandleLiveHDKeepalive(c, hubKey, configuration, communication) - - // Create a subscription to listen to the number of WEBRTC peers. - MQTTListenerHandleLiveHDPeers(c, hubKey, configuration, communication) - - // Create a subscription to listen for WEBRTC candidates. - MQTTListenerHandleLiveHDCandidates(c, hubKey, configuration, communication) - - // Create a susbcription to listen for ONVIF actions: e.g. PTZ, Zoom, etc. - MQTTListenerHandleONVIF(c, hubKey, configuration, communication) } } mqc := mqtt.NewClient(opts) @@ -236,57 +160,99 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory // payload: Payload, "a json object which might be encrypted" // } - var message Message + var message models.Message json.Unmarshal(msg.Payload(), &message) - if message.Mid != "" && message.Timestamp != 0 { + // We will receive all messages from our hub, so we'll need to filter to the relevant device. + if message.Mid != "" && message.Timestamp != 0 && message.DeviceId == configuration.Config.Key { // Messages might be encrypted, if so we'll // need to decrypt them. - var payload Payload + var payload models.Payload if message.Encrypted { - // We'll find out the key we use to decrypt the message. - // TODO -> still needs to be implemented. - // Use to fingerprint to act accordingly. + encryptedValue := message.Payload.EncryptedValue + if len(encryptedValue) > 0 { + symmetricKey := configuration.Config.Encryption.SymmetricKey + privateKey := configuration.Config.Encryption.PrivateKey + r := strings.NewReader(privateKey) + pemBytes, _ := ioutil.ReadAll(r) + block, _ := pem.Decode(pemBytes) + if block == nil { + log.Log.Error("MQTTListenerHandler: error decoding PEM block containing private key") + return + } else { + // Parse private key + b := block.Bytes + key, err := x509.ParsePKCS8PrivateKey(b) + if err != nil { + log.Log.Error("MQTTListenerHandler: error parsing private key: " + err.Error()) + return + } else { + // Conver key to *rsa.PrivateKey + rsaKey, _ := key.(*rsa.PrivateKey) + + // Get encrypted key from message, delimited by ::: + encryptedKey := strings.Split(encryptedValue, ":::")[0] // encrypted with RSA + encryptedValue := strings.Split(encryptedValue, ":::")[1] // encrypted with AES + // Convert encrypted value to []byte + decryptedKey, err := encryption.DecryptWithPrivateKey(encryptedKey, rsaKey) + if decryptedKey != nil { + if string(decryptedKey) == symmetricKey { + // Decrypt value with decryptedKey + decryptedValue, err := encryption.AesDecrypt(encryptedValue, string(decryptedKey)) + if err != nil { + log.Log.Error("MQTTListenerHandler: error decrypting message: " + err.Error()) + return + } + json.Unmarshal([]byte(decryptedValue), &payload) + } else { + log.Log.Error("MQTTListenerHandler: error decrypting message, assymetric keys do not match.") + return + } + } else if err != nil { + log.Log.Error("MQTTListenerHandler: error decrypting message: " + err.Error()) + return + } + } + } + } } else { payload = message.Payload } - // We will receive all messages from our hub, so we'll need to filter to the relevant device. - if payload.DeviceId != configuration.Config.Key { - // Not relevant for this device, so we'll ignore it. - } else { - // We'll find out which message we received, and act accordingly. - log.Log.Info("MQTTListenerHandler: received message with action: " + payload.Action) - - switch payload.Action { - case "record": - HandleRecording(mqttClient, hubKey, payload, configuration, communication) - case "get-ptz-position": - HandleGetPTZPosition(mqttClient, hubKey, payload, configuration, communication) - case "update-ptz-position": - HandleUpdatePTZPosition(mqttClient, hubKey, payload, configuration, communication) - case "request-config": - HandleRequestConfig(mqttClient, hubKey, payload, configuration, communication) - case "update-config": - HandleUpdateConfig(mqttClient, hubKey, payload, configDirectory, configuration, communication) - } + // We'll find out which message we received, and act accordingly. + log.Log.Info("MQTTListenerHandler: received message with action: " + payload.Action) + switch payload.Action { + case "record": + go HandleRecording(mqttClient, hubKey, payload, configuration, communication) + case "get-ptz-position": + go HandleGetPTZPosition(mqttClient, hubKey, payload, configuration, communication) + case "update-ptz-position": + go HandleUpdatePTZPosition(mqttClient, hubKey, payload, configuration, communication) + case "navigate-ptz": + go HandleNavigatePTZ(mqttClient, hubKey, payload, configuration, communication) + case "request-config": + go HandleRequestConfig(mqttClient, hubKey, payload, configuration, communication) + case "update-config": + go HandleUpdateConfig(mqttClient, hubKey, payload, configDirectory, configuration, communication) + case "request-sd-stream": + go HandleRequestSDStream(mqttClient, hubKey, payload, configuration, communication) + case "request-hd-stream": + go HandleRequestHDStream(mqttClient, hubKey, payload, configuration, communication) + case "receive-hd-candidates": + go HandleReceiveHDCandidates(mqttClient, hubKey, payload, configuration, communication) } + } }) } } -// We received a recording request, we'll send it to the motion handler. -type RecordPayload struct { - Timestamp int64 `json:"timestamp"` // timestamp of the recording request. -} - -func HandleRecording(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { +func HandleRecording(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { value := payload.Value // Convert map[string]interface{} to RecordPayload jsonData, _ := json.Marshal(value) - var recordPayload RecordPayload + var recordPayload models.RecordPayload json.Unmarshal(jsonData, &recordPayload) if recordPayload.Timestamp != 0 { @@ -297,17 +263,12 @@ func HandleRecording(mqttClient mqtt.Client, hubKey string, payload Payload, con } } -// We received a preset position request, we'll request it through onvif and send it back. -type PTZPositionPayload struct { - Timestamp int64 `json:"timestamp"` // timestamp of the preset request. -} - -func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { +func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { value := payload.Value // Convert map[string]interface{} to PTZPositionPayload jsonData, _ := json.Marshal(value) - var positionPayload PTZPositionPayload + var positionPayload models.PTZPositionPayload json.Unmarshal(jsonData, &positionPayload) if positionPayload.Timestamp != 0 { @@ -318,8 +279,8 @@ func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload } else { // Needs to wrapped! posString := fmt.Sprintf("%f,%f,%f", pos.PanTilt.X, pos.PanTilt.Y, pos.Zoom.X) - message := Message{ - Payload: Payload{ + message := models.Message{ + Payload: models.Payload{ Action: "ptz-position", DeviceId: configuration.Config.Key, Value: map[string]interface{}{ @@ -328,7 +289,7 @@ func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload }, }, } - payload, err := PackageMQTTMessage(message) + payload, err := models.PackageMQTTMessage(configuration, message) if err == nil { mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) } else { @@ -338,7 +299,7 @@ func HandleGetPTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload } } -func HandleUpdatePTZPosition(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { +func HandleUpdatePTZPosition(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { value := payload.Value // Convert map[string]interface{} to PTZPositionPayload @@ -356,17 +317,12 @@ func HandleUpdatePTZPosition(mqttClient mqtt.Client, hubKey string, payload Payl } } -// We received a request config request, we'll fetch the current config and send it back. -type RequestConfigPayload struct { - Timestamp int64 `json:"timestamp"` // timestamp of the preset request. -} - -func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload Payload, configuration *models.Configuration, communication *models.Communication) { +func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { value := payload.Value // Convert map[string]interface{} to RequestConfigPayload jsonData, _ := json.Marshal(value) - var configPayload RequestConfigPayload + var configPayload models.RequestConfigPayload json.Unmarshal(jsonData, &configPayload) if configPayload.Timestamp != 0 { @@ -381,14 +337,14 @@ func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload Payload, inrec, _ := json.Marshal(configuration.Config) json.Unmarshal(inrec, &configMap) - message := Message{ - Payload: Payload{ + message := models.Message{ + Payload: models.Payload{ Action: "receive-config", DeviceId: configuration.Config.Key, Value: configMap, }, } - payload, err := PackageMQTTMessage(message) + payload, err := models.PackageMQTTMessage(configuration, message) if err == nil { mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) } else { @@ -403,18 +359,12 @@ func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload Payload, } } -// We received a update config request, we'll update the current config and send a confirmation back. -type UpdateConfigPayload struct { - Timestamp int64 `json:"timestamp"` // timestamp of the preset request. - Config models.Config `json:"config"` -} - -func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload Payload, configDirectory string, configuration *models.Configuration, communication *models.Communication) { +func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload models.Payload, configDirectory string, configuration *models.Configuration, communication *models.Communication) { value := payload.Value // Convert map[string]interface{} to UpdateConfigPayload jsonData, _ := json.Marshal(value) - var configPayload UpdateConfigPayload + var configPayload models.UpdateConfigPayload json.Unmarshal(jsonData, &configPayload) if configPayload.Timestamp != 0 { @@ -423,14 +373,13 @@ func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload Payload, err := configService.SaveConfig(configDirectory, config, configuration, communication) if err == nil { log.Log.Info("HandleUpdateConfig: Config updated") - - message := Message{ - Payload: Payload{ + message := models.Message{ + Payload: models.Payload{ Action: "acknowledge-update-config", DeviceId: configuration.Config.Key, }, } - payload, err := PackageMQTTMessage(message) + payload, err := models.PackageMQTTMessage(configuration, message) if err == nil { mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) } else { @@ -442,129 +391,93 @@ func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload Payload, } } -func DisconnectMQTT(mqttClient mqtt.Client, config *models.Config) { - if mqttClient != nil { - // Cleanup all subscriptions - // New methods - mqttClient.Unsubscribe("kerberos/agent/" + PREV_HubKey) - - // Legacy methods - mqttClient.Unsubscribe("kerberos/" + PREV_HubKey + "/device/" + PREV_AgentKey + "/request-live") - mqttClient.Unsubscribe(PREV_AgentKey + "/register") - mqttClient.Unsubscribe("kerberos/webrtc/keepalivehub/" + PREV_AgentKey) - mqttClient.Unsubscribe("kerberos/webrtc/peers/" + PREV_AgentKey) - mqttClient.Unsubscribe("candidate/cloud") - mqttClient.Unsubscribe("kerberos/onvif/" + PREV_AgentKey) - - mqttClient.Disconnect(1000) - mqttClient = nil - log.Log.Info("DisconnectMQTT: MQTT client disconnected.") - } -} - -// ################################################################################################# -// Below you'll find legacy methods, as of now we'll have a single subscription, which scales better +func HandleRequestSDStream(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + // Convert map[string]interface{} to RequestSDStreamPayload + jsonData, _ := json.Marshal(value) + var requestSDStreamPayload models.RequestSDStreamPayload + json.Unmarshal(jsonData, &requestSDStreamPayload) -func MQTTListenerHandleLiveSD(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicRequest := "kerberos/" + hubKey + "/device/" + config.Key + "/request-live" - mqttClient.Subscribe(topicRequest, 0, func(c mqtt.Client, msg mqtt.Message) { + if requestSDStreamPayload.Timestamp != 0 { if communication.CameraConnected { select { case communication.HandleLiveSD <- time.Now().Unix(): default: } - log.Log.Info("MQTTListenerHandleLiveSD: received request to livestream.") + log.Log.Info("HandleRequestSDStream: received request to livestream.") } else { - log.Log.Info("MQTTListenerHandleLiveSD: received request to livestream, but camera is not connected.") + log.Log.Info("HandleRequestSDStream: received request to livestream, but camera is not connected.") } - msg.Ack() - }) + } } -func MQTTListenerHandleLiveHDHandshake(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicRequestWebRtc := config.Key + "/register" - mqttClient.Subscribe(topicRequestWebRtc, 0, func(c mqtt.Client, msg mqtt.Message) { +func HandleRequestHDStream(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + // Convert map[string]interface{} to RequestHDStreamPayload + jsonData, _ := json.Marshal(value) + var requestHDStreamPayload models.RequestHDStreamPayload + json.Unmarshal(jsonData, &requestHDStreamPayload) + + if requestHDStreamPayload.Timestamp != 0 { if communication.CameraConnected { - var sdp models.SDPPayload - json.Unmarshal(msg.Payload(), &sdp) + // Set the Hub key, so we can send back the answer. + requestHDStreamPayload.HubKey = hubKey select { - case communication.HandleLiveHDHandshake <- sdp: + case communication.HandleLiveHDHandshake <- requestHDStreamPayload: default: } - log.Log.Info("MQTTListenerHandleLiveHDHandshake: received request to setup webrtc.") + log.Log.Info("HandleRequestHDStream: received request to setup webrtc.") } else { - log.Log.Info("MQTTListenerHandleLiveHDHandshake: received request to setup webrtc, but camera is not connected.") + log.Log.Info("HandleRequestHDStream: received request to setup webrtc, but camera is not connected.") } - msg.Ack() - }) + } } -func MQTTListenerHandleLiveHDKeepalive(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicKeepAlive := fmt.Sprintf("kerberos/webrtc/keepalivehub/%s", config.Key) - mqttClient.Subscribe(topicKeepAlive, 0, func(c mqtt.Client, msg mqtt.Message) { - if communication.CameraConnected { - alive := string(msg.Payload()) - communication.HandleLiveHDKeepalive <- alive - log.Log.Info("MQTTListenerHandleLiveHDKeepalive: Received keepalive: " + alive) - } else { - log.Log.Info("MQTTListenerHandleLiveHDKeepalive: received keepalive, but camera is not connected.") - } - }) -} +func HandleReceiveHDCandidates(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + // Convert map[string]interface{} to ReceiveHDCandidatesPayload + jsonData, _ := json.Marshal(value) + var receiveHDCandidatesPayload models.ReceiveHDCandidatesPayload + json.Unmarshal(jsonData, &receiveHDCandidatesPayload) -func MQTTListenerHandleLiveHDPeers(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicPeers := fmt.Sprintf("kerberos/webrtc/peers/%s", config.Key) - mqttClient.Subscribe(topicPeers, 0, func(c mqtt.Client, msg mqtt.Message) { + if receiveHDCandidatesPayload.Timestamp != 0 { if communication.CameraConnected { - peerCount := string(msg.Payload()) - communication.HandleLiveHDPeers <- peerCount - log.Log.Info("MQTTListenerHandleLiveHDPeers: Number of peers listening: " + peerCount) + channel := webrtc.CandidateArrays[receiveHDCandidatesPayload.SessionID] + log.Log.Info("HandleReceiveHDCandidates: " + receiveHDCandidatesPayload.Candidate) + channel <- receiveHDCandidatesPayload.Candidate } else { - log.Log.Info("MQTTListenerHandleLiveHDPeers: received peer count, but camera is not connected.") + log.Log.Info("HandleReceiveHDCandidates: received candidate, but camera is not connected.") } - }) + } } -func MQTTListenerHandleLiveHDCandidates(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicCandidates := "candidate/cloud" - mqttClient.Subscribe(topicCandidates, 0, func(c mqtt.Client, msg mqtt.Message) { - if communication.CameraConnected { - var candidate models.Candidate - json.Unmarshal(msg.Payload(), &candidate) - if candidate.CloudKey == config.Key { - key := candidate.CloudKey + "/" + candidate.Cuuid - candidatesExists := false - var channel chan string - for !candidatesExists { - webrtc.CandidatesMutex.Lock() - channel, candidatesExists = webrtc.CandidateArrays[key] - webrtc.CandidatesMutex.Unlock() - } - log.Log.Info("MQTTListenerHandleLiveHDCandidates: " + string(msg.Payload())) - channel <- string(msg.Payload()) - } - } else { - log.Log.Info("MQTTListenerHandleLiveHDCandidates: received candidate, but camera is not connected.") - } - }) -} +func HandleNavigatePTZ(mqttClient mqtt.Client, hubKey string, payload models.Payload, configuration *models.Configuration, communication *models.Communication) { + value := payload.Value + jsonData, _ := json.Marshal(value) + var navigatePTZPayload models.NavigatePTZPayload + json.Unmarshal(jsonData, &navigatePTZPayload) -func MQTTListenerHandleONVIF(mqttClient mqtt.Client, hubKey string, configuration *models.Configuration, communication *models.Communication) { - config := configuration.Config - topicOnvif := fmt.Sprintf("kerberos/onvif/%s", config.Key) - mqttClient.Subscribe(topicOnvif, 0, func(c mqtt.Client, msg mqtt.Message) { + if navigatePTZPayload.Timestamp != 0 { if communication.CameraConnected { + action := navigatePTZPayload.Action var onvifAction models.OnvifAction - json.Unmarshal(msg.Payload(), &onvifAction) + json.Unmarshal([]byte(action), &onvifAction) communication.HandleONVIF <- onvifAction - log.Log.Info("MQTTListenerHandleONVIF: Received an action - " + onvifAction.Action) + log.Log.Info("HandleNavigatePTZ: Received an action - " + onvifAction.Action) + } else { - log.Log.Info("MQTTListenerHandleONVIF: received action, but camera is not connected.") + log.Log.Info("HandleNavigatePTZ: received action, but camera is not connected.") } - }) + } +} + +func DisconnectMQTT(mqttClient mqtt.Client, config *models.Config) { + if mqttClient != nil { + // Cleanup all subscriptions + // New methods + mqttClient.Unsubscribe("kerberos/agent/" + PREV_HubKey) + mqttClient.Disconnect(1000) + mqttClient = nil + log.Log.Info("DisconnectMQTT: MQTT client disconnected.") + } } diff --git a/machinery/src/webrtc/main.go b/machinery/src/webrtc/main.go index 56b8a175..eef62c27 100644 --- a/machinery/src/webrtc/main.go +++ b/machinery/src/webrtc/main.go @@ -87,19 +87,22 @@ func (w WebRTC) CreateOffer(sd []byte) pionWebRTC.SessionDescription { return offer } -func InitializeWebRTCConnection(configuration *models.Configuration, communication *models.Communication, mqttClient mqtt.Client, videoTrack *pionWebRTC.TrackLocalStaticSample, audioTrack *pionWebRTC.TrackLocalStaticSample, handshake models.SDPPayload, candidates chan string) { +func InitializeWebRTCConnection(configuration *models.Configuration, communication *models.Communication, mqttClient mqtt.Client, videoTrack *pionWebRTC.TrackLocalStaticSample, audioTrack *pionWebRTC.TrackLocalStaticSample, handshake models.RequestHDStreamPayload, candidates chan string) { config := configuration.Config - deviceKey := config.Key stunServers := []string{config.STUNURI} turnServers := []string{config.TURNURI} turnServersUsername := config.TURNUsername turnServersCredential := config.TURNPassword + // Set variables + hubKey := handshake.HubKey + sessionDescription := handshake.SessionDescription + // Create WebRTC object w := CreateWebRTC(deviceKey, stunServers, turnServers, turnServersUsername, turnServersCredential) - sd, err := w.DecodeSessionDescription(handshake.Sdp) + sd, err := w.DecodeSessionDescription(sessionDescription) if err == nil { @@ -122,7 +125,6 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati Credential: w.TurnServersCredential, }, }, - //ICETransportPolicy: pionWebRTC.ICETransportPolicyRelay, }, ) @@ -143,7 +145,7 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati peerConnection.OnICEConnectionStateChange(func(connectionState pionWebRTC.ICEConnectionState) { if connectionState == pionWebRTC.ICEConnectionStateDisconnected { atomic.AddInt64(&peerConnectionCount, -1) - peerConnections[handshake.Cuuid] = nil + peerConnections[handshake.SessionID] = nil close(candidates) close(w.PacketsCount) if err := peerConnection.Close(); err != nil { @@ -152,9 +154,12 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati } else if connectionState == pionWebRTC.ICEConnectionStateConnected { atomic.AddInt64(&peerConnectionCount, 1) } else if connectionState == pionWebRTC.ICEConnectionStateChecking { + // Iterate over the candidates and send them to the remote client + // Non blocking channel for candidate := range candidates { log.Log.Info("InitializeWebRTCConnection: Received candidate.") if candidateErr := peerConnection.AddICECandidate(pionWebRTC.ICECandidateInit{Candidate: string(candidate)}); candidateErr != nil { + log.Log.Error("InitializeWebRTCConnection: something went wrong while adding candidate: " + candidateErr.Error()) } } } @@ -167,7 +172,6 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati panic(err) } - //gatherCompletePromise := pionWebRTC.GatheringCompletePromise(peerConnection) answer, err := peerConnection.CreateAnswer(nil) if err != nil { panic(err) @@ -175,37 +179,64 @@ func InitializeWebRTCConnection(configuration *models.Configuration, communicati panic(err) } - // When an ICE candidate is available send to the other Pion instance - // the other Pion instance will add this candidate by calling AddICECandidate - var candidatesMux sync.Mutex + // When an ICE candidate is available send to the other peer using the signaling server (MQTT). + // The other peer will add this candidate by calling AddICECandidate peerConnection.OnICECandidate(func(candidate *pionWebRTC.ICECandidate) { - if candidate == nil { return } - candidatesMux.Lock() - defer candidatesMux.Unlock() - - topic := fmt.Sprintf("%s/%s/candidate/edge", deviceKey, handshake.Cuuid) - log.Log.Info("InitializeWebRTCConnection: Send candidate to " + topic) - candiInit := candidate.ToJSON() + // Create a config map + valueMap := make(map[string]interface{}) + candateJSON := candidate.ToJSON() sdpmid := "0" - candiInit.SDPMid = &sdpmid - candi, err := json.Marshal(candiInit) + candateJSON.SDPMid = &sdpmid + candateBinary, err := json.Marshal(candateJSON) + if err == nil { + valueMap["candidate"] = string(candateBinary) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while marshalling candidate: " + err.Error()) + } + + // We'll send the candidate to the hub + message := models.Message{ + Payload: models.Payload{ + Action: "receive-hd-candidates", + DeviceId: configuration.Config.Key, + Value: valueMap, + }, + } + payload, err := models.PackageMQTTMessage(configuration, message) if err == nil { - log.Log.Info("InitializeWebRTCConnection:" + string(candi)) - token := mqttClient.Publish(topic, 2, false, candi) - token.Wait() + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while sending acknowledge config to hub: " + string(payload)) } }) - peerConnections[handshake.Cuuid] = peerConnection + // Create a channel which will be used to send candidates to the other peer + peerConnections[handshake.SessionID] = peerConnection if err == nil { - topic := fmt.Sprintf("%s/%s/answer", deviceKey, handshake.Cuuid) - log.Log.Info("InitializeWebRTCConnection: Send SDP answer to " + topic) - mqttClient.Publish(topic, 2, false, []byte(base64.StdEncoding.EncodeToString([]byte(answer.SDP)))) + // Create a config map + valueMap := make(map[string]interface{}) + valueMap["sdp"] = []byte(base64.StdEncoding.EncodeToString([]byte(answer.SDP))) + log.Log.Info("InitializeWebRTCConnection: Send SDP answer") + + // We'll send the candidate to the hub + message := models.Message{ + Payload: models.Payload{ + Action: "receive-hd-answer", + DeviceId: configuration.Config.Key, + Value: valueMap, + }, + } + payload, err := models.PackageMQTTMessage(configuration, message) + if err == nil { + mqttClient.Publish("kerberos/hub/"+hubKey, 0, false, payload) + } else { + log.Log.Info("HandleRequestConfig: something went wrong while sending acknowledge config to hub: " + string(payload)) + } } } } else { @@ -358,16 +389,9 @@ func WriteToTrack(livestreamCursor *pubsub.QueueCursor, configuration *models.Co pkt.Data = append(codecData.(h264parser.CodecData).SPS(), pkt.Data...) pkt.Data = append(annexbNALUStartCode(), pkt.Data...) log.Log.Info("WriteToTrack: Sending keyframe") - - if config.Capture.ForwardWebRTC == "true" { - log.Log.Info("WriteToTrack: Sending keep a live to remote broker.") - topic := fmt.Sprintf("kerberos/webrtc/keepalive/%s", config.Key) - mqttClient.Publish(topic, 2, false, "1") - } } if start { - sample := pionMedia.Sample{Data: pkt.Data, Duration: bufferDuration} if config.Capture.ForwardWebRTC == "true" { samplePacket, err := json.Marshal(sample) From 48d933a561b7338783152af0071eafca8ad4d431 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Fri, 20 Oct 2023 14:35:09 +0200 Subject: [PATCH 54/80] backwards compatible when no encryption key was added in previous config --- machinery/src/models/MQTT.go | 2 +- machinery/src/routers/mqtt/main.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/machinery/src/models/MQTT.go b/machinery/src/models/MQTT.go index febcff2d..4e298af1 100644 --- a/machinery/src/models/MQTT.go +++ b/machinery/src/models/MQTT.go @@ -30,7 +30,7 @@ func PackageMQTTMessage(configuration *Configuration, msg Message) ([]byte, erro // At the moment we don't do the encryption part, but we'll implement it // once the legacy methods (subscriptions are moved). msg.Encrypted = false - if configuration.Config.Encryption.Enabled { + if configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled { msg.Encrypted = true } msg.PublicKey = "" diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index b75bf92a..c310b1e3 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -168,7 +168,7 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory // Messages might be encrypted, if so we'll // need to decrypt them. var payload models.Payload - if message.Encrypted { + if message.Encrypted && configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled { encryptedValue := message.Payload.EncryptedValue if len(encryptedValue) > 0 { symmetricKey := configuration.Config.Encryption.SymmetricKey From 38247ac9f6cef9dcdaf8bd7d0df0b28785cd43e4 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Sun, 22 Oct 2023 20:00:10 +0200 Subject: [PATCH 55/80] Add italian to language selector #115 --- ui/src/components/LanguageSelect/LanguageSelect.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/ui/src/components/LanguageSelect/LanguageSelect.jsx b/ui/src/components/LanguageSelect/LanguageSelect.jsx index f05a5c38..d300ad97 100644 --- a/ui/src/components/LanguageSelect/LanguageSelect.jsx +++ b/ui/src/components/LanguageSelect/LanguageSelect.jsx @@ -20,6 +20,7 @@ const LanguageSelect = () => { fr: { label: 'Francais', dir: 'ltr', active: false }, pl: { label: 'Polski', dir: 'ltr', active: false }, de: { label: 'Deutsch', dir: 'ltr', active: false }, + it: { label: 'Italiano', dir: 'ltr', active: false }, pt: { label: 'Português', dir: 'ltr', active: false }, es: { label: 'Español', dir: 'ltr', active: false }, ja: { label: '日本', dir: 'rlt', active: false }, From e474a62dbc8ee3c91e71d7c5519d0d94dd04d4a6 Mon Sep 17 00:00:00 2001 From: Cedric Verstraeten Date: Mon, 23 Oct 2023 10:56:36 +0200 Subject: [PATCH 56/80] Add hindi #119 + allow recordings encryption + decryption tooling. --- README.md | 17 ++- machinery/main.go | 15 +++ machinery/src/capture/main.go | 22 ++++ machinery/src/config/main.go | 16 ++- machinery/src/encryption/main.go | 42 +++---- machinery/src/models/Config.go | 5 +- machinery/src/models/MQTT.go | 24 ++-- machinery/src/routers/mqtt/main.go | 23 +++- machinery/src/utils/main.go | 65 +++++++++++ ui/public/locales/de/translation.json | 11 +- ui/public/locales/en/translation.json | 11 +- ui/public/locales/es/translation.json | 11 +- ui/public/locales/fr/translation.json | 11 +- ui/public/locales/hi/translation.json | 11 +- ui/public/locales/it/translation.json | 11 +- ui/public/locales/ja/translation.json | 11 +- ui/public/locales/nl/translation.json | 11 +- ui/public/locales/pl/translation.json | 11 +- ui/public/locales/pt/translation.json | 11 +- ui/public/locales/zh/translation.json | 11 +- .../LanguageSelect/LanguageSelect.jsx | 1 + ui/src/pages/Settings/Settings.jsx | 104 ++++++++++++++++-- 22 files changed, 393 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index 058373a1..4ba689b6 100644 --- a/README.md +++ b/README.md @@ -147,6 +147,20 @@ The default username and password for the Kerberos Agent is: **_Please note that you change the username and password for a final installation, see [Configure with environment variables](#configure-with-environment-variables) below._** +## Encryption + +You can encrypt your recordings and outgoing MQTT messages with your own AES and RSA keys by enabling the encryption settings. Once enabled all your recordings will be encrypted using AES-256-CBC and your symmetric key. You can either use the default `openssl` toolchain to decrypt the recordings with your AES key, as following: + + openssl aes-256-cbc -d -md md5 -in encrypted.mp4 -out decrypted.mp4 -k your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8 + +, and additionally you can decrypt a folder of recordings, using the Kerberos Agent binary as following: + + go run main.go -action decrypt ./data/recordings your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8 + +or for a single file: + + go run main.go -action decrypt ./data/recordings/video.mp4 your-key-96ab185xxxxxxxcxxxxxxxx6a59c62e8 + ## Configure and persist with volume mounts An example of how to mount a host directory is shown below using `docker`, but is applicable for [all the deployment models and tools described above](#running-and-automating-a-kerberos-agent). @@ -227,7 +241,8 @@ Next to attaching the configuration file, it is also possible to override the co | `AGENT_KERBEROSVAULT_DIRECTORY` | The directory, in the provider, where the recordings will be stored in. | "" | | `AGENT_DROPBOX_ACCESS_TOKEN` | The Access Token from your Dropbox app, that is used to leverage the Dropbox SDK. | "" | | `AGENT_DROPBOX_DIRECTORY` | The directory, in the provider, where the recordings will be stored in. | "" | -| `AGENT_ENCRYPTION` | Enable 'true' or disable 'false' end-to-end encryption through MQTT (recordings will follow). | "false" | +| `AGENT_ENCRYPTION` | Enable 'true' or disable 'false' end-to-end encryption for MQTT messages. | "false" | +| `AGENT_ENCRYPTION_RECORDINGS` | Enable 'true' or disable 'false' end-to-end encryption for recordings. | "false" | | `AGENT_ENCRYPTION_FINGERPRINT` | The fingerprint of the keypair (public/private keys), so you know which one to use. | "" | | `AGENT_ENCRYPTION_PRIVATE_KEY` | The private key (assymetric/RSA) to decryptand sign requests send over MQTT. | "" | | `AGENT_ENCRYPTION_SYMMETRIC_KEY` | The symmetric key (AES) to encrypt and decrypt request send over MQTT. | "" | diff --git a/machinery/main.go b/machinery/main.go index 6855d9ee..eb88d396 100644 --- a/machinery/main.go +++ b/machinery/main.go @@ -78,6 +78,21 @@ func main() { case "discover": log.Log.Info(timeout) + case "decrypt": + log.Log.Info("Decrypting: " + flag.Arg(0) + " with key: " + flag.Arg(1)) + symmetricKey := []byte(flag.Arg(1)) + + if symmetricKey == nil || len(symmetricKey) == 0 { + log.Log.Fatal("Main: symmetric key should not be empty") + return + } + if len(symmetricKey) != 32 { + log.Log.Fatal("Main: symmetric key should be 32 bytes") + return + } + + utils.Decrypt(flag.Arg(0), symmetricKey) + case "run": { // Print Kerberos.io ASCII art diff --git a/machinery/src/capture/main.go b/machinery/src/capture/main.go index 82ca5d21..ff2512d0 100644 --- a/machinery/src/capture/main.go +++ b/machinery/src/capture/main.go @@ -8,6 +8,7 @@ import ( "time" "github.com/gin-gonic/gin" + "github.com/kerberos-io/agent/machinery/src/encryption" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" "github.com/kerberos-io/agent/machinery/src/utils" @@ -405,6 +406,27 @@ func HandleRecordStream(queue *pubsub.Queue, configDirectory string, configurati utils.CreateFragmentedMP4(fullName, config.Capture.FragmentedDuration) } + // Check if we need to encrypt the recording. + if config.Encryption != nil && config.Encryption.Enabled == "true" && config.Encryption.Recordings == "true" && config.Encryption.SymmetricKey != "" { + // reopen file into memory 'fullName' + contents, err := os.ReadFile(fullName) + if err == nil { + // encrypt + encryptedContents, err := encryption.AesEncrypt(contents, config.Encryption.SymmetricKey) + if err == nil { + // write back to file + err := os.WriteFile(fullName, []byte(encryptedContents), 0644) + if err != nil { + log.Log.Error("HandleRecordStream: error writing file: " + err.Error()) + } + } else { + log.Log.Error("HandleRecordStream: error encrypting file: " + err.Error()) + } + } else { + log.Log.Error("HandleRecordStream: error reading file: " + err.Error()) + } + } + // Create a symbol linc. fc, _ := os.Create(configDirectory + "/data/cloud/" + name) fc.Close() diff --git a/machinery/src/config/main.go b/machinery/src/config/main.go index 03b6bda4..5a97a834 100644 --- a/machinery/src/config/main.go +++ b/machinery/src/config/main.go @@ -464,11 +464,10 @@ func OverrideWithEnvironmentVariables(configuration *models.Configuration) { /* When encryption is enabled */ case "AGENT_ENCRYPTION": - if value == "true" { - configuration.Config.Encryption.Enabled = true - } else { - configuration.Config.Encryption.Enabled = false - } + configuration.Config.Encryption.Enabled = value + break + case "AGENT_ENCRYPTION_RECORDINGS": + configuration.Config.Encryption.Recordings = value break case "AGENT_ENCRYPTION_FINGERPRINT": configuration.Config.Encryption.Fingerprint = value @@ -510,6 +509,13 @@ func SaveConfig(configDirectory string, config models.Config, configuration *mod } func StoreConfig(configDirectory string, config models.Config) error { + + // Encryption key can be set wrong. + encryptionPrivateKey := config.Encryption.PrivateKey + // Replace \\n by \n + encryptionPrivateKey = strings.ReplaceAll(encryptionPrivateKey, "\\n", "\n") + config.Encryption.PrivateKey = encryptionPrivateKey + // Save into database if os.Getenv("DEPLOYMENT") == "factory" || os.Getenv("MACHINERY_ENVIRONMENT") == "kubernetes" { // Write to mongodb diff --git a/machinery/src/encryption/main.go b/machinery/src/encryption/main.go index 6713fb95..3d4e8a15 100644 --- a/machinery/src/encryption/main.go +++ b/machinery/src/encryption/main.go @@ -38,58 +38,58 @@ func SignWithPrivateKey(data []byte, privateKey *rsa.PrivateKey) ([]byte, error) return signature, err } -func AesEncrypt(content string, password string) (string, error) { +func AesEncrypt(content []byte, password string) ([]byte, error) { salt := make([]byte, 8) _, err := rand.Read(salt) if err != nil { - return "", err + return nil, err } key, iv, err := DefaultEvpKDF([]byte(password), salt) block, err := aes.NewCipher(key) if err != nil { - return "", err + return nil, err } mode := cipher.NewCBCEncrypter(block, iv) - cipherBytes := PKCS5Padding([]byte(content), aes.BlockSize) + cipherBytes := PKCS5Padding(content, aes.BlockSize) mode.CryptBlocks(cipherBytes, cipherBytes) - data := make([]byte, 16+len(cipherBytes)) - copy(data[:8], []byte("Salted__")) - copy(data[8:16], salt) - copy(data[16:], cipherBytes) + cipherText := make([]byte, 16+len(cipherBytes)) + copy(cipherText[:8], []byte("Salted__")) + copy(cipherText[8:16], salt) + copy(cipherText[16:], cipherBytes) - cipherText := base64.StdEncoding.EncodeToString(data) + //cipherText := base64.StdEncoding.EncodeToString(data) return cipherText, nil } -func AesDecrypt(cipherText string, password string) (string, error) { - data, err := base64.StdEncoding.DecodeString(cipherText) - if err != nil { - return "", err - } - if string(data[:8]) != "Salted__" { - return "", errors.New("invalid crypto js aes encryption") +func AesDecrypt(cipherText []byte, password string) ([]byte, error) { + //data, err := base64.StdEncoding.DecodeString(cipherText) + //if err != nil { + // return nil, err + //} + if string(cipherText[:8]) != "Salted__" { + return nil, errors.New("invalid crypto js aes encryption") } - salt := data[8:16] - cipherBytes := data[16:] + salt := cipherText[8:16] + cipherBytes := cipherText[16:] key, iv, err := DefaultEvpKDF([]byte(password), salt) if err != nil { - return "", err + return nil, err } block, err := aes.NewCipher(key) if err != nil { - return "", err + return nil, err } mode := cipher.NewCBCDecrypter(block, iv) mode.CryptBlocks(cipherBytes, cipherBytes) result := PKCS5UnPadding(cipherBytes) - return string(result), nil + return result, nil } // https://stackoverflow.com/questions/27677236/encryption-in-javascript-and-decryption-with-php/27678978#27678978 diff --git a/machinery/src/models/Config.go b/machinery/src/models/Config.go index 397ac85d..d1392f43 100644 --- a/machinery/src/models/Config.go +++ b/machinery/src/models/Config.go @@ -42,7 +42,7 @@ type Config struct { HubPrivateKey string `json:"hub_private_key" bson:"hub_private_key"` HubSite string `json:"hub_site" bson:"hub_site"` ConditionURI string `json:"condition_uri" bson:"condition_uri"` - Encryption *Encryption `json:"encryption" bson:"encryption"` + Encryption *Encryption `json:"encryption,omitempty" bson:"encryption",omitempty` } // Capture defines which camera type (Id) you are using (IP, USB or Raspberry Pi camera), @@ -161,7 +161,8 @@ type Dropbox struct { // Encryption type Encryption struct { - Enabled bool `json:"enabled" bson:"enabled"` + Enabled string `json:"enabled" bson:"enabled"` + Recordings string `json:"recordings" bson:"recordings"` Fingerprint string `json:"fingerprint" bson:"fingerprint"` PrivateKey string `json:"private_key" bson:"private_key"` SymmetricKey string `json:"symmetric_key" bson:"symmetric_key"` diff --git a/machinery/src/models/MQTT.go b/machinery/src/models/MQTT.go index 4e298af1..b9760d89 100644 --- a/machinery/src/models/MQTT.go +++ b/machinery/src/models/MQTT.go @@ -30,7 +30,7 @@ func PackageMQTTMessage(configuration *Configuration, msg Message) ([]byte, erro // At the moment we don't do the encryption part, but we'll implement it // once the legacy methods (subscriptions are moved). msg.Encrypted = false - if configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled { + if configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled == "true" { msg.Encrypted = true } msg.PublicKey = "" @@ -65,15 +65,19 @@ func PackageMQTTMessage(configuration *Configuration, msg Message) ([]byte, erro // Create a 16bit key random k := configuration.Config.Encryption.SymmetricKey - encryptedValue, err := encryption.AesEncrypt(string(data), k) - - // Sign the encrypted value - signature, err := encryption.SignWithPrivateKey([]byte(encryptedValue), rsaKey) - base64Signature := base64.StdEncoding.EncodeToString(signature) - - msg.Payload.EncryptedValue = encryptedValue - msg.Payload.Signature = base64Signature - msg.Payload.Value = make(map[string]interface{}) + encryptedValue, err := encryption.AesEncrypt(data, k) + if err == nil { + + data := base64.StdEncoding.EncodeToString(encryptedValue) + // Sign the encrypted value + signature, err := encryption.SignWithPrivateKey([]byte(data), rsaKey) + if err == nil { + base64Signature := base64.StdEncoding.EncodeToString(signature) + msg.Payload.EncryptedValue = data + msg.Payload.Signature = base64Signature + msg.Payload.Value = make(map[string]interface{}) + } + } } } diff --git a/machinery/src/routers/mqtt/main.go b/machinery/src/routers/mqtt/main.go index c310b1e3..1e3e4fa1 100644 --- a/machinery/src/routers/mqtt/main.go +++ b/machinery/src/routers/mqtt/main.go @@ -3,6 +3,7 @@ package mqtt import ( "crypto/rsa" "crypto/x509" + "encoding/base64" "encoding/json" "encoding/pem" "fmt" @@ -168,7 +169,7 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory // Messages might be encrypted, if so we'll // need to decrypt them. var payload models.Payload - if message.Encrypted && configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled { + if message.Encrypted && configuration.Config.Encryption != nil && configuration.Config.Encryption.Enabled == "true" { encryptedValue := message.Payload.EncryptedValue if len(encryptedValue) > 0 { symmetricKey := configuration.Config.Encryption.SymmetricKey @@ -198,12 +199,16 @@ func MQTTListenerHandler(mqttClient mqtt.Client, hubKey string, configDirectory if decryptedKey != nil { if string(decryptedKey) == symmetricKey { // Decrypt value with decryptedKey - decryptedValue, err := encryption.AesDecrypt(encryptedValue, string(decryptedKey)) + data, err := base64.StdEncoding.DecodeString(encryptedValue) + if err != nil { + return + } + decryptedValue, err := encryption.AesDecrypt(data, string(decryptedKey)) if err != nil { log.Log.Error("MQTTListenerHandler: error decrypting message: " + err.Error()) return } - json.Unmarshal([]byte(decryptedValue), &payload) + json.Unmarshal(decryptedValue, &payload) } else { log.Log.Error("MQTTListenerHandler: error decrypting message, assymetric keys do not match.") return @@ -333,10 +338,16 @@ func HandleRequestConfig(mqttClient mqtt.Client, hubKey string, payload models.P if key != "" && name != "" { + // Copy the config, as we don't want to share the encryption part. + deepCopy := configuration.Config + var configMap map[string]interface{} - inrec, _ := json.Marshal(configuration.Config) + inrec, _ := json.Marshal(deepCopy) json.Unmarshal(inrec, &configMap) + // Unset encryption part. + delete(configMap, "encryption") + message := models.Message{ Payload: models.Payload{ Action: "receive-config", @@ -370,6 +381,10 @@ func HandleUpdateConfig(mqttClient mqtt.Client, hubKey string, payload models.Pa if configPayload.Timestamp != 0 { config := configPayload.Config + + // Make sure to remove Encryption part, as we don't want to save it. + config.Encryption = configuration.Config.Encryption + err := configService.SaveConfig(configDirectory, config, configuration, communication) if err == nil { log.Log.Info("HandleUpdateConfig: Config updated") diff --git a/machinery/src/utils/main.go b/machinery/src/utils/main.go index 3a68670e..045d0d0b 100644 --- a/machinery/src/utils/main.go +++ b/machinery/src/utils/main.go @@ -15,6 +15,7 @@ import ( "strings" "time" + "github.com/kerberos-io/agent/machinery/src/encryption" "github.com/kerberos-io/agent/machinery/src/log" "github.com/kerberos-io/agent/machinery/src/models" ) @@ -330,3 +331,67 @@ func PrintConfiguration(configuration *models.Configuration) { } log.Log.Info("Printing our configuration (config.json): " + configurationVariables) } + +func Decrypt(directoryOrFile string, symmetricKey []byte) { + // Check if file or directory + fileInfo, err := os.Stat(directoryOrFile) + if err != nil { + log.Log.Fatal(err.Error()) + return + } + + var files []string + if fileInfo.IsDir() { + // Create decrypted directory + err = os.MkdirAll(directoryOrFile+"/decrypted", 0755) + if err != nil { + log.Log.Fatal(err.Error()) + return + } + dir, err := os.ReadDir(directoryOrFile) + if err != nil { + log.Log.Fatal(err.Error()) + return + } + for _, file := range dir { + // Check if file is not a directory + if !file.IsDir() { + // Check if an mp4 file + if strings.HasSuffix(file.Name(), ".mp4") { + files = append(files, directoryOrFile+"/"+file.Name()) + } + } + } + } else { + files = append(files, directoryOrFile) + } + + // We'll loop over all files and decrypt them one by one. + for _, file := range files { + + // Read file + content, err := os.ReadFile(file) + if err != nil { + log.Log.Fatal(err.Error()) + return + } + // Decrypt using AES key + decrypted, err := encryption.AesDecrypt(content, string(symmetricKey)) + if err != nil { + log.Log.Fatal("Something went wrong while decrypting: " + err.Error()) + return + } + + // Write decrypted content to file with appended .decrypted + // Get filename split by / and get last element. + fileParts := strings.Split(file, "/") + fileName := fileParts[len(fileParts)-1] + pathToFile := strings.Join(fileParts[:len(fileParts)-1], "/") + + err = os.WriteFile(pathToFile+"/decrypted/"+fileName, []byte(decrypted), 0644) + if err != nil { + log.Log.Fatal(err.Error()) + return + } + } +} diff --git a/ui/public/locales/de/translation.json b/ui/public/locales/de/translation.json index 1ca9b87c..4b154b4b 100644 --- a/ui/public/locales/de/translation.json +++ b/ui/public/locales/de/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Erweiterte Konfiguration", "description_advanced_configuration": "Erweiterte Einstellungen um Funktionen des Kerberos Agent zu aktivieren oder deaktivieren", "offline_mode": "Offline Modus", - "description_offline_mode": "Ausgehende Verbindungen deaktivieren" + "description_offline_mode": "Ausgehende Verbindungen deaktivieren", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Kamera", diff --git a/ui/public/locales/en/translation.json b/ui/public/locales/en/translation.json index 5b6b1a09..34488218 100644 --- a/ui/public/locales/en/translation.json +++ b/ui/public/locales/en/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Advanced configuration", "description_advanced_configuration": "Detailed configuration options to enable or disable specific parts of the Kerberos Agent", "offline_mode": "Offline mode", - "description_offline_mode": "Disable all outgoing traffic" + "description_offline_mode": "Disable all outgoing traffic", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Camera", diff --git a/ui/public/locales/es/translation.json b/ui/public/locales/es/translation.json index 8c64faa5..eb492d62 100644 --- a/ui/public/locales/es/translation.json +++ b/ui/public/locales/es/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Advanced configuration", "description_advanced_configuration": "Detailed configuration options to enable or disable specific parts of the Kerberos Agent", "offline_mode": "Offline mode", - "description_offline_mode": "Disable all outgoing traffic" + "description_offline_mode": "Disable all outgoing traffic", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Camera", diff --git a/ui/public/locales/fr/translation.json b/ui/public/locales/fr/translation.json index 392b83a8..8070c6c7 100644 --- a/ui/public/locales/fr/translation.json +++ b/ui/public/locales/fr/translation.json @@ -84,7 +84,16 @@ "advanced_configuration": "Configuration avancée", "description_advanced_configuration": "Les options de configuration détaillées pour activer ou désactiver des composants spécifiques de l'Agent Kerberos", "offline_mode": "Mode hors-ligne", - "description_offline_mode": "Désactiver tout le trafic sortant" + "description_offline_mode": "Désactiver tout le trafic sortant", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Caméra", diff --git a/ui/public/locales/hi/translation.json b/ui/public/locales/hi/translation.json index edd484f9..8452f5d3 100644 --- a/ui/public/locales/hi/translation.json +++ b/ui/public/locales/hi/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "एडवांस कॉन्फ़िगरेशन", "description_advanced_configuration": "Kerberos एजेंट के विशिष्ट भागों को सक्षम या अक्षम करने के लिए विस्तृत कॉन्फ़िगरेशन विकल्प", "offline_mode": "ऑफ़लाइन मोड", - "description_offline_mode": "सभी आउटगोइंग ट्रैफ़िक अक्षम करें" + "description_offline_mode": "सभी आउटगोइंग ट्रैफ़िक अक्षम करें", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "कैमरा", diff --git a/ui/public/locales/it/translation.json b/ui/public/locales/it/translation.json index 122ec398..6e04d1c7 100644 --- a/ui/public/locales/it/translation.json +++ b/ui/public/locales/it/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Configurazione avanzata", "description_advanced_configuration": "Opzioni di configurazione dettagliate per abilitare o disabilitare parti specifiche del Kerberos Agent", "offline_mode": "Modalità offline", - "description_offline_mode": "Disabilita traffico in uscita" + "description_offline_mode": "Disabilita traffico in uscita", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Videocamera", diff --git a/ui/public/locales/ja/translation.json b/ui/public/locales/ja/translation.json index b1c2f371..8307d55f 100644 --- a/ui/public/locales/ja/translation.json +++ b/ui/public/locales/ja/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "詳細設定", "description_advanced_configuration": "Kerberos エージェントの特定の部分を有効または無効にするための詳細な構成オプション", "offline_mode": "オフラインモード", - "description_offline_mode": "すべての送信トラフィックを無効にする" + "description_offline_mode": "すべての送信トラフィックを無効にする", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "カメラ", diff --git a/ui/public/locales/nl/translation.json b/ui/public/locales/nl/translation.json index 534c0bc3..3f89b2e9 100644 --- a/ui/public/locales/nl/translation.json +++ b/ui/public/locales/nl/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Geavanceerde instellingen", "description_advanced_configuration": "Detail instellingen om bepaalde functionaliteiten van je Kerberos Agent aan en uit te zetten", "offline_mode": "Offline modus", - "description_offline_mode": "Uitzetten van uitgaande connectiviteit" + "description_offline_mode": "Uitzetten van uitgaande connectiviteit", + "encryption": "Encrypteer", + "description_encryption": "Activeer encryptie voor alle uitgaande verkeer. MQTT berichten en/of opnames worden geencrypteerd met AES-256. Een private sleutel wordt gebruikt voor het ondertekenen.", + "encryption_enabled": "Activeer MQTT encryptie", + "description_encryption_enabled": "Activeer encryptie voor alle MQTT berichten.", + "encryption_recordings_enabled": "Activeer opname encryptie", + "description_encryption_recordings_enabled": "Activeer encryptie voor alle opnames.", + "encryption_fingerprint": "Vingerafdruk", + "encryption_privatekey": "Private sleutel", + "encryption_symmetrickey": "Symmetrische sleutel" }, "camera": { "camera": "Camera", diff --git a/ui/public/locales/pl/translation.json b/ui/public/locales/pl/translation.json index 8db876cb..5690c145 100644 --- a/ui/public/locales/pl/translation.json +++ b/ui/public/locales/pl/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Advanced configuration", "description_advanced_configuration": "Detailed configuration options to enable or disable specific parts of the Kerberos Agent", "offline_mode": "Offline mode", - "description_offline_mode": "Disable all outgoing traffic" + "description_offline_mode": "Disable all outgoing traffic", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Camera", diff --git a/ui/public/locales/pt/translation.json b/ui/public/locales/pt/translation.json index 0b4bd2ca..7b4e0040 100644 --- a/ui/public/locales/pt/translation.json +++ b/ui/public/locales/pt/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "Configurações avançadas", "description_advanced_configuration": "Opções de configuração detalhadas para habilitar ou desabilitar partes específicas do Kerberos Agent", "offline_mode": "Modo Offline", - "description_offline_mode": "Desative todo o tráfego de saída" + "description_offline_mode": "Desative todo o tráfego de saída", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "Câmera", diff --git a/ui/public/locales/zh/translation.json b/ui/public/locales/zh/translation.json index 54a15bb2..8856be75 100644 --- a/ui/public/locales/zh/translation.json +++ b/ui/public/locales/zh/translation.json @@ -85,7 +85,16 @@ "advanced_configuration": "高级配置", "description_advanced_configuration": "启用或禁用 Kerberos Agent 特定部分详细配置选项", "offline_mode": "离线模式", - "description_offline_mode": "禁用所有传出流量" + "description_offline_mode": "禁用所有传出流量", + "encryption": "Encryption", + "description_encryption": "Enable encryption for all outgoing traffic. MQTT messages and/or recordings will be encrypted using AES-256. A private key is used for signing.", + "encryption_enabled": "Enable MQTT encryption", + "description_encryption_enabled": "Enable encryption for all MQTT messages.", + "encryption_recordings_enabled": "Enable recording encryption", + "description_encryption_recordings_enabled": "Enable encryption for all recordings.", + "encryption_fingerprint": "Fingerprint", + "encryption_privatekey": "Private key", + "encryption_symmetrickey": "Symmetric key" }, "camera": { "camera": "相机", diff --git a/ui/src/components/LanguageSelect/LanguageSelect.jsx b/ui/src/components/LanguageSelect/LanguageSelect.jsx index d300ad97..8c9ded9e 100644 --- a/ui/src/components/LanguageSelect/LanguageSelect.jsx +++ b/ui/src/components/LanguageSelect/LanguageSelect.jsx @@ -24,6 +24,7 @@ const LanguageSelect = () => { pt: { label: 'Português', dir: 'ltr', active: false }, es: { label: 'Español', dir: 'ltr', active: false }, ja: { label: '日本', dir: 'rlt', active: false }, + hi: { label: 'हिंदी', dir: 'ltr', active: false }, }; if (!languageMap[selected]) { diff --git a/ui/src/pages/Settings/Settings.jsx b/ui/src/pages/Settings/Settings.jsx index 3c4561a0..af723ecd 100644 --- a/ui/src/pages/Settings/Settings.jsx +++ b/ui/src/pages/Settings/Settings.jsx @@ -810,6 +810,24 @@ class Settings extends React.Component { this.onUpdateDropdown('', 'timezone', value[0], config) } /> +
+


+

+ {t('settings.overview.description_advanced_configuration')} +

+
+ + this.onUpdateToggle('', 'offline', event, config) + } + /> +
+ {t('settings.overview.offline_mode')} +

{t('settings.overview.description_offline_mode')}

+
+

Ti(xsSg|k|$T$zj~LZ=5c?64V8FtSL*pe`|*Dh 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