⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 policyfilereader.java

📁 aglet的部分源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.ibm.aglets.security;/* * @(#)PolicyFileReader.java *  * IBM Confidential-Restricted *  * OCO Source Materials *  * 03L7246 (c) Copyright IBM Corp. 1996, 1998 *  * The source code for this program is not published or otherwise * divested of its trade secrets, irrespective of what has been * deposited with the U.S. Copyright Office. */import com.ibm.awb.misc.FileUtils;import com.ibm.awb.misc.MalformedURIPatternException;import java.io.File;import java.io.FileReader;import java.io.BufferedReader;import java.io.StreamTokenizer;import java.io.IOException;import java.io.FileNotFoundException;import org.aglets.log.*;/** * The <tt>PolicyFileReader</tt> class accesses Java policy database file * and returns PolicyDB object. *  * @version     1.00    $Date: 2002/02/20 22:17:18 $ * @author      ONO Kouichi */public class PolicyFileReader {	private static final String PROPERTY_JAVAHOME = "java.home";	private static final String PROPERTY_POLICYFILE = "java.policy";	private static final String FILENAME_JAVAPOLICY = "java.policy";	private final static String SEP = File.separator;	static final String CRLF = "\r\n";	static final int TT_EOF = StreamTokenizer.TT_EOF;	static final int TT_EOL = StreamTokenizer.TT_EOL;	static final int TT_WORD = StreamTokenizer.TT_WORD;	static final int TT_NUMBER = StreamTokenizer.TT_NUMBER;	static final char CHAR_A_LOWERCASE = 'a';	static final char CHAR_Z_LOWERCASE = 'z';	static final char CHAR_A_UPPERCASE = 'A';	static final char CHAR_Z_UPPERCASE = 'Z';	static final char CHAR_START = (char)0;	static final char CHAR_SPACE = ' ';	static final char CHAR_8BITS_START = (char)(128 + 32);	static final char CHAR_8BITS_END = (char)255;	static final char CHAR_BACKSLASH = '\\';	static final char CHAR_SINGLE_QUOTE = '\'';	static final char CHAR_DOUBLE_QUOTE = '"';	static final char CHAR_CROSSHATCH = '#';	static final int TT_CROSSHATCH = CHAR_CROSSHATCH;	static final char CHAR_COMMENT = CHAR_CROSSHATCH;	static final int TT_COMMENT = CHAR_COMMENT;	static final char CHAR_COMMA = ',';	static final int TT_COMMA = CHAR_COMMA;	static final char CHAR_STRING_QUOTE = CHAR_DOUBLE_QUOTE;	static final int TT_QUOTED_STRING = CHAR_STRING_QUOTE;	static final char CHAR_SEMICOLON = ';';	static final int TT_SEMICOLON = CHAR_SEMICOLON;	static final char CHAR_TERMINATOR = CHAR_SEMICOLON;	static final int TT_TERMINATOR = CHAR_TERMINATOR;	static final char CHAR_OPEN_BRACKET = '{';	static final int TT_OPEN_BRACKET = CHAR_OPEN_BRACKET;	static final char CHAR_BEGIN_BLOCK = CHAR_OPEN_BRACKET;	static final int TT_BEGIN_BLOCK = CHAR_BEGIN_BLOCK;	static final char CHAR_CLOSE_BRACKET = '}';	static final int TT_CLOSE_BRACKET = CHAR_CLOSE_BRACKET;	static final char CHAR_END_BLOCK = CHAR_CLOSE_BRACKET;	static final int TT_END_BLOCK = CHAR_END_BLOCK;	static final char CHAR_UNDERSCORE = '_';	static final int TT_UNDERSCORE = CHAR_UNDERSCORE;	static final String WORD_GRANT = "grant";	static final String WORD_SIGNEDBY = "signedBy";	static final String WORD_CODEBASE = "codeBase";	static final String WORD_OWNEDBY = "ownedBy";	static final String WORD_PERMISSION = "permission";	static final String WORD_PROTECTION = "protection";	// #   static final String WORD_ALLOWANCE    = "allowance";	private String _filename = null;	private StreamTokenizer _st = null;	private PolicyDB _db = null;        private static final LogCategory log             = LogInitializer.getCategory(PolicyFileReader.class.getName() );    	public PolicyFileReader(String policyFilename) {		try {			readPolicyFile(policyFilename);		} catch (FileNotFoundException excpt) {			// do nothing		} 	}	public synchronized static PolicyDB getAllPolicyDB() {		return getAllPolicyDB(getUserPolicyFilename());	}	public synchronized static PolicyDB getAllPolicyDB(String userPolicyFilename) {		return getAllPolicyDB(getSystemPolicyFilename(), userPolicyFilename);	}	protected synchronized static PolicyDB getAllPolicyDB(String systemPolicyFilename, 			String userPolicyFilename) {		PolicyFileReader reader = new PolicyFileReader(systemPolicyFilename);		try {			reader.readPolicyFile(userPolicyFilename);		} catch (FileNotFoundException excpt) {			// do nothing		} 		return reader.getPolicyDB();	}	PolicyFileParsingException getParsingException(String msg) {		return new PolicyFileParsingException(_filename + "(" + lineno() 											  + ") " + msg);	}	public PolicyDB getPolicyDB() {		return _db;	}	protected synchronized PolicyPermission getPolicyPermission() 			throws PolicyFileParsingException {		if (!isPolicyPermission()) {			// #       throw getParsingException("The reserved word '"+WORD_PERMISSION+"' or '"+WORD_PROTECTION+"' or '"+WORD_ALLOWANCE+"' is expected, not '"+token()+"'.");			throw getParsingException("The reserved word '" + WORD_PERMISSION 									  + "' or '" + WORD_PROTECTION 									  + "' is expected, not '" + token() 									  + "'.");		} 		String type = string();		nextToken();		PolicyPermission permission;		if (isWord()) {			try {				permission = new PolicyPermission(this, type, string());			} catch (ClassNotFoundException excpt) {				throw getParsingException(excpt.toString());			} 		} else {			throw getParsingException("Not permission class name '" + token() 									  + "'.");		} 		nextToken();		if (isQuotedString()) {			// target name			permission.setTargetName(string());			nextToken();		} 		boolean optional = false;		if (isComma()) {			optional = true;			nextToken();			// action or signed by			if (isQuotedString()) {				// actions				permission.setActions(string());				optional = false;				nextToken();				if (isComma()) {					nextToken();					if (isSignedBy()) {						// signed by						optional = true;					} else {						throw getParsingException("The reserved word '" 												  + token() + "'.");					} 				} 			} else if (isSignedBy()) {				// signed by				optional = true;			} else {				throw getParsingException("Unknown token '" + token() + "'.");			} 		} 		if (isSignedBy()) {			if (optional == false) {				throw getParsingException("A character '" + CHAR_COMMA 										  + "' is needed before '" 										  + WORD_SIGNEDBY + "' in " 										  + WORD_PERMISSION + " clause.");			} 			// signed by			nextToken();			if (isQuotedString()) {				// signer names				try {					permission.setSignerNames(string());				} catch (SecurityException excpt) {					throw getParsingException(excpt.toString());				} 				nextToken();			} else {				throw getParsingException("Signer name(s) should be a quoted string. '" 										  + token() + "'.");			} 		} 		if (isTerminator()) {			// create a permission			permission.create();			// terminate the parsing			nextToken();		} else {			throw getParsingException("Unknown token '" + token() + "'.");		} 		return permission;	}	public static String getSystemPolicyFilename() {		final String javahome = 			PolicyImpl.getSystemProperty(PROPERTY_JAVAHOME);		if (javahome == null) {			return null;		} 		return javahome + SEP + "lib" + SEP + "security" + SEP 			   + FILENAME_JAVAPOLICY;	}	public static String getUserPolicyFilename() {		// if the property "java.policy" is specified, use it as policy filename.		String filename = PolicyImpl.getSystemProperty(PROPERTY_POLICYFILE);		if (filename != null) {			// System.out.println("the property \"java.policy\" specified : "+filename);			return filename;		} 		// use {user.home}/.java.policy as policy filename.		final String userhome = FileUtils.getUserHome();		if (userhome == null) {			return null;		} 		filename = userhome + SEP + "." + FILENAME_JAVAPOLICY;		// System.out.println("{user.home}/.java.policy used : "+filename);		return filename;	}	protected void initialize() {		if (_st == null) {			return;		} 		_st.resetSyntax();		_st.wordChars(CHAR_A_LOWERCASE, CHAR_Z_LOWERCASE);		_st.wordChars(CHAR_A_UPPERCASE, CHAR_Z_UPPERCASE);		_st.wordChars(CHAR_8BITS_START, CHAR_8BITS_END);		_st.whitespaceChars(CHAR_START, CHAR_SPACE);		_st.quoteChar(CHAR_STRING_QUOTE);		_st.parseNumbers();		_st.wordChars(TT_UNDERSCORE, TT_UNDERSCORE);		_st.slashStarComments(true);		_st.slashSlashComments(true);		_st.lowerCaseMode(false);	}	private boolean isBeginBlock() {		return isBeginBlock(tokenType());	}	private static boolean isBeginBlock(int ttype) {		return ttype == TT_BEGIN_BLOCK;	}	private boolean isCodeBase() {		return isWord() && string().equals(WORD_CODEBASE);	}	private boolean isComma() {		return isComma(tokenType());	}	private static boolean isComma(int ttype) {		return ttype == TT_COMMA;	}	private boolean isEndBlock() {		return isEndBlock(tokenType());	}	private static boolean isEndBlock(int ttype) {		return ttype == TT_END_BLOCK;	}	// #   private boolean isAllowance() {	// #     return isWord() && isAllowance(string());	// #   }	// #	// #   private boolean isAllowance(String word) {	// #     return WORD_ALLOWANCE.equals(word);	// #   }	private boolean isEndOfFile() {		return isEndOfFile(tokenType());	}	private static boolean isEndOfFile(int ttype) {		return ttype == TT_EOF;	}	private boolean isEndOfLine() {		return isEndOfLine(tokenType());	}	private static boolean isEndOfLine(int ttype) {		return ttype == TT_EOL;	}	private boolean isGrant() {		return isWord() && string().equals(WORD_GRANT);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -