package com.its.vds.config; import lombok.Getter; import lombok.Setter; import lombok.ToString; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import javax.annotation.PostConstruct; import java.net.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; import java.util.List; @Slf4j @Getter @Setter @ToString @Configuration public class SystemInfo { private final Environment env; private String activeProfiles; private String osName; private int cpuCores; private String hostName; private String ipAddress; public SystemInfo(Environment env) { this.env = env; } @PostConstruct private void init() { setActiveProfiles(Arrays.toString((Object[])this.env.getActiveProfiles())); setOsName(System.getProperty("os.name")); setCpuCores(Integer.valueOf(Runtime.getRuntime().availableProcessors())); setHostName(getLocalHostName()); setIpAddress(getLocalIpAddress()); log.info("{}", this); } private String getLocalHostName() { String hostName = null; try { hostName = InetAddress.getLocalHost().getHostName(); } catch (UnknownHostException e) { log.error("getLocalHostName: UnknownHostException"); } return hostName; } private String getLocalIpAddress() { List ipAddresses = new ArrayList(); Enumeration e = null; try { e = NetworkInterface.getNetworkInterfaces(); } catch (SocketException ex) { log.error("getLocalIpAddress: SocketException"); return "127.0.0.1"; } while (e.hasMoreElements()) { for (InterfaceAddress ifAddr : ((NetworkInterface)e.nextElement()).getInterfaceAddresses()) { if (!(ifAddr.getAddress() instanceof java.net.Inet6Address)) ipAddresses.add(ifAddr.getAddress().getHostAddress()); } } return ipAddresses.toString(); } public List getIpAddressesList() { List ipAddresses = new ArrayList<>(); Enumeration e = null; try { e = NetworkInterface.getNetworkInterfaces(); } catch (SocketException ex) { log.error("getIpAddressesList: SocketException"); return ipAddresses; } while (e.hasMoreElements()) { for (InterfaceAddress ifAddr : ((NetworkInterface)e.nextElement()).getInterfaceAddresses()) { if (!(ifAddr.getAddress() instanceof java.net.Inet6Address)) ipAddresses.add(ifAddr.getAddress().getHostAddress()); } } return ipAddresses; } }