home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 25 / CDROM25.iso / Share / prog / VJ11 / VJTRIAL.EXE / IE30Java.exe / classd.exe / sun / net / ftp / FtpClient.class (.txt) next >
Encoding:
Java Class File  |  1997-01-27  |  5.5 KB  |  223 lines

  1. package sun.net.ftp;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.net.InetAddress;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. import java.util.StringTokenizer;
  9. import sun.net.NetworkClient;
  10. import sun.net.TelnetInputStream;
  11. import sun.net.TelnetOutputStream;
  12. import sun.net.TransferProtocolClient;
  13.  
  14. public class FtpClient extends TransferProtocolClient {
  15.    public static final int FTP_PORT = 21;
  16.    static int FTP_SUCCESS = 1;
  17.    static int FTP_TRY_AGAIN = 2;
  18.    static int FTP_ERROR = 3;
  19.    private Socket dataSocket;
  20.    private boolean replyPending = false;
  21.    private boolean binaryMode = false;
  22.    String user;
  23.    String password;
  24.    String command;
  25.    int lastReplyCode;
  26.    public String welcomeMsg;
  27.    public static boolean useFtpProxy = Boolean.getBoolean("ftpProxySet");
  28.    public static String ftpProxyHost = System.getProperty("ftpProxyHost");
  29.    public static int ftpProxyPort = Integer.getInteger("ftpProxyPort", 80);
  30.  
  31.    public void closeServer() throws IOException {
  32.       if (((NetworkClient)this).serverIsOpen()) {
  33.          this.issueCommand("QUIT");
  34.          super.closeServer();
  35.       }
  36.  
  37.    }
  38.  
  39.    protected int issueCommand(String var1) throws IOException {
  40.       this.command = var1;
  41.       if (this.replyPending && this.readReply() == FTP_ERROR) {
  42.          System.out.print("Error reading pending reply\n");
  43.       }
  44.  
  45.       this.replyPending = false;
  46.  
  47.       int var2;
  48.       do {
  49.          ((TransferProtocolClient)this).sendServer(var1 + "\r\n");
  50.          var2 = this.readReply();
  51.       } while(var2 == FTP_TRY_AGAIN);
  52.  
  53.       return var2;
  54.    }
  55.  
  56.    protected void issueCommandCheck(String var1) throws IOException {
  57.       if (this.issueCommand(var1) != FTP_SUCCESS) {
  58.          throw new FtpProtocolException(var1);
  59.       }
  60.    }
  61.  
  62.    protected int readReply() throws IOException {
  63.       this.lastReplyCode = ((TransferProtocolClient)this).readServerResponse();
  64.       switch (this.lastReplyCode / 100) {
  65.          case 1:
  66.             this.replyPending = true;
  67.          case 2:
  68.          case 3:
  69.             return FTP_SUCCESS;
  70.          case 5:
  71.             if (this.lastReplyCode == 530) {
  72.                if (this.user == null) {
  73.                   throw new FtpLoginException("Not logged in");
  74.                }
  75.  
  76.                return FTP_ERROR;
  77.             } else if (this.lastReplyCode == 550) {
  78.                throw new FileNotFoundException(this.command + ": " + ((TransferProtocolClient)this).getResponseString());
  79.             }
  80.          case 4:
  81.          default:
  82.             return FTP_ERROR;
  83.       }
  84.    }
  85.  
  86.    protected Socket openDataConnection(String var1) throws IOException {
  87.       InetAddress var4 = InetAddress.getLocalHost();
  88.       byte[] var5 = var4.getAddress();
  89.       ServerSocket var2 = new ServerSocket(0, 1);
  90.       String var3 = "PORT ";
  91.  
  92.       for(int var7 = 0; var7 < var5.length; ++var7) {
  93.          var3 = var3 + (var5[var7] & 255) + ",";
  94.       }
  95.  
  96.       var3 = var3 + (var2.getLocalPort() >>> 8 & 255) + "," + (var2.getLocalPort() & 255);
  97.       if (this.issueCommand(var3) == FTP_ERROR) {
  98.          FtpProtocolException var9 = new FtpProtocolException("PORT");
  99.          var2.close();
  100.          throw var9;
  101.       } else if (this.issueCommand(var1) == FTP_ERROR) {
  102.          FtpProtocolException var6 = new FtpProtocolException(var1);
  103.          var2.close();
  104.          throw var6;
  105.       } else {
  106.          this.dataSocket = var2.accept();
  107.          var2.close();
  108.          return this.dataSocket;
  109.       }
  110.    }
  111.  
  112.    public void openServer(String var1) throws IOException {
  113.       byte var2 = 21;
  114.       this.openServer(var1, var2);
  115.    }
  116.  
  117.    public void openServer(String var1, int var2) throws IOException {
  118.       super.openServer(var1, var2);
  119.       if (this.readReply() == FTP_ERROR) {
  120.          throw new FtpProtocolException("Welcome message");
  121.       }
  122.    }
  123.  
  124.    public void login(String var1, String var2) throws IOException {
  125.       if (!((NetworkClient)this).serverIsOpen()) {
  126.          throw new FtpLoginException("not connected to host");
  127.       } else {
  128.          this.user = var1;
  129.          this.password = var2;
  130.          if (this.issueCommand("USER " + var1) == FTP_ERROR) {
  131.             throw new FtpLoginException("user");
  132.          } else if (var2 != null && this.issueCommand("PASS " + var2) == FTP_ERROR) {
  133.             throw new FtpLoginException("password");
  134.          } else {
  135.             for(int var4 = 0; var4 < super.serverResponse.size(); ++var4) {
  136.                String var3 = (String)super.serverResponse.elementAt(var4);
  137.                if (var3 != null) {
  138.                   if (var3.charAt(3) != '-') {
  139.                      break;
  140.                   }
  141.  
  142.                   var3 = var3.substring(4);
  143.                   if (this.welcomeMsg == null) {
  144.                      this.welcomeMsg = var3;
  145.                   } else {
  146.                      String var10001 = this.welcomeMsg;
  147.                      this.welcomeMsg = var10001 + var3;
  148.                   }
  149.                }
  150.             }
  151.  
  152.          }
  153.       }
  154.    }
  155.  
  156.    public TelnetInputStream get(String var1) throws IOException {
  157.       Socket var2;
  158.       try {
  159.          var2 = this.openDataConnection("RETR " + var1);
  160.       } catch (FileNotFoundException var7) {
  161.          StringTokenizer var4 = new StringTokenizer(var1, "/");
  162.          String var5 = null;
  163.  
  164.          while(var4.hasMoreElements()) {
  165.             var5 = var4.nextToken();
  166.             if (!var4.hasMoreElements()) {
  167.                break;
  168.             }
  169.  
  170.             try {
  171.                this.method_0(var5);
  172.             } catch (FtpProtocolException var6) {
  173.                throw var7;
  174.             }
  175.          }
  176.  
  177.          if (var5 == null) {
  178.             throw var7;
  179.          }
  180.  
  181.          var2 = this.openDataConnection("RETR " + var5);
  182.       }
  183.  
  184.       return new FtpInputStream(this, var2.getInputStream(), this.binaryMode);
  185.    }
  186.  
  187.    public TelnetOutputStream put(String var1) throws IOException {
  188.       Socket var2 = this.openDataConnection("STOR " + var1);
  189.       return new TelnetOutputStream(var2.getOutputStream(), this.binaryMode);
  190.    }
  191.  
  192.    public TelnetInputStream list() throws IOException {
  193.       Socket var1 = this.openDataConnection("LIST");
  194.       return new TelnetInputStream(var1.getInputStream(), this.binaryMode);
  195.    }
  196.  
  197.    // $FF: renamed from: cd (java.lang.String) void
  198.    public void method_0(String var1) throws IOException {
  199.       this.issueCommandCheck("CWD " + var1);
  200.    }
  201.  
  202.    public void binary() throws IOException {
  203.       this.issueCommandCheck("TYPE I");
  204.       this.binaryMode = true;
  205.    }
  206.  
  207.    public void ascii() throws IOException {
  208.       this.issueCommandCheck("TYPE A");
  209.       this.binaryMode = false;
  210.    }
  211.  
  212.    public FtpClient(String var1) throws IOException {
  213.       this.openServer(var1, 21);
  214.    }
  215.  
  216.    public FtpClient(String var1, int var2) throws IOException {
  217.       this.openServer(var1, var2);
  218.    }
  219.  
  220.    public FtpClient() {
  221.    }
  222. }
  223.