| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 |
- 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<String,Object></>
- * @throws Exception
- */
- //查询相关IP地址
- @RequestMapping("getIpHttpInterface")
- public ResponseEntity<Object> 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<String,Object> map = new HashMap<>();
- //获取用户携带token
- String token = (String) request.getSession().getAttribute("token");
- //核对用户token
- Map<String,Object >tokenMap = 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> 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<HttpInterface> 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;
- }
- }
- }
|