Crate fundamentum_edge_pfwd

Crate fundamentum_edge_pfwd 

Source
Expand description

Port forwarding service for linux edge devices.

This is the device side part of a bidirectional bridge established in between a remote proxy port open in the cloud and its actual target port on the device going through both Kafka and MQTT. This particular component is responsible for the MQTT <=> TARGET_PORT part of the overall bridge. It continuously recovers opaque fragments of an arbitrary protocol initiated cloud side on the PROXY_PORT from an MQTT topic, writing those into the proper local TARGET_PORT. Conversely, it continuously reads opaque protocol fragments from the same local TARGET_PORT channeling those back toward the cloud-side PROXY_PORT through another MQTT channel.

When opening connection, it creates an instance in a tokio task. When forwarding data, it dispatches this data to the right instance. This instance will transfer it to a target socket on the device. The instance will write data read from the socket back to mqtt

Proto rust definition and bindings can be found here : https://crates.io/crates/fundamentum-portforwarding-proto-rust/0.1.0

§Usage

cargo run -- --project-id ${project_id} --region-id ${region_id} --registry-id ${registriy_id} --serial ${serial_id} --private-key ${private_key_path}

More --help

Modules§

errors
App Error module
instance
Port forward instance It manages one instance of port forwarding.
manager
Port forwarding connection manager.
message
Define message structure and traits for message handling. Also do conversion between protobuf message and Message.
port_connector
Port Connector Module
protocol_sdk
Protocol SDK for Port Forwarding Messages
tty
TTY handling This module handles the TTY (teletypewriter) functionality. It provides a way to spawn a pseudo-terminal (PTY) and interact with it.