package de.gurkengewuerz.monitoring.object; import org.pmw.tinylog.Logger; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; /** * Created by gurkengewuerz.de on 21.10.2017. */ public class Server { private int id; private String name; private String username; private String ip; private int port; private long timeAdded; private ServerStatus status; public Server(int id, String name, String username, String ip, int port, long timeAdded, ServerStatus status) { this.id = id; this.name = name; this.username = username; this.ip = ip; this.port = port; this.timeAdded = timeAdded; this.status = status; } public Server(int id, String name, String username, String ip, int port) { this(id, name, username, ip, port, System.currentTimeMillis() / 1000, new ServerStatus(null, null, 0, 0, 0, 0, 0, State.OFFLINE, 0)); } public static HashMap getServerList(Database db) { HashMap serverlist = new HashMap<>(); try { ResultSet rs = db.executeQuery("SELECT * FROM server LEFT JOIN status ON server.id = status.server_id;"); while (rs.next()) { ServerStatus status = new ServerStatus(rs.getString("os"), rs.getString("cpu"), rs.getInt("cpucount"), rs.getInt("max_ram"), rs.getInt("current_ram"), rs.getFloat("load"), rs.getLong("uptime"), State.getByName(rs.getString("state")), rs.getLong("lastpoll")); Server s = new Server(rs.getInt("id"), rs.getString("servername"), rs.getString("username"), rs.getString("ip"), rs.getInt("port"), rs.getLong("adddate"), status); serverlist.put(rs.getString("servername"), s); } } catch (SQLException e) { Logger.error(e); } return serverlist; } public int getId() { return id; } public String getName() { return name; } public String getUsername() { return username; } public long getTimeAdded() { return timeAdded; } public ServerStatus getStatus() { return status; } public void setStatus(ServerStatus status) { this.status = status; } public String getAddedFormatted() { return ServerStatus.getDate(timeAdded, "HH:mm:ss"); } @Override public String toString() { return name + " (#" + id + ")" + "\n" + "------------------" + "\n" + "Server: " + username + "@" + ip + ":" + port + "\n" + "HinzugefĆ¼gt am: " + getAddedFormatted() + "\n" + "OS: " + status.getOS() + "\n" + "CPU Model: " + status.getCPUModel() + "\n" + "Kerne: " + status.getCPUcount() + "\n" + "Memory: " + status.getMemFree() + "kb/" + status.getMemTotal() + "kb\n" + "Last: " + status.getLoad() + "\n" + "Uptime: " + status.getUptimeFormatted() + "\n" + "Letzte Aktueallisierung: " + status.getLastPollFormatted() + "\n" + "Status: " + status.getState().toString(); } public SSHManager getSSHSession(PrivateKey privateKey) { SSHManager instance = new SSHManager(getUsername(), privateKey.getPath(), privateKey.getPassword(), ip, "", port); String errorMessage = instance.connect(); if (errorMessage != null) { Logger.error(errorMessage); } return instance; } }