001package com.quorum.tessera.config.migration;
002
003import com.quorum.tessera.config.SslAuthenticationMode;
004import com.quorum.tessera.config.SslTrustMode;
005import picocli.CommandLine.Option;
006
007import java.util.List;
008
009public class LegacyOverridesMixin {
010
011    @Option(
012            names = "--workdir",
013            arity = "1",
014            description =
015                    "Working directory to use (relative paths specified for other options are relative to the working directory)")
016    public String workdir;
017
018    @Option(names = "--url", arity = "1", description = "URL for this node (i.e. the address you want advertised)")
019    public String url;
020
021    @Option(names = "--port", arity = "1", description = "Port to listen on for the public API")
022    public Integer port;
023
024    @Option(names = "--socket", arity = "1", description = "Path to IPC socket file to create for private API access")
025    public String socket;
026
027    @Option(
028            names = "--othernodes",
029            split = ",",
030            description = "Comma-separated list of other node URLs to connect at startup")
031    public List<String> othernodes;
032
033    @Option(
034            names = "--publickeys",
035            split = ",",
036            description = "Comma-separated list of paths to public keys to advertise")
037    public List<String> publickeys;
038
039    @Option(
040            names = "--privatekeys",
041            split = ",",
042            description =
043                    "Comma-separated list of paths to private keys (these must be given in the same corresponding order as --publickeys)")
044    public List<String> privatekeys;
045
046    @Option(names = "--passwords", arity = "1", description = "The file containing the passwords for the privatekeys")
047    public String passwords;
048
049    @Option(
050            names = "--alwayssendto",
051            split = ",",
052            description = "Comma-separated list of paths to public keys that are always included as recipients")
053    public List<String> alwayssendto;
054
055    @Option(names = "--storage", arity = "1", description = "Storage string specifying a storage engine and/or path")
056    public String storage;
057
058    @Option(names = "--tls", arity = "1", description = "TLS status (strict, off)")
059    public SslAuthenticationMode tls;
060
061    @Option(names = "--tlsservercert", arity = "1", description = "TLS certificate file to use for the public API")
062    public String tlsservercert;
063
064    @Option(
065            names = "--tlsserverchain",
066            split = ",",
067            description = "Comma separated list of TLS chain certificate files to use for the public API")
068    public List<String> tlsserverchain;
069
070    @Option(names = "--tlsserverkey", arity = "1", description = "TLS key file to use for the public API")
071    public String tlsserverkey;
072
073    @Option(
074            names = "--tlsservertrust",
075            arity = "1",
076            description = "TLS server trust mode (whitelist, ca-or-tofu, ca, tofu, insecure-no-validation)")
077    public SslTrustMode tlsservertrust;
078
079    @Option(
080            names = "--tlsknownclients",
081            arity = "1",
082            description = "TLS server known clients file for the ca-or-tofu, tofu and whitelist trust modes")
083    public String tlsknownclients;
084
085    @Option(
086            names = "--tlsclientcert",
087            arity = "1",
088            description = "TLS client certificate file to use for connections to other nodes")
089    public String tlsclientcert;
090
091    @Option(
092            names = "--tlsclientchain",
093            split = ",",
094            description = "Comma separated list of TLS chain certificate files to use for connections to other nodes")
095    public List<String> tlsclientchain;
096
097    @Option(names = "--tlsclientkey", arity = "1", description = "TLS key file to use for connections to other nodes")
098    public String tlsclientkey;
099
100    @Option(
101            names = "--tlsclienttrust",
102            arity = "1",
103            description = "TLS client trust mode (whitelist, ca-or-tofu, ca, tofu, insecure-no-validation)")
104    public SslTrustMode tlsclienttrust;
105
106    @Option(
107            names = "--tlsknownservers",
108            arity = "1",
109            description = "TLS client known servers file for the ca-or-tofu, tofu and whitelist trust modes")
110    public String tlsknownservers;
111
112    @Option(names = "--ipwhitelist", description = "If provided, Tessera will use the othernodes as a whitelist.")
113    public boolean whitelist;
114}