Integratec API Platform
Configuration

Each module's post-install configuration is handled by an external file comprised of settings relevant to the given module.

This file is formatted with INI-style settings underneath specific sections. See the below example:

1 [Section1]
2 Setting1=Value1
3 Setting2=Value2
4 [Section2]
5 Setting3=Value3
6 Setting4=Value4

The following filename convention is used: "<Module Name>.opi"

Note: Not all modules use all possible settings.

Settings

The following is a detailed list of all possible settings and the modules they pertain to:

[Networking]

ControlIP

  • Type: String
  • Modules: ControlNode
  • Default: N/A
  • Description: Set the IP address or host name of the ControlHub module.

ControlPort

  • Type: Integer
  • Modules: ControlHub and ControlNode
  • Default: N/A
  • Description: Set the start of the ControlHub's TCP port range (2 ports).

MasterIP

  • Type: String
  • Modules: Workers
  • Default: UDP broadcast mode
  • Description: Set the IP address or host name of the Master module.

MasterPort

  • Type: Integer
  • Modules: Master and Workers
  • Default: UDP broadcast mode
  • Description: Set the start of the Master's TCP port range (5 ports).

[Configuration]

ClientConnectionTimeout

  • Type: Integer
  • Modules: Client API
  • Default: 2500
  • Description: Set the Client connection timeout interval (milliseconds). The Client will terminate if it fails to connect in the time specified. A value of -1 is infinite.

ClientUDPConnectionTimeout

  • Type: Integer
  • Modules: Client API
  • Default: 10000
  • Description: Set the Client UDP connection timeout interval (milliseconds), used if a TCP address is not specified. The Client will terminate if it fails to connect in the time specified.

Heartbeat

  • Type: Boolean
  • Modules: Master and Workers
  • Default: True
  • Description: Toggle whether or not the module will send and expect heartbeat messages. If enabled for the Master module, it MUST be enabled for all connected Worker modules.

HeartbeatInterval

  • Type: Integer
  • Modules: Master and Workers
  • Default: 150000
  • Description: Set the frequency of heartbeat messages sent and the frequency heartbeat messages are expected to be received by the broker and minions (milliseconds). For example, decreasing this value will make heartbeat messages be sent more frequently, but will also cause the modules to disconnect more quickly if heartbeats are not received when expected.

HeartbeatLiveness

  • Type: Integer
  • Modules: Master and Workers
  • Default: 3
  • Description: Set the liveness value, which when multiplied by the HeartbeatInterval results in the amount of time before other Modules are considered expired. Workers will attempt to reconnect to an expired Master, and the Master will disconnect/purge expired Workers.

LocalPath

  • Type: String
  • Modules: Client API, Master, and Workers
  • Default: Path of the executable
  • Description: Set the path of the local supporting files.

MinionConnectionTimeout

  • Type: Integer
  • Modules: Master and Workers
  • Default: -1
  • Description: Set the Minion connection timeout interval (milliseconds). The Minion will terminate if it fails to connect in the time specified. A value of -1 is infinite.

MinionCount

  • Type: Integer
  • Modules: Workers
  • Default: 4
  • Description: Set the number of Minions (Worker threads) to create in a Worker process.

MinionPublishLimitInterval

  • Type: Integer
  • Modules: Master and Workers
  • Default: 500
  • Description: Limit the number of progress status messages that can be sent by a Minion, when applicable. For example, by default a minion can send a progress status message every 500 milliseconds. Decreasing this value increases the frequency of status messages being sent, but also increases network traffic.

MinionUDPConnectionTimeout

  • Type: Integer
  • Modules: Master and Workers
  • Default: 10000
  • Description: Set the Minion UDP connection timeout interval (milliseconds), used if a TCP address is not specified. The Minion will terminate if it fails to connect via UDP in the time specified.

RemotePath

  • Type: String
  • Modules: Client API, Master, and Workers
  • Default: LocalPath (above)
  • Description: Set the path of the remote or shared supporting files.

RequestMax

  • Type: Integer
  • Modules: Master
  • Default: 100000
  • Description: Set maximum number of requests the Master module will track concurrently.

[License]

CompanyID

  • Type: Integer
  • Modules: Master
  • Default: N/A
  • Description: Set the license key file CompanyID.

LicenseKeyFile

  • Type: String
  • Modules: Master
  • Default: opLicense.key
  • Description: Set the license key filename (and path, if desired).

LicensePublicKey

  • Type: String
  • Modules: Master
  • Default: N/A
  • Description: Set the public key for the license file.

[Security]

Encryption

  • Section: Security
  • Type: Boolean
  • Modules: Client API, Master, and Workers
  • Default: False
  • Description: Turn message encryption on or off.

SecurityKeyFile

  • Section: Security
  • Type: String
  • Modules: Client API, Master, and Workers
  • Default:
    • Master = key_master.private
    • Non-Master = key_module.private
  • Description: Set the private key filename (and path, if desired).

Important: Booleans are an integer value of 0 (false) or 1 (true).

