Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.fs.ssh;
 
 
 
 // TODO: dump UserInfo interface?
 public class SshRoot implements Root<SshNode>, UserInfoRunnable {
     private final SshFilesystem filesystem;
     private final String user;
 
     private final Credentials credentials;
     private final String host;
     private final Session session;
 
     // created on demand because it's only needed for nodes, not for "exec" stuff
     private ChannelSftp sftp;
 
     public SshRoot(SshFilesystem filesystemString hostString userCredentials credentialsint timeout)
     throws JSchException {
         if (credentials == null) {
             throw new IllegalArgumentException();
         }
         this. = filesystem;
         this. = user;
         this. = host;
         this. = credentials;
         this. = login(filesystem.getJSch(), host);
         this..connect(timeout);
         this. = null;
         OnShutdown.get().onShutdown(this);
     }
 
     //-- Root interface
 
     public SshFilesystem getFilesystem() {
         return ;
     }
 
     public String getId() {
         return "//" + .getUserName() + "@" + .getHost() + "/";
     }
 
     public SshNode node(String pathString encodedQuery) {
         if (encodedQuery != null) {
             throw new IllegalArgumentException(encodedQuery);
         }
         return new SshNode(thispath);
     }
 
     @Override
     public boolean equals(Object obj) {
         SshRoot root;
 
         if (obj instanceof SshRoot) {
             root = (SshRootobj;
             return getId().equals(root.getId());
         }
         return false;
     }
 
     @Override
     public int hashCode() {
         return getId().hashCode();
     }
 
     @Override
     public String toString() {
         return "SshNode host=" +  + ", user=" + ;
     }
 
     //--
    private int allocated = 0;
    public synchronized int getAllocated() {
        return ;
    }
    public synchronized ChannelSftp allocateChannelSftp() throws JSchException {
        ChannelSftp result;
        if ( != null) {
            result = ;
             = null;
        } else {
            result = (ChannelSftp.openChannel("sftp");
            result.connect();
        }
        ++;
        return result;
    }
    public synchronized void freeChannelSftp(ChannelSftp free) {
        if ( == null) {
             = free;
        } else {
            free.disconnect();
        }
        --;
    }
    public ChannelExec createChannelExec() throws JSchException {
        return (ChannelExec.openChannel("exec");
    }
    public void close() {
        .disconnect();
    }
    public Process start(boolean ttyString ... commandthrows JSchException {
        return start(tty, MultiOutputStream.createNullStream(), command);
    }
    public Process start(boolean ttyOutputStream outString ... commandthrows JSchException {
        return Process.start(thisttyoutcommand);
    }
    public String exec(String ... commandthrows JSchExceptionExitCode {
        return exec(truecommand);
    }
    public String exec(boolean ttyString ... commandthrows JSchExceptionExitCode {
        ByteArrayOutputStream out;
        out = new ByteArrayOutputStream();
        try {
            start(ttyoutcommand).waitFor();
        } catch (ExitCode e) {
            throw new ExitCode(e.calle.code.getWorld().getSettings().string(out));
        }
        return .getWorld().getSettings().string(out);
    }
    public String getUser() {
        return ;
    }
    public Session login(JSch jschString hostthrows JSchException {
        Session session;
        jsch.addIdentity(.loadIdentity(jsch), null);
        session = jsch.getSession(host);
        session.setUserInfo(this);
        return session;
    }
    public String getHost() {
        return ;
    }
    //-- interface implementation
    public String getPassphrase(String message) {
        throw new IllegalStateException(message);
    }
    public String getPassword() {
        throw new IllegalStateException();
    }
    public boolean prompt(String str) {
        throw new IllegalStateException(str);
    }
    public String getPassphrase() {
        return .;
    }
    public boolean promptPassphrase(String prompt) {
        return true// use passphrase auth
    }
    public boolean promptPassword(String prompt) {
        return false// don't use password
    }
    public boolean promptYesNo(String message) {
        return true;
    }
    public void showMessage(String message) {
        ..println("showMessage " + message);
    }
    // executes on shutdown
    public void run() {
        close();
    }
New to GrepCode? Check out our FAQ X