node-udp-forwarder

    0.2.0 • Public • Published

    node-udp-forwarder Build Status Codacy Badge Maintainability

    A simple UDP datagram forwarder / proxy. Akin to socat but multi-platform, extensible, and hackable. Provides a command line interface (CLI) and an API.

    Installation

    Install using npm

    [sudo] npm install [-g] node-udp-forwarder

    Forwarding using CLI

    Here's a full command line example, but only destination port and address are really required

    udpforwarder \
    --destinationPort 9903 --destinationAddress 10.211.55.3 \
    --protocol udp4 --port 9903 --address 10.211.55.2 \
    --multicastAddress 225.0.0.1 \
    --forwarderPort 0 --forwarderAddress 10.211.55.2

    Listens for source datagrams on port 9903 of interface with IP address 10.211.55.2, and forwards them to destination port 9903 at address 10.211.55.3. Destination address can be a multicast group such as 225.0.0.1.

    The source port and address of forwarded datagrams are 0 (any random port number) and 10.211.55.2, respectively. Datagrams received on the random port number are sent to the last known sender of the source datagrams above.

    Multicast datagrams arriving at port 9903, of interface 10.211.55.2 on Windows, are also forwarded. Linux and OS X require that the UDP socket be bound to all interfaces, address 0.0.0.0, to be able to listen to multicast.

    IP version 4 is chosen here using udp4 but IP version 6 may also be specified using udp6.

    Forwarding using API

    const udpf = require("node-udp-forwarder");
    /**
     * messageAdapter is invoked once per received message and should return an array of transformed messages.
     * it can change the message, omit the message, create new messages, or any combination thereof
     *
     * @param msg the received message buffer
     * @param rInfo the message remote source info 
     * @returns {[*]} an array of string or byte buffers to be forwarded to the destination
     */
    function messageAdapter (msg, rInfo) {
      const newMessage = `${msg.toString()}-transformed`;
      return [msg, newMessage];
    }
    
    
    const options = {
        protocol: 'udp4',
        port: 9903,
        address: '10.211.55.2',
        multicastAddress: '225.0.0.1',
        forwarderPort: 0,
        forwarderAddress: '10.211.55.2',
        messageAdapter: messageAdapter, // optional
        created: created
    };
    
    var f = udpf.create(4007, '10.211.55.3', options);
    
    function created() {
        console.log(`listening on ${f.address}:${f.port}`);
        console.log(`forwarding from ${f.forwarderAddress}:${f.forwarderPort}`);
    }
    
    // call f.end() when done

    Keywords

    none

    Install

    npm i node-udp-forwarder

    DownloadsWeekly Downloads

    10

    Version

    0.2.0

    License

    MIT

    Unpacked Size

    12.6 kB

    Total Files

    8

    Last publish

    Collaborators

    • tewarid