home *** CD-ROM | disk | FTP | other *** search
- package netscape.net;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.InetAddress;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.net.UnknownHostException;
- import java.net.UnknownServiceException;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import netscape.security.AppletSecurity;
- import netscape.security.PrivilegeManager;
- import netscape.security.Target;
- import netscape.security.UserTarget;
-
- public class URLConnection extends java.net.URLConnection {
- static final String EOL = "\r\n";
- int pStreamData;
- URLInputStream currentInputStream;
- URLOutputStream currentOutputStream;
- String postHeaders;
- boolean useSARCache = false;
- Hashtable properties;
- static Hashtable defaultProperties;
- private String filename;
- private String path;
- private String name;
- private String mimeTypeHint;
- private int type;
- private int maxSize;
- private boolean isOpen = false;
- private Cache cache;
- private final int GET_FIRST = 1;
- private final int GET_NEXT = 2;
- private final int GET_LAST = 3;
- private boolean enabled = true;
- static final int BUF_SIZE = 1024;
- static byte[] junk = new byte[1024];
-
- protected URLConnection(URL var1) {
- super(var1);
- String var2 = null;
-
- try {
- var2 = InetAddress.getByName(var1.getHost()).getHostAddress();
- } catch (UnknownHostException var4) {
- } catch (SecurityException var5) {
- }
-
- boolean var3 = !SecurityManager.isPrivilegeEnabled("UniversalRedirect");
- this.pCreate(var1.toExternalForm(), var2, var3);
- }
-
- private native void pCreate(String var1, String var2, boolean var3);
-
- protected native void finalize();
-
- public void connect() throws IOException {
- if (!super.connected) {
- System.getSecurityManager().checkURLConnect(super.url);
- super.connected = true;
- StringBuffer var1 = new StringBuffer();
- if (this.postHeaders != null) {
- var1.append(this.postHeaders);
- }
-
- boolean var2 = false;
- Hashtable var3 = this.properties;
- if (var3 == null) {
- var3 = defaultProperties;
- }
-
- if (var3 != null) {
- Enumeration var4 = var3.keys();
-
- while(var4.hasMoreElements()) {
- String var5 = (String)var4.nextElement();
- if (!var5.equalsIgnoreCase("Content-length")) {
- if (var5.equalsIgnoreCase("Content-type")) {
- var2 = true;
- }
-
- String var6 = (String)var3.get(var5);
- var1.append(var5);
- var1.append(":");
- var1.append(var6);
- var1.append("\r\n");
- }
- }
- }
-
- if (!var2) {
- var1.append("Content-type: multipart/form-data");
- var1.append("\r\n");
- }
-
- this.postHeaders = var1.toString();
- this.properties = null;
- if (this.currentOutputStream != null) {
- this.currentOutputStream.close();
- }
-
- URLInputStream var7 = (URLInputStream)this.getInputStream();
- var7.open();
- }
- }
-
- public int getContentLength() {
- try {
- this.getInputStream();
- } catch (Exception var1) {
- return -1;
- }
-
- return this.getContentLength0();
- }
-
- public native int getContentLength0();
-
- public String getContentType() {
- try {
- this.getInputStream();
- } catch (Exception var1) {
- return null;
- }
-
- return this.getContentType0();
- }
-
- public native String getContentType0();
-
- public String getHeaderField(String var1) {
- try {
- this.getInputStream();
- } catch (Exception var2) {
- return null;
- }
-
- return this.getHeaderField0(var1);
- }
-
- public native String getHeaderField0(String var1);
-
- public String getHeaderFieldKey(int var1) {
- try {
- this.getInputStream();
- } catch (Exception var2) {
- return null;
- }
-
- return this.getHeaderFieldKey0(var1);
- }
-
- public native String getHeaderFieldKey0(int var1);
-
- public InputStream getInputStream() throws IOException {
- if (!super.connected) {
- this.connect();
- }
-
- if (!super.doInput) {
- throw new UnknownServiceException("protocol doesn't support input");
- } else {
- if (this.currentInputStream == null) {
- this.currentInputStream = new URLInputStream(this);
- }
-
- return this.currentInputStream;
- }
- }
-
- public OutputStream getOutputStream() throws IOException {
- if (super.connected) {
- throw new IllegalAccessError("Already connected");
- } else if (!super.doOutput) {
- throw new UnknownServiceException("protocol doesn't support output");
- } else {
- if (this.currentOutputStream == null) {
- this.currentOutputStream = new URLOutputStream(this);
- this.currentOutputStream.open();
- }
-
- return this.currentOutputStream;
- }
- }
-
- public void setRequestProperty(String var1, String var2) {
- if (super.connected) {
- throw new IllegalAccessError("Already connected");
- } else {
- if (this.properties == null) {
- this.properties = new Hashtable();
- }
-
- if (var2 != null) {
- this.properties.put(var1, var2);
- } else {
- this.properties.remove(var1);
- }
- }
- }
-
- public String getRequestProperty(String var1) {
- if (super.connected) {
- throw new IllegalAccessError("Already connected");
- } else {
- return this.properties == null ? null : (String)this.properties.get(var1);
- }
- }
-
- public static void setDefaultRequestProperty(String var0, String var1) {
- if (defaultProperties == null) {
- defaultProperties = new Hashtable();
- }
-
- if (var1 != null) {
- defaultProperties.put(var0, var1);
- } else {
- defaultProperties.remove(var0);
- }
- }
-
- public static String getDefaultRequestProperty(String var0) {
- return defaultProperties == null ? null : (String)defaultProperties.get(var0);
- }
-
- native void close() throws IOException;
-
- void setUseSARCache(boolean var1) {
- this.useSARCache = var1;
- }
-
- void setName(String var1) {
- this.name = var1;
- }
-
- void setFilename(String var1) {
- this.filename = var1;
- }
-
- void setPath(String var1) {
- this.path = var1;
- }
-
- void setMimeTypeHint(String var1) {
- this.mimeTypeHint = var1;
- }
-
- boolean getUseSARCache() {
- return this.useSARCache;
- }
-
- void openCache(String var1, String var2, String var3, Cache var4) {
- if (this.enabled) {
- this.path = var1;
- this.filename = var2;
- this.name = var3;
- this.maxSize = 0;
- this.cache = var4;
- this.isOpen = this.nOpenCache();
- }
- }
-
- void openCache(String var1, String var2, String var3, Cache var4, int var5) {
- if (this.enabled) {
- this.path = var1;
- this.filename = var2;
- this.name = var3;
- this.maxSize = var5;
- this.cache = var4;
- this.isOpen = this.nOpenCache();
- }
- }
-
- private native boolean nOpenCache();
-
- void setMaxSize(int var1) {
- this.maxSize = var1;
- this.nUpdateCache();
- }
-
- private native void nUpdateCache();
-
- String isURLInCache(String var1) {
- return !this.enabled ? null : this.nIsURLInCache(var1);
- }
-
- private native String nIsURLInCache(String var1);
-
- void getURL(URL var1) {
- if (this.enabled) {
- if (!this.isOpen) {
- this.nOpenCache();
- this.isOpen = true;
- }
-
- PrivilegeManager var3 = AppletSecurity.getPrivilegeManager();
- UserTarget var4 = (UserTarget)Target.findTarget("UniversalConnect");
- var3.enablePrivilege(var4);
-
- try {
- URLConnection var2 = (URLConnection)var1.openConnection();
- var2.setUseSARCache(true);
- var2.setName(this.name);
- var2.setFilename(this.filename);
- var2.setPath(this.path);
- InputStream var5 = var2.getInputStream();
-
- try {
- while(var5.read(junk) >= 0) {
- }
- } catch (IOException var6) {
- }
-
- var5.close();
- } catch (IOException var7) {
- }
-
- var3.revertPrivilege(var4);
- }
- }
-
- void getURL(CacheRequest var1) throws MalformedURLException {
- if (this.enabled) {
- URL var2 = var1.getURL();
- if (!this.isOpen) {
- this.nOpenCache();
- this.isOpen = true;
- }
-
- PrivilegeManager var4 = AppletSecurity.getPrivilegeManager();
- UserTarget var5 = (UserTarget)Target.findTarget("UniversalConnect");
- var4.enablePrivilege(var5);
-
- try {
- URLConnection var3 = (URLConnection)var2.openConnection();
- var3.setUseSARCache(true);
- var3.setName(this.name);
- var3.setFilename(this.filename);
- var3.setPath(this.path);
- var3.setMimeTypeHint(var1.getMimeTypeHint());
- InputStream var6 = var3.getInputStream();
-
- try {
- while(var6.read(junk) >= 0) {
- }
- } catch (IOException var7) {
- }
-
- var1.setLocation(var3.getHeaderField("Location"));
- var1.setContentType(var3.getHeaderField("Content-type"));
- var1.setContentLength(var3.getHeaderField("Content-length"));
- var1.setLastModified(var3.getHeaderField("Last-modified"));
- var1.setExpires(var3.getHeaderField("Expires"));
- var6.close();
- } catch (IOException var8) {
- }
-
- var4.revertPrivilege(var5);
- }
- }
-
- InputStream getInputStream(CacheRequest var1) throws IOException {
- if (!this.enabled) {
- return null;
- } else {
- URL var3 = var1.getURL();
- Object var4 = null;
- if (!this.isOpen) {
- this.nOpenCache();
- this.isOpen = true;
- }
-
- PrivilegeManager var5 = AppletSecurity.getPrivilegeManager();
- UserTarget var6 = (UserTarget)Target.findTarget("UniversalConnect");
- var5.enablePrivilege(var6);
- URLConnection var2 = (URLConnection)var3.openConnection();
- var2.setUseSARCache(true);
- var2.setName(this.name);
- var2.setFilename(this.filename);
- var2.setPath(this.path);
- var2.setMimeTypeHint(var1.getMimeTypeHint());
- InputStream var7 = var2.getInputStream();
- var1.setLocation(var2.getHeaderField("Location"));
- var1.setContentType(var2.getHeaderField("Content-type"));
- var1.setContentLength(var2.getHeaderField("Content-length"));
- var1.setLastModified(var2.getHeaderField("Last-modified"));
- var1.setExpires(var2.getHeaderField("Expires"));
- var5.revertPrivilege(var6);
- return var7;
- }
- }
-
- InputStream getInputStream(URL var1) throws IOException {
- if (!this.enabled) {
- return null;
- } else {
- Object var3 = null;
- if (!this.isOpen) {
- this.nOpenCache();
- this.isOpen = true;
- }
-
- PrivilegeManager var4 = AppletSecurity.getPrivilegeManager();
- UserTarget var5 = (UserTarget)Target.findTarget("UniversalConnect");
- var4.enablePrivilege(var5);
- URLConnection var2 = (URLConnection)var1.openConnection();
- var2.setUseSARCache(true);
- var2.setName(this.name);
- var2.setFilename(this.filename);
- var2.setPath(this.path);
- InputStream var6 = var2.getInputStream();
- var4.revertPrivilege(var5);
- return var6;
- }
- }
-
- boolean put(String var1, String var2, Hashtable var3) {
- if (!this.enabled) {
- return false;
- } else {
- String var4 = (String)var3.get("Content-type");
- String var5 = (String)var3.get("Content-length");
- String var6 = (String)var3.get("Last-modified");
- String var7 = (String)var3.get("Date");
- return this.nPut(var1, var2, var4, var6 != null ? Long.parseLong(var6) : 0L, var5 != null ? Integer.parseInt(var5) : 0, var7 != null ? Long.parseLong(var7) : 0L);
- }
- }
-
- private native boolean nPut(String var1, String var2, String var3, long var4, int var6, long var7);
-
- void remove(String var1) {
- if (this.enabled) {
- if (this.isOpen) {
- this.nRemove(var1);
- }
- }
- }
-
- void remove(URL var1) {
- if (this.enabled) {
- this.remove(var1.toString());
- }
- }
-
- private native void nRemove(String var1);
-
- void clear() {
- if (this.enabled) {
- if (this.isOpen) {
- this.nClear();
- }
- }
- }
-
- private native void nClear();
-
- void delete() {
- if (this.enabled) {
- if (this.isOpen) {
- this.nDelete();
- }
- }
- }
-
- private native void nDelete();
-
- void closeCache() {
- if (this.enabled) {
- if (this.isOpen) {
- this.nCloseCache();
- this.isOpen = false;
- }
- }
- }
-
- private native void nCloseCache();
-
- void getFirstManagedCache(CacheObject var1) {
- if (this.enabled) {
- this.nEnumManagedCaches(var1, 1);
- }
- }
-
- void getLastManagedCache(CacheObject var1) {
- if (this.enabled) {
- this.nEnumManagedCaches(var1, 3);
- }
- }
-
- void getNextManagedCache(CacheObject var1) {
- if (this.enabled) {
- this.nEnumManagedCaches(var1, 2);
- }
- }
-
- private native void nEnumManagedCaches(CacheObject var1, int var2);
-
- public static String guessContentTypeFromName(String var0) {
- return java.net.URLConnection.guessContentTypeFromName(var0);
- }
- }
-