The official Peppol Directory (PD; https://directory.peppol.eu).
This project is part of my Peppol solution stack. See https://github.com/phax/peppol for other components and libraries in that area.
This project is split into the following sub-projects (all require Java 11 or newer):
phoss-directory-indexer
- the PD indexer partphoss-directory-publisher
- the PD publisher web applicationphoss-directory-client
- a client library to be added to SMP servers to force indexing in the PDphoss-directory-searchapi
- a client library for easier use of the Directory search REST API (since v0.7.2)Previous modules:
phoss-directory-businesscard
- the common Business Card API - until v0.12.3; then moved to com.helger.peppol:peppol-directory-businesscard in https://github.com/phax/peppol-commons
Production version is available at https://directory.peppol.eu (for Peppol)
Test version is available at https://test-directory.peppol.eu
To build the PD software you need at least Java 11 and Apache Maven 3.x.
Additionally to the contained projects you MAY need the latest SNAPSHOT of ph-oton as part of your build environment.
The PD client is a small Java library that uses Apache HttpClient to connect to an arbitrary phoss Directory Indexer to perform all the allowed operations (get, create/update, delete).
The PD client uses ph-config
to resolve configuration items.
See https://github.com/phax/ph-commons/wiki/ph-config for the details on the resolution logic.
Note: the old file pd-client.properties
is still evaluated for backwards-compatibility reasons but with lower priority. It will be removed in the future.
Note: the configuration properties were heavily renamed in v0.10.0. Previous old names are shown in brackets.
The following configuration items are supported by the PD Client:
pdclient.keystore.type
(old: keystore.type
) (since v0.6.0) - the type of the keystore. Can be JKS
or PKCS12
(case insensitive). Defaults to JKS
.pdclient.keystore.path
(old: keystore.path
) - the path to the keystore where the SMP certificate is containedpdclient.keystore.password
(old: keystore.password
) - the password to open the key storepdclient.keystore.key.alias
(old: keystore.key.alias
) - the alias in the key store that denotes the SMP key pdclient.keystore.key.password
(old: keystore.key.password
) - the password to open the key in the key storepdclient.truststore.type
(old: truststore.type
) (since v0.6.0) - the type of the keystore. Can be JKS
or PKCS12
(case insensitive). Defaults to JKS
.pdclient.truststore.path
(old: truststore.path
) (since v0.5.1) - the path to the trust store, where the public certificates of the phoss Directory servers are contained. Defaults to truststore/pd-client.truststore.jks
pdclient.truststore.password
(old: truststore.password
) (since v0.5.1) - the password to open the truststore store. Defaults to peppol
http.proxy.host
(old: http.proxyHost
) - the HTTP proxy host for HTTP connections only. No default.http.proxy.port
(old: http.proxyPort
) - the HTTP proxy port for http
connections only. No default.https.proxyHost
- the HTTP proxy host for https
connections only. No default.~https.proxyPort
- the HTTP proxy port for https
connections only. No default.~http.proxy.username
(old: proxy.username
) (since v0.6.0) - the proxy username if http or https proxy is enabled. No default. http.proxy.password
(old: proxy.password
) (since v0.6.0) - the proxy password if http or https proxy is enabled. No default.http.connect.timeout.ms
(old: connect.timeout.ms
) (since v0.6.0) - the connection timeout in milliseconds to connect to the server. The default value is 5000
(5 seconds). A value of 0
means indefinite. A value of -1
means using the system default.http.response.timeout.ms
(old: http.request.timeout.ms
or request.timeout.ms
) (since v0.10.3) - the response/request/read timeout in milliseconds to read from the server. The default value is 10000
(10 seconds). A value of 0
means indefinite. A value of -1
means using the system default.https.hostname-verification.disabled
(since v0.5.1) - a boolean value to indicate if https hostname verification should be disabled (true
) or enabled (false
). The default value is true
.Example PD Client configuration properties:
# Key store with SMP key (required)
pdclient.keystore.type = jks
pdclient.keystore.path = smp.pilot.jks
pdclient.keystore.password = password
pdclient.keystore.key.alias = smp.pilot
pdclient.keystore.key.password = password
# Default trust store (optional)
pdclient.truststore.type = jks
pdclient.truststore.path = truststore/pd-client.truststore.jks
pdclient.truststore.password = peppol
# TLS settings
https.hostname-verification.disabled = false
The PD Indexer is a REST component that is responsible for taking indexing requests from SMPs and processes them in a queue
(Peppol SMP client certificate required).
Only the Peppol participant identifiers are taken and the PD Indexer is responsible for querying the respective SMP data directly.
Therefore the respective SMP must have the appropriate Extension
element of the service group filled with the business
information metadata as required by PD.
Please see the PD specification
for a detailed description of the required data format as well as for the REST interface.
The PD Publisher is the publicly accessible web site with listing and search functionality for certain participants.
name
REST API query parameterphoss-directory-businesscard
and using peppol-directory-businesscard
from https://github.com/phax/peppol-commons insteadjakarta.
)PDResultListMarshaller
in favour of PDSearchAPI(Reader|Validator|Writer)
smp.tls.trust-all
to disable the TLS certificate checks for the SMP clientpdclient.
and align the HTTP properties with SMP client configuration
keystore.type
is now pdclient.keystore.type
keystore.path
is now pdclient.keystore.path
keystore.password
is now pdclient.keystore.password
keystore.key.alias
is now pdclient.keystore.key.alias
keystore.key.password
is now pdclient.keystore.key.password
truststore.type
is now pdclient.truststore.type
truststore.path
is now pdclient.truststore.path
truststore.password
is now pdclient.truststore.password
http.proxyHost
is now http.proxy.host
http.proxyPort
is now http.proxy.port
proxy.username
is now http.proxy.username
proxy.password
is now http.proxy.password
connect.timeout.ms
is now http.connect.timeout.ms
request.timeout.ms
is now http.request.timeout.ms
https.proxyHost
is no longer supportedhttps.proxyPort
is no longer supportedPDClient
proxy configuration to be part of PDHttpClientSettings
PDClient
HTTP configuration API to use HttpClientSettings
(backwards incompatible change) PDClient
now checks for the key alias in a case insensitive manner (improved resilience) DIRECTORY_CLIENT_CONFIG
PEPPOL
to Peppol
webapp.applogo.image.path
)Content-Length
HTTP header for the downloadsrest.limit.requestspersecond
)PDBusinessCard
got a default JSON representationpeppol-directory
to phoss-directory
peppol-directory*
to phoss-directory*
peppol-commons
7.0.0total-result-count
and paging in the REST API (see issue #39)peppol-directory-searchapi
with basic elements for using the query API and the response documentspeppol-directory-client
PDBusinessCardHelper.parseBusinessCard
ESensUrlProvider
sml.id
- either fixed SMP or all configured SMLs are queried upon indexingname
has now multiplicity 1..n instead of 1..1.name
is now an array instead of a string
.PDClient
to explicitly support a configurable truststore. A default truststore for the current setup is included.https://directory.peppol.eu
and https://test-directory.peppol.eu
My personal Coding Styleguide | It is appreciated if you star the GitHub project if you like it.