TCP Server Connector

Version 21.0.8222


TCP Server Connector


TCP Server Connectors support hosting a generic endpoint for receiving arbitrary data over TCP.

概要

Each TCP Server Connector listens on a specified port for incoming TCP traffic, either with SSL/TLS encryption or plaintext. The connector is intended for use when Arc needs to receive arbitrary data that does not necessarily fit into the constraints provided by other standard protocols.

Since TCP traffic is a constant stream that does not intrinsically have a ‘start’ or ‘end’ point, the connector must be configured to determine where one message ends and the next begins. The connector supports two approaches:

  • A static string/character delimiter that ends the current message or begins the next message
  • Reading a value in the incoming TCP data to determine how long the message should be

For the second approach, the connector requires an offset (how many bytes after the first byte to begin reading the message length) and a size (how many bytes to read, starting at the offset, to read the length value). If the length of the message is the first value in the ‘header’ for the message, the offset should be 0.

Once the delimiter or length is reached, the connector will push a message into the Arc Flow containing the raw data received over TCP.

The TCP Server Connector can also generate an Arc message when a client connects or disconnects, to alert other processes within the Flow. More information can be found in the Connected and Disconnected Messages section.

For information on sending responses back to TCP clients, please see the Sending Messages section.

Connector Settings

Settings Tab

Configuration

Settings related to the core configuration of the connector.

  • Connector Id The static name of the connector. All connector-specific files are held in a folder by the same name within the Data Directory.
  • Connector Description An optional field to provide free-form description of the connector and its role in the flow.
  • ポート The port on which to listen for incoming TCP connections.

Message Decoding

Settings related to distinguishing individual messages from the TCP stream.

  • メッセージの開始区切り文字 The character or string indicating the start of a new message.
  • メッセージの終端区切り文字 The character or string indicating the end of the current message.
  • メッセージ長の補正値 The number of bytes to skip before beginning to read the length of the message from the incoming data.
  • メッセージ長のサイズ The size in bytes of the length value within the incoming data.

TLS Settings

Settings related to SSL/TLS transport security.

  • TLS を有効化 Whether clients must negotiate SSL/TLS encryption to connect to the TCP server.
  • サーバー証明書 The SSL/TLS certificate that identifies the TCP server.
  • 証明書のパスワード The password to access the Server Certificate’s private key.

Advanced Tab

Logging

Settings related to the logs maintained by the server.

  • サーバーログを有効化 Whether to maintain server-side logging for connections.
  • サーバーログの回転 The interval according to which logs should be archived (compressed and moved to an archive folder).
  • サーバーログの回転 The interval according to which logs should be deleted.

Keep Alive

Settings related to keep-alive packets sent by the server to maintain an idle connection.

  • Keep Alive Whether to send keep-alive packets periodically to ensure that idle connections are not closed due to inactivity.
  • Keep Alive までの時間 The length of inactivity that should elapse before sending the first keep-alive packet.
  • Keep Alive の間隔 The interval between consecutive keep-alive packets.

Other Settings

Settings not included in the previous categories.

  • 接続時メッセージ Whether the connector should generate an Arc message when a client connects. More information can be found in the Connected and Disconnected Messages section.
  • 切断時メッセージ Whether the connector should generate an Arc message when a client disconnects. More information can be found in the Connected and Disconnected Messages section.
  • アイドルタイムアウト The length of time the server should wait for an idle client before disconnecting them due to inactivity.
  • ローカルファイルスキーム A filemask for determining local file names as they are downloaded by the connector. The following macros may be used to reference contextual information:
    %ConnectorId%, %Filename%, %FilenameNoExt%, %Ext%, %ShortDate%, %LongDate%, %RegexFilename:%, %DateFormat:%.
    As an example: %FilenameNoExt%_%ShortDate%%Ext%
  • ローカルホスト The binding address of the local server, if not the default network interface.
  • ログレベル The level of detail included in logs generated for the connector.
  • 最大接続数 The maximum number of concurrent connectors.
  • その他 An arbitrary set of advanced configuration settings.
  • 親コネクタ If set to another TCP Server Connector, this connector will inherit settings from that connector. Any local settings will override settings from the parent.
  • メッセージをログ Whether logs from sent files will include a copy of the file itself.
  • Sent フォルダに保存 Whether files sent by the connector should be copied to the Sent folder for the connector.
  • SSL またはTLS が有効化されたプロトコル The list of SSL/TLS protocols supported when establishing outgoing connections. It is strongly recommended to only use TLS protocols. Some obsolete operating systems do not support TLS 1.2.

Miscellaneous

Settings for specific use cases.

  • Other Settings Allows configuration of hidden connector settings in a semicolon-separated list, like setting1=value1;setting2=value2. Normal connector use cases and functionality should not require use of these settings.

Server Tab

Trusted IP Addresses

This section defines the IP addresses that are allowed to make connections. The following functions are available:

  • Add Opens a modal to enter a new IP address range.
  • Edit Opens a modal to modify the selected IP address range.
  • Delete Deletes the selected IP address range from the list.

The following restrictions apply to this feature:

  • localhost cannot be modified or removed from the list.
  • Any IP addresses outside of the defined ranges will be rejected.
  • Ranges are supported. For example, the entry 100.10.100.1-15 indicates that IP addresses between 100.10.100.1 and 100.10.100.15 are allowed.
  • CIDR notation is supported. For example, the entry 100.10.100.0/24 indicates that IP addresses between 100.10.100.0 and 100.10.100.255 are allowed.
  • Wildcard patterns are supported. For example, the entry 100.10.100.* indicates that IP addresses beginning with 100.10.100 are allowed.

Connected and Disconnected Messages

By default, the TCP Server Connector will only generate Arc messages when clients transfer data such that the connector recognizes a full message (according to the settings in the メッセージの復号 section). The connector can also generate Arc messages when a client connects to the server (if 接続メッセージ is enabled in the Advanced tab) or disconnects from the server (if 切断時メッセージ is enabled in the Advanced tab).

When these special messages are generated, a special header is added to the Arc message:

x-tcpserver-event

This header is set to the value ‘connected’ when clients are connecting, and ‘disconnected’ when clients are disconnecting.

This header value must be checked by later connectors in the Flow to detect whether a message written to the output folder of a TCP Server Connector is one of these special messages.

Sending Messages

The TCP Server Connector also uses a special header value to send messages back to connected clients:

x-tcpserver-connectionid

This header is added to any output messages generated by the connector, set to a ‘Connection ID’ value that uniquely identifies one of the connected clients. Messages that should be sent back to this client must have this same header set to the same value in order to ensure that the message is sent to the appropriate client.

Since this header is already present on any messages written out by the connector, if the message passes through an Arc Flow and arrives back at the Send folder for the TCP Server Connector, it will still have the same ‘Connection ID’ value and will be returned to the same client that sent the original message. If the message cannot be directly routed back to the TCP Server Connector, then the ‘Connection ID’ value must be saved and applied as a header (with the same name listed above) to whatever new messages should be returned to the client.