1 28 package net.sf.jguard.core.authorization.policy; 29 30 import java.io.File ; 31 import java.io.FileInputStream ; 32 import java.io.FileNotFoundException ; 33 import java.io.IOException ; 34 35 import java.security.CodeSource ; 36 import java.security.PermissionCollection ; 37 import java.security.Policy ; 38 import java.security.ProtectionDomain ; 39 40 import java.util.Properties ; 41 import java.util.logging.Level ; 42 import java.util.logging.Logger ; 43 44 45 53 public abstract class JGuardPolicy extends java.security.Policy { 54 55 private static final String LIB = "lib"; 56 private static final String SECURITY = "security"; 57 private static final String J_GUARD_POLICY = "jGuard.policy"; 58 private static final String JGUARD_POLICY_LOCATION = File.separator + JGuardPolicy.LIB + File.separator + JGuardPolicy.SECURITY + File.separator + JGuardPolicy.J_GUARD_POLICY; 59 private static final String DEFAULT_POLICY = "defaultPolicy"; 60 private static final String JAVA_HOME = "java.home"; 61 protected static Policy defaultPolicy; 63 private static Class policyClass; 65 private static Logger logger = Logger.getLogger(JGuardPolicy.class.getName()); 66 protected final static String version = "1.0.0"; 67 68 69 72 protected void loadDefaultPolicy() { 73 if (System.getSecurityManager() == null) { 75 String javaHome = System.getProperty(JGuardPolicy.JAVA_HOME); 76 Properties props = new Properties (); 77 String defPolicy = null; 78 79 try { 80 props.load(new FileInputStream (new File (javaHome + JGuardPolicy.JGUARD_POLICY_LOCATION))); 81 defPolicy = props.getProperty(JGuardPolicy.DEFAULT_POLICY); 82 } catch (FileNotFoundException e) { 83 logger.log(Level.CONFIG, "loadDefaultPolicy() - jGuard.policy is not found " + e.getMessage()); 84 } catch (IOException e) { 85 logger.log(Level.CONFIG, "loadDefaultPolicy() - jGuard.policy is not reachable " + e.getMessage()); 86 } 87 88 try { 89 90 if(defPolicy==null){ 91 logger.log(Level.CONFIG,"loadDefaultPolicy() - 'defaultPolicy' field in the jGuard.Policy file is not defined "); 92 logger.log(Level.CONFIG,"loadDefaultPolicy() - jGuard try to discover the default one "); 93 policyClass = PolicyHelper.findDefaultPolicy(); 95 } else { 96 policyClass = Class.forName(defPolicy); 98 } 99 } catch (ClassNotFoundException e1) { 100 logger.log(Level.CONFIG, "loadDefaultPolicy() - the default policy class cannot be found " + e1.getMessage()); 101 } 102 103 }else{ 105 policyClass = PolicyHelper.findDefaultPolicy(); 106 } 107 108 try { 109 defaultPolicy = (Policy )policyClass.newInstance(); 110 } catch (InstantiationException e2) { 111 logger.log(Level.CONFIG,"loadDefaultPolicy() - the default policy class cannot be instantiated" 112 + e2.getMessage()); 113 } catch (IllegalAccessException e2) { 114 logger.log(Level.CONFIG,"loadDefaultPolicy() - the default policy class cannot be accessed " 115 + e2.getMessage()); 116 } 117 } 118 119 126 public PermissionCollection getPermissions(CodeSource codesource) { 127 PermissionCollection permColl = defaultPolicy.getPermissions(codesource); 128 return permColl; 129 } 130 131 public abstract PermissionCollection getPermissions(ProtectionDomain protectionDomain); 132 133 public abstract void refresh(); 134 } 135 | Popular Tags |