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.