package com.baidu.rasp;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * @description: 文件写入
 * @author: anyang
 * @create: 2019/05/15 14:26
 */
public class WriteFile extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String bytes = req.getParameter("filedata");
        String fname = req.getParameter("filename");
        if (fname == null || bytes == null) {
            resp.getWriter().println("<p>注意: 由于可能产生误报,所以目前官方插件不会拦截这种使用 FileOutputStream 写文件的后门,我们会尽快解决</p>");
        } else {
            try {
                String path;
                ServletContext application = this.getServletContext();
                String serverInfo = application.getServerInfo();
                if (serverInfo != null && serverInfo.toLowerCase().contains("weblogic")) {
                    path = application.getResource("/").getPath() + "/" + fname;
                } else {
                    path = application.getRealPath("/") + "/" + fname;
                }
                FileOutputStream os = new FileOutputStream(path);
                PrintWriter writer = new PrintWriter(os);
                writer.print(bytes);
                writer.close();
                resp.getWriter().println("==>" + path);
            } catch (Exception e) {
                resp.getWriter().print(e);
            }
        }
    }
}