Port Usage

The Integratec platform uses a few ranges of TCP and UDP ports, inbound and outbound. These ports must be available for Integratec to function correctly.

The UDP ports we use are statically assigned to 60000 and 60001. These UDP ports are used for discovery only if MasterIP is blank in the configuration file for a Client API or Worker module.

There are two ranges of sequential TCP ports in use as well, starting with values specified by you in the configuration file.

  • The MasterIP port range is a sequence of 5 ports.
  • The ControlIP port range is a sequence of 2 ports.

For example:

  • If your configuration file contains MasterIP=1000, we will use TCP ports 1000-1004.
  • If your configuration file contains ControlIP=2000, we will use TCP ports 2000 and 2001.

The following table has more details about port usage. It shows which modules use which ports, and whether the connections are inbound or outbound.

Module Protocol Port Connection
all TCP 5905 inbound / outbound
Control Hub TCP
TCP
ControlPort
ControlPort + 1
inbound
inbound
Control Node TCP ControlPort + 1 outbound
Client API or Worker TCP
UDP
MasterPort to MasterPort + 4
60001
outbound
inbound
Master TCP
UDP
MasterPort to MasterPort + 4
60000
inbound
inbound

Module-Specific Details

Master

  • The Master module must use its own IP Address, so MasterIP is unnecessary.
  • MasterPort specifies the starting point for a range of 5 sequential TCP ports used by the Master. This setting is required, and all connecting modules must set their MasterPort to the same value.
  • The Master module must have a valid license file installed and configured to function.

Example:

[Networking]
MasterPort=60000
[Configuration]
LocalPath=C:\Integratec\
RemotePath=C:\Integratec\
[License]
CompanyID=999999
LicensePublicKey=yourkeyhere1
LicenseKeyFile=C:\my\path\to\my\license\key.file

Client API

The base library (opApi.dll) uses a configuration file called opApi.opi. Its primary purpose is to configure security, logging, etc. This config file is unnecessary when opening a basic, unencrypted client connection.

A negative ClientConnectionTimeout value (e.g. -1) is interpreted as an indefinite timeout interval. The Client will not timeout and will wait for a Master at the address specified to connect to.

Workers

Example:

[Networking]
MasterIP=192.168.0.100
MasterPort=60000
[Configuration]
LocalPath=C:\Integratec\
RemotePath=C:\Integratec\

Reporting/Address Standardization

The MinionCount parameter is not applicable for the Reporting and Address Standardization modules when starting them manually. It is internally set to (1). To take advantage of multiple minions with these modules you must start the process multiple times:

  • Use Control Services, which uses the Process Owner application to start the number of processes specified by MinionCount (defaults to 4).
  • Start/run multiple instances of the module interactively (e.g. opAddrStd.exe).
  • Create your own batch/script file to start the process multiple times.

Control Hub

  • The Control Hub module must use its own IP Address, so ControlIP is unnecessary.
  • ControlPort specifies the starting point for a range of two sequential TCP ports used by ControlHub. This setting is required for correctly functioning Control services.

Example:

[Networking]
ControlPort=50000

Control Node

OPI

Example:

[Networking]
ControlIP=192.168.0.200
ControlPort=50000

Process List

In addition to the above OPI file, Control Node modules are also installed with "ControlProcesses.txt". This text file contains a list of the processes the Node controls (e.g. start, stop, etc.). See the following example, which allows the Node to control the state of both applications listed:

C:\Integratec\opPresort.exe
C:\Integratec\opWorkerHost.exe opReportLib.dll

By adding multiple entries for the same module, you can start multiple instances of the same process. For example, the following entries would start the Address Standardization module four times:

C:\Integratec\opAddrStd.exe
C:\Integratec\opAddrStd.exe
C:\Integratec\opAddrStd.exe
C:\Integratec\opAddrStd.exe

Note: In order for changes to take effect, the Control Node service must be restarted when ControlProcesses.txt is changed.

Security

Messaging encryption is all or nothing - if the Master is configured to use encryption, then all connecting modules must also be, and have the keys necessary to authenticate (as described in the overview).

Turning encryption on, if it was not configured for you during installation, is as simple as adding a section to the configuration files for your Client API, Workers, and Master. See the following example:

[Security]
Encryption=1
SecurityKeyFile=key_module.private

Note: The Control services do not operate with message encryption.

Encryption

As indicated in the settings list above, Encryption is a boolean, that defaults to False (0) if not present.

SecurityKeyFile

The SecurityKeyFile setting defaults to key_module.private for non-Master modules, and key_master.private for the Master module if not present. You may specify a relative or fully qualified path. Relative paths are relative to your LocalPath.

See the following examples:

Settings Path Used
SecurityKeyFile=C:/fully/qualified/path/key.file C:/fully/qualified/path/key.file
LocalPath=C:/my/local/path
SecurityKeyFile=../other/folder/key.file
C:/my/local/other/folder/key.file
LocalPath=C:/my/local/path
SecurityKeyFile=key.file
C:/my/local/path/key.file