package com.zhou.controller; import com.alibaba.fastjson.JSONObject; import com.zhou.mapper.HttpInterfaceMapper; import com.zhou.mapper.UsersMapper; import com.zhou.pojo.HttpInterface; import com.zhou.pojo.Users; import com.zhou.tools.MDCFilter; import com.zhou.tools.Parameter; import com.zhou.tools.tokens.IFToken; import com.zhou.tools.tokens.Token; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.InputStreamReader; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import org.slf4j.MDC; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @CrossOrigin @Slf4j @RestController public class HttpInterfacController { @Value("${EXPIRE_TIME}") private String EXPIRE_TIME; @Resource private UsersMapper usersMapper; @Resource private HttpInterfaceMapper httpInterfaceMapper; @Value("/sso") //@Value("/CloudOutbound") private String contextpath; private String keyBytes = "rC3PEniq57QXiWk40BDw3inW"; /** * 子平台名称,token值 ,查询 * @param request,name,method * @return MAP * @throws Exception */ //查询相关IP地址 @RequestMapping("getIpHttpInterface") public ResponseEntity getIpHttpInterface(HttpServletRequest request ,String name,String method) throws Exception { request.setCharacterEncoding("UTF-8"); //获取用户操作账号 String username = (String) request.getSession().getAttribute("username"); log.info("方法被使用,账户:"+username+",平台:"+name+",参数:"+method); //初始传参类 Parameter pmr =new Parameter(); pmr.setType(1); pmr.setData("当前用户没有权限"); pmr.setUuid(MDC.get(MDCFilter.ProcessId_ID)); Map map = new HashMap<>(); //获取用户携带token String token = (String) request.getSession().getAttribute("token"); //核对用户token MaptokenMap = IFToken.typeTokne(username,token); int tokenTYPE =(int)tokenMap.get("jurisdiction"); if(tokenTYPE==0){ pmr.setType(3); pmr.setData((String)tokenMap.get("message")); }else { Date expiresDate = new Date(System.currentTimeMillis() + Integer.valueOf(EXPIRE_TIME) * 60 * 1000); List users = usersMapper.getUsersListByAccount(username); String key = Token.getToken(users.get(0), expiresDate); request.getSession().setAttribute("token", key); try{ String userType =usersMapper.getPermissionList(username); if(userType!=null&&userType.length()!=0){ String[] type = userType.split(","); for(int i=0 ;type.length>i ; i++){ if(type[i].equals(name)){ List list =httpInterfaceMapper.getIpHttpInterface(name,method); if(list.size()>0){ HttpInterface hife =list.get(0); System.out.println("getIpHttpInterface"); // System.out.println(hife.getURL()); // pmr.setType(1); // pmr.setData(hife.getURL()); System.out.println(hife.getURL()); pmr.setType(1); // 在这里添加脱敏处理 String anonymizedIP = anonymizeIP(hife.getURL()); pmr.setData(anonymizedIP); break; }else { break; } } } } }catch (Exception e){ pmr.setData("系统异常:"+e.getMessage()); pmr.setType(2); log.error("方法出现错误,账户:"+username+",错误消息:"+e.getMessage()+",内容:"+e); } } log.info("方法返回结果返回账户:"+username+",返回Type:"+pmr.getType()+",返回参数:"+pmr.getData(),",返回id:"+pmr.getUuid()); map.put("Type", pmr.getType()); map.put("Data", pmr.getData()); map.put("uuid", pmr.getUuid()); return new ResponseEntity<>(map, HttpStatus.OK); } // 脱敏IP地址的方法 private String anonymizeIP(String ip) { String[] ipParts = ip.split("\\."); // 假设IP地址格式正确,且没有进行错误检查 return ipParts[0] + "." + ipParts[1] + ".*.*"; } public JSONObject getJSONParam(HttpServletRequest request){ JSONObject jsonParam = null; try { // 获取输入流 BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8")); // 写入数据到Stringbuilder StringBuilder sb = new StringBuilder(); String line = null; while ((line = streamReader.readLine()) != null) { sb.append(line); } jsonParam = JSONObject.parseObject(sb.toString()); // 直接将json信息打印出来 if(jsonParam!=null){ //logger.info(jsonParam.toJSONString()); }else{ //logger.info("请求JSON为空"); } } catch (Exception e) { log.error("方法出现错误,错误消息:"+e.getMessage()+",内容:"+e); } return jsonParam; } public static String dealDateFormat(String oldDate) { Date date1 = null; DateFormat df2 = null; try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); Date date = df.parse(oldDate); SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK); date1 = df1.parse(date.toString()); df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } catch (ParseException e) { log.error("方法出现错误,错误消息:"+e.getMessage()+",内容:"+e); } return df2.format(date1); } /** 获取精确到毫秒的时间戳 * @param date * @return **/ public static Long getTimestamp(Date date){ if (null == date) { return (long) 0; } String timestamp = String.valueOf(date.getTime()); return Long.valueOf(timestamp); } public String doGet(HttpServletRequest request, HttpServletResponse response) { response.setContentType("text/html;charset=utf-8"); //获取referer头的值 String referer = request.getHeader("referer"); //获取访问地址 String sitePart = "http://" + request.getServerName(); System.out.println("referer:" + referer); System.out.println("sitePart:" + sitePart); String x = null; //判断referer头是否为空,这个头的首地址是否以sitePart开始的 if (referer != null && referer.startsWith(sitePart)) { //处理正在下载的请求 System.out.println("abcd"); x = "1"; return x; } else { System.out.println("1234"); x = "0"; return x; } } }