HttpInterfacController.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. package com.zhou.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.zhou.mapper.HttpInterfaceMapper;
  4. import com.zhou.mapper.UsersMapper;
  5. import com.zhou.pojo.HttpInterface;
  6. import com.zhou.pojo.Users;
  7. import com.zhou.tools.MDCFilter;
  8. import com.zhou.tools.Parameter;
  9. import com.zhou.tools.tokens.IFToken;
  10. import com.zhou.tools.tokens.Token;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.http.HttpStatus;
  14. import org.springframework.http.ResponseEntity;
  15. import org.springframework.web.bind.annotation.CrossOrigin;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import javax.annotation.Resource;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpServletResponse;
  21. import java.io.BufferedReader;
  22. import java.io.InputStreamReader;
  23. import java.text.DateFormat;
  24. import java.text.ParseException;
  25. import java.text.SimpleDateFormat;
  26. import java.util.*;
  27. import org.slf4j.MDC;
  28. import org.slf4j.Logger;
  29. import org.slf4j.LoggerFactory;
  30. @CrossOrigin
  31. @Slf4j
  32. @RestController
  33. public class HttpInterfacController {
  34. @Value("${EXPIRE_TIME}")
  35. private String EXPIRE_TIME;
  36. @Resource
  37. private UsersMapper usersMapper;
  38. @Resource
  39. private HttpInterfaceMapper httpInterfaceMapper;
  40. @Value("/sso")
  41. //@Value("/CloudOutbound")
  42. private String contextpath;
  43. private String keyBytes = "rC3PEniq57QXiWk40BDw3inW";
  44. /**
  45. * 子平台名称,token值 ,查询
  46. * @param request,name,method
  47. * @return MAP<String,Object></>
  48. * @throws Exception
  49. */
  50. //查询相关IP地址
  51. @RequestMapping("getIpHttpInterface")
  52. public ResponseEntity<Object> getIpHttpInterface(HttpServletRequest request ,String name,String method) throws Exception {
  53. request.setCharacterEncoding("UTF-8");
  54. //获取用户操作账号
  55. String username = (String) request.getSession().getAttribute("username");
  56. log.info("方法被使用,账户:"+username+",平台:"+name+",参数:"+method);
  57. //初始传参类
  58. Parameter pmr =new Parameter();
  59. pmr.setType(1);
  60. pmr.setData("当前用户没有权限");
  61. pmr.setUuid(MDC.get(MDCFilter.ProcessId_ID));
  62. Map<String,Object> map = new HashMap<>();
  63. //获取用户携带token
  64. String token = (String) request.getSession().getAttribute("token");
  65. //核对用户token
  66. Map<String,Object >tokenMap = IFToken.typeTokne(username,token);
  67. int tokenTYPE =(int)tokenMap.get("jurisdiction");
  68. if(tokenTYPE==0){
  69. pmr.setType(3);
  70. pmr.setData((String)tokenMap.get("message"));
  71. }else {
  72. Date expiresDate = new Date(System.currentTimeMillis() + Integer.valueOf(EXPIRE_TIME) * 60 * 1000);
  73. List<Users> users = usersMapper.getUsersListByAccount(username);
  74. String key = Token.getToken(users.get(0), expiresDate);
  75. request.getSession().setAttribute("token", key);
  76. try{
  77. String userType =usersMapper.getPermissionList(username);
  78. if(userType!=null&&userType.length()!=0){
  79. String[] type = userType.split(",");
  80. for(int i=0 ;type.length>i ; i++){
  81. if(type[i].equals(name)){
  82. List<HttpInterface> list =httpInterfaceMapper.getIpHttpInterface(name,method);
  83. if(list.size()>0){
  84. HttpInterface hife =list.get(0);
  85. System.out.println("getIpHttpInterface");
  86. // System.out.println(hife.getURL());
  87. // pmr.setType(1);
  88. // pmr.setData(hife.getURL());
  89. System.out.println(hife.getURL());
  90. pmr.setType(1);
  91. // 在这里添加脱敏处理
  92. String anonymizedIP = anonymizeIP(hife.getURL());
  93. pmr.setData(anonymizedIP);
  94. break;
  95. }else {
  96. break;
  97. }
  98. }
  99. }
  100. }
  101. }catch (Exception e){
  102. pmr.setData("系统异常:"+e.getMessage());
  103. pmr.setType(2);
  104. log.error("方法出现错误,账户:"+username+",错误消息:"+e.getMessage()+",内容:"+e);
  105. }
  106. }
  107. log.info("方法返回结果返回账户:"+username+",返回Type:"+pmr.getType()+",返回参数:"+pmr.getData(),",返回id:"+pmr.getUuid());
  108. map.put("Type", pmr.getType());
  109. map.put("Data", pmr.getData());
  110. map.put("uuid", pmr.getUuid());
  111. return new ResponseEntity<>(map, HttpStatus.OK);
  112. }
  113. // 脱敏IP地址的方法
  114. private String anonymizeIP(String ip) {
  115. String[] ipParts = ip.split("\\.");
  116. // 假设IP地址格式正确,且没有进行错误检查
  117. return ipParts[0] + "." + ipParts[1] + ".*.*";
  118. }
  119. public JSONObject getJSONParam(HttpServletRequest request){
  120. JSONObject jsonParam = null;
  121. try {
  122. // 获取输入流
  123. BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
  124. // 写入数据到Stringbuilder
  125. StringBuilder sb = new StringBuilder();
  126. String line = null;
  127. while ((line = streamReader.readLine()) != null) {
  128. sb.append(line);
  129. }
  130. jsonParam = JSONObject.parseObject(sb.toString());
  131. // 直接将json信息打印出来
  132. if(jsonParam!=null){
  133. //logger.info(jsonParam.toJSONString());
  134. }else{
  135. //logger.info("请求JSON为空");
  136. }
  137. } catch (Exception e) {
  138. log.error("方法出现错误,错误消息:"+e.getMessage()+",内容:"+e);
  139. }
  140. return jsonParam;
  141. }
  142. public static String dealDateFormat(String oldDate) {
  143. Date date1 = null;
  144. DateFormat df2 = null;
  145. try {
  146. DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
  147. Date date = df.parse(oldDate);
  148. SimpleDateFormat df1 = new SimpleDateFormat ("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK);
  149. date1 = df1.parse(date.toString());
  150. df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  151. } catch (ParseException e) {
  152. log.error("方法出现错误,错误消息:"+e.getMessage()+",内容:"+e);
  153. }
  154. return df2.format(date1);
  155. }
  156. /**
  157. 获取精确到毫秒的时间戳
  158. * @param date
  159. * @return
  160. **/
  161. public static Long getTimestamp(Date date){
  162. if (null == date) {
  163. return (long) 0;
  164. }
  165. String timestamp = String.valueOf(date.getTime());
  166. return Long.valueOf(timestamp);
  167. }
  168. public String doGet(HttpServletRequest request, HttpServletResponse response) {
  169. response.setContentType("text/html;charset=utf-8");
  170. //获取referer头的值
  171. String referer = request.getHeader("referer");
  172. //获取访问地址
  173. String sitePart = "http://" + request.getServerName();
  174. System.out.println("referer:" + referer);
  175. System.out.println("sitePart:" + sitePart);
  176. String x = null;
  177. //判断referer头是否为空,这个头的首地址是否以sitePart开始的
  178. if (referer != null && referer.startsWith(sitePart)) {
  179. //处理正在下载的请求
  180. System.out.println("abcd");
  181. x = "1";
  182. return x;
  183. } else {
  184. System.out.println("1234");
  185. x = "0";
  186. return x;
  187. }
  188. }
  189. }