Secondary Settings

These settings are normally correct at their default values, but can be overridden if necessary:

Table 3-3 Secondary Settings

Setting Description Default Example
NumEPSCores The number of active EPS cores list specified by EPSCore<n> 1 NumEPSCores = 2
ServerChannel0 Socket that EFTlink listens on for incoming Channel 0 requests from POS. 10100 ServerChannel0 = 10100
ServerChannel1 Socket that EFTlink uses to send Channel 1 Device Requests to POS. 10101 ServerChannel1 = 10101
Channel1IP IP that EFTlink uses to send Channel 1 Device Requests to POS. localhost Channel1IP = IP ADDRESS
TLSExpiry

Specify whether to enforce expiry of TLS certificates, based on expiry date.

Note. Self-certified certificates created by the "CreateKeys" script files will expire after a maximum of 750 days.

true TLSExpiry = false
TLSExpiryWarningLogDays Specify the number of days prior to TLS certificate expiry that clear warnings will be included in log files during communication sessions. 90 TLSExpiryWarningLogDays = 180
TLSExpiryWarningMessageDays Specify the number of days that clear warnings presented to the operator at start of day prior to TLS certificate expiry. 90 TLSExpiryWarningMessageDays = 90
truststore.ExpiryWarningLogDays Number of Days prior to trusted certificate expiry that error warnings will be placed in EFTLink log files. 90 truststore.ExpiryWarningLogDays = 90
OPIServerDelegate Allows the OPIServer operation to be delegated to an alternate class OPIServerDelegate = manito.eft.tlog.TLogOPIServer
InvalidCorePromptTimeout Timeout in seconds for displaying the TXT_INVALID_CORE message to the operator. 10 InvalidCorePromptTimeout = 5
SingleSocket

Whether EFTLink is to be accessed via a single common server socket, with messages routed by POS ID

Note: In this mode, channel 1 will run on the same client socket as channel 0.

false SingleSocket = true
LineDisplayEnabled If set to false, all Sale State Notifications will be ignored and not passed on to any active EPSCore. true LineDisplayEnabled = false
DelegateLineDisplay If set to true a delegated list will be used to control which core receives Sale State Notification requests. Applicable only when 'DelegateLineDisplay' is set to true. false DelegateLineDisplay = true
LineDisplayDelegateList A comma separated list of all cores that are to receive Sale State Notification requests. LineDisplayDelegateList = 0,1,2
EwalletCore A particular core can be designated to handle EWallet operations. 0 EwalletCore = 1
GiftCardCore A particular core can be designated to handle Gift Card operations. 0 GiftCardCore = 1
CustomFormCore A particular core can be designated to handle custom forms operations. 0 CustomFormCore = 1
ReferralCore A particular core can be designated to handle Referrals. 0 ReferralCore = 1
SelfReferralEnabled Whether to allow a core to handle its own referral. false SelfReferralEnabled = true
NumServers Determines how many instances of the OPIServer to enable in server mode. In normal stand alone or non-server mode, set this to 0. 0 NumServers = 1
PEDPoolEnabled

Whether to enable PED pooling in server mode.

The NumServers should be set to a number greater than zero. In PED pooling mode, the PEDs can be shared among POS clients.

false PEDPoolEnabled = true
PEDPoolOneCatchAllChannel0 Whether to open just one port for channel zero in PED pooling mode. false PEDPoolOneCatchAllChannel0 = true
Server<n>.description

The list of server or PED identifier. This is mandatory when in PED pooling.

*n is a positive number starting at 1 and up to NumServers above.

c
NumClients Determines how many potential clients when using PED pooling. This is mandatory in PED pooling. 2 NumClients = 1
posN.description

The list of POS identifier where N is a positive number starting at 1.

This is mandatory in PED pooling.

pos1.description = POS 1
posN.subpool Restrict the list of server or PED for a particular POS where N is the workstation ID. A default association can also be specified by prefixing the server ID with '*'. null

pos1.subpool = *EFT 1, EFT 2

pos2.subpool = EFT 1, EFT 2

In the above example, register 1 by default will use EFT 1 if it's free. Both EFT 1 and EFT 2 servers is available for both registers (1 and 2).

ProtocolsWhiteList Restricts the protocols which are permissible in the connection between POS and EFTLink Server. Default allows for TLS 1.3 security. TLSv1.3,TLSv1.2 ProtocolsWhiteList=TLSv1.3,TLSv1.2
CipherWhiteList Restricts the ciphers which are permissible in the connection between POS and EFTLink Server. The whitelist only includes ciphers which are approved under Oracle Approved Technologies: Security Protocols. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM

