Skip to content

Commit

Permalink
Added fix for auth_fail
Browse files Browse the repository at this point in the history
  • Loading branch information
TonioGela committed Jun 10, 2021
1 parent 7a472d4 commit c51d171
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 30 deletions.
4 changes: 2 additions & 2 deletions cli-git/src/main/scala/GitInteractor.scala
Expand Up @@ -21,7 +21,7 @@ import java.io.File

import giter8.GitInteractor.TransportError
import org.eclipse.jgit.api.errors.TransportException
import org.eclipse.jgit.transport.{CredentialsProvider, SshSessionFactory, SshTransport}
import org.eclipse.jgit.transport.{CredentialsProvider, SshTransport}
import org.eclipse.jgit.api.{Git => JGit}

import scala.util.{Failure, Success, Try}
Expand Down Expand Up @@ -51,7 +51,7 @@ class JGitInteractor(knownHosts: Option[String]) extends GitInteractor {
.setCredentialsProvider(ConsoleCredentialsProvider)
.setTransportConfigCallback({
case sshTransport: SshTransport => sshTransport.setSshSessionFactory(new SshAgentSessionFactory(knownHosts))
case x => x
case x => ()
})
.call()
.close()
Expand Down
47 changes: 19 additions & 28 deletions cli-git/src/main/scala/SshAgentSessionFactory.scala
@@ -1,39 +1,30 @@
package giter8

import java.nio.file.{Files, Paths}
import org.eclipse.jgit.transport.sshd.SshdSessionFactory
import java.{util => ju}
import java.io.File
import java.nio.file.{Path, Files, Paths}
import scala.collection.JavaConverters._

import com.jcraft.jsch.agentproxy.{ConnectorFactory, RemoteIdentityRepository}
import com.jcraft.jsch.{JSch, Session}
import org.eclipse.jgit.transport.{JschConfigSessionFactory, OpenSshConfig}
import org.eclipse.jgit.util.FS
class SshAgentSessionFactory(knownHosts: Option[String]) extends SshdSessionFactory() {

class SshAgentSessionFactory(knownHosts: Option[String]) extends JschConfigSessionFactory() {
private val home = Option(System.getProperty("user.home")).getOrElse("")
private val programData = Option(System.getenv("PROGRAMDATA")).getOrElse("")

private val Home = Option(System.getProperty("user.home")).getOrElse("")
private val ProgramData = Option(System.getenv("PROGRAMDATA")).getOrElse("")

private val KnownHostsPaths: List[String] = List(
s"$Home/.ssh/known_hosts",
private val defaultKnownHosts: List[String] = List(
s"$home/.ssh/known_hosts",
s"$home/.ssh/known_hosts2",
"/etc/ssh/ssh_known_hosts",
s"$ProgramData/ssh/ssh_known_hosts"
s"$programData/ssh/ssh_known_hosts"
)

override protected def configure(host: OpenSshConfig.Host, session: Session): Unit = {}

override protected def createDefaultJSch(fs: FS): JSch = {
val jsch = new JSch()
knownHostsWithDefault.foreach(jsch.setKnownHosts)
jsch.setIdentityRepository(identityRepository)
jsch
override def getDefaultKnownHostsFiles(sshDir: File): ju.List[Path] = {
knownHosts
.map(_ :: Nil)
.getOrElse(defaultKnownHosts)
.map(Paths.get(_))
.filter(Files.exists(_))
.asJava
}

private def knownHostsWithDefault = {
knownHosts.orElse(KnownHostsPaths.find(path => Files.exists(Paths.get(path))))
}

private def identityRepository = {
val factory = ConnectorFactory.getDefault
val connector = factory.createConnector
new RemoteIdentityRepository(connector)
}
}

0 comments on commit c51d171

Please sign in to comment.