Skip to main content
The Connect processor is Routr’s built-in Processor. It implements the PBX portion of SIP Connect 1.1 (not certified): it handles registrations and routes calls between Agents, Peers, and the PSTN using the resources stored in the API Server. It is stateless.

Docker image

fonoster/routr-connect The processor has no configuration file. You configure it with environment variables.

Ports

Environment variables

Service

Number normalization

Connect Token verification

These variables verify the JWT in the X-Connect-Token header. Set only one of CONNECT_VERIFIER_ADDR or CONNECT_VERIFIER_PUBLIC_KEY_PATH. If you set both, the public key is used.

Header stripping

Untrusted requests are calls from the PSTN and requests authorized only by a Connect Token. The default list is X-App-Ref, X-Call-Ref, X-Call-Direction, X-DOD-Number, X-DOD-Privacy, X-Access-Key-Id, X-Is-Api-Originated-Type, X-Edgeport-Ref, X-Gateway-Auth, X-Request-Uri, and X-Session-Count. A request with a verified Connect Token keeps X-App-Ref. Requests from authenticated Agents and Peers keep all headers.

EdgePort trust

When the callee is connected to a different EdgePort, the processor adds a Route header to that EdgePort and an X-Edgeport-Ref header. A request carrying X-Edgeport-Ref skips routing and access checks, so the processor honors the header only from a trusted peer EdgePort. From any other source, the processor removes X-Edgeport-Ref, logs a warning, and routes the request normally. A CANCEL always follows its INVITE’s path and is not affected.

Observability

gRPC contract

The processor serves the Processor contract and is a client of the Location Service and the API Server. See processor.proto, location.proto, and the Connect protos.

Minimal example

This command runs the processor against a Location Service and an API Server.
This fragment trusts two EdgePorts on a private network.

Notes

  • With a single EdgePort, leave TRUSTED_EDGEPORT_ADDRESSES empty. With several EdgePorts, list their addresses, or requests forwarded between EdgePorts go through routing and access checks again instead of reusing the route in the message.
  • The EdgePort ref is its HOSTNAME in Docker and Kubernetes. Use those values in TRUSTED_EDGEPORTS.
  • The processor exits at startup if LOCATION_ADDR or API_ADDR is missing.