CipherWhiteList =

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_AES_128_GCM_SHA256,TLS_AES_256_GCM_SHA384,TLS_CHACHA20_POLY1305_SHA256,TLS_AES_128_CCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CCM,TLS_ECDHE_ECDSA_WITH_AES_128_CCM

CipherBlackList CipherBlackList SSL_.*,TLS_EMPTY_.*,.*_SHA,.*_3DES_.*,.*_DES_.*,.*_WITH_NULL_.*,.*_anon_.*,.*EXPORT.*,.*LOW.*,.*MD5.*,.*DES.*,.*RC2.*,.*RC4.*,.*PSK.*,TLS_DH_.*,TLS_DHE_.*

CipherBlackList=

SSL_.*,TLS_EMPTY_.*,.*_SHA,.*_3DES_.*,.*_DES_.*,.*_WITH_NULL_.*,.*_anon_.*,.*EXPORT.*,.*LOW.*,.*MD5.*,.*DES.*,.*RC2.*,.*RC4.*,.*PSK.*,TLS_DH_.*,TLS_DHE_.*

PosType

POS type that EftLink is connected to.

This can be set explicitly (e.g. Lucas, Retail-J, Oscar) or set to "Auto" for the POS type to be deduced from the OPI

Auto PosType = Auto
Dynamic Configuration

Static/Dynamic Configuration

EFTLink can be configured to pick up its configuration dynamically from POS messages. A default setting is implied by the POS type setting, but this can be overridden.

false DynamicConfiguration = false
PosIfsfCompliance The level of IFSF compliance for the POS interface - IFSF or LUCAS. IFSF PosIfsfCompliance = Lucas
Decimal Places Number of decimal places to show. 2 DecimalPlaces = 2
DelegatedDisplay Whether to use a display server delegate class to control pop-up dialogs directly from EFTLink instead of via Channel1. false DelegatedDisplay = true
DelegatedDisplayHandler Class implementing pop-up dialogs. manito.deviceproxy.DeviceProxy DelegatedDisplayHandler = manito.deviceproxy.DeviceProxy
DelegatedDisplayOverride Optional override to revert some display operations back to the POS. 0 DelegatedDisplayOverride = 0
ShowPrintingDialog Whether to precede each print request with a TXT_PRINTING (for example, "Printing. Please Wait") dialog. false ShowPrintingDialog = false
ForcedInput Whether to request forced input (no cancellation) on input requests to the POS, if not explicitly set by the core. false ForcedInput = true
DeviceEvents Whether device events such as CardInserted are supported by the POS. Default false. false DeviceEvents = false
PrinterPoolEnabled

Whether to run a pool of printers shared between POSs. (many-many link)

Printer pool is accessed via the "master" channel 0. Channel 1 will run on the same client socket as channel 0.

false PrinterPoolEnabled = true
PaymentWithLoyalty

Whether combined payment with loyalty is supported.

Combined payment with loyalty is automatically disabled if a part payment is detected.

true PaymentWithLoyalty = false
ValidateItemValues Whether the basket content should be validated to ensure that the sum of the items matches the overall value. Default true. true ValidateItemValues = true
PrinterImpliedOnline Whether the printer can be assumed to be online and available, that is, if the POS can only send requests when the printer is online and with paper, there is no need to do an explicit check. false PrinterImpliedOnline = false
ClearDisplayAfterTimeout Whether to clear the display by sending an empty prompt to the POS after a timeout. false ClearDisplayAfterTimeout = false
CURRENCY_< currency symbol> Currency symbol conversion list.

CURRENCY_156 = GBP

CURRENCY_163 = GBP

CURRENCY_164 = EUR

CURRENCY_213 = EUR

DespoolOnLogon Spooled reports are automatically printed on next logon. false DespoolOnLogon = true
DespoolOnMaintenance Spooled reports are automatically printed on next maintenance/administration use. true DespoolOnMaintenance = false
DespoolOnReconciliation Spooled reports are automatically printed at next shift close. true DespoolOnReconciliation = false
DistributedDayend

Whether EFTLink is to relay POS reconciliation message on to other instances of EFTLink.

# If set true, EFTLink uses the same day end client list as for manito.eft.opi.server.Dayend

false DistributedDayend = false
NumDayendClients

List of client systems to which a reconciliation message should be sent by the manito.eft.opi.server.Dayend operation.

Number of clients to be processed.

0 NumDayendClients = 1
DayendClient<n>IP IP of remote system where EFTLink is running. DayendClient0IP = xxx.x.x.x
DayendClient<n>Channel0 Port which EFTLink is running.

DayendClient0Channel = 10100

DayendClient1Channel0= 10100

DayendClient2Channel0= 10100

DayendClient3Channel0= 10100

