servermanager/src/main/java/de/gurkengewuerz/monitoring/object/Server.java

111 lines
3.6 KiB
Java

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<String, Server> getServerList(Database db) {
HashMap<String, Server> 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;
}
}