diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index f0f31003..d51d4aef 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -29,10 +29,13 @@ import org.springframework.core.io.ClassPathResource; import javax.servlet.http.HttpServletRequest; import java.io.File; +import java.net.Inet4Address; import java.net.InetAddress; +import java.net.NetworkInterface; import java.net.UnknownHostException; import java.util.Calendar; import java.util.Date; +import java.util.Enumeration; /** * @author Zheng Jie @@ -248,20 +251,37 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { * @return / */ public static String getLocalIp() { - InetAddress addr; try { - addr = InetAddress.getLocalHost(); - } catch (UnknownHostException e) { - return "unknown"; - } - byte[] ipAddr = addr.getAddress(); - StringBuilder ipAddrStr = new StringBuilder(); - for (int i = 0; i < ipAddr.length; i++) { - if (i > 0) { - ipAddrStr.append("."); + InetAddress candidateAddress = null; + // 遍历所有的网络接口 + for (Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); interfaces.hasMoreElements();) { + NetworkInterface anInterface = interfaces.nextElement(); + // 在所有的接口下再遍历IP + for (Enumeration inetAddresses = anInterface.getInetAddresses(); inetAddresses.hasMoreElements();) { + InetAddress inetAddr = inetAddresses.nextElement(); + // 排除loopback类型地址 + if (!inetAddr.isLoopbackAddress()) { + if (inetAddr.isSiteLocalAddress()) { + // 如果是site-local地址,就是它了 + return inetAddr.getHostAddress(); + } else if (candidateAddress == null) { + // site-local类型的地址未被发现,先记录候选地址 + candidateAddress = inetAddr; + } + } + } } - ipAddrStr.append(ipAddr[i] & 0xFF); + if (candidateAddress != null) { + return candidateAddress.getHostAddress(); + } + // 如果没有发现 non-loopback地址.只能用最次选的方案 + InetAddress jdkSuppliedAddress = InetAddress.getLocalHost(); + if (jdkSuppliedAddress == null) { + return ""; + } + return jdkSuppliedAddress.getHostAddress(); + } catch (Exception e) { + return ""; } - return ipAddrStr.toString(); } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java similarity index 99% rename from eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java index 2d2592b5..104c9dcf 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SpringSecurityConfig.java @@ -40,7 +40,6 @@ import org.springframework.web.filter.CorsFilter; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.mvc.method.RequestMappingInfo; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; - import java.util.*; /** @@ -50,7 +49,7 @@ import java.util.*; @EnableWebSecurity @RequiredArgsConstructor @EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) -public class SecurityConfig extends WebSecurityConfigurerAdapter { +public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; @@ -138,6 +137,10 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { .and().apply(securityConfigurerAdapter()); } + private TokenConfigurer securityConfigurerAdapter() { + return new TokenConfigurer(tokenProvider, properties, onlineUserService, userCacheClean); + } + private Map> getAnonymousUrl(Map handlerMethodMap) { Map> anonymousUrls = new HashMap<>(6); Set get = new HashSet<>(); @@ -182,8 +185,4 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { anonymousUrls.put(RequestMethodEnum.ALL.getType(), all); return anonymousUrls; } - - private TokenConfigurer securityConfigurerAdapter() { - return new TokenConfigurer(tokenProvider, properties, onlineUserService, userCacheClean); - } } diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java index 99aaef88..fdc43825 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MonitorServiceImpl.java @@ -18,6 +18,7 @@ package me.zhengjie.modules.system.service.impl; import cn.hutool.core.date.BetweenFormater; import cn.hutool.core.date.DateUtil; import me.zhengjie.modules.system.service.MonitorService; +import me.zhengjie.utils.ElAdminConstant; import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.StringUtils; import org.springframework.stereotype.Service; @@ -73,15 +74,24 @@ public class MonitorServiceImpl implements MonitorService { Map diskInfo = new LinkedHashMap<>(); FileSystem fileSystem = os.getFileSystem(); List fsArray = fileSystem.getFileStores(); + String osName = System.getProperty("os.name"); + long available = 0, total = 0; for (OSFileStore fs : fsArray){ - long available = fs.getUsableSpace(); - long total = fs.getTotalSpace(); - long used = total - available; - diskInfo.put("total", total > 0 ? FileUtil.getSize(total) : "?"); - diskInfo.put("available", FileUtil.getSize(available)); - diskInfo.put("used", FileUtil.getSize(used)); - diskInfo.put("usageRate", df.format(used/(double)fs.getTotalSpace() * 100)); + // windows 需要将所有磁盘分区累加,linux 和 mac 直接累加会出现磁盘重复的问题,待修复 + if(osName.toLowerCase().startsWith(ElAdminConstant.WIN)) { + available += fs.getUsableSpace(); + total += fs.getTotalSpace(); + } else { + available = fs.getUsableSpace(); + total = fs.getTotalSpace(); + break; + } } + long used = total - available; + diskInfo.put("total", total > 0 ? FileUtil.getSize(total) : "?"); + diskInfo.put("available", FileUtil.getSize(available)); + diskInfo.put("used", FileUtil.getSize(used)); + diskInfo.put("usageRate", df.format(used/(double)total * 100)); return diskInfo; } diff --git a/sql/eladmin.sql b/sql/eladmin.sql index 9cd4cb56..51d44404 100644 --- a/sql/eladmin.sql +++ b/sql/eladmin.sql @@ -547,74 +547,106 @@ CREATE TABLE `sys_roles_menus` ( -- ---------------------------- BEGIN; INSERT INTO `sys_roles_menus` VALUES (1, 1); -INSERT INTO `sys_roles_menus` VALUES (1, 2); INSERT INTO `sys_roles_menus` VALUES (2, 1); -INSERT INTO `sys_roles_menus` VALUES (2, 2); INSERT INTO `sys_roles_menus` VALUES (3, 1); -INSERT INTO `sys_roles_menus` VALUES (3, 2); INSERT INTO `sys_roles_menus` VALUES (5, 1); -INSERT INTO `sys_roles_menus` VALUES (5, 2); INSERT INTO `sys_roles_menus` VALUES (6, 1); -INSERT INTO `sys_roles_menus` VALUES (6, 2); INSERT INTO `sys_roles_menus` VALUES (7, 1); -INSERT INTO `sys_roles_menus` VALUES (7, 2); INSERT INTO `sys_roles_menus` VALUES (9, 1); -INSERT INTO `sys_roles_menus` VALUES (9, 2); INSERT INTO `sys_roles_menus` VALUES (10, 1); -INSERT INTO `sys_roles_menus` VALUES (10, 2); INSERT INTO `sys_roles_menus` VALUES (11, 1); -INSERT INTO `sys_roles_menus` VALUES (11, 2); INSERT INTO `sys_roles_menus` VALUES (14, 1); -INSERT INTO `sys_roles_menus` VALUES (14, 2); INSERT INTO `sys_roles_menus` VALUES (15, 1); -INSERT INTO `sys_roles_menus` VALUES (15, 2); INSERT INTO `sys_roles_menus` VALUES (18, 1); -INSERT INTO `sys_roles_menus` VALUES (18, 2); INSERT INTO `sys_roles_menus` VALUES (19, 1); -INSERT INTO `sys_roles_menus` VALUES (19, 2); INSERT INTO `sys_roles_menus` VALUES (21, 1); -INSERT INTO `sys_roles_menus` VALUES (21, 2); INSERT INTO `sys_roles_menus` VALUES (22, 1); -INSERT INTO `sys_roles_menus` VALUES (22, 2); INSERT INTO `sys_roles_menus` VALUES (23, 1); -INSERT INTO `sys_roles_menus` VALUES (23, 2); INSERT INTO `sys_roles_menus` VALUES (24, 1); -INSERT INTO `sys_roles_menus` VALUES (24, 2); INSERT INTO `sys_roles_menus` VALUES (27, 1); -INSERT INTO `sys_roles_menus` VALUES (27, 2); INSERT INTO `sys_roles_menus` VALUES (28, 1); -INSERT INTO `sys_roles_menus` VALUES (28, 2); INSERT INTO `sys_roles_menus` VALUES (30, 1); INSERT INTO `sys_roles_menus` VALUES (32, 1); INSERT INTO `sys_roles_menus` VALUES (33, 1); -INSERT INTO `sys_roles_menus` VALUES (33, 2); INSERT INTO `sys_roles_menus` VALUES (34, 1); -INSERT INTO `sys_roles_menus` VALUES (34, 2); INSERT INTO `sys_roles_menus` VALUES (35, 1); -INSERT INTO `sys_roles_menus` VALUES (35, 2); INSERT INTO `sys_roles_menus` VALUES (36, 1); -INSERT INTO `sys_roles_menus` VALUES (36, 2); INSERT INTO `sys_roles_menus` VALUES (37, 1); -INSERT INTO `sys_roles_menus` VALUES (37, 2); INSERT INTO `sys_roles_menus` VALUES (38, 1); -INSERT INTO `sys_roles_menus` VALUES (38, 2); INSERT INTO `sys_roles_menus` VALUES (39, 1); -INSERT INTO `sys_roles_menus` VALUES (39, 2); INSERT INTO `sys_roles_menus` VALUES (41, 1); +INSERT INTO `sys_roles_menus` VALUES (44, 1); +INSERT INTO `sys_roles_menus` VALUES (45, 1); +INSERT INTO `sys_roles_menus` VALUES (46, 1); +INSERT INTO `sys_roles_menus` VALUES (48, 1); +INSERT INTO `sys_roles_menus` VALUES (49, 1); +INSERT INTO `sys_roles_menus` VALUES (50, 1); +INSERT INTO `sys_roles_menus` VALUES (52, 1); +INSERT INTO `sys_roles_menus` VALUES (53, 1); +INSERT INTO `sys_roles_menus` VALUES (54, 1); +INSERT INTO `sys_roles_menus` VALUES (56, 1); +INSERT INTO `sys_roles_menus` VALUES (57, 1); +INSERT INTO `sys_roles_menus` VALUES (58, 1); +INSERT INTO `sys_roles_menus` VALUES (60, 1); +INSERT INTO `sys_roles_menus` VALUES (61, 1); +INSERT INTO `sys_roles_menus` VALUES (62, 1); +INSERT INTO `sys_roles_menus` VALUES (64, 1); +INSERT INTO `sys_roles_menus` VALUES (65, 1); +INSERT INTO `sys_roles_menus` VALUES (66, 1); +INSERT INTO `sys_roles_menus` VALUES (73, 1); +INSERT INTO `sys_roles_menus` VALUES (74, 1); +INSERT INTO `sys_roles_menus` VALUES (75, 1); +INSERT INTO `sys_roles_menus` VALUES (77, 1); +INSERT INTO `sys_roles_menus` VALUES (78, 1); +INSERT INTO `sys_roles_menus` VALUES (79, 1); INSERT INTO `sys_roles_menus` VALUES (80, 1); -INSERT INTO `sys_roles_menus` VALUES (80, 2); INSERT INTO `sys_roles_menus` VALUES (82, 1); INSERT INTO `sys_roles_menus` VALUES (83, 1); -INSERT INTO `sys_roles_menus` VALUES (83, 2); INSERT INTO `sys_roles_menus` VALUES (90, 1); -INSERT INTO `sys_roles_menus` VALUES (90, 2); INSERT INTO `sys_roles_menus` VALUES (92, 1); -INSERT INTO `sys_roles_menus` VALUES (92, 2); INSERT INTO `sys_roles_menus` VALUES (93, 1); INSERT INTO `sys_roles_menus` VALUES (94, 1); INSERT INTO `sys_roles_menus` VALUES (97, 1); INSERT INTO `sys_roles_menus` VALUES (98, 1); +INSERT INTO `sys_roles_menus` VALUES (102, 1); +INSERT INTO `sys_roles_menus` VALUES (103, 1); +INSERT INTO `sys_roles_menus` VALUES (104, 1); +INSERT INTO `sys_roles_menus` VALUES (105, 1); +INSERT INTO `sys_roles_menus` VALUES (106, 1); +INSERT INTO `sys_roles_menus` VALUES (107, 1); +INSERT INTO `sys_roles_menus` VALUES (108, 1); +INSERT INTO `sys_roles_menus` VALUES (109, 1); +INSERT INTO `sys_roles_menus` VALUES (110, 1); +INSERT INTO `sys_roles_menus` VALUES (111, 1); +INSERT INTO `sys_roles_menus` VALUES (112, 1); +INSERT INTO `sys_roles_menus` VALUES (113, 1); +INSERT INTO `sys_roles_menus` VALUES (114, 1); INSERT INTO `sys_roles_menus` VALUES (116, 1); +INSERT INTO `sys_roles_menus` VALUES (120, 1); +INSERT INTO `sys_roles_menus` VALUES (1, 2); +INSERT INTO `sys_roles_menus` VALUES (2, 2); +INSERT INTO `sys_roles_menus` VALUES (6, 2); +INSERT INTO `sys_roles_menus` VALUES (7, 2); +INSERT INTO `sys_roles_menus` VALUES (9, 2); +INSERT INTO `sys_roles_menus` VALUES (10, 2); +INSERT INTO `sys_roles_menus` VALUES (11, 2); +INSERT INTO `sys_roles_menus` VALUES (14, 2); +INSERT INTO `sys_roles_menus` VALUES (15, 2); +INSERT INTO `sys_roles_menus` VALUES (19, 2); +INSERT INTO `sys_roles_menus` VALUES (21, 2); +INSERT INTO `sys_roles_menus` VALUES (22, 2); +INSERT INTO `sys_roles_menus` VALUES (23, 2); +INSERT INTO `sys_roles_menus` VALUES (24, 2); +INSERT INTO `sys_roles_menus` VALUES (27, 2); +INSERT INTO `sys_roles_menus` VALUES (30, 2); +INSERT INTO `sys_roles_menus` VALUES (32, 2); +INSERT INTO `sys_roles_menus` VALUES (33, 2); +INSERT INTO `sys_roles_menus` VALUES (34, 2); +INSERT INTO `sys_roles_menus` VALUES (36, 2); +INSERT INTO `sys_roles_menus` VALUES (80, 2); +INSERT INTO `sys_roles_menus` VALUES (82, 2); +INSERT INTO `sys_roles_menus` VALUES (83, 2); +INSERT INTO `sys_roles_menus` VALUES (116, 2); COMMIT; -- ----------------------------