Install the File Client
Prerequisites
File Client 2.0 is compatible with File Server 1.0
- download file-client-2.1.1
- JDBC driver for the database (see here)
- Database and user account with create table permissions
Optional
Installation
file-client-2.1.1.jar contains the File Client. You first have to configure the File Client. The application uses log4j for logging. The application also uses a database to store user and file information for configuration and writes the files to the filesystem.
- create directory
file-client - copy
file-client-2.1.1.jartofile-client - create directory
file-client/files
Configuration
This section describes how to configure the File Client.
Create the file file-client/file-client.properties and configure the basic properties.
Start
Start the file-client with the REST and SOAP endpoints default on port 8000, using JDBC driver <jdbc-driver>.jar. See here for the supported databases.
java -cp <jdbc-driver>.jar:file-client-2.1.1.jar dev.luin.file.client.Start
See here for more command line options. See here for Keystore Configuration.
Properties
Basic Properties
SSL Keystore Properties
keystore.type=PKCS12
keystore.path=dev/luin/file/client/core/keystore.p12
keystore.password=password
SSL Client Keystore Properties
client.keystore.type=PKCS12
client.keystore.path=dev/luin/file/client/core/keystore.p12
client.keystore.password=password
client.keystore.keyPassword=${client.keystore.password}
client.keystore.defaultAlias=
SSL Truststore Properties
truststore.type=PKCS12
truststore.path=dev/luin/file/client/core/truststore.p12
truststore.password=password
FileSystem Properties
file.baseDir=files
file.directoryDepth=3
file.filenameLength=32
FileShare Properties
file.share.upload.location=shared/upload
file.share.download.location=shared/download
Database Properties
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://localhost:9000/file_client
jdbc.username=sa
jdbc.password=
Advanced Properties
Soap/Rest Attachment Properties
attachment.memoryTreshold=131072
attachment.outputDirectory=
attachment.cipherTransformation=
Download Properties
downloadTaskHandler.delay=3000
downloadTask.retry.maxAttempts=5
downloadTask.retry.interval=5
downloadTask.retry.maxMultiplier=1
Upload Properties
uploadTaskHandler.delay=3000
uploadTask.retry.maxAttempts=5
uploadTask.retry.interval=5
uploadTask.retry.maxMultiplier=1
SSL Properties
client.ssl.enabledProtocols=TLSv1.3,TLSv1.2
client.ssl.enabledCipherSuites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
client.ssl.verifyHostnames=true
JDBC Connection Pool Properties
jdbc.pool.autoCommit=true
jdbc.pool.connectionTimeout=30000
jdbc.pool.maxIdleTime=600000
jdbc.pool.maxLifetime=1800000
jdbc.pool.testQuery=
jdbc.pool.minPoolSize=16
jdbc.pool.maxPoolSize=32
CommandLine Configuration
usage: Start [-authentication] [-cipherSuites <arg>]
[-clientAuthentication] [-clientCertificateHeader <arg>]
[-clientTrustStorePassword <arg>] [-clientTrustStorePath <arg>]
[-clientTrustStoreType <arg>] [-configDir <arg>] [-connectionLimit
<arg>] [-h] [-health] [-healthPort <arg>] [-host <arg>] [-hsqldb]
[-hsqldbDir <arg>] [-jmx] [-jmxAccessFile <arg>] [-jmxPasswordFile
<arg>] [-jmxPort <arg>] [-keyStorePassword <arg>] [-keyStorePath
<arg>] [-keyStoreType <arg>] [-path <arg>] [-port <arg>]
[-protocols <arg>] [-trustStorePassword <arg>] [-trustStorePath
<arg>] [-trustStoreType <arg>]
-authentication enable basic | client certificate authentication
-cipherSuites <arg> set SSL CipherSuites [default: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256]
-clientAuthentication enable SSL client authentication
-clientCertificateHeader <arg> set client certificate header [default: <none>]
-clientTrustStorePassword <arg> set client truststore password [default: <none>]
-clientTrustStorePath <arg> set client truststore path [default: <none>]
-clientTrustStoreType <arg> set client truststore type [default: PKCS12]
-configDir <arg> set config directory [default: <startup_directory>]
-connectionLimit <arg> set connection limit [default: <none>]
-h print this message
-health start health service
-healthPort <arg> set health service port [default: 8008]
-host <arg> set host [default: 0.0.0.0]
-hsqldb start HSQLDB server
-hsqldbDir <arg> set HSQLDB location [default: hsqldb]
-jmx start JMX server
-jmxAccessFile <arg> set JMX access file [default: <none>]
-jmxPasswordFile <arg> set JMX password file [default: <none>]
-jmxPort <arg> set JMX port [default: 1999]
-keyStorePassword <arg> set keystore password [default: password]
-keyStorePath <arg> set keystore path [default: dev/luin/file/client/core/keystore.p12]
-keyStoreType <arg> set keystore type [default: PKCS12]
-path <arg> set path [default: /]
-port <arg> set port [default: 8080]
-protocols <arg> set SSL Protocols [default: TLSv1.3,TLSv1.2]
-trustStorePassword <arg> set truststore password [default: <none>]
-trustStorePath <arg> set truststore path [default: <none>]
-trustStoreType <arg> set truststore type [default: PKCS12]
Basic Configuration
Start using a PostgreSQL JDBC driver
java -cp postgresql-42.7.3.jar:file-client-2.1.1.jar dev.luin.file.client.Start
Start on port 8000
Start SOAP/REST endpoint on port 8000 (instead of 8080)
java -cp file-client-2.1.1.jar dev.luin.file.client.Start -port 8000
Start with config directory conf/
By default the config directory is the directory from which you start the file-client. You can change the config directory by setting configDir
java -cp file-client-2.1.1.jar dev.luin.file.client.Start -configDir conf/
Start with a custom log4j2 file log4j2.xml
See here for an example log4j2.xml.
java -Dlog4j.configurationFile=log4j2.xml -cp file-client-2.1.1.jar dev.luin.file.client.Start
Start without using the default Java truststore
java -Djavax.net.ssl.trustStore= -cp file-client-2.1.1.jar dev.luin.file.client.Start
Start with HTTPS
Start with HTTPS SOAP/REST endpoint using keystore keystore.p12
java -Djavax.net.ssl.trustStore= -cp file-client-2.1.1.jar dev.luin.file.client.Start \
-ssl -keyStoreType PKCS12 -keyStorePath keystore.p12 -keyStorePassword password
Advanced Configuration
Start using IPv4 only sockets
java -Djava.net.preferIPv4Stack=true -cp file-client-2.1.1.jar dev.luin.file.client.Start
Start using basic authentication
Start using basic authentication on SOAP/REST endpoint.
java -cp file-client-2.1.1.jar dev.luin.file.client.Start -authentication
Start with HTTPS and client authentication
Start with HTTPS SOAP/REST endpoint using keystore keystore.p12
and require SSL client authentication using truststore truststore.p12 (which holds the client's certificate chain)
java -Djavax.net.ssl.trustStore= -cp file-client-2.1.1.jar dev.luin.file.client.Start \
-ssl -keyStoreType PKCS12 -keyStorePath keystore.p12 -keyStorePassword password \
-clientAuthentication -trustStoreType PKCS12 -trustStorePath truststore.p12 -trustStorePassword password
Start with HTTPS, client authentication and client certifiate authentication
Start with HTTPS Web/SOAP interface using keystore keystore.p12
and require SSL client authentication using truststore truststore.p12 (which holds the client's certificate chain)
and authenticate client SSL certificate using clientTruststore.p12 (which holds the client's certificate)
java -Djavax.net.ssl.trustStore= -cp file-client-2.1.1.jar dev.luin.file.client.Start \
-ssl -keyStoreType PKCS12 -keyStorePath keystore.p12 -keyStorePassword password \
-clientAuthentication -trustStoreType PKCS12 -trustStorePath truststore.p12 -trustStorePassword password \
-authentication -clientTrustStoreType PKCS12 -clientTrustStorePath clientTruststore.p12 -clientTrustStorePassword password
Start Health service on port 8089
Start Health service on port 8089 (instead of default port 8008)
java -Djavax.net.ssl.trustStore= -cp file-client-2.1.1.jar dev.luin.file.client.Start -health -healthPort 8089