111 lines
3.6 KiB
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;
|
|
}
|
|
}
|