设置tomcat虚拟路径,删除指定文件

一、背景

服务器经常被人黑。webapps下时常莫名其妙的多了一个未知的恶意war文件。对此的反应:

1、修改tomcat虚拟路径。

2、定时检测webapps和work文件夹下的文件,删除不知名的文件。

二、tomcat的server.xml

在C盘下新建webApp和、webWork两个文件夹,将server.xml中的host节点修改为:

      <Host name="localhost"
            appBase="C:/webApp/"
            workDir="C:/webWork/"
            unpackWARs="true" autoDeploy="true">

三、新建一个listener。

1、ProtectTaskListener.java

package com.px.listener;

import com.px.util.Config;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

/**
 * 文件检测监听器
 *
 * @author liyulin [email protected]
 * @version 1.0 2015-04-13
 */
public class ProtectTaskListener implements ServletContextListener {
    private Timer timer;

    public void contextInitialized(ServletContextEvent event) {
        timer = new Timer();
        timer.schedule(
                new TimerTask() {
                    public void run() {
                        ProtectUtil.deleteOtherFile();
                    }
                }, Config.CHECK_TIME);
    }

    public void contextDestroyed(ServletContextEvent event) {
        timer.cancel();
    }

}

2、ProtectUtil.java

package com.px.listener;

import java.io.File;

/**
 * 删除webApp和webWork下的(除了hospital1、installer、jswork、reports)其它文件
 *
 * @author liyulin [email protected]
 * @version 1.0 2015-04-13
 */
public class ProtectUtil {

    public static final String WEBAPPS_PATH = "C:/webApp";
    public static final String WORK_PATH = "C:/webWork";
    public static final String[] WORK_FILE_PATH = new String[]{
        "hospital1",
        "installer",
        "jswork",
        "reports"
    };

    public static void deleteOtherFile() {
        deleteWebAppsOtherFile();
        deleteWorkOtherFile();
    }

    /**
     * 删除webapps下除了hospital1的其它所有文件
     */
    public static void deleteWebAppsOtherFile() {
        File file = new File(WEBAPPS_PATH);
        if (file.exists()) {
            File[] fileLists = file.listFiles();
            for (File f : fileLists) {
                if (!f.getName().equals("hospital1")) {
                    delFileOrDerectory(f);
                }
            }
        }
    }

    /**
     * 删除work下除了"hospital1"、"installer"、"jswork"、"reports"的所有文件
     */
    public static void deleteWorkOtherFile() {
        File file = new File(WORK_PATH);
        if (file.exists()) {
            File[] fileLists = file.listFiles();
            for (File f : fileLists) {
                boolean isDelete = true;// 删除文件标志。true:删除
                for (String workFile : WORK_FILE_PATH) {
                    if (f.getName().equals(workFile)) {
                        isDelete = false;
                        break;
                    }
                }
                if (isDelete) {
                    delFileOrDerectory(f);
                }
            }
        }
    }

    /**
     * 删除文件夹、文件
     *
     * @param file 待删除文件、文件夹
     */
    private static void delFileOrDerectory(File file) {
        if (file.exists()) {
            if (file.isDirectory()) {
                File[] files = file.listFiles();
                for (File subFile : files) {
                    delFileOrDerectory(subFile);
                }
                file.delete();
            } else {
                file.delete();
            }
        }
    }
}

四、修改web.xml

在web-app节点下添加:

    <listener>
        <listener-class>
            com.px.listener.ProtectTaskListener
        </listener-class>
    </listener>
时间: 2024-10-14 02:47:42

设置tomcat虚拟路径,删除指定文件的相关文章

如何在idea中设置Tomcat虚拟路径

设置项目的根路径: 设置指定文件的在Tomcat中的虚拟路径: 代码: String fileName = MyFileUtil.getFileName(uploadFileName); File file = new File("/Users/Shared/jpg" , fileName);//文件目录真实路径 FileUtils.copyFile(upload, file); customer.setCust_image("jpg/"+fileName);//&

配置tomcat虚拟路径

