# Configuration File Sections

The DIH configuration file contains several sections that represent different areas that you can configure. For details on all available configuration parameters, refer to the Distributed Index Handler Reference (see Display Online Help).

## [ACIEncryption]

You can use the `[ACIEncryption]` section to encrypt communications between ACI servers and any applications that use the ACI API. For example:

    [ACIEncryption]
    CommsEncryptionType=GSS
    ServiceName=Kerberos

## [AuthorizationRoles]

The `[AuthorizationRoles]` defines roles that enable a particular set of actions for particular clients, SSL identities, and GSS principals. You must create a subsection for each authorization role that you define in the `[AuthorizationRoles]` configuration section.

For example:

    [AuthorizationRoles]
    0=AdminRole
    1=UserRole

    [AdminRole]
    StandardRoles=Admin,Index,ServiceControl
    Clients=localhost
    SSLIdentities=admin.example.com

    [UserRole]
    StandardRoles=Query,ServiceStatus
    SSLIdentities=admin.example.com,userserver.example.com

## [DistributionIDOLServers] Section

The `[DistributionIDOLServers]` section contains settings that determine the location of the IDOL Servers that the DIH communicates with, and the ports by which this communication takes place. There is a separate `[IDOLServerN]` subsection for each child server. The child servers can be IDOL Servers, Content components, or child DIH servers.

If you use date-based indexing, you must also configure `[DateRangeN]` subsections to specify the date ranges that each child server indexes.

For example:

    [DistributionIDOLServers]
    Number=2

    [IDOLServer0]
    Host=emerson
    Port=9100

    [IDOLServer1]
    Host=thoreau
    Port=9100

For non-mirrored systems, you can also create child server groups by specifying more than one child server in a comma-separated list. Each child in the group receives the same data from the parent DIH. For example:

    [DistributionIDOLServers]
    Number=2

    [IDOLServer0]
    Host=DIH1.company.com,DIH2.company.com
    Port=9100,9100

    [IDOLServer1]
    Host=DIH3.company.com
    Port=9100

In this example, the DIH distributes data between the three DIH child servers. `DIH1` and `DIH2` receive the same data (they are mirrored copies of each other), and `DIH3` receives a different set of data. The child servers can then distribute data between their respective child servers.

NOTE: If you configure DAH and DIH together in the IDOL Server configuration file, DAH can use the child server groups. However, you cannot also configure virtual databases in the DAH. Refer to the Distributed Action Handler Administration Guide.

## [IndexNotify] Section

The `[IndexNotify]` section contains parameters that control and enable the automatic generation of index job information for a specified host. For example:

    [IndexNotify]
    Host=10.1.1.10
    ACIPort=9100
    BatchSize=1
    BatchTimeout=10000
    ConnectRetries=1
    ConnectTimeout=5000

## [IndexQueue] Section

The `[IndexQueue]` section contains parameters that control the index queue. For example:

    [IndexQueue]
    IndexQueueInitialSize=30000
    IndexQueueMaxHistory=4000
    IndexQueueMaxPendingItems=100

## [License] Section

The `[License]` section contains licensing details, which you must not change. For example:

    [License]
    Holder=My Company
    Key=01234567890
    Operations=803|87sdhsdf9n94nmsf7oasda987w4yriasunfaasd

## [Logging] Section

The `[Logging]` section lists the logging streams that you set up to create separate log files for different log message types (query, index, and application). It contains a section for each of the listed logging streams, in which you configure the settings that determine how to log each stream. For example:

    [Logging]
    0=INDEX_LOG_STREAM
    1=QUERY_LOG_STREAM
    2=APP_LOG_STREAM

    [INDEX_LOG_STREAM]
    LogFile=index.log
    LogDirectory=./logs/DIHIndexLogs
    LogHistorySize=55
    LogTime=True
    LogEcho=True
    LogMaxSizeKbs=1024
    LogTypeCSVs=index
    LogLevel=full
    LogExpireAction=datestamp

    [QUERY_LOG_STREAM]
    LogFile=query.log
    LogDirectory=./logs/DIHQueryLogs
    LogHistorySize=50
    LogTime=True
    LogEcho=True
    LogMaxSizeKbs=1024
    LogTypeCSVs=query
    LogLevel=full
    LogExpireAction=consecutive

    [APP_LOG_STREAM]
    LogFile=application.log
    LogDirectory=./logs/DIHAppLogs
    LogHistorySize=50
    LogTime=True
    LogEcho=True
    LogMaxSizeKbs=1024
    LogTypeCSVs=application
    LogLevel=full
    LogExpireAction=datestamp

NOTE: The query logs truncate all queries to 4,000 characters.

## [Paths] Section

The `[Paths]` section contains settings that determine where to store index data and other files. For example:

    [Paths]
    Main=./main
    Incoming=./incoming
    Archive=./archive
    Failed=./failedTasks

## [RoundRobinMode] Section

The `[RoundRobinMode]` section contains settings that control data indexing when you use round robin mode. Use settings in `[DAHServerN]` sections to configure the child servers for powerup and shutdown when round robin data indexing rollover occurs. For example:

    [RoundRobinMode]
    ServerImmediateStart=2
    NextServerStartTime=00:00
    NextServerStartDate=2006/10/20
    PeriodInSec=86400
    RoundRobinMode=True

    [DAHServer0]
    Host=host1
    Port=9060
    ShutDownEnginePeriods=0,-1

    [DAHServer1]
    Host=host2
    Port=9060
    StartUpEnginePeriods=-2

## [Server] Section

The `[Server]` section contains general settings for indexing. For example:

    [Server]
    DIHPort=9071
    Port=9070
    MirrorMode=True
    ArchiveMode=True
    ArchiveFailedTasks=True

## [Service] Section

The `[Service]` section contains settings that determine which machines have permission to use and control the DIH service. For example:

    [Service]
    ServicePort=9072

## [SSLOptionN] Section

The `[SSLOptionN]` section contains settings that determine incoming or outgoing SSL connections between the DIH and other servers.

For example:

    [SSLOption0]
    SSLMethod=TLSV1.3
    SSLCertificate=host1.crt
    SSLPrivateKey=host1.key

    [SSLOption1]
    SSLMethod=TLSV1.3
    SSLCertificate=host2.crt
    SSLPrivateKey=host2.key
    SSLPrivateKeyPassword=sample1XQ
    SSLCheckCommonName=True

NOTE: You must create an `SSLOption` section for each unique value set by the `SSLConfig` parameter in the `[IDOLServerN]` section, or the `[DIHEngineN]` section.

## Example Configuration File

    [Service]
    ServicePort=9072

    [Server]
    Port=9070
    DIHPort=9071
    MirrorMode=True

    [DistributionIDOLServers]
    Number=2

    [IDOLServer0]
    Host=localhost
    Port=5502

    [IDOLServer1]
    Host=localhost
    Port=5602

    [Logging]
    0=INDEX_LOG_STREAM
    1=QUERY_LOG_STREAM
    2=APP_LOG_STREAM

    [INDEX_LOG_STREAM]
    LogFile=index.log
    LogTypeCSVs=index
    LogHistorySize=50
    LogTime=True
    LogEcho=True
    LogMaxSizeKbs=1024
    LogExpireAction=datestamp

    [QUERY_LOG_STREAM]
    LogFile=query.log
    LogTypeCSVs=query
    LogEcho=True

    [APP_LOG_STREAM]
    LogFile=application.log
    LogTypeCSVs=application
    LogEcho=True

    [Paths]
    IncomingPath=./incoming
    LogPath=./logs

_FT_HTML5_bannerTitle.htm