From: Mathieu Baudier Date: Wed, 13 Jul 2022 07:23:22 +0000 (+0200) Subject: SSH GraalVM configs X-Git-Tag: v2.3.10~120 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=0367ad4c3eb1607a3680c8480e92c34ae4fcbd00 SSH GraalVM configs --- diff --git a/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java b/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java index 8c7bedda9..1dd57f3df 100644 --- a/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java +++ b/org.argeo.cms.cli/src/org/argeo/cms/cli/ArgeoCli.java @@ -25,8 +25,4 @@ public class ArgeoCli extends CommandsCli { return "Argeo utilities"; } - public static void main(String[] args) { - mainImpl(new ArgeoCli("argeo"), args); - } - } diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/jni-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/jni-config.json new file mode 100644 index 000000000..7d14cdbcf --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/jni-config.json @@ -0,0 +1,75 @@ +[ +{ + "name":"java.lang.Boolean", + "methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.ClassLoader", + "methods":[ + {"name":"getPlatformClassLoader","parameterTypes":[] }, + {"name":"loadClass","parameterTypes":["java.lang.String"] } + ] +}, +{ + "name":"java.lang.String", + "methods":[ + {"name":"","parameterTypes":["byte[]"] }, + {"name":"getBytes","parameterTypes":[] } + ] +}, +{ + "name":"jdk.internal.loader.ClassLoaders$PlatformClassLoader" +}, +{ + "name":"org.apache.tomcat.jni.FileInfo", + "fields":[ + {"name":"atime"}, + {"name":"csize"}, + {"name":"ctime"}, + {"name":"device"}, + {"name":"filehand"}, + {"name":"filetype"}, + {"name":"fname"}, + {"name":"group"}, + {"name":"inode"}, + {"name":"mtime"}, + {"name":"name"}, + {"name":"nlink"}, + {"name":"pool"}, + {"name":"protection"}, + {"name":"size"}, + {"name":"user"}, + {"name":"valid"} + ], + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.tomcat.jni.Sockaddr", + "fields":[ + {"name":"family"}, + {"name":"hostname"}, + {"name":"next"}, + {"name":"pool"}, + {"name":"port"}, + {"name":"servname"} + ], + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.graalvm.jniutils.JNIExceptionWrapperEntryPoints", + "methods":[{"name":"getClassName","parameterTypes":["java.lang.Class"] }] +}, +{ + "name":"sun.management.VMManagementImpl", + "fields":[ + {"name":"compTimeMonitoringSupport"}, + {"name":"currentThreadCpuTimeSupport"}, + {"name":"objectMonitorUsageSupport"}, + {"name":"otherThreadCpuTimeSupport"}, + {"name":"remoteDiagnosticCommandsSupport"}, + {"name":"synchronizerUsageSupport"}, + {"name":"threadAllocatedMemorySupport"}, + {"name":"threadContentionMonitoringSupport"} + ] +} +] diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/predefined-classes-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/predefined-classes-config.json new file mode 100644 index 000000000..0e79b2c5d --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/predefined-classes-config.json @@ -0,0 +1,8 @@ +[ + { + "type":"agent-extracted", + "classes":[ + ] + } +] + diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/proxy-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/proxy-config.json new file mode 100644 index 000000000..f9dde3405 --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/proxy-config.json @@ -0,0 +1,11 @@ +[ + { + "interfaces":["org.apache.sshd.common.channel.ChannelListener"]} + , + { + "interfaces":["org.apache.sshd.common.forward.PortForwardingEventListener"]} + , + { + "interfaces":["org.apache.sshd.common.session.SessionListener"]} + +] diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/reflect-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/reflect-config.json new file mode 100644 index 000000000..e68e2b52d --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/reflect-config.json @@ -0,0 +1,503 @@ +[ +{ + "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.SecureRandomParameters" +}, +{ + "name":"java.security.Signature", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.security.cert.PKIXRevocationChecker" +}, +{ + "name":"javax.crypto.KeyAgreement", + "methods":[{"name":"getInstance","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"org.apache.sshd.common.SshConstants", + "allPublicFields":true +}, +{ + "name":"org.apache.sshd.common.io.nio2.Nio2ServiceFactoryFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.sshd.common.session.SessionListener", + "methods":[ + {"name":"sessionClosed","parameterTypes":["org.apache.sshd.common.session.Session"] }, + {"name":"sessionCreated","parameterTypes":["org.apache.sshd.common.session.Session"] }, + {"name":"sessionEstablished","parameterTypes":["org.apache.sshd.common.session.Session"] }, + {"name":"sessionEvent","parameterTypes":["org.apache.sshd.common.session.Session","org.apache.sshd.common.session.SessionListener$Event"] }, + {"name":"sessionNegotiationEnd","parameterTypes":["org.apache.sshd.common.session.Session","java.util.Map","java.util.Map","java.util.Map","java.lang.Throwable"] }, + {"name":"sessionNegotiationOptionsCreated","parameterTypes":["org.apache.sshd.common.session.Session","java.util.Map"] }, + {"name":"sessionNegotiationStart","parameterTypes":["org.apache.sshd.common.session.Session","java.util.Map","java.util.Map"] }, + {"name":"sessionPeerIdentificationLine","parameterTypes":["org.apache.sshd.common.session.Session","java.lang.String","java.util.List"] }, + {"name":"sessionPeerIdentificationReceived","parameterTypes":["org.apache.sshd.common.session.Session","java.lang.String","java.util.List"] }, + {"name":"sessionPeerIdentificationSend","parameterTypes":["org.apache.sshd.common.session.Session","java.lang.String","java.util.List"] } + ] +}, +{ + "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.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings", + "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.EXTERNAL$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.LMS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.dh.KeyPairGeneratorSpi", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi$EC", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi$EC", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ec.SignatureSpi$ecDSA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyAgreementSpi$X25519", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyAgreementSpi$X448", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$X25519", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyFactorySpi$X448", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X25519", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.edec.KeyPairGeneratorSpi$X448", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.rsa.DigestSignatureSpi$SHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi", + "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.Blake3$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$Digest", + "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$Digest", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Digest", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA256$Digest", + "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$Digest", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA512$Digest", + "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.SipHash128$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.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +} +] diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/resource-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/resource-config.json new file mode 100644 index 000000000..7c33b1bf5 --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/resource-config.json @@ -0,0 +1,12 @@ +{ + "resources":{ + "includes":[ + { + "pattern":"\\Qorg/apache/sshd/sshd-version.properties\\E" + }, + { + "pattern":"\\Qorg/slf4j/impl/StaticLoggerBinder.class\\E" + } + ]}, + "bundles":[] +} diff --git a/org.argeo.cms.lib.sshd/META-INF/native-image/serialization-config.json b/org.argeo.cms.lib.sshd/META-INF/native-image/serialization-config.json new file mode 100644 index 000000000..bf554e062 --- /dev/null +++ b/org.argeo.cms.lib.sshd/META-INF/native-image/serialization-config.json @@ -0,0 +1,6 @@ +{ + "types":[ + ], + "lambdaCapturingTypes":[ + ] +} diff --git a/org.argeo.cms.lib.sshd/build.properties b/org.argeo.cms.lib.sshd/build.properties index fb57a1cb5..a04ec77ec 100644 --- a/org.argeo.cms.lib.sshd/build.properties +++ b/org.argeo.cms.lib.sshd/build.properties @@ -4,4 +4,6 @@ bin.includes = META-INF/,\ OSGI-INF/ source.. = src/ additional.bundles = org.slf4j.api,\ - org.argeo.ext.slf4j + org.argeo.ext.slf4j,\ + org.apache.tomcat.jni + \ No newline at end of file diff --git a/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshCli.java b/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshCli.java index 12b4d5e1d..4ec456b34 100644 --- a/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshCli.java +++ b/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshCli.java @@ -13,5 +13,8 @@ public class SshCli extends CommandsCli { return "SSH utilities."; } - + public static void main(String[] args) { + mainImpl(new SshCli("ssh"), args); + } + } diff --git a/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshShell.java b/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshShell.java index 78903a779..a7283b3ad 100644 --- a/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshShell.java +++ b/org.argeo.cms.lib.sshd/src/org/argeo/cms/ssh/cli/SshShell.java @@ -8,6 +8,7 @@ import java.security.KeyPair; import java.util.List; import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.MissingArgumentException; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.sshd.agent.SshAgent; @@ -17,99 +18,107 @@ import org.apache.sshd.agent.unix.UnixAgentFactory; import org.apache.sshd.client.config.keys.ClientIdentityLoader; import org.apache.sshd.common.NamedResource; import org.apache.sshd.common.config.keys.FilePasswordProvider; +import org.argeo.api.cli.CommandArgsException; import org.argeo.api.cli.DescribedCommand; import org.argeo.cms.ssh.AbstractSsh; import org.argeo.cms.ssh.Ssh; public class SshShell implements DescribedCommand { - private Option portOption; - - @Override - public Options getOptions() { - Options options = new Options(); - portOption = Option.builder().option("p").longOpt("port").hasArg().desc("port to connect to").build(); - options.addOption(portOption); - return options; - } - - @Override - public String apply(List args) { - CommandLine cl = toCommandLine(args); - String portStr = cl.getOptionValue(portOption); - if (portStr == null) - portStr = "22"; - - String host = cl.getArgList().get(0); - - String uriStr = "ssh://" + host + ":" + portStr + "/"; - // System.out.println(uriStr); - URI uri = URI.create(uriStr); - - Ssh ssh = null; + private Option portOption; + + @Override + public Options getOptions() { + Options options = new Options(); + portOption = Option.builder().option("p").longOpt("port").hasArg().desc("port to connect to").build(); + options.addOption(portOption); + return options; + } + + @Override + public String apply(List args) { + CommandLine cl = toCommandLine(args); + String portStr = cl.getOptionValue(portOption); + if (portStr == null) + portStr = "22"; + + if (cl.getArgList().size() == 0) + throw new CommandArgsException("Host must be provided"); + String host = cl.getArgList().get(0); + + String uriStr = "ssh://" + host + ":" + portStr + "/"; + // System.out.println(uriStr); + URI uri = URI.create(uriStr); + + Ssh ssh = null; + try { + ssh = new Ssh(uri); + boolean osAgent; + SshAgent sshAgent; try { - ssh = new Ssh(uri); - boolean osAgent; - SshAgent sshAgent; - try { - String sshAuthSockentEnv = System.getenv(SshAgent.SSH_AUTHSOCKET_ENV_NAME); - if (sshAuthSockentEnv != null) { - ssh.getSshClient().getProperties().put(SshAgent.SSH_AUTHSOCKET_ENV_NAME, sshAuthSockentEnv); - SshAgentFactory agentFactory = new UnixAgentFactory(); - ssh.getSshClient().setAgentFactory(agentFactory); - sshAgent = agentFactory.createClient(null, ssh.getSshClient()); - osAgent = true; - } else { - osAgent = false; - } - } catch (Exception e) { - e.printStackTrace(); - osAgent = false; - } - - if (!osAgent) { - SshAgentFactory agentFactory = new LocalAgentFactory(); + String sshAuthSockentEnv = System.getenv(SshAgent.SSH_AUTHSOCKET_ENV_NAME); + if (sshAuthSockentEnv != null) { + ssh.getSshClient().getProperties().put(SshAgent.SSH_AUTHSOCKET_ENV_NAME, sshAuthSockentEnv); + SshAgentFactory agentFactory = new UnixAgentFactory(); ssh.getSshClient().setAgentFactory(agentFactory); sshAgent = agentFactory.createClient(null, ssh.getSshClient()); - String keyPath = System.getProperty("user.home") + "/.ssh/id_rsa"; - - char[] keyPassword = AbstractSsh.readPassword(); - NamedResource namedResource = new NamedResource() { - - @Override - public String getName() { - return keyPath; - } - }; - KeyPair keyPair = ClientIdentityLoader.DEFAULT - .loadClientIdentities(null, namedResource, FilePasswordProvider.of(new String(keyPassword))) - .iterator().next(); - sshAgent.addIdentity(keyPair, "NO COMMENT"); + osAgent = true; + } else { + osAgent = false; } + } catch (Exception e) { + e.printStackTrace(); + osAgent = false; + } + + if (!osAgent) { + SshAgentFactory agentFactory = new LocalAgentFactory(); + ssh.getSshClient().setAgentFactory(agentFactory); + sshAgent = agentFactory.createClient(null, ssh.getSshClient()); + String keyPath = System.getProperty("user.home") + "/.ssh/id_rsa"; + + char[] keyPassword = AbstractSsh.readPassword(); + NamedResource namedResource = new NamedResource() { + + @Override + public String getName() { + return keyPath; + } + }; + KeyPair keyPair = ClientIdentityLoader.DEFAULT + .loadClientIdentities(null, namedResource, FilePasswordProvider.of(new String(keyPassword))) + .iterator().next(); + sshAgent.addIdentity(keyPair, "NO COMMENT"); + } // char[] keyPassword = AbstractSsh.readPassword(); // SshKeyPair keyPair = SshKeyPair.loadDefault(keyPassword); // Arrays.fill(keyPassword, '*'); // ssh.setSshKeyPair(keyPair); // ssh.authenticate(); - ssh.verifyAuth(); - - long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); - System.out.println("Ssh available in " + jvmUptime + " ms."); - - AbstractSsh.openShell(ssh); - } catch (IOException | GeneralSecurityException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } finally { - if (ssh != null) - ssh.closeSession(); - } - return null; + ssh.verifyAuth(); + + long jvmUptime = ManagementFactory.getRuntimeMXBean().getUptime(); + System.out.println("Ssh available in " + jvmUptime + " ms."); + + AbstractSsh.openShell(ssh); + } catch (IOException | GeneralSecurityException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (ssh != null) + ssh.closeSession(); } + return null; + } - @Override - public String getDescription() { - return "Launch a static CMS."; - } + @Override + public String getUsage() { + return ""; + } + + @Override + public String getDescription() { + return "Opens a remote shell"; + } - } \ No newline at end of file +} \ No newline at end of file