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

📄 safetymanageaction.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.struts.action;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

import cn.jsprun.service.system.DataBaseService;
import cn.jsprun.utils.BeanFactory;
import cn.jsprun.utils.Common;
import cn.jsprun.utils.FormDataCheck;
import cn.jsprun.utils.ForumInit;


public class SafetyManageAction extends DispatchAction {
	private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService");
	public ActionForward basic(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String settingsubmit=request.getParameter("settingsubmit");
		if(settingsubmit==null){
			return mapping.findForward("safety_basic");
		}else{
			String variables[]={"adminemail","dbreport","errorreport","admincp_forcesecques","admincp_checkip","admincp_tpledit","admincp_runquery","admincp_dbimport","cookiepre","cookiedomain","cookiepath"};					
			Map<String,String> oldSettings=ForumInit.settings;
			Map<String,String> settings=new HashMap<String,String>();
			for (String variable: variables) {
				String value=request.getParameter(variable);	    	
				if(value!=null&&!value.equals(oldSettings.get(variable))){
					settings.put(variable,value);
				}
			}
			this.updateSettings(settings,oldSettings);
			request.setAttribute("successInfo", "安全设置更新成功");
			request.setAttribute("requestPath",request.getHeader("Referer"));
			return mapping.findForward("success");
		}
	}
	public ActionForward cc(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String settingsubmit=request.getParameter("settingsubmit");
		if(settingsubmit==null){
			Map<String,String> settings=ForumInit.settings;
			int attackevasive=Common.toDigit(settings.get("attackevasive"));
			Common.setChecked(request, "attackevasive", 4, attackevasive);
			return mapping.findForward("safety_cc");
		}else{
			String variable="attackevasive";					
			Map<String,String> oldSettings=ForumInit.settings;
			Map<String,String> settings=new HashMap<String,String>();
			int sum=0;
			for(int j=0;j<4;j++){
				String rewritestatus=request.getParameter(variable+j);
				if(rewritestatus!=null){
					sum=sum+Integer.valueOf(rewritestatus);
				}
			}
			String value=String.valueOf(sum);
			if(value!=null&&!value.equals(oldSettings.get(variable))){
				settings.put(variable,value);
			}
			this.updateSettings(settings,oldSettings);
			request.setAttribute("successInfo", "CC 防御更新成功");
			request.setAttribute("requestPath",request.getHeader("Referer"));
			return mapping.findForward("success");
		}
	}
	public ActionForward ddos(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String settingsubmit=request.getParameter("settingsubmit");
		if(settingsubmit==null){
			Map<String,String> settings=ForumInit.settings;
			int ddos=Common.toDigit(settings.get("ddos"));
			Common.setChecked(request, "ddos", 4, ddos);
			return mapping.findForward("safety_ddos");
		}else{
			String variable="ddos";					
			Map<String,String> oldSettings=ForumInit.settings;
			Map<String,String> settings=new HashMap<String,String>();
			int sum=0;
			for(int j=0;j<4;j++){
				String ddos=request.getParameter(variable+j);
				if(ddos!=null){
					sum=sum+Integer.valueOf(ddos);
				}
			}
			String value=String.valueOf(sum);
			if(value!=null&&!value.equals(oldSettings.get(variable))){
				settings.put(variable,value);
			}
			this.updateSettings(settings,oldSettings);
			request.setAttribute("successInfo", "DDOS 防御更新成功");
			request.setAttribute("requestPath",request.getHeader("Referer"));
			return mapping.findForward("success");
		}
	}
	@SuppressWarnings("unchecked")
	public ActionForward port(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
		String settingsubmit=request.getParameter("settingsubmit");
		if(settingsubmit==null){
			return mapping.findForward("safety_port");
		}else{
			String port = request.getParameter("port");    
			if(Common.isEmpty(port)){
				request.setAttribute("errorInfo", "请您选择服务器的配置类型。");
				return mapping.findForward("error");
			}
			String filepath = null;
			String targetport = null;
			if(port.equals("apache")){
				filepath = request.getParameter("apache_filepath");
				targetport = request.getParameter("apache_port");
			}else if(port.equals("iis")){
				filepath = request.getParameter("iis_filepath");
				targetport = request.getParameter("iis_port");
			}else{
				filepath = request.getParameter("tomcat_filepath");
				targetport = request.getParameter("tomcat_port");
			}
			if(!FormDataCheck.isNum(targetport)){
				request.setAttribute("errorInfo", "端口号为非数字,请返回修改。");
				return mapping.findForward("error");
			}
			File file = new File(filepath);
			if(!file.exists()){
				request.setAttribute("errorInfo", "文件路径设置错误,无法找到文件。");
				return mapping.findForward("error");
			}
			if(port.equals("apache")){
				FileInputStream fin = null;
				InputStreamReader ir = null;
				BufferedReader br = null;
				FileOutputStream out = null;
				OutputStreamWriter wout = null;
				BufferedWriter bw  = null;
				String temppath = servlet.getServletContext().getRealPath("/")+"temp.txt";
				try {
					fin = new FileInputStream(filepath);
					ir = new InputStreamReader(fin);
					br = new BufferedReader(ir);
					out = new FileOutputStream(temppath,true);
					wout = new OutputStreamWriter(out);
					bw = new BufferedWriter(wout);
					String newline = br.readLine();
					while(newline!=null){
						newline = newline.replaceAll("\\s*Listen\\s+\\d+", "Listen "+targetport);
						newline = newline.replaceAll("(\\s*)NameVirtualHost(\\s+)(.*):(\\d+)", "NameVirtualHost $3:"+targetport);
						newline = newline.replaceAll("<VirtualHost(\\s+)(.*):(\\d+)>", "<VirtualHost $2:"+targetport+">");
						bw.write(newline);
						bw.newLine();
						newline = br.readLine();
					}
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}finally{
					try{
						if(bw!=null){
							bw.close();
						}
						if(wout!=null){
							wout.close();
						}
						if(out!=null){
							out.close();
						}
						if(br!=null){
							br.close();
						}
						if(ir!=null){
							ir.close();
						}
						if(fin!=null){
							fin.close();
						}
					}catch(Exception e){}
				}
				try{
					fin = new FileInputStream(temppath);
					out = new FileOutputStream(filepath);
					byte[] bytes=new byte[1024];
		    		int c;
		    		while ((c=fin.read(bytes))!=-1){
		    			out.write(bytes,0,c);
		    		}
		    		File tempfile = new File(temppath);
		    		if(tempfile.exists()){
		    			tempfile.delete();
		    		}
				}catch(Exception e){
				}finally{
					try{
						if(out!=null){
							out.close();
						}
						if(fin!=null){
							fin.close();
						}
					}catch(Exception e){}
				}
			}else if(port.equals("iis")){
				request.setAttribute("errorInfo", "本系统暂不支持iis设置。");
				return mapping.findForward("error");
			}else{
				 try {
				 SAXReader saxReader = new SAXReader();
				 Document document = saxReader.read(file);
				 List list = document.selectNodes("//Connector//@protocol" );
				 Iterator iter=list.iterator();
				 String proport = "";
			     while(iter.hasNext()){
			        Attribute attribute=(Attribute)iter.next();
			         Element el =  attribute.getParent();
			         List childlist = el.selectNodes("//Connector//@port");
			         Iterator it = childlist.iterator();
			         while(it.hasNext()){
			        	 Attribute attributesub=(Attribute)it.next();
			        	 proport = attributesub.getValue();
			         }
			      }
			     list = document.selectNodes("//Connector//@port" );
			     iter=list.iterator();
			     while(iter.hasNext()){
			    	 Attribute attribute=(Attribute)iter.next();
			    	   if(!attribute.getValue().equals(proport))
			    	      attribute.setValue(targetport); 
			     }
			     XMLWriter output = new XMLWriter( new FileWriter( new File(filepath)));
			     output.write( document );
			     output.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
	
			}
			request.setAttribute("successInfo", "端口号更新成功,请重启"+port+"服务");
			request.setAttribute("requestPath",request.getHeader("Referer"));
			return mapping.findForward("success");
		}
	}
	private void updateSettings(Map<String,String> settings,Map<String,String> oldSettings){
		if(settings!=null&&settings.size()>0){
			Set<String> variables=settings.keySet();
			StringBuffer sql=new StringBuffer();
			sql.append("REPLACE INTO jrun_settings (variable, value) VALUES ");
			for(String variable:variables){
				sql.append("('"+variable+"', '"+settings.get(variable).replace("'", "''")+"'),");
			}
			sql.deleteCharAt(sql.length()-1);
			dataBaseService.runQuery(sql.toString(),true);
			oldSettings.putAll(settings);
			ForumInit.setSettings(this.getServlet().getServletContext(), oldSettings);
		}
	}
}

⌨️ 快捷键说明

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