这个问题其实很简单,首先找到你安装的tomcat的路径然后,在Tomcat6.0/conf/Catalina路径下创建localhost文件夹,如果有,就不用创建,然后在该文件夹下创建一个xml文件,例如我想创建的虚拟路径是ysw文件夹,则创建ysw.xml文件,ysw.xml里面的内容如下: <?xml version="1.0" encoding="UTF-8"?><Context docBase="E:\Program Files\

php 删除指定文件 glob,unlink

我用最简单的语句写了一个php删除指定文件 因为一直越级挑战thinkphp,所以突然面对php有点无所适从了... 首先,php的运行机制,是一个语法就搞定了,还是非要用数据库,还是post什么的... 最后我选择了post,因为我没有录数据库啊... 总之,问题很多,htm插php好还是php插htm好,怎么插?js能实现吗?js能实现岂不是不太安全?循环啊,递归啊什么的... 三天业余的时间,入门谈不上,反正是把功能实现了... 我用php循环显示出图片和地址 我用表单post出地址,现在

bat 延时删除指定文件夹中的文件经验分享

1.bat延时 xp程序中通过ping 127.0.0.1 -n 20 来实现延时操作,ping本地地址20行. win7中通过timeout 20 来实现延时20秒. 2.删除指定文件 del /q d:\11\*.* 删除d:\11文件夹下的所有文件,并且不需要提示删除. /P 删除每一个文件之前提示确认. /F 强制删除只读文件. /S 从所有子目录删除指定文件. /Q 安静模式.删除全局通配符时不要求确认. /A 根据属性选择要删除的文件. attributes R 只读文件 S 系统

PHP批量清空删除指定文件夹内容

PHP批量清空删除指定文件夹内容: cleancache.php <?php // 清文件缓存 $dirs = array( realpath(dirname(__FILE__) . '/../data/cache_data'), realpath(dirname(__FILE__) . '/../data/cache_file'), realpath(dirname(__FILE__) . '/../data/cache_view') ); // 清理缓存 foreach($dirs as $

php 删除指定文件夹

php 删除指定文件夹 1.前言 目标:php删除一个指定目录 所使用的的php函数:is_dir,opendir,readdir,scandir,rmdir,closedir,等等(注:其他文件操作函数也可以完成,这里只列举了本次使用的函数) 2.相关函数介绍 php文件操作的方法大致相同,已经在上一篇介绍过了,这里就不在重复介绍,这里就介绍一个新函数 rmdir 详情参考:http://www.w3school.com.cn/php/func_filesystem_rmdir.asp 其他函

【Linux】linux中删除指定文件外所有其他文件(夹)的问题

今天碰到要删除指定文件(夹)外的其他文件的问题.网上查到的方法是这样的 需要在当前文件夹中进行: rm -rf !(keep) #删除keep文件之外的所有文件 rm -rf !(keep1|keep2) #删除keep1和keep2文件之外的所有文件 在Ubuntu14.04下有个大坑,keep1和keep2与“|"之间千万不能留空格,就是!(keep1 | keep2).这样的话会删除当前文件夹内的所有文件. 应该这样写(keep1|keep2). 具体原因未知,等慢慢寻找.以后再来补充.

del命令实现全盘删除指定文件

@echo off Rem :全盘删除指定文件 set "fileName=Normal.dotm" set "outPutPath=C:\result.txt" echo. > %outPutPath% echo 正在删除 for %%i in (C D E F G H I J K L M N O P Q R $ T U V W X Y Z) do ( rem del /s /q %fileName% > %outPutPath% ) echo 删除完

centos 删除指定文件之外的其他文件

linux下删除指定文件之外的其他文件 一.Linux下删除文件和文件夹常用命令如下: 删除文件: rm file  www.2cto.com 删除文件夹: rm -rf dir 需要注意的是, rmdir 只能够删除 空文件夹. 二.删除制定文件(夹)之外的所有文件呢? 1.方法1,比较麻烦的做法是: 复制需要保留的文件到其他文件夹,然后将该目录删除, 然后将需要保留的移动 回来. mv keep ../ #保留文件(夹) keep rm -rf * #删除当前文件夹里的所有文件 mv ../