open-index/open-npm huggingface dataset:
npm package: @insectos/node-red-cloudflare-ddns
Description: A DDNS client for Cloudflare with optional distributed operation
Author: stw@linux.com
Latest version: 0.4.0

# @insectos/node-red-cloudflare-ddns

Cloudflare does not offer a [DDNS](https://www.cloudflare.com/learning/dns/glossary/dynamic-dns/) client on the free plan. This node closes the gap.

Node that checks the public IP address of the current NodeRED instance using [ipify](https://www.ipify.org). When the IP address doesn't match the cached value, calls the Cloudflare API to correct the value. The cached value is retrived from context on startup. Works with Cloudflare cached ip addressen too.

## Preparation

You need to login to your [Cloudflare](https://www.cloudflare.com/) account and perform the following steps:

- Find your [ZoneeID](https://developers.cloudflare.com/fundamentals/setup/find-account-and-zone-ids/). We only need the ZoneID here.
- Create a Cloudflare [API Token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/). Limit it to your Zone. It needs DNS edit permisssions
- Create an A record (AAAA not yet) for your DDNS site. Add a comment tha begins with `[DDNS]` (Case sensitive)

## Usage on a single node

Add the Node to a page, use a button or a timer to trigger it.

Use a Catch node to see what errors are thrown from the DDNS node that aren't already being caught and handled.

### Input

Anything: input values are ignored, used only to trigger the lookup

### Output

`msg.payload <json>`

```json
{
  "ip": ["123.123.123.123", ...],
  "updated": false /* Not updated since the last run */
}
```

## Usage in the hub-spoke mode

In the Hub-spoke model the Cloudflare credentials are only maintained
by the hub. This is kind of a service provider scenario. We use it
on distributed farms where we can't control the access to hardware and
don't want to distribute cloudflare credentials.

See the examples for a configuration

### Spoke

- Configure the hub URL including a path
- Configure the token to identify the spoke
- Use a button or timer to trigger it
- Use a `http request` node to talk to the hub

### Hub

- Configure the list of spokes and their tokens
- use a `http in` and a `http response` to handle spoke submissions

## Libraries used

- Mocha, Chai, Sinon for testing
- No Runtime dependencies beyond NodeRED

## Change log

### v0.3.0

- moved host & tokens to editable list

### v0.1.0

- moved nodes to `Cloudflare` category
- Introduced hub & spoke nodes for central operations
- pass through msg object to be a good Redicen (NodeRED citicen)

### v0.0.1

- Initial creation

## Ideas & Feedback

- Use [Github Issues](https://github.com/insectos/node-red-cloudflare-ddns/issues)
- Discuss on [the NodeRED forum](https://discourse.nodered.org/)

The Spoke component is useful even without Cloudflare and the hub component. Running it will provide you with your public IP address in the payload
npm package: @insectos/node-red-ssh-exec
Description: A flexible SSH client for Node-RED
Author: NotesSensei
Latest version: 0.3.5

# @insectos/ssh-exec

Node that establishs a ssh terminal connection to a remote host. The remote host can be selected from `~/.ssh/config` and supports ssh keys. Wrapper around [ssh2](https://www.npmjs.com/package/ssh2)

## Usage

Select a host from the dropdown or provide manual configuration. Connection to the host will happen on first data received. Connections are reestablished as needed.

Use a Catch node to see what errors are thrown from the SSH node that aren't already being caught and handled.

### Input

`msg.payload <string>` = The command that you wish to be sent to the remote shell
`msg.sshhost <string>` = OPTIONAL overwrite the configured hostname, must exist in `.ssh/config` Once overwritten all following commands go to the new host

### Output

`msg.payload <string>` = The text printed to STDOUT on the remote shell

`msg.host` = The IP address of the connected host. This is also returned on errors so can be used in conjunction with the Catch node so only one Catch node is needed to watch all uses of the Interactive SSH node.

## WIP

- backfill unit tests

## Credits

Inspired by [node-red-contrib-interactive-ssh](https://www.npmjs.com/package/node-red-contrib-interactive-ssh). Since the connection mechanism was completely redesigned, a new package is warranted

## Change log

### v0.3.5

- Change package name to `@insectos\node-red-ssh-exec`
- Contributed by [@novski](https://github.com/novski): read Hostname & HostName
- Return msg now includes original msg object custom properties

### v0.3.2

- added `sshpassword` to the `msg` object to be able to pass in a sshkey passphrase
- upgraded `ssh-config` to 4.4.0
- fixed issue where password was ignored when selecting host that doesn't have a key file

### v0.3.1

- added a check for the .ssh/config file

### v0.3.0

- Reorganised source to be more testable
- moved password to (encrypted) credentials
- node name shows host from `.ssh/config`
- fixed handover of ssh passphrase
- added example flow
npm package: @insectos/ssh-exec
Description: A flexible SSH client for Node-RED
Author: NotesSensei
Latest version: 0.3.5
Deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.

# @insectos/ssh-exec

## DEPRECATION

The node has been renamed to `@insectos/node-red-ssh-exec`

Please use the [updated node](https://www.npmjs.com/package/@insectos/node-red-ssh-exec)