DayendClient4Channel0= 10100

DayendClient<n>Batch Batch file to be run locally instead of sending message. DayendClient0Batch = dayend.bat
DayendClient<n>Core Specific individual core to send the request to. DayendClient0Core = EftDevice
AllowMapMachineNameToSystemAccount

Allow the application to correctly secure access to data folders when running under the Windows Local System Account.

It is strongly recommended that the application is not configured to run using the Windows Local System account, instead use the Windows Local Service account when use of a local Windows machine account is desired.

Note that the Windows Network Service account should not be used.

false AllowMapMachineNameToSystemAccount = false
https.proxyHost Sets the https proxy host. https.proxyHost=adc-proxy.example.com
https.proxyPort Sets the https proxy port. https.proxyPort=80
http.proxyHost Sets the http proxy host. http.proxyHost=adc-proxy.example.com
http.proxyPort Sets the http proxy port. http.proxyPort=80
ImagePathWhitelist

Comma delimited list of permissible paths for image files used in device request XML.

For example, c:/Images,c:/eftfolder/resources/images

'Any' or a blank can be used but having no entry serves the same purpose.

ImagePathWhitelist = Any
DisplayListOfPEDForFailure

In PED pooling mode, this determines if Eftlink displays the list of PEDs when the request failed or declined using the default PED.

This is to give the user an option to select another PED in the next request.

false DisplayListOfPEDForFailure = false
DeviceRequestInPedPoolModeEnabled If true, then EFTLink will accept and route custom form / deviceRequest messages coming from a register to the desired server instance specified within the pos.subpool list. false DeviceRequestInPedPoolModeEnabled = true
CardRangeFile The name and location of the range xml file. Defaults to cardrange.xml file located within the root of the eftlink installation directory ./rangefile/cardrange.xml
EnableEventLogDeviceRequests Enable the sending of critical events to the POS. true EnableEventLogDeviceRequests = true
communications.keystore.iterations Specify number of iterations. Valid range 10000 to 100000 10000 communications.keystore.iterations = 10000
communications.keystore.hashbytesize Specify hash byte size. Valid values 256, 384, 512 384 communications.keystore.hashbytesize = 384
communications.keystore.digest Specify digest Valid values SHA-256, SHA-384, SHA-512 SHA-512 communications.keystore.digest = SHA-512
communications.keystore.secretkeyspec Specify keyspec, currently only AES supported. AES communications.keystore.secretkeyspec = AES
communications.keystore.factoryinstance Specify factory, currently only PBKDF2WithHmacSHA512 supported. PBKDF2WithHmacSHA512 communications.keystore.factoryinstance = PBKDF2WithHmacSHA512
communications.keystore.keystoretype Specify Keystore type. Currently only JKS is supported. JKS communications.keystore.keystoretype = JKS
truststore.keystore.iterations Specify Truststore number of iterations. Valid range 10000 to 100000 10000 truststore.keystore.iterations = 10000
truststore.keystore.secretkeyspec Specify Truststore keyspec, currently only AES supported. AES truststore.keystore.secretkeyspec = AES
truststore.keystore.factoryinstance Specify Truststore factory, currently only PBKDF2WithHmacSHA512 supported. PBKDF2WithHmacSHA512 truststore.keystore.factoryinstance = PBKDF2WithHmacSHA512
truststore.keystore.hashbytesize Specify Truststore hash byte size. Valid values 256, 384, 512 384 truststore.keystore.hashbytesize = 384
ContentMaskList Comma delimited list of XML fields to be masked on log ContentMaskList=StoreName,StoreAddress1

MaskTextLinesOnDeviceRequest

Determines whether the contents of textline elements within a raised device request are masked within the log file.

true

MaskTextLinesOnDeviceRequest = false

OriginalPSPNamesToBypassPSPChecking Comma delimited list of EPSCore names to skip for checking that takes place on follow on transaction (Voids and Referenced Refunds). OriginalPSPNamesToBypassPSPChecking=Simulated,oracle.eftlink.opiretail.OPIRetailCore

Note:

It is not recommended to use this functionality with compact systems where memory is at a premium. Therefore, taking the above example of 3 servers running in separate JVMs with each JVM taking roughly ~60MB of memory, EFTLink would require at least ~180MB of free memory (this is a purely hypothetical situation, actual memory usage may be system-dependent).

There may be additional memory requirements dependent upon the core being used with EFTLink.

You must ensure when, using this functionality, that a clean shutdown of EFTLink is performed in order to destroy the child processes which have been created. In Windows command line; the command CTRL+C is used to terminate a batch job cleanly, which will close EFTLink when running using the included batch file/Tanuki wrapper.

Example:

MultiJVM = false