diff --git a/README.md b/README.md index 93ed3b3..7602c62 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ [Documentation is available here.](https://node-red-contrib-tak.readthedocs.io/) +Want to send TAK data to PAR's Sit(x)? Check out [node-red-contrib-sitx](https://node-red-contrib-sitx.readthedocs.io/) + # License & Copyright Copyright 2023 [Sensors & Signals LLC](https://www.snstac.com) diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 0000000..bec3a50 --- /dev/null +++ b/docs/examples.md @@ -0,0 +1,17 @@ +## Example Flows + +| ![TAK Node Example Flow 1](nodes/tak_node-example_flow1.png)| +| :-- | +| TAK Node example Flow 1: TLS connection to a TAK Server. | + +| ![TAK Node Example Flow 2](nodes/tak_node-example_flow2.png) | +| :-- | +| TAK Node example Flow 2: UDP Multicast from local network. | + +| ![TAK Node Example output](nodes/tak_node-example_flow1-debug.png) | +| :-- | +| TAK Node Example output. | + +| ![TAK Node Example Flow 3](nodes/tak_node-example_flow3.png) | +| :-- | +| TAK Node example Flow 3: MQTT out to UDP Multicast. | diff --git a/docs/install.md b/docs/install.md index f79bb14..cdf6236 100644 --- a/docs/install.md +++ b/docs/install.md @@ -19,49 +19,45 @@ This method requires Internet access for the system running Node-RED. This is mo ![Method A 2](install/gui_install2.png) -After about a minute you should see: - -![Method B 3](install/sitx-palette-install-success.png) +After about a minute you should see a success message. You can confirm installation by clicking the **Nodes** tab: -![Method B 34](install/sitx-palette-nodes.png) +![Method B 3](install/tak-palette-nodes.png) ## Method B - Node-RED Palette Manager without Internet access This method requires Internet access to download a package, but does not require Internet access on the system running Node-RED. -- I. From a system with Internet access, download an archive of [node-red-contrib-sitx](https://registry.npmjs.org/node-red-contrib-sitx/-/node-red-contrib-sitx-1.0.2.tgz) -- II. Copy node-red-contrib-sitx-1.0.2.tgz to a USB drive (or other removable media). +- I. From a system with Internet access, download an archive of [node-red-contrib-tak](https://github.com/snstac/node-red-contrib-tak/releases/latest/download/node-red-contrib-tak-latest.tgz) +- II. Copy node-red-contrib-tak-latest.tgz to a USB drive (or other removable media). - III. Insert USB drive or media into system running Node-RED. -![Method B 1](install/gui_install-sitx1.png) +![Method B 1](install/manage-palette.png)
  1. Click the "hamburger" menu in the upper right.
  2. Click Manage Palette
-![Method B 2](install/sitx-palette-install-upload.png) +![Method B 2](install/tak-palette-install-upload.png)
  1. Select Install tab.
  2. Click the Upload module tgz file button.
-![Method B 3](install/sitx-palette-install-upload-upload.png) +![Method B 3](install/tak-palette-install-upload-upload.png)
  1. Select Upload.
-After about a minute you should see: - -![Method B 3](install/sitx-palette-install-success.png) +After about a minute you should see a success message. You can confirm installation by clicking the **Nodes** tab: -![Method B 3](install/sitx-palette-nodes.png) +![Method B 3](install/tak-palette-nodes.png) ## Method C - NPM with Internet access @@ -71,6 +67,6 @@ Run the following command in your Node-RED user directory - typically `~/.node-r ```bash cd ~/.node-red -npm install node-red-contrib-sitx +npm install node-red-contrib-tak node-red-admin restart ``` diff --git a/docs/install/manage-palette.png b/docs/install/manage-palette.png new file mode 100644 index 0000000..cf63ba1 Binary files /dev/null and b/docs/install/manage-palette.png differ diff --git a/docs/install/tak-palette-install-upload-upload.png b/docs/install/tak-palette-install-upload-upload.png new file mode 100644 index 0000000..35cebb4 Binary files /dev/null and b/docs/install/tak-palette-install-upload-upload.png differ diff --git a/docs/install/tak-palette-install-upload.png b/docs/install/tak-palette-install-upload.png new file mode 100644 index 0000000..14aa868 Binary files /dev/null and b/docs/install/tak-palette-install-upload.png differ diff --git a/docs/install/tak-palette-nodes.png b/docs/install/tak-palette-nodes.png new file mode 100644 index 0000000..816a81b Binary files /dev/null and b/docs/install/tak-palette-nodes.png differ diff --git a/docs/nodes.md b/docs/nodes.md index 9029dd4..1fefa28 100644 --- a/docs/nodes.md +++ b/docs/nodes.md @@ -1,47 +1,28 @@ -# Nodes - ## TAK Node -| ![TAK Node](nodes/tak_node.png) | -| :-------------------------------------------------------------------------------------------------------- | +| ![TAK Node](nodes/tak_node.png) | +| :-- | | The TAK Node allows TAK data in any format to be encoded, decoded and transformed between any TAK format. | -| ![TAK Node Input](nodes/tak_node-input.png) | -| :-------------------------------------------------------------------------- | +| ![TAK Node Input](nodes/tak_node-input.png) | +| :-- | | TAK Node input accepts CoT as a JavaScript Object (JSON), String or Buffer. | -| ![TAK Node Output 1 (CoT XML or JSON)](nodes/tak_node-output1.png) | -| :-------------------------------------------------------------------------- | +| ![TAK Node Output 1 (CoT XML or JSON)](nodes/tak_node-output1.png) | +| :-- | | TAK Node Output 1 returns either CoT as JSON or String, depending on Input. | -| ![TAK Node Output 2 (Multicast Protobuf)](nodes/tak_node-output2.png) | -| :-------------------------------------------------------------------------------------- | +| ![TAK Node Output 2 (Multicast Protobuf)](nodes/tak_node-output2.png) | +| :-- | | TAK Node Output 2 returns CoT as a TAK Protocol Version 1 Mesh encoded Protobuf Buffer. | -| ![TAK Node Output 3 (Stream Protobuf)](nodes/tak_node-output3.png) | -| :---------------------------------------------------------------------------------------- | +| ![TAK Node Output 3 (Stream Protobuf)](nodes/tak_node-output3.png) | +| :-- | | TAK Node Output 3 returns CoT as a TAK Protocol Version 1 Stream encoded Protobuf Buffer. | -### Example Flows - -| ![TAK Node Example Flow 1](nodes/tak_node-example_flow1.png) | -| :----------------------------------------------------------- | -| TAK Node example Flow 1: TLS connection to a TAK Server. | - -| ![TAK Node Example Flow 2](nodes/tak_node-example_flow2.png) | -| :----------------------------------------------------------- | -| TAK Node example Flow 2: UDP Multicast from local network. | - -| ![TAK Node Example output](nodes/tak_node-example_flow1-debug.png) | -| :----------------------------------------------------------------- | -| TAK Node Example output. | - -| ![TAK Node Example Flow 3](nodes/tak_node-example_flow3.png) | -| :----------------------------------------------------------- | -| TAK Node example Flow 3: MQTT out to UDP Multicast. | - ## TAK2WorldMap Node -| ![TAK2WorldMap Node](nodes/tak2wm_node.png) | -| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ![TAK2WorldMap Node](nodes/tak2wm_node.png) | +| :-- | | The TAK2WorldMap Node accepts Cot in any format and outputs Node-RED WorldMap ([RedMap](https://github.com/dceejay/RedMap)) JSON, ready for use by the Worldmap Node. | + diff --git a/docs/tls.md b/docs/tls.md new file mode 100644 index 0000000..ab6cb7d --- /dev/null +++ b/docs/tls.md @@ -0,0 +1,73 @@ +# TAK Server TLS + + +TAK Server generate two formats of client certificates: + +1. PKCS 12 / PKCS#12 / P12 +2. PEM + +Typically TAK Data Packages are distributed with PKCS#12 (.p12) files. + +Node-RED's TCP Nodes uses PEM formatted certificates (and keys). + +To use a Node-RED TCP Node with a TAK Server, you must export the certificate and keys from these PKCS#12 files into PEM files. + +## Converting from PKCS 12 (.p12) into PEM + +If you've been provided with PKCS 12 (.p12) formatted certificates you must first export them in PEM format. This is a two step process: + +### Step 1: Export the certificate as PEM + +``` +openssl pkcs12 -clcerts -nokeys -in example.p12 -out example.cert.pem +``` +You should be prompted for an Import Password: +``` +Enter Import Password: +``` +If confirmed you should receive a MAC verification message: +``` +MAC verified OK +``` + +### Step 2: Export the private key as PEM: + +``` +openssl pkcs12 -nocerts -nodes -in example.p12 -out example.key.pem +``` +You should be prompted for an Import Password: +``` +Enter Import Password: +``` +If confirmed you should receive a MAC verification message: +``` +MAC verified OK +``` + +### Pro-tip: Default TAK Server certificate passphrase + +Your Import Password is the certificate passphrase. All default installations of TAK Server use a common certificate passphrase. Consult your CoreConfig.xml (/opt/tak/CoreConfig.xml). + +## Importing TAK Server certificates into Node-RED + +Once PEM certificate and private key are in hand, open Node-RED and add a TCP (request, input or output) Node to your Flow: + +![TCP Request Node](tls/tcp-request.png) + +Open the Node Properties dialog. + +- Enter your server name or IP, port, and check **Enable secure (SSL/TLS) connection**. +- Click the pencil icon to **Add new tls-config...**. + +![TCP Request Node Properties](tls/tcp-request-properties.png) + +- Click Certificate **Upload** to upload your PEM certificate file. +- Click Private Key **Upload** to upload your PEM private key. +- Enter your Private Key passphrase (if your private key is still encrypted). +- Click **Add**. + +![tls-config Properties](tls/tls-config-properties.png) + +Click **Done**. + +![TCP Request Node Properties Filled](tls/tcp-request-properties-filled.png) diff --git a/docs/tls/tcp-request-properties-filled.png b/docs/tls/tcp-request-properties-filled.png new file mode 100644 index 0000000..f02f9fe Binary files /dev/null and b/docs/tls/tcp-request-properties-filled.png differ diff --git a/docs/tls/tcp-request-properties.png b/docs/tls/tcp-request-properties.png new file mode 100644 index 0000000..6e630c7 Binary files /dev/null and b/docs/tls/tcp-request-properties.png differ diff --git a/docs/tls/tcp-request.png b/docs/tls/tcp-request.png new file mode 100644 index 0000000..f9a12b5 Binary files /dev/null and b/docs/tls/tcp-request.png differ diff --git a/docs/tls/tls-config-properties.png b/docs/tls/tls-config-properties.png new file mode 100644 index 0000000..40371d0 Binary files /dev/null and b/docs/tls/tls-config-properties.png differ diff --git a/docs/tutorials.md b/docs/tutorials.md index 0e68228..261532a 100644 --- a/docs/tutorials.md +++ b/docs/tutorials.md @@ -3,5 +3,16 @@ These tutorial videos cover installing and using Node-RED and node-red-contrib-tak, as well as highlight a use case for the Australian Capital Territory Emergency Services Agency. - [Node-RED: JSON to Cursor on Target](https://www.youtube.com/watch?v=5i-y3Nc01Hs) + + + + - [Node-RED TAK on Windows](https://www.youtube.com/watch?v=1mHphHhX4lk) + + + + + - [ACT Emergency Services Agency incidents into ATAK using Node-RED](https://www.youtube.com/watch?v=1xDQmRZAtFo) + + \ No newline at end of file diff --git a/package.json b/package.json index 5fff65c..12e5f6f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "node-red-contrib-tak", - "version": "4.1.0-beta5", + "version": "4.1.0", "description": "Node-RED Nodes for encoding & decoding TAK Protocol and Cursor on Target messages from TAK Products.", "license": "Apache-2.0", "url": "https://github.com/snstac/node-red-contrib-tak",