下面列出了怎么用org.eclipse.jgit.transport.RemoteSession的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public synchronized RemoteSession getSession (URIish uri, CredentialsProvider credentialsProvider, FS fs, int tms) throws TransportException {
boolean agentUsed = false;
String host = uri.getHost();
CredentialItem.StringType identityFile = null;
if (credentialsProvider != null) {
identityFile = new JGitCredentialsProvider.IdentityFileItem("Identity file for " + host, false);
if (credentialsProvider.isInteractive() && credentialsProvider.get(uri, identityFile) && identityFile.getValue() != null) {
LOG.log(Level.FINE, "Identity file for {0}: {1}", new Object[] { host, identityFile.getValue() }); //NOI18N
agentUsed = setupJSch(fs, host, identityFile, uri, true);
LOG.log(Level.FINE, "Setting cert auth for {0}, agent={1}", new Object[] { host, agentUsed }); //NOI18N
}
}
try {
LOG.log(Level.FINE, "Trying to connect to {0}, agent={1}", new Object[] { host, agentUsed }); //NOI18N
return super.getSession(uri, credentialsProvider, fs, tms);
} catch (Exception ex) {
// catch rather all exceptions. In case jsch-agent-proxy is broken again we should
// at least fall back on key/pasphrase
if (agentUsed) {
LOG.log(ex instanceof TransportException ? Level.FINE : Level.INFO, null, ex);
setupJSch(fs, host, identityFile, uri, false);
LOG.log(Level.FINE, "Trying to connect to {0}, agent={1}", new Object[] { host, false }); //NOI18N
return super.getSession(uri, credentialsProvider, fs, tms);
} else {
LOG.log(Level.FINE, "Connection failed: {0}", host); //NOI18N
throw ex;
}
}
}
/** {@inheritDoc} */
@Override
public RemoteSession getSession(URIish uri, CredentialsProvider credentialsProvider, FS fs, int tms) throws TransportException {
try {
int p = uri.getPort();
if (p<0) p = 22;
Connection con = new Connection(uri.getHost(), p);
con.setTCPNoDelay(true);
con.connect(); // TODO: host key check
boolean authenticated;
if (credentialsProvider instanceof SmartCredentialsProvider) {
final SmartCredentialsProvider smart = (SmartCredentialsProvider) credentialsProvider;
StandardUsernameCredentialsCredentialItem
item = new StandardUsernameCredentialsCredentialItem("Credentials for " + uri, false);
authenticated = smart.supports(item)
&& smart.get(uri, item)
&& SSHAuthenticator.newInstance(con, item.getValue(), uri.getUser())
.authenticate(smart.listener);
} else if (credentialsProvider instanceof CredentialsProviderImpl) {
CredentialsProviderImpl sshcp = (CredentialsProviderImpl) credentialsProvider;
authenticated = SSHAuthenticator.newInstance(con, sshcp.cred).authenticate(sshcp.listener);
} else {
authenticated = false;
}
if (!authenticated && con.isAuthenticationComplete())
throw new TransportException("Authentication failure");
return wrap(con);
} catch (UnsupportedCredentialItem | IOException | InterruptedException e) {
throw new TransportException(uri,"Failed to connect",e);
}
}
@Override
public RemoteSession getSession(URIish uri, CredentialsProvider credentialsProvider, FS fs, int tms) throws TransportException {
int port = uri.getPort();
String user = uri.getUser();
String pass = uri.getPass();
if (credentialsProvider instanceof GitCredentialsProvider) {
if (port <= 0)
port = SSH_PORT;
GitCredentialsProvider cp = (GitCredentialsProvider) credentialsProvider;
if (user == null) {
CredentialItem.Username u = new CredentialItem.Username();
if (cp.supports(u) && cp.get(cp.getUri(), u)) {
user = u.getValue();
}
}
if (pass == null) {
CredentialItem.Password p = new CredentialItem.Password();
if (cp.supports(p) && cp.get(cp.getUri(), p)) {
pass = new String(p.getValue());
}
}
try {
final SessionHandler session = new SessionHandler(user, uri.getHost(), port, cp.getKnownHosts(), cp.getPrivateKey(), cp.getPublicKey(),
cp.getPassphrase());
if (pass != null)
session.setPassword(pass);
if (!credentialsProvider.isInteractive()) {
session.setUserInfo(new CredentialsProviderUserInfo(session.getSession(), credentialsProvider));
}
session.connect(tms);
return new JschSession(session.getSession(), uri);
} catch (JSchException e) {
throw new TransportException(uri, e.getMessage(), e);
}
}
return null;
}