show message if private key not found
allow private key passphrase private key class
This commit is contained in:
parent
aeac202b32
commit
a8a961c5b9
@ -37,6 +37,7 @@ public class Config extends JSONObject {
|
||||
this.put("debug", true);
|
||||
this.put("sqlite", Variables.DATABASE_NAME);
|
||||
this.put("private_key", Variables.PRIVATE_KEY);
|
||||
this.put("private_key_pass", "");
|
||||
|
||||
JSONObject custom_commands = new JSONObject();
|
||||
custom_commands.put("Screen installieren", "apt-get install screen");
|
||||
|
@ -88,6 +88,13 @@ public class GUI {
|
||||
|
||||
MultiWindowTextGUI gui = new MultiWindowTextGUI(screen, new DefaultWindowManager(), new EmptySpace(TextColor.ANSI.BLUE));
|
||||
|
||||
if (!StartUp.getPrivateKey().exists()) {
|
||||
Logger.error(StartUp.getPrivateKey().getPath() + " wurde nicht gefunden!");
|
||||
MessageDialog.showMessageDialog(gui, "ERROR!", StartUp.getPrivateKey().getPath() + " wurde nicht gefunden!", MessageDialogButton.Cancel);
|
||||
gui.addWindowAndWait(window);
|
||||
return;
|
||||
}
|
||||
|
||||
CheckBoxList<String> checkBoxList = new CheckBoxList<String>().addTo(leftPanel);
|
||||
updateList(checkBoxList, serverlist);
|
||||
|
||||
@ -145,7 +152,7 @@ public class GUI {
|
||||
checkBoxList.addItem(servername);
|
||||
Logger.info("Added: " + ip + " " + port);
|
||||
MessageDialog.showMessageDialog(gui, "INFO", "Server hinzugefügt.\n" +
|
||||
"Gehe sicher das der Public Key von " + StartUp.getPrivate_key() + " auf dem Server abgelegt wurde.", MessageDialogButton.Continue);
|
||||
"Gehe sicher das der Public Key von " + StartUp.getPrivateKey().getPath() + " auf dem Server abgelegt wurde.", MessageDialogButton.Continue);
|
||||
} catch (SQLException e) {
|
||||
Logger.error(e);
|
||||
}
|
||||
@ -190,15 +197,15 @@ public class GUI {
|
||||
gui.addWindow(windowStatus);
|
||||
gui.setActiveWindow(windowStatus);
|
||||
})
|
||||
.addAction("Updaten", () -> MassCommand.run("apt-get update && apt-get upgrade -y", gui, serverarray, StartUp.getPrivate_key()))
|
||||
.addAction("Herunterfahren", () -> MassCommand.run("shutdown -h now", gui, serverarray, StartUp.getPrivate_key()))
|
||||
.addAction("Neustart", () -> MassCommand.run("reboot", gui, serverarray, StartUp.getPrivate_key()));
|
||||
.addAction("Updaten", () -> MassCommand.run("apt-get update && apt-get upgrade -y", gui, serverarray, StartUp.getPrivateKey()))
|
||||
.addAction("Herunterfahren", () -> MassCommand.run("shutdown -h now", gui, serverarray, StartUp.getPrivateKey()))
|
||||
.addAction("Neustart", () -> MassCommand.run("reboot", gui, serverarray, StartUp.getPrivateKey()));
|
||||
|
||||
JSONObject customCommands = StartUp.getConfig().getCustomCommands();
|
||||
for (int i = 0; i < customCommands.names().length(); i++) {
|
||||
String key = customCommands.names().getString(i);
|
||||
String value = customCommands.getString(key);
|
||||
pre.addAction(key, () -> MassCommand.run(value, gui, serverarray, StartUp.getPrivate_key()));
|
||||
pre.addAction(key, () -> MassCommand.run(value, gui, serverarray, StartUp.getPrivateKey()));
|
||||
}
|
||||
|
||||
pre.build().showDialog(gui);
|
||||
|
@ -24,6 +24,10 @@ public class Poller {
|
||||
|
||||
public Poller() {
|
||||
scheduler = Executors.newScheduledThreadPool(1);
|
||||
if (!StartUp.getPrivateKey().exists()) {
|
||||
Logger.error(StartUp.getPrivateKey().getPath() + " wurde nicht gefunden!");
|
||||
return;
|
||||
}
|
||||
scheduler.scheduleAtFixedRate(() -> {
|
||||
HashMap<String, Server> serverlist = Server.getServerList(StartUp.getDb());
|
||||
|
||||
@ -34,7 +38,7 @@ public class Poller {
|
||||
Logger.info("Paused!");
|
||||
return;
|
||||
}
|
||||
SSHManager manager = server.getSSHSession(StartUp.getPrivate_key());
|
||||
SSHManager manager = server.getSSHSession(StartUp.getPrivateKey());
|
||||
if (manager.hasError()) {
|
||||
status.setState(State.OFFLINE);
|
||||
Logger.error("Offline!");
|
||||
|
@ -1,6 +1,7 @@
|
||||
package de.gurkengewuerz.monitoring;
|
||||
|
||||
import de.gurkengewuerz.monitoring.object.Database;
|
||||
import de.gurkengewuerz.monitoring.object.PrivateKey;
|
||||
import org.apache.commons.cli.*;
|
||||
import org.pmw.tinylog.Logger;
|
||||
|
||||
@ -14,7 +15,7 @@ import java.sql.SQLException;
|
||||
public class StartUp {
|
||||
private static Database db;
|
||||
private static Config conf;
|
||||
private static String private_key;
|
||||
private static PrivateKey private_key;
|
||||
|
||||
public static void main(String... args) throws IOException {
|
||||
// START-ARGUMENTS
|
||||
@ -75,11 +76,7 @@ public class StartUp {
|
||||
// END-Datenbank
|
||||
|
||||
// START-PRIV KEY
|
||||
private_key = conf.getString("private_key");
|
||||
if (!new File(private_key).exists()) {
|
||||
Logger.error(private_key + " wurde nicht gefunden!");
|
||||
System.exit(1);
|
||||
}
|
||||
private_key = new PrivateKey(conf.getString("private_key"), conf.getString("private_key_pass"));
|
||||
// END-PRIV KEY
|
||||
|
||||
if (cmd.hasOption("p")) {
|
||||
@ -93,7 +90,7 @@ public class StartUp {
|
||||
return db;
|
||||
}
|
||||
|
||||
public static String getPrivate_key() {
|
||||
public static PrivateKey getPrivateKey() {
|
||||
return private_key;
|
||||
}
|
||||
|
||||
|
@ -18,13 +18,13 @@ import java.util.List;
|
||||
public class MassCommand {
|
||||
|
||||
private String command;
|
||||
private String private_key;
|
||||
private PrivateKey private_key;
|
||||
private List<Server> serverList = new ArrayList<>();
|
||||
private StatusReply answer;
|
||||
private boolean stop = false;
|
||||
private Thread t;
|
||||
|
||||
public MassCommand(String command, String private_key, List<Server> serverList, StatusReply answer) {
|
||||
public MassCommand(String command, PrivateKey private_key, List<Server> serverList, StatusReply answer) {
|
||||
this.command = command;
|
||||
this.private_key = private_key;
|
||||
this.serverList = serverList;
|
||||
@ -32,10 +32,10 @@ public class MassCommand {
|
||||
}
|
||||
|
||||
public MassCommand(String command, List<Server> serverList, StatusReply answer) {
|
||||
this(command, "", serverList, answer);
|
||||
this(command, new PrivateKey(""), serverList, answer);
|
||||
}
|
||||
|
||||
public static void run(String command, MultiWindowTextGUI gui, List<Server> serverarray, String ssh_private) {
|
||||
public static void run(String command, MultiWindowTextGUI gui, List<Server> serverarray, PrivateKey ssh_private) {
|
||||
Label label = new Label("[ ] 00%");
|
||||
Button button = new Button("Abbruch");
|
||||
BasicWindow windowStatus = GUI.getCallbackWindow(label, button);
|
||||
@ -86,7 +86,7 @@ public class MassCommand {
|
||||
button.takeFocus();
|
||||
}
|
||||
|
||||
public MassCommand setPrivateKey(String private_key) {
|
||||
public MassCommand setPrivateKey(PrivateKey private_key) {
|
||||
this.private_key = private_key;
|
||||
return this;
|
||||
}
|
||||
@ -98,7 +98,7 @@ public class MassCommand {
|
||||
answer.onStart();
|
||||
serverList.forEach(server -> {
|
||||
if (stop) return;
|
||||
if (failed[0]) return;
|
||||
failed[0] = false;
|
||||
SSHManager manager = server.getSSHSession(private_key);
|
||||
if (manager.hasError()) {
|
||||
failed[0] = true;
|
||||
|
@ -0,0 +1,40 @@
|
||||
package de.gurkengewuerz.monitoring.object;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Created by gurkengewuerz.de on 25.10.2017.
|
||||
*/
|
||||
public class PrivateKey {
|
||||
|
||||
private String path;
|
||||
private String pass;
|
||||
private boolean exists = false;
|
||||
|
||||
public PrivateKey(String path, String pass) {
|
||||
this.path = path;
|
||||
this.pass = pass;
|
||||
exists = new File(path).exists();
|
||||
}
|
||||
|
||||
public PrivateKey(String path) {
|
||||
this(path, "");
|
||||
}
|
||||
|
||||
public boolean hasPassword() {
|
||||
return !pass.isEmpty();
|
||||
}
|
||||
|
||||
public boolean exists() {
|
||||
return exists;
|
||||
}
|
||||
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
|
||||
public String getPassword() {
|
||||
return pass;
|
||||
}
|
||||
}
|
@ -21,48 +21,32 @@ public class SSHManager {
|
||||
private String strUserName;
|
||||
private String strConnectionIP;
|
||||
private int intConnectionPort;
|
||||
private String strPassword;
|
||||
private Session sesConnection;
|
||||
private String errorMessage = null;
|
||||
private int intTimeOut;
|
||||
|
||||
public SSHManager(String userName, String password,
|
||||
String connectionIP, String knownHostsFileName) {
|
||||
doCommonConstructorActions(userName, password,
|
||||
connectionIP, knownHostsFileName);
|
||||
intConnectionPort = 22;
|
||||
intTimeOut = 60000;
|
||||
}
|
||||
|
||||
public SSHManager(String userName, String password, String connectionIP,
|
||||
String knownHostsFileName, int connectionPort) {
|
||||
doCommonConstructorActions(userName, password, connectionIP,
|
||||
knownHostsFileName);
|
||||
public SSHManager(String userName, String privateKey, String privateKey_pass, String connectionIP, String knownHostsFileName, int connectionPort) {
|
||||
doCommonConstructorActions(userName, privateKey, privateKey_pass, connectionIP, knownHostsFileName);
|
||||
intConnectionPort = connectionPort;
|
||||
intTimeOut = 60000;
|
||||
}
|
||||
|
||||
public SSHManager(String userName, String password, String connectionIP,
|
||||
String knownHostsFileName, int connectionPort, int timeOutMilliseconds) {
|
||||
doCommonConstructorActions(userName, password, connectionIP,
|
||||
knownHostsFileName);
|
||||
intConnectionPort = connectionPort;
|
||||
intTimeOut = timeOutMilliseconds;
|
||||
}
|
||||
|
||||
private void doCommonConstructorActions(String userName,
|
||||
String password, String connectionIP, String knownHostsFileName) {
|
||||
private void doCommonConstructorActions(String userName, String privateKey, String privateKey_pass, String connectionIP, String knownHostsFileName) {
|
||||
jschSSHChannel = new JSch();
|
||||
|
||||
try {
|
||||
jschSSHChannel.addIdentity(password);
|
||||
if (privateKey_pass.isEmpty()) {
|
||||
jschSSHChannel.addIdentity(privateKey);
|
||||
} else {
|
||||
jschSSHChannel.addIdentity(privateKey, privateKey_pass);
|
||||
}
|
||||
|
||||
jschSSHChannel.setKnownHosts(knownHostsFileName);
|
||||
} catch (JSchException jschX) {
|
||||
logError(jschX.getMessage());
|
||||
}
|
||||
|
||||
strUserName = userName;
|
||||
strPassword = password;
|
||||
strConnectionIP = connectionIP;
|
||||
}
|
||||
|
||||
|
@ -98,8 +98,8 @@ public class Server {
|
||||
"Status: " + status.getState().toString();
|
||||
}
|
||||
|
||||
public SSHManager getSSHSession(String ssh_private) {
|
||||
SSHManager instance = new SSHManager(getUsername(), ssh_private, ip, "", port);
|
||||
public SSHManager getSSHSession(PrivateKey privateKey) {
|
||||
SSHManager instance = new SSHManager(getUsername(), privateKey.getPath(), privateKey.getPassword(), ip, "", port);
|
||||
String errorMessage = instance.connect();
|
||||
|
||||
if (errorMessage != null) {
|
||||
|
Loading…
Reference in New Issue
Block a user