|
@@ -0,0 +1,247 @@
|
|
|
|
+package com.huimv.env.admin.controller;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.huimv.env.admin.entity.ArrangeList;
|
|
|
|
+import com.huimv.env.admin.entity.ArrangeRecord;
|
|
|
|
+import com.huimv.env.admin.service.IArrangeListService;
|
|
|
|
+import com.huimv.env.admin.service.IArrangeRecordService;
|
|
|
|
+import com.huimv.env.common.utils.IpUtil;
|
|
|
|
+import com.huimv.env.common.utils.Result;
|
|
|
|
+import com.huimv.env.common.utils.ResultCode;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
|
+
|
|
|
|
+import javax.crypto.SecretKey;
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import java.util.Base64;
|
|
|
|
+import java.util.Date;
|
|
|
|
+import java.util.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * <p>
|
|
|
|
+ * 前端控制器
|
|
|
|
+ * </p>
|
|
|
|
+ *
|
|
|
|
+ * @author author
|
|
|
|
+ * @since 2023-10-24
|
|
|
|
+ */
|
|
|
|
+@RestController
|
|
|
|
+@RequestMapping("/arrange-record")
|
|
|
|
+@CrossOrigin
|
|
|
|
+public class ArrangeRecordController {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IArrangeRecordService arrangeRecordService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private IArrangeListService arrangeListService;
|
|
|
|
+
|
|
|
|
+ @RequestMapping("/list")
|
|
|
|
+ public Result list(@RequestBody Map<String, String> paramsMap) {
|
|
|
|
+ String macAddress = paramsMap.get("macAddress");
|
|
|
|
+ String ipAddress = paramsMap.get("ipAddress");
|
|
|
|
+ String pageNum = paramsMap.get("pageNum");
|
|
|
|
+ String pageSize = paramsMap.get("pageSize");
|
|
|
|
+ if (null == pageNum || "".equals(pageNum)) {
|
|
|
|
+ pageNum = "1";
|
|
|
|
+ }
|
|
|
|
+ if (null == pageSize || "".equals(pageSize)) {
|
|
|
|
+ pageSize = "10";
|
|
|
|
+ }
|
|
|
|
+ QueryWrapper<ArrangeRecord> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(macAddress), "mac_address", macAddress);
|
|
|
|
+ queryWrapper.like(StringUtils.isNotBlank(ipAddress), "ip_address", ipAddress);
|
|
|
|
+ Page<ArrangeRecord> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ Page<ArrangeRecord> listPage = arrangeRecordService.page(page, queryWrapper);
|
|
|
|
+
|
|
|
|
+ return new Result(ResultCode.SUCCESS, listPage);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @GetMapping("/test")
|
|
|
|
+ public Integer test(HttpServletRequest request, @RequestParam("macAddress") String macAddress,
|
|
|
|
+ @RequestParam(value = "diskAddress", required = false) String diskAddress) {
|
|
|
|
+ System.out.println("这个是mac地址:" + macAddress);
|
|
|
|
+ System.out.println("这个是硬盘地址:" + macAddress);
|
|
|
|
+ String ipAddr = IpUtil.getIpAddr(request);
|
|
|
|
+ System.out.println("这里是ip地址:" + ipAddr);
|
|
|
|
+ ArrangeRecord record = new ArrangeRecord();
|
|
|
|
+// if (StringUtils.isNotBlank(diskAddress) && !"/".equals(diskAddress.substring(0, 1))) {
|
|
|
|
+// record.setIpAddress(ipAddr);
|
|
|
|
+// record.setMacAddress(macAddress);
|
|
|
|
+// record.setCreateDate(new Date());
|
|
|
|
+// arrangeRecordService.save(record);
|
|
|
|
+// return 1;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ if (macAddress.length() < 4 || !"@hm".equals(macAddress.substring(macAddress.length() - 3))) {
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ if (ObjectUtil.isNotEmpty(diskAddress)) {
|
|
|
|
+ record.setDiskAddress(diskAddress);
|
|
|
|
+ }
|
|
|
|
+ record.setMacAddress(macAddress);
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ String[] split = macAddress.split("@");
|
|
|
|
+ macAddress = split[0];
|
|
|
|
+
|
|
|
|
+ if ("".equals(ipAddr)) {
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setMacAddress(macAddress);
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ String decryptedMAC = decrypt(macAddress);
|
|
|
|
+ // 在这里,您可以验证MAC地址和硬盘地址是否匹配,以决定授予访问权限或拒绝访问。
|
|
|
|
+ // 您也可以执行其他所需的操作。
|
|
|
|
+ System.out.println("Decrypted MAC: " + decryptedMAC);
|
|
|
|
+
|
|
|
|
+ QueryWrapper<ArrangeList> queryWrapper = new QueryWrapper<>();
|
|
|
|
+ queryWrapper.eq("mac_address", decryptedMAC);
|
|
|
|
+ ArrangeList arrangeList = arrangeListService.getOne(queryWrapper);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (ObjectUtil.isEmpty(arrangeList)) {
|
|
|
|
+ //mac地址不存在
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ if (StringUtils.isNotBlank(diskAddress)) {
|
|
|
|
+ record.setDiskAddress(diskAddress);
|
|
|
|
+ }
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (null == arrangeList.getDiskAddress() || "".equals(arrangeList.getDiskAddress())) {
|
|
|
|
+ if (ipAddr.equals(arrangeList.getIpAddress())) {
|
|
|
|
+ //mac地址和ip地址都存在
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ int i = date.compareTo(arrangeList.getEndTime());
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setCreateDate(date);
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ if (i < 0) {
|
|
|
|
+ return 0;
|
|
|
|
+ } else {
|
|
|
|
+ return 3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ return 3;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("".equals(diskAddress) || null == diskAddress) {
|
|
|
|
+ try {
|
|
|
|
+ if (arrangeList.getIpAddress().equals(ipAddr)) {
|
|
|
|
+ //mac地址和ip地址都存在
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ int i = date.compareTo(arrangeList.getEndTime());
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setCreateDate(date);
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ if (i < 0) {
|
|
|
|
+ return 0;
|
|
|
|
+ } else {
|
|
|
|
+ return 3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+// String decrypt = decrypt(diskAddress);//解密后的物理地址
|
|
|
|
+ try {
|
|
|
|
+ if (arrangeList.getDiskAddress().equals(diskAddress)) {
|
|
|
|
+ //mac地址和硬盘地址都存在
|
|
|
|
+ Date date = new Date();
|
|
|
|
+ record.setCreateDate(date);
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ record.setDiskAddress(diskAddress);
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ int i = date.compareTo(arrangeList.getEndTime());
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ if (i < 0) {
|
|
|
|
+ return 0;
|
|
|
|
+ } else {
|
|
|
|
+ return 3;
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setDiskAddress(diskAddress);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 1;
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ record.setCreateDate(new Date());
|
|
|
|
+ record.setIpAddress(ipAddr);
|
|
|
|
+ record.setMacAddress(decryptedMAC);
|
|
|
|
+ record.setDiskAddress(diskAddress);
|
|
|
|
+ arrangeRecordService.save(record);
|
|
|
|
+ return 2;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ return 2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+// @GetMapping("/test")
|
|
|
|
+// public String test(@RequestParam(value = "macAddress") String encryptedData, HttpServletRequest request ) {
|
|
|
|
+// System.out.println(encryptedData);
|
|
|
|
+// String[] splitData = encryptedData.split("\\|"); // 分隔MAC地址和硬盘地址
|
|
|
|
+//
|
|
|
|
+// if (splitData.length == 2) {
|
|
|
|
+// try {
|
|
|
|
+// String decryptedMAC = decrypt(splitData[0]);
|
|
|
|
+// String decryptedDisk = decrypt(splitData[1]);
|
|
|
|
+//
|
|
|
|
+// // 在这里,您可以验证MAC地址和硬盘地址是否匹配,以决定授予访问权限或拒绝访问。
|
|
|
|
+// // 您也可以执行其他所需的操作。
|
|
|
|
+//
|
|
|
|
+// System.out.println("Decrypted MAC: " + decryptedMAC);
|
|
|
|
+// System.out.println("Decrypted Disk: " + decryptedDisk);
|
|
|
|
+// } catch (Exception e) {
|
|
|
|
+// e.printStackTrace();
|
|
|
|
+// }
|
|
|
|
+// } else {
|
|
|
|
+// System.out.println("Invalid data format");
|
|
|
|
+// }
|
|
|
|
+// return null;
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+ public static String decrypt(String encryptedText) throws Exception {
|
|
|
|
+ byte[] decryptedBytes = Base64.getDecoder().decode(encryptedText.getBytes());
|
|
|
|
+ return new String(decryptedBytes);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|