1 32 33 package websphinx.workbench; 34 35 import websphinx.*; 36 import java.net.URL ; 37 import java.net.URLConnection ; 38 import java.io.File ; 39 import java.io.OutputStream ; 40 import java.io.InputStream ; 41 import java.io.IOException ; 42 import java.io.RandomAccessFile ; 43 import netscape.security.PrivilegeManager; 44 import netscape.security.ForbiddenTargetException; 45 46 public class Netscape4Access extends Access { 47 48 private boolean isLocalURL (URL url) { 49 return (url.getProtocol().equals ("file") 50 && url.getHost().equals ("")); 51 } 52 53 public URLConnection openConnection (URL url) throws IOException { 54 try { 55 PrivilegeManager.enablePrivilege ("UniversalConnectWithRedirect"); 56 if (isLocalURL (url)) 57 PrivilegeManager.enablePrivilege ("UniversalFileRead"); 58 } catch (ForbiddenTargetException e) { 59 throw new IOException ("connection forbidden"); 60 } 61 62 return super.openConnection (url); 63 } 64 65 public URLConnection openConnection (Link link) throws IOException { 66 try { 67 PrivilegeManager.enablePrivilege ("UniversalConnectWithRedirect"); 68 } catch (ForbiddenTargetException e) { 69 throw new IOException ("connection forbidden"); 70 } 71 72 if (isLocalURL (link.getURL())) 73 PrivilegeManager.enablePrivilege ("UniversalFileRead"); 74 return super.openConnection (link); 75 } 76 77 public InputStream readFile (File file) throws IOException { 78 try { 79 PrivilegeManager.enablePrivilege("UniversalFileRead"); 80 } catch (ForbiddenTargetException e) { 81 throw new IOException ("file read forbidden"); 82 } 83 84 return super.readFile (file); 85 } 86 87 public OutputStream writeFile (File file, boolean append) throws IOException { 88 try { 89 PrivilegeManager.enablePrivilege("UniversalFileWrite"); 90 } catch (ForbiddenTargetException e) { 91 throw new IOException ("file write forbidden"); 92 } 93 94 return super.writeFile (file, append); 95 } 96 97 public RandomAccessFile readWriteFile (File file) throws IOException { 98 try { 99 PrivilegeManager.enablePrivilege("UniversalFileWrite"); 100 PrivilegeManager.enablePrivilege("UniversalFileRead"); 101 } catch (ForbiddenTargetException e) { 102 throw new IOException ("file read/write forbidden"); 103 } 104 105 return super.readWriteFile (file); 106 } 107 108 public void makeDir (File file) throws IOException { 109 try { 110 PrivilegeManager.enablePrivilege("UniversalFileWrite"); 111 PrivilegeManager.enablePrivilege("UniversalFileRead"); 112 } catch (ForbiddenTargetException e) { 115 throw new IOException ("make-directory forbidden"); 116 } 117 118 super.makeDir (file); 119 } 120 121 122 public File makeTemporaryFile (String basename, String extension) { 123 try { 124 PrivilegeManager.enablePrivilege("UniversalFileRead"); 125 } catch (ForbiddenTargetException e) { 129 throw new SecurityException ("temp file check forbidden"); 130 } 131 132 return super.makeTemporaryFile (basename, extension); 133 } 134 } 135 | Popular Tags |