xieb
2023-06-25 f23edf09e32154c49b43ed257f8b19798e17c061
增加日志获取客户端ip地址
1 files modified
1 files added
56 ■■■■■ changed files
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/controller/SmLogManageController.java 6 ●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/util/IpUtils.java 50 ●●●●● patch | view | raw | blame | history
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/controller/SmLogManageController.java
@@ -2,6 +2,7 @@
import cn.gistack.sm.log.entity.SmLogManage;
import cn.gistack.sm.log.service.ISmLogManageService;
import cn.gistack.sm.log.util.IpUtils;
import cn.gistack.sm.log.vo.AppStatisticsVO;
import cn.gistack.sm.log.vo.SmLogManageVO;
import cn.gistack.sm.patrol.entity.PatrolConfig;
@@ -15,6 +16,8 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
/**
 * @ClassName 日志管理
@@ -34,7 +37,8 @@
    @ApiOperation(value="日志管理-添加", notes="日志管理-添加")
    @PostMapping(value = "/add")
    public R add(@RequestBody SmLogManage smLogManage) {
    public R add(@RequestBody SmLogManage smLogManage, HttpServletRequest request) {
        smLogManage.setIp(IpUtils.getIpAddr(request));
        return R.data(smLogManageService.save(smLogManage));
    }
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/log/util/IpUtils.java
New file
@@ -0,0 +1,50 @@
package cn.gistack.sm.log.util;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
 * @PROJECT_NAME: skjcmanager
 * @DESCRIPTION:
 * @USER: aix
 * @DATE: 2023/6/21 12:00
 */
public class IpUtils {
    public static String getIpAddr(HttpServletRequest request) {
        String ipAddress = null;
        try {
            ipAddress = request.getHeader("x-forwarded-for");
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getHeader("WL-Proxy-Client-IP");
            }
            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
                ipAddress = request.getRemoteAddr();
                if (ipAddress.equals("127.0.0.1")) {
                    // 根据网卡取本机配置的IP
                    InetAddress inet = null;
                    try {
                        inet = InetAddress.getLocalHost();
                    } catch (UnknownHostException e) {
                        e.printStackTrace();
                    }
                    ipAddress = inet.getHostAddress();
                }
            }
            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
            if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()
                if (ipAddress.indexOf(",") > 0) {
                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
                }
            }
        } catch (Exception e) {
            ipAddress = "";
        }
        return ipAddress;
    }
}