📄 initservlet.java
字号:
/* * InitServlet.java * * Created on June 30, 2003, 4:19 PM */package gov.nist.struts.webapp.servlet;import java.util.*;import java.io.File;import javax.servlet.*;import javax.servlet.http.*;import gov.nist.security.authentication.*;import gov.nist.security.bcs.Service;import gov.nist.security.permissions.parser.*;import gov.nist.struts.webapp.upload.ServiceTag;import gov.nist.struts.webapp.upload.UserServicesTag;import gov.nist.struts.webapp.upload.XMLServicesParser;import org.apache.log4j.PropertyConfigurator;/** Initializes the web appplication * @author DERUELLE Jean */public class InitServlet extends HttpServlet { /** * Initializes the servlet. * @param config - The ServletConfig of the webapp * @throws ServletException - a servletException can be thrown is something mess up */ public void init(ServletConfig config) throws ServletException { super.init(config); initLog4J(); ServletContext applicationContext=this.getServletContext(); System.out.println("/***********Jain-Sip-Appserver Initialisation***************/"); //Parsing of the authentication file String authenticationFile=config.getInitParameter("authentication-file"); XMLAuthenticationParser authenticationParser=new XMLAuthenticationParser(applicationContext.getRealPath(authenticationFile)); Vector users=authenticationParser.getUsersTagList(); //Parsing of the bcel permissions file String permissionsFile=config.getInitParameter("permissions-config-file"); XMLPermissionsParser permissionsParser=new XMLPermissionsParser(applicationContext.getRealPath(permissionsFile)); Hashtable permissions=permissionsParser.getPermissionsTagList(); //Create the upload directory and put his location in the application context String uploadDirectory=config.getInitParameter("upload-dir"); File upload=new File(uploadDirectory); if(!upload.exists()) upload.mkdir(); applicationContext.setAttribute("uploadDirectory",uploadDirectory); //Create the mapping file and put his location in the application context String mappingFile=config.getInitParameter("upload-dir").concat(config.getInitParameter("upload-mapping-file")); File mapping=new File(mappingFile); try{ if(!mapping.exists()) mapping.createNewFile(); } catch(Exception e){ e.printStackTrace(); } applicationContext.setAttribute("mappingFile",mappingFile); //we put the user's monitor in the session context applicationContext.setAttribute("monitors",new Hashtable()); LoadServices(); //Put some attributes in the application context applicationContext.setAttribute("users",users); applicationContext.setAttribute("groups",authenticationParser.getGroupsList()); applicationContext.setAttribute("permissions",permissions); createDirectoryTree(users,config.getInitParameter("upload-dir")); System.out.println("/***********Jain-Sip-Appserver Initialized***************/"); } /** Creates the home directory tree of all the groups and users * @param users - all the users having an account on the server * @param uploadDirectory - the path to the directory where to create the directory tree */ public void createDirectoryTree(Vector users,String uploadDirectory){ for(int i =0;i<users.size();i++){ UserTag user=(UserTag)users.get(i); java.io.File groupDirectory = new java.io.File( uploadDirectory.concat(user.getUserGroup())); if( !groupDirectory.exists() ) groupDirectory.mkdir(); java.io.File policyFile= new java.io.File( uploadDirectory.concat( user.getUserGroup())+ File.separatorChar+ user.getUserGroup()+ ".policy"); try{ if( !policyFile.exists() ){ policyFile.createNewFile(); populatePolicyFile( policyFile.getName(), user.getUserGroup(), uploadDirectory); } } catch(java.io.IOException ioe){ ioe.printStackTrace(); } java.io.File userDirectory = new java.io.File( uploadDirectory.concat( user.getUserGroup())+File.separatorChar+user.getUserName()); if( !userDirectory.exists() ) userDirectory.mkdir(); java.io.File dumpDirectory = new java.io.File( uploadDirectory.concat( user.getUserGroup())+ File.separatorChar+ user.getUserName()+ File.separatorChar+ "dump"+ File.separatorChar); if( !dumpDirectory.exists() ) dumpDirectory.mkdir(); java.io.File tmpDirectory = new java.io.File( uploadDirectory.concat( user.getUserGroup())+ File.separatorChar+ user.getUserName()+ File.separatorChar+ "tmp"+ File.separatorChar); if( !tmpDirectory.exists() ) tmpDirectory.mkdir(); } } /** * Method to initialize Log4J */ public void initLog4J(){ String file = getInitParameter("log4j-init-file"); // if the log4j-init-file is not set, then no point in trying if(file != null) { PropertyConfigurator.configure(getServletContext().getRealPath(file)); System.out.println("log4j initialized"); } else{ System.out.println("No log4j config file found or set"); } } /** * Fill the policy file with some permissions depending on the belonging group of the user * @param policyFilePath - the file path of the policy file we want to fill in * @param userGroup - the belonging group of the user * @param uploadDirectory - path where the services will be uploaded */ public void populatePolicyFile(String policyFilePath,String userGroup,String uploadDirectory){ String policies[]= new String[3]; policies[0]="admin"; policies[1]="guest"; policies[2]="nist-sip-dev"; boolean isPredefinedPolicy=false; policyFilePath=uploadDirectory.concat(userGroup)+File.separatorChar+policyFilePath; try{ java.io.File finalPolicyFile=new java.io.File(policyFilePath); java.io.FileWriter writer=new java.io.FileWriter(finalPolicyFile); java.io.PrintWriter out=new java.io.PrintWriter(writer); //Read the policy file java.io.File adminPolicyFile=new java.io.File(this.getServletContext().getRealPath("WEB-INF//"+policies[1]+".policy")); if(userGroup.equals(policies[0])){ adminPolicyFile=new java.io.File(this.getServletContext().getRealPath("WEB-INF//"+policies[0]+".policy")); isPredefinedPolicy=true; } if(userGroup.equals(policies[2])){ adminPolicyFile=new java.io.File(this.getServletContext().getRealPath("WEB-INF//"+policies[2]+".policy")); isPredefinedPolicy=true; } java.io.FileReader reader=new java.io.FileReader(adminPolicyFile); java.io.BufferedReader in=new java.io.BufferedReader(reader); String line=in.readLine(); while(line!=null){ out.println(line); out.flush(); line=in.readLine(); } out.close(); in.close(); } catch(java.io.IOException ioe){ ioe.printStackTrace(); } } /** load all the services */ private void LoadServices(){ //Get the application context ServletContext applicationContext=this.getServletContext(); //Get the user name from the session context //String userName=user.getUserName(); //Get the password from the session context //String password=user.getUserPassword(); //Get the mapping file name in the application context String mappingFile=(String)applicationContext.getAttribute("mappingFile"); Hashtable monitors=(Hashtable)applicationContext.getAttribute("monitors"); XMLServicesParser servicesParser=new XMLServicesParser(mappingFile); Vector usersServices=servicesParser.getUsersServicesTagList(); if(usersServices!=null){ for(int i=0;i<usersServices.size();i++){ UserServicesTag userServicesTag=(UserServicesTag)usersServices.elementAt(i); Vector fileServices=userServicesTag.getServices(); // for(int j=0;j<fileServices.size();j++){ ServiceTag serviceTag=(ServiceTag)fileServices.elementAt(j); String serviceName=serviceTag.getMainClass()+":"+userServicesTag.getUri(); Service service=new Service( serviceTag.getMainClass(), serviceTag.getFileName(), serviceTag.getToRewrite(), serviceTag.getServiceType()); //create a new service from the service Tag //we add it to the set of user's services try{ monitors.put(serviceName,service); } catch(NullPointerException nle){} } } } //we put the user's services in the session context applicationContext.setAttribute("monitors",monitors); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -