import java.applet.*; import java.io.*; import java.awt.*; import netscape.security.*; public class ReadFileNS extends Applet { public void init() { try { // cryptographic principals at [0] // codebase principals at [1] Principal prin = PrivilegeManager.getMyPrincipals()[0]; PrivilegeManager pm = PrivilegeManager.getPrivilegeManager(); String filename = getParameter ("filename"); Target readTarget = Target.findTarget ("FileRead"); readTarget.enablePrivilege (prin, filename); // read file // Don't use FileReader - it fails, wrong call stack FileInputStream fis = new FileInputStream (filename); InputStreamReader isr = new InputStreamReader (fis); BufferedReader br = new BufferedReader (isr); StringWriter sw = new StringWriter(); String line; while ((line = br.readLine()) != null) { sw.write (line); sw.write ('\n'); } setLayout (new BorderLayout()); add (new TextArea (sw.toString()), BorderLayout.CENTER); } catch (ForbiddenTargetException e) { System.err.println ("User denied access to read file"); } catch (IOException e) { System.err.println ("Error reading file"); } } }