Foros del Web » Programación para mayores de 30 ;) » Java »

duda java secure channel

Estas en el tema de duda java secure channel en el foro de Java en Foros del Web. bueno mi duda es como lograr mostrar el resultado no a traves de la consola sino a traves de un jframe o cualquier otro recurso ...
  #1 (permalink)  
Antiguo 12/06/2009, 12:52
 
Fecha de Ingreso: enero-2008
Mensajes: 46
Antigüedad: 16 años, 3 meses
Puntos: 0
duda java secure channel

bueno mi duda es como lograr mostrar el resultado no a traves de la consola
sino a traves de un jframe o cualquier otro recurso

el codigo que muestra el resultado es el siguiente

Código:
package javaapplication4;

    import com.jcraft.jsch.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.*;



/**
 *
 * author Administrador
 */

/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */


public class Main{
    

    
  public static void main(String[] arg){
        String eadir = null;
        String command = null;
       




      
      try{

      JSch jsch=new JSch();  

      String host=null;
      if(arg.length>0){
        host=arg[0];
      }
      else{
        host=JOptionPane.showInputDialog("Enter usernamehostname",
                                         System.getProperty("user.name")+
                                         "localhost"); 
               eadir=JOptionPane.showInputDialog("Enter eA dir","stable");
      }
     String user=host.substring(0, host.indexOf(''));
     host=host.substring(host.indexOf('')+1);

      Session session=jsch.getSession(user, host, 22);
      
      /*
      String xhost="127.0.0.1";
      int xport=0;
      String display=JOptionPane.showInputDialog("Enter display name", 
                                                 xhost+":"+xport);
      xhost=display.substring(0, display.indexOf(':'));
      xport=Integer.parseInt(display.substring(display.indexOf(':')+1));
      session.setX11Host(xhost);
      session.setX11Port(xport+6000);
      */

      // username and password will be given via UserInfo interface.
      UserInfo ui=new MyUserInfo();
      session.setUserInfo(ui);
      session.connect();


      
     
      JDialog.setDefaultLookAndFeelDecorated(true);
    Object[] selectionValues = { "Start eA", "Parar eA", "Reiniciar eA",
    "Compilar eA TXT", "Bajar eA" };
    String initialSelection = "Start eA";
    Object selection = JOptionPane.showInputDialog(null, "Select:",
        "eA Server Control", JOptionPane.QUESTION_MESSAGE, null, selectionValues, initialSelection);
    System.out.println(selection);
      
     if(selection == "Parar eA"){
    command= "./stop";
      };
    
    if(selection == "Reiniciar eA"){
    command= "./restart && exit";
      };
    
    if(selection == "Bajar eA"){
    command= "svn co ------------ "+eadir+"";
      };
      
       if(selection == "Compilar eA TXT"){
    command= "./"+eadir+"/configure && cd "+eadir+" && make clean && make txt ";
      };


    
      


      Channel channel=session.openChannel("exec");
      ((ChannelExec)channel).setCommand(command);

      // X Forwarding
      // channel.setXForwarding(true);

      //channel.setInputStream(System.in);
      channel.setInputStream(null);

      //channel.setOutputStream(System.out);

      //FileOutputStream fos=new FileOutputStream("/tmp/stderr");
      //((ChannelExec)channel).setErrStream(fos);
      ((ChannelExec)channel).setErrStream(System.err);

      InputStream in=channel.getInputStream();

      channel.connect();
   

      byte[] tmp=new byte[1024];
      while(true){
        while(in.available()>0){
          int i=in.read(tmp, 0, 1024);
          if(i<0)break;
         System.out.print(new String(tmp, 0, i));
        }
        if(channel.isClosed()){
          System.out.println("exit-status: "+channel.getExitStatus());
          break;
        }
        try{Thread.sleep(1000);}catch(Exception ee){}
      }
      channel.disconnect();
      session.disconnect();
    }
    catch(Exception e){
      System.out.println(e);
    }
  }

  public static class MyUserInfo implements UserInfo, UIKeyboardInteractive{
    public String getPassword(){ return passwd; }
    public boolean promptYesNo(String str){
      Object[] options={ "yes", "no" };
      int foo=JOptionPane.showOptionDialog(null, 
             str,
             "Warning", 
             JOptionPane.DEFAULT_OPTION, 
             JOptionPane.WARNING_MESSAGE,
             null, options, options[0]);
       return foo==0;
    }
  
    String passwd;
    JTextField passwordField=(JTextField)new JPasswordField(20);

    public String getPassphrase(){ return null; }
    public boolean promptPassphrase(String message){ return true; }
    public boolean promptPassword(String message){
      Object[] ob={passwordField}; 
      int result=
        JOptionPane.showConfirmDialog(null, ob, message,
                                      JOptionPane.OK_CANCEL_OPTION);
      if(result==JOptionPane.OK_OPTION){
        passwd=passwordField.getText();
        return true;
      }
      else{ 
        return false; 
      }
    }
    public void showMessage(String message){
      JOptionPane.showMessageDialog(null, message);
    }
    final GridBagConstraints gbc = 
      new GridBagConstraints(0,0,1,1,1,1,
                             GridBagConstraints.NORTHWEST,
                             GridBagConstraints.NONE,
                             new Insets(0,0,0,0),0,0);
    private Container panel;
    public String[] promptKeyboardInteractive(String destination,
                                              String name,
                                              String instruction,
                                              String[] prompt,
                                              boolean[] echo){
      panel = new JPanel();
      panel.setLayout(new GridBagLayout());

      gbc.weightx = 1.0;
      gbc.gridwidth = GridBagConstraints.REMAINDER;
      gbc.gridx = 0;
      panel.add(new JLabel(instruction), gbc);
      gbc.gridy++;

      gbc.gridwidth = GridBagConstraints.RELATIVE;

      JTextField[] texts=new JTextField[prompt.length];
      for(int i=0; i<prompt.length; i++){
        gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = 0;
        gbc.weightx = 1;
        panel.add(new JLabel(prompt[i]),gbc);

        gbc.gridx = 1;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        gbc.weighty = 1;
        if(echo[i]){
          texts[i]=new JTextField(20);
        }
        else{
          texts[i]=new JPasswordField(20);
        }
        panel.add(texts[i], gbc);
        gbc.gridy++;
      }

      if(JOptionPane.showConfirmDialog(null, panel, 
                                       destination+": "+name,
                                       JOptionPane.OK_CANCEL_OPTION,
                                       JOptionPane.QUESTION_MESSAGE)
         ==JOptionPane.OK_OPTION){
        String[] response=new String[prompt.length];
        for(int i=0; i<prompt.length; i++){
          response[i]=texts[i].getText();
        }
	return response;
      }
      else{
        return null;  // cancel
      }
    }
  }
}

gracias de antemano

PD: borre algunos signos por el antispam
  #2 (permalink)  
Antiguo 15/09/2010, 09:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 3
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: duda java secure channel

Yo tengo el mismo problema conseguiste dar con la solucion? Un saludo.
  #3 (permalink)  
Antiguo 14/04/2011, 08:01
 
Fecha de Ingreso: abril-2011
Mensajes: 1
Antigüedad: 13 años
Puntos: 1
Respuesta: duda java secure channel

Perdon por revivir este tema, pero yo tambien tenia esta duda y nunca encontre una buena solucion, asi que ahi esta la mia.

La clave esta en

"System.out.print(new String(tmp,0,i))"

en vez de hacer una impresion por pantalla, podrias guardar el resultado en un String y usarlo en lo que quieras:

Código:
byte[] tmp=new byte[1024];
      while(true){
        while(in.available()>0){
          int i=in.read(tmp, 0, 1024);
          if(i<0)break;
         String alfa = new String(tmp, 0, i);
        }
        if(channel.isClosed()){
          System.out.println("exit-status: "+channel.getExitStatus());
          break;
        }
        try{Thread.sleep(1000);}catch(Exception ee){}
      }

JoptionPane.showMessageDialog(null,alfa);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:10.