Mega Code Archive

 
Categories / Java / Security
 

Security Manager Test

/* From http://java.sun.com/docs/books/tutorial/index.html */ /*  * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions are met:  *  * -Redistribution of source code must retain the above copyright notice, this  *  list of conditions and the following disclaimer.  *  * -Redistribution in binary form must reproduce the above copyright notice,  *  this list of conditions and the following disclaimer in the documentation  *  and/or other materials provided with the distribution.  *  * Neither the name of Sun Microsystems, Inc. or the names of contributors may  * be used to endorse or promote products derived from this software without  * specific prior written permission.  *  * This software is provided "AS IS," without a warranty of any kind. ALL  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE  * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")  * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE  * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS  * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST  * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,  * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY  * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,  * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.  *  * You acknowledge that this software is not designed, licensed or intended  * for use in the design, construction, operation or maintenance of any  * nuclear facility.  */ import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class SecurityManagerTest {   public static void main(String[] args) throws Exception {     try {       System           .setSecurityManager(new PasswordSecurityManager(               "Booga Booga"));     } catch (SecurityException se) {       System.err.println("SecurityManager already set!");     }     DataInputStream in = new DataInputStream(new FileInputStream(         "inputtext.txt"));     DataOutputStream out = new DataOutputStream(new FileOutputStream(         "outputtext.txt"));     String inputString;     while ((inputString = in.readLine()) != null) {       out.writeBytes(inputString);       out.writeByte('\n');     }     in.close();     out.close();   } } class PasswordSecurityManager extends SecurityManager {   private String password;   public PasswordSecurityManager(String password) {     super();     this.password = password;   }   private boolean accessOK() {     int c;     DataInputStream in = new DataInputStream(System.in);     String response;     System.out.println("What's the secret password?");     try {       response = in.readLine();       if (response.equals(password))         return true;       else         return false;     } catch (IOException e) {       return false;     }   }   public void checkRead(FileDescriptor filedescriptor) {     if (!accessOK())       throw new SecurityException("Not a Chance!");   }   public void checkRead(String filename) {     if (!accessOK())       throw new SecurityException("No Way!");   }   public void checkRead(String filename, Object executionContext) {     if (!accessOK())       throw new SecurityException("Forget It!");   }   public void checkWrite(FileDescriptor filedescriptor) {     if (!accessOK())       throw new SecurityException("Not!");   }   public void checkWrite(String filename) {     if (!accessOK())       throw new SecurityException("Not Even!");   } }