📄 safetymanageaction.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 + -