From 5412d591384a4e0a6508a468f39d9349b40a8c01 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 11 May 2020 11:31:42 +0200 Subject: [PATCH] Work on SSH support in native-image (not working yet). --- dist/argeo-cli/native-image/proxy-config.json | 3 + .../native-image/reflect-config.json | 384 ++++++++++++++++++ .../native-image/resource-config.json | 1 + dist/argeo-cli/pom.xml | 6 +- .../src/org/argeo/cli/fs/PathSync.java | 2 +- 5 files changed, 393 insertions(+), 3 deletions(-) diff --git a/dist/argeo-cli/native-image/proxy-config.json b/dist/argeo-cli/native-image/proxy-config.json index 0d4f101c7..e12143a45 100644 --- a/dist/argeo-cli/native-image/proxy-config.json +++ b/dist/argeo-cli/native-image/proxy-config.json @@ -1,2 +1,5 @@ [ + ["org.apache.sshd.common.channel.ChannelListener"], + ["org.apache.sshd.common.forward.PortForwardingEventListener"], + ["org.apache.sshd.common.session.SessionListener"] ] diff --git a/dist/argeo-cli/native-image/reflect-config.json b/dist/argeo-cli/native-image/reflect-config.json index de852cc74..2404ce2b9 100644 --- a/dist/argeo-cli/native-image/reflect-config.json +++ b/dist/argeo-cli/native-image/reflect-config.json @@ -22,6 +22,34 @@ {"name":"getSuppressed","parameterTypes":[] } ] }, +{ + "name":"java.security.KeyFactory", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.security.KeyPairGenerator", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.security.MessageDigest", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.security.Signature", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"javax.crypto.Cipher", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"javax.crypto.KeyAgreement", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"javax.crypto.Mac", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, { "name":"org.apache.jackrabbit.core.data.FileDataStore", "allPublicMethods":true, @@ -168,6 +196,22 @@ {"name":"dummy2"} ] }, +{ + "name":"org.apache.sshd.common.SshConstants", + "allPublicFields":true +}, +{ + "name":"org.apache.sshd.common.io.nio2.Nio2ServiceFactoryFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.sshd.common.util.security.bouncycastle.BouncyCastleSecurityProviderRegistrar", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.sshd.common.util.security.eddsa.EdDSASecurityProviderRegistrar", + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.apache.tika.detect.CompositeDetector", "allDeclaredFields":true, @@ -401,6 +445,346 @@ "name":"org.apache.tika.parser.xml.FictionBookParser", "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jce.provider.BouncyCastleProvider", + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"sun.misc.Unsafe", "fields":[{"name":"theUnsafe"}], diff --git a/dist/argeo-cli/native-image/resource-config.json b/dist/argeo-cli/native-image/resource-config.json index 742dd30c4..1717dd7fc 100644 --- a/dist/argeo-cli/native-image/resource-config.json +++ b/dist/argeo-cli/native-image/resource-config.json @@ -12,6 +12,7 @@ {"pattern":"\\Qorg/apache/jackrabbit/core/query/lucene/tika-config.xml\\E"}, {"pattern":"\\Qorg/apache/jackrabbit/core/repository.properties\\E"}, {"pattern":"\\Qorg/apache/jackrabbit/webdav/statuscode.properties\\E"}, + {"pattern":"\\Qorg/apache/sshd/sshd-version.properties\\E"}, {"pattern":"\\Qorg/apache/tika/mime/tika-mimetypes.xml\\E"}, {"pattern":"\\Qorg/apache/tika/parser/external/tika-external-parsers.xml\\E"}, {"pattern":"\\Qorg/apache/tika/parser/geo/topic/GeoTopicConfig.properties\\E"}, diff --git a/dist/argeo-cli/pom.xml b/dist/argeo-cli/pom.xml index c455e0a17..537d4eca0 100644 --- a/dist/argeo-cli/pom.xml +++ b/dist/argeo-cli/pom.xml @@ -131,15 +131,17 @@ argeo org.argeo.cms.cli.ArgeoCli + --initialize-at-build-time=org.apache.lucene.util.AttributeImpl,org.apache.lucene.util.VirtualMethod,org.apache.lucene.util.WeakIdentityMap + -H:IncludeResourceBundles=sun.security.util.Resources --no-fallback --allow-incomplete-classpath - --initialize-at-build-time=org.apache.lucene.util.AttributeImpl,org.apache.lucene.util.VirtualMethod,org.apache.lucene.util.WeakIdentityMap + --enable-all-security-services -H:EnableURLProtocols=http,https - -H:IncludeResourceBundles=sun.security.util.Resources -H:ConfigurationFileDirectories=${basedir}/native-image -H:ReflectionConfigurationFiles=${basedir}/native-image/reflect-config.json -H:ResourceConfigurationFiles=${basedir}/native-image/resource-config.json -H:JNIConfigurationFiles=${basedir}/native-image/jni-config.json + -H:DynamicProxyConfigurationFiles=${basedir}/native-image/proxy-config.json false diff --git a/org.argeo.core/src/org/argeo/cli/fs/PathSync.java b/org.argeo.core/src/org/argeo/cli/fs/PathSync.java index 01cef9ee0..85fefe9f5 100644 --- a/org.argeo.core/src/org/argeo/cli/fs/PathSync.java +++ b/org.argeo.core/src/org/argeo/cli/fs/PathSync.java @@ -42,7 +42,7 @@ public class PathSync implements Callable> { } } - private static Path createPath(URI uri) { + private Path createPath(URI uri) { Path path; if (uri.getScheme() == null) { path = Paths.get(uri.getPath()); -- 2.30.2