增加白名单配置

This commit is contained in:
liulu
2024-12-02 16:40:19 +08:00
parent ff10930668
commit f64f225b2e
16 changed files with 176 additions and 83 deletions
@@ -8,14 +8,14 @@ import com.sunyard.chsm.dto.DeviceDTO;
import com.sunyard.chsm.dto.TmkStatus;
import com.sunyard.chsm.enums.ManufacturerEnum;
import com.sunyard.chsm.enums.ManufacturerModelEnum;
import com.sunyard.chsm.mapper.ParamConfMapper;
import com.sunyard.chsm.mapper.SpDeviceMapper;
import com.sunyard.chsm.mapper.TmkInfoMapper;
import com.sunyard.chsm.model.entity.Device;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.chsm.model.entity.TmkInfo;
import com.sunyard.chsm.sdf.adapter.BcSdfApiAdaptor;
import com.sunyard.chsm.service.DeviceService;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.mapper.ParamConfMapper;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.util.encoders.Hex;
import org.springframework.beans.BeanUtils;
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sunyard.chsm.config.IpFilter;
import com.sunyard.chsm.dto.IpWhitelistDTO;
import com.sunyard.chsm.enums.EnableStatus;
import com.sunyard.chsm.mapper.IpWhitelisttMapper;
@@ -103,6 +104,7 @@ public class IpWhitelistServiceImpl implements IpWhitelistService {
whitelist.setRemark(save.getMemo());
ipWhitelisttMapper.insert(whitelist);
IpFilter.whiteIps.add(save.getIpAddress());
return whitelist.getId();
}
@@ -129,6 +131,13 @@ public class IpWhitelistServiceImpl implements IpWhitelistService {
whitelist.setStatus(update.getStatus() == 0 ? EnableStatus.ENABLED.getCode() : EnableStatus.DISABLED.getCode());
whitelist.setUpdateTime(LocalDateTime.now());
whitelist.setRemark(update.getMemo());
if (!Objects.equals(exist.getStatus(), whitelist.getStatus())) {
if (EnableStatus.ENABLED.getCode().equals(whitelist.getStatus())) {
IpFilter.whiteIps.add(update.getIpAddress());
} else {
IpFilter.whiteIps.remove(update.getIpAddress());
}
}
ipWhitelisttMapper.updateById(whitelist);
}
@@ -136,7 +145,11 @@ public class IpWhitelistServiceImpl implements IpWhitelistService {
@Override
public void delete(Long[] ids) {
for (Long id : ids) {
ipWhitelisttMapper.deleteById(id);
IpWhitelist whitelist = ipWhitelisttMapper.selectById(id);
if (whitelist != null) {
ipWhitelisttMapper.deleteById(id);
IpFilter.whiteIps.remove(whitelist.getIp());
}
}
}
}
@@ -1,124 +0,0 @@
package com.sunyard.ssp.common.constant;
/**
* @author:fyc
* @date:2020/3/17
* @description: 业务参数key值常量
*/
public interface ParamConfKeyConstant {
/**
* 白名单开关
*/
String IP_WHITELIST_SWITCH = "ipWhitelistSwitch";
/**
* 通讯超时时间
*/
String COMMUNICATE_TIME_OUT = "communicateTimeOut";
/**
* 心跳检测时间
*/
String HEART_DETECT_TIME = "heartDetectTime";
/**
* 心跳包
*/
String HEART_PACKAGE = "heartPackage";
/**
* ftp传输路径设置
*/
String FTP_UPLOAD_PATH = "ftpUploadPath";
/**
* B端界面超时时间
*/
String B_INTERFACE_TIMEOUT = "BInterfaceTimeOut";
/**
* 加密机操作审批
*/
String ENCRYPTION_MACHINE_APPROVAL = "encryptionMachineApproval";
/**
* 秘钥操作审批
*/
String SECRET_KEY_APPROVAL = "secretKeyApproval";
/**
* 登入模式
*/
String LOGIN_METHOD = "loginMethod";
/**
* 是否开启图形码登入
*/
String IS_USE_GRAPHIC_CODE = "isUseGraphicCode";
/**
* IP白名单配置类目数值
*/
Integer IP_WHITELIST_ITEM = 0;
/**
* 通讯参数类目数值
*/
Integer COMMUNICATE_PARAM_ITEM = 1;
/**
* 终端UI参数类目数值
*/
Integer TERMINAL_PARAM_ITEM = 2;
/**
* 权限审批类目数值
*/
Integer AUTHORITY_APPROVAL_PARAM_ITEM = 3;
/**
* 登入选项类目数值
*/
Integer LOGIN_PARAM_ITEM = 4;
/**
* 审批结果true
*/
String APPROVAL_TRUE = "true";
/**
* 审批结果false
*/
String APPROVAL_FALSE = "false";
/**
* 调试模式类目数值
*/
Integer SYS_PARAM_ITEM = 7;
/**
* 调试模式开关
*/
String SYS_DEBUG_SWITCH = "sysDebugSwitch";
/**
* 系统初始化配置文件路劲
*/
String SYS_PARAM_CONFIG_FILE_PATH = System.getProperty("user.dir") + "/config/sysParam.config.json";
/**
* 调试模式开关枚举
*/
enum SYS_DEBUG_SWITCH_VALUE{
DEV("dev"), CONFIG("config"), PRODUCT("product");
private String value;
private SYS_DEBUG_SWITCH_VALUE(String value){
this.value = value;
}
public String getValue(){
return value;
}
}
}
@@ -5,12 +5,12 @@ import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sunyard.chsm.model.R;
import com.sunyard.chsm.utils.IpUtils;
import com.sunyard.ssp.common.Result;
import com.sunyard.ssp.common.annotation.AuditControllerLog;
import com.sunyard.ssp.modules.monitor.log.entity.AuditLog;
import com.sunyard.ssp.modules.monitor.log.service.IAuditLogService;
import com.sunyard.ssp.modules.user.entity.ScUser;
import com.sunyard.ssp.utils.IpUtil;
import com.sunyard.ssp.utils.SecurityUtil;
import com.sunyard.ssp.utils.ThreadPoolUtil;
import lombok.extern.slf4j.Slf4j;
@@ -119,7 +119,7 @@ public class AuditLogAspect {
}
//Ip信息
auditLog.setIpAddress(IpUtil.getIpAddress(request));
auditLog.setIpAddress(IpUtils.getIpAddress(request));
auditLog.setIpInfo("未知");
//请求相关
@@ -2,6 +2,7 @@ package com.sunyard.ssp.modules.sysconf.cipherunit.controller;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.PointerByReference;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.ssp.common.Result;
import com.sunyard.ssp.common.annotation.AuditControllerLog;
import com.sunyard.ssp.common.exception.SspwebException;
@@ -11,7 +12,6 @@ import com.sunyard.ssp.modules.sysconf.cipherunit.entity.ScCipherMachineVo;
import com.sunyard.ssp.modules.sysconf.cipherunit.enums.RetEnum;
import com.sunyard.ssp.modules.sysconf.cipherunit.service.ScCipherMachineService;
import com.sunyard.ssp.modules.sysconf.cipherunit.utils.IniFileUpdater;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
import com.sunyard.ssp.utils.ResultUtil;
import io.swagger.annotations.Api;
@@ -1,7 +1,7 @@
package com.sunyard.ssp.modules.sysconf.cipherunit.controller;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.ssp.common.Result;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
import com.sunyard.ssp.utils.ResultUtil;
import io.swagger.annotations.Api;
@@ -1,9 +1,9 @@
package com.sunyard.ssp.modules.sysconf.paramconf.controller;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.ssp.common.Result;
import com.sunyard.ssp.common.annotation.AuditControllerLog;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
import com.sunyard.ssp.utils.ResultUtil;
import io.swagger.annotations.Api;
@@ -1,66 +0,0 @@
package com.sunyard.ssp.modules.sysconf.paramconf.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
*
* </p>
*
* @author fyc
* @since 2020-03-17
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("SC_PARAM_CONF")
@ApiModel(value="", description="")
public class ParamConf implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键")
@TableId("ID")
private Long id;
@ApiModelProperty(value = "数据大类")
@TableField("ITEM")
private Integer item;
@ApiModelProperty(value = "数据名称")
// @TableField("`KEY`") mysql需加
@TableField("KEY")
private String key;
@ApiModelProperty(value = "数据值")
@TableField("VALUE")
private String value;
@ApiModelProperty(value = "数据值类型")
@TableField("TYPE")
private String type;
@ApiModelProperty(value = "状态")
@TableField("STATUS")
private Integer status;
@ApiModelProperty(value = "创建时间")
@TableField("CREATE_TIME")
private LocalDateTime creatTime;
@ApiModelProperty(value = "备注")
@TableField("MEMO")
private String memo;
}
@@ -1,32 +0,0 @@
package com.sunyard.ssp.modules.sysconf.paramconf.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author fyc
* @since 2020-03-17
*/
@Repository
public interface ParamConfMapper extends BaseMapper<ParamConf> {
@Select("<script>"+
" select * from SC_PARAM_CONF where KEY = #{key}"+
"</script>")
ParamConf selectByKey(@Param("key")String key);
@Select("<script>"+
" select * from SC_PARAM_CONF where item = #{item}"+
"</script>")
List<ParamConf> selectByItem(@Param("item") Integer item);
}
@@ -1,7 +1,7 @@
package com.sunyard.ssp.modules.sysconf.paramconf.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.chsm.model.entity.ParamConf;
import java.util.Map;
@@ -2,8 +2,8 @@ package com.sunyard.ssp.modules.sysconf.paramconf.serviceimpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.mapper.ParamConfMapper;
import com.sunyard.chsm.mapper.ParamConfMapper;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.service.IParamConfService;
import com.sunyard.ssp.modules.user.entity.ScPermission;
import com.sunyard.ssp.modules.user.service.IScPermissionService;
@@ -21,13 +21,13 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.APPROVAL_TRUE;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.AUTHORITY_APPROVAL_PARAM_ITEM;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.ENCRYPTION_MACHINE_APPROVAL;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.IP_WHITELIST_ITEM;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.IP_WHITELIST_SWITCH;
import static com.sunyard.ssp.common.constant.CommonConstant.STATUS_DISABLE;
import static com.sunyard.ssp.common.constant.CommonConstant.STATUS_NORMAL;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.APPROVAL_TRUE;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.AUTHORITY_APPROVAL_PARAM_ITEM;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.ENCRYPTION_MACHINE_APPROVAL;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.IP_WHITELIST_ITEM;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.IP_WHITELIST_SWITCH;
/**
* <p>
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.sunyard.chsm.utils.IpUtils;
import com.sunyard.chsm.utils.JsonUtils;
import com.sunyard.ssp.common.Result;
import com.sunyard.ssp.constv.Alg;
@@ -19,7 +20,6 @@ import com.sunyard.ssp.modules.user.entity.UkeyLoginParm;
import com.sunyard.ssp.modules.user.service.IScUserRoleService;
import com.sunyard.ssp.modules.user.service.IScUserService;
import com.sunyard.ssp.util.BytesUtil;
import com.sunyard.ssp.utils.IpUtil;
import com.sunyard.ssp.utils.ResultUtil;
import com.sunyard.ssp.utils.SecurityUtil;
import com.sunyard.ssp.utils.UserUtil;
@@ -114,7 +114,7 @@ public class ScUShieldController {
}
auditLog.setRequestParam(JsonUtils.toJsonString(list));
//Ip信息
auditLog.setIpAddress(IpUtil.getIpAddress(request));
auditLog.setIpAddress(IpUtils.getIpAddress(request));
auditLog.setIpInfo("未知");
//请求相关
@@ -2,9 +2,9 @@ package com.sunyard.ssp.modules.user.serviceimpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sunyard.ssp.common.constant.ParamConfKeyConstant;
import com.sunyard.ssp.modules.sysconf.paramconf.entity.ParamConf;
import com.sunyard.ssp.modules.sysconf.paramconf.mapper.ParamConfMapper;
import com.sunyard.chsm.constant.ParamConfKeyConstant;
import com.sunyard.chsm.mapper.ParamConfMapper;
import com.sunyard.chsm.model.entity.ParamConf;
import com.sunyard.ssp.modules.user.entity.ScPermission;
import com.sunyard.ssp.modules.user.mapper.ScPermissionMapper;
import com.sunyard.ssp.modules.user.service.IScPermissionService;
@@ -17,8 +17,8 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import static com.sunyard.chsm.constant.ParamConfKeyConstant.SYS_DEBUG_SWITCH;
import static com.sunyard.ssp.common.constant.CommonConstant.DEFAULT_USER_ROOT_ID;
import static com.sunyard.ssp.common.constant.ParamConfKeyConstant.SYS_DEBUG_SWITCH;
/**
* <p>
@@ -1,46 +0,0 @@
package com.sunyard.ssp.utils;
import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IpUtil {
/**
* 获取真实ip地址,避免获取代理ip
*/
public static String getIpAddress(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
if ("127.0.0.1".equals(ip)) {
//根据网卡取本机配置的IP
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
ip = inet.getHostAddress();
}
}
if (ip != null && ip.length() > 15) {
if (ip.indexOf(",") > 0) {
ip = ip.substring(0, ip.indexOf(","));
}
}
if("0:0:0:0:0:0:0:1".equals(ip)){
ip="127.0.0.1";
}
return ip;
}
}