01: //
02: // Copyright 02/09/00 Sun Microsystems, Inc. All Rights Reserved.
03: //
04: package com.sun.portal.netlet.client.common;
05:
06: import com.sun.portal.netlet.econnection.KeyConstants;
07: import com.sun.portal.netlet.econnection.ReaderWriterDecrypt;
08:
09: import java.io.InputStream;
10: import java.io.OutputStream;
11: import java.util.StringTokenizer;
12:
13: public class ReaderWriterDecryptFtp extends ReaderWriterDecrypt {
14: private SClientMgr scm;
15:
16: public ReaderWriterDecryptFtp(RWGroupCrypt rwc,
17: InputStream inStream, OutputStream outStream, SClientMgr scm) {
18: super (rwc, inStream, outStream);
19: this .scm = scm;
20: System.out.println("Netlet Ftp");
21: }
22:
23: public int FindDynamicPort(byte[] buffer, int len) {
24: if (len <= 0) {
25: return 0;
26: }
27: if (buffer[0] != 50 || buffer[1] != 50 || buffer[2] != 55) {
28: return 0;
29: }
30: String s = new String(buffer);
31: int i = s.indexOf('(');
32: int ii = s.indexOf(')');
33: String ss = s.substring(i + 1, ii);
34: StringTokenizer st = new StringTokenizer(ss, ",");
35: String ftpHostIP = st.nextToken() + "." + st.nextToken() + "."
36: + st.nextToken() + "." + st.nextToken();
37: int port1 = 0;
38: int port2 = 0;
39: try {
40: String t1 = st.nextToken();
41: String t2 = st.nextToken();
42: port1 = Integer.parseInt(t1);
43: port2 = Integer.parseInt(t2);
44: } catch (NumberFormatException ex) {
45: System.out.println("Unable to get FTP data port. " + ex);
46: }
47: int sport = port1 * 256 + port2;
48: String command = new String(
49: "227 Entering Passive Mode (127,0,0,1," + port1 + ","
50: + port2 + ")\r\n");
51: System.out.println("Returning ftp command: " + command);
52:
53: // Modify buffer to have localhost instead of the ip of the
54: // ftp server
55: System.arraycopy(command.getBytes(), 0, buffer, 0, command
56: .length());
57:
58: String tname = "atprox_" + sport + "_"
59: + ClientConfig.getDestPort() + "_"
60: + ClientConfig.getDestHost();
61:
62: scm.addproxy("", sport, new String("" + sport), ftpHostIP,
63: tname, true, KeyConstants.DEFAULT_CIPHER,
64: KeyConstants.DEFAULT_KEYLEN);
65: return command.length();
66: }
67: }
|