29
30 package sun.net.www.protocol.ftp;
31
32 import java.io.IOException;
33 import java.io.InputStream;
34 import java.io.OutputStream;
35 import java.io.BufferedInputStream;
36 import java.io.FilterInputStream;
37 import java.io.FilterOutputStream;
38 import java.io.FileNotFoundException;
39 import java.net.URL;
40 import java.net.SocketPermission;
41 import java.net.UnknownHostException;
42 import java.net.InetSocketAddress;
43 import java.net.URI;
44 import java.net.Proxy;
45 import java.net.ProxySelector;
46 import java.util.StringTokenizer;
47 import java.util.Iterator;
48 import java.security.Permission;
49 import sun.net.NetworkClient;
50 import sun.net.www.MessageHeader;
51 import sun.net.www.MeteredStream;
52 import sun.net.www.URLConnection;
53 import sun.net.www.protocol.http.HttpURLConnection;
54 import sun.net.ftp.FtpClient;
55 import sun.net.ftp.FtpProtocolException;
56 import sun.net.ProgressSource;
57 import sun.net.ProgressMonitor;
58 import sun.net.www.ParseUtil;
59 import sun.security.action.GetPropertyAction;
60
61
62 /**
63 * This class Opens an FTP input (or output) stream given a URL.
64 * It works as a one shot FTP transfer :
65 * <UL>
66 * <LI>Login</LI>
67 * <LI>Get (or Put) the file</LI>
68 * <LI>Disconnect</LI>
260 } else { // per connection proxy specified
261 p = instProxy;
262 if (p.type() == Proxy.Type.HTTP) {
263 http = new HttpURLConnection(url, instProxy);
264 http.setDoInput(getDoInput());
265 http.setDoOutput(getDoOutput());
266 if (connectTimeout >= 0) {
267 http.setConnectTimeout(connectTimeout);
268 }
269 if (readTimeout >= 0) {
270 http.setReadTimeout(readTimeout);
271 }
272 http.connect();
273 connected = true;
274 return;
275 }
276 }
277
278 if (user == null) {
279 user = "anonymous";
280 String vers = java.security.AccessController.doPrivileged(
281 new GetPropertyAction("java.version"));
282 password = java.security.AccessController.doPrivileged(
283 new GetPropertyAction("ftp.protocol.user",
284 "Java" + vers + "@"));
285 }
286 try {
287 ftp = FtpClient.create();
288 if (p != null) {
289 ftp.setProxy(p);
290 }
291 setTimeouts();
292 if (port != -1) {
293 ftp.connect(new InetSocketAddress(host, port));
294 } else {
295 ftp.connect(new InetSocketAddress(host, FtpClient.defaultPort()));
296 }
297 } catch (UnknownHostException e) {
298 // Maybe do something smart here, like use a proxy like iftp.
299 // Just keep throwing for now.
300 throw e;
301 } catch (FtpProtocolException fe) {
302 if (ftp != null) {
303 try {
304 ftp.close();
|
29
30 package sun.net.www.protocol.ftp;
31
32 import java.io.IOException;
33 import java.io.InputStream;
34 import java.io.OutputStream;
35 import java.io.BufferedInputStream;
36 import java.io.FilterInputStream;
37 import java.io.FilterOutputStream;
38 import java.io.FileNotFoundException;
39 import java.net.URL;
40 import java.net.SocketPermission;
41 import java.net.UnknownHostException;
42 import java.net.InetSocketAddress;
43 import java.net.URI;
44 import java.net.Proxy;
45 import java.net.ProxySelector;
46 import java.util.StringTokenizer;
47 import java.util.Iterator;
48 import java.security.Permission;
49 import java.util.Properties;
50 import sun.net.NetworkClient;
51 import sun.net.www.MessageHeader;
52 import sun.net.www.MeteredStream;
53 import sun.net.www.URLConnection;
54 import sun.net.www.protocol.http.HttpURLConnection;
55 import sun.net.ftp.FtpClient;
56 import sun.net.ftp.FtpProtocolException;
57 import sun.net.ProgressSource;
58 import sun.net.ProgressMonitor;
59 import sun.net.www.ParseUtil;
60 import sun.security.action.GetPropertyAction;
61
62
63 /**
64 * This class Opens an FTP input (or output) stream given a URL.
65 * It works as a one shot FTP transfer :
66 * <UL>
67 * <LI>Login</LI>
68 * <LI>Get (or Put) the file</LI>
69 * <LI>Disconnect</LI>
261 } else { // per connection proxy specified
262 p = instProxy;
263 if (p.type() == Proxy.Type.HTTP) {
264 http = new HttpURLConnection(url, instProxy);
265 http.setDoInput(getDoInput());
266 http.setDoOutput(getDoOutput());
267 if (connectTimeout >= 0) {
268 http.setConnectTimeout(connectTimeout);
269 }
270 if (readTimeout >= 0) {
271 http.setReadTimeout(readTimeout);
272 }
273 http.connect();
274 connected = true;
275 return;
276 }
277 }
278
279 if (user == null) {
280 user = "anonymous";
281 Properties props = GetPropertyAction.getProperties();
282 String vers = props.getProperty("java.version");
283 password = props.getProperty("ftp.protocol.user",
284 "Java" + vers + "@");
285 }
286 try {
287 ftp = FtpClient.create();
288 if (p != null) {
289 ftp.setProxy(p);
290 }
291 setTimeouts();
292 if (port != -1) {
293 ftp.connect(new InetSocketAddress(host, port));
294 } else {
295 ftp.connect(new InetSocketAddress(host, FtpClient.defaultPort()));
296 }
297 } catch (UnknownHostException e) {
298 // Maybe do something smart here, like use a proxy like iftp.
299 // Just keep throwing for now.
300 throw e;
301 } catch (FtpProtocolException fe) {
302 if (ftp != null) {
303 try {
304 ftp.close();
|