From fdf1455872c68423988baf7b21ffa177d8ec7462 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 8 Oct 2017 13:07:04 +0200 Subject: [PATCH] #200 - added command to retriebe information about client and server --- .../ui/commandLine/commands/CommandInfo.java | 67 +++++++++++++++ .../commands/PossibleCommands.java | 3 +- .../ui/commandLine/_en.properties | 6 +- .../serverconnection/ServerConnection.java | 22 ++++- .../serverconnection/ServerInformation.java | 84 +++++++++++++++++++ .../server/SparkServer.java | 4 +- .../server/info/InformationGet.java | 38 +++++++++ .../server/{version => info}/VersionGet.java | 4 +- 8 files changed, 221 insertions(+), 7 deletions(-) create mode 100644 BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java create mode 100644 BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java rename BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/{version => info}/VersionGet.java (86%) diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java new file mode 100644 index 000000000..977faa743 --- /dev/null +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/CommandInfo.java @@ -0,0 +1,67 @@ +package de.deadlocker8.budgetmasterclient.ui.commandLine.commands; + +import de.deadlocker8.budgetmaster.logic.serverconnection.ServerConnection; +import de.deadlocker8.budgetmaster.logic.serverconnection.ServerInformation; +import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; +import de.deadlocker8.budgetmaster.logic.utils.Strings; +import de.deadlocker8.budgetmasterclient.ui.commandLine.CommandBundle; +import tools.Localization; + +/** + * prints help for given command + */ +public class CommandInfo extends Command +{ + public CommandInfo() + { + super(); + super.keyword = "info"; + super.numberOfParams = 1; + super.helptText = "help.info"; + } + + @Override + public void execute(String[] command, CommandBundle bundle) + { + if(!isValid(command)) + { + bundle.getController().print(bundle.getString("error.invalid.arguments")); + return; + } + + if(command[1].equals("client")) + { + String text = Localization.getString(Strings.APP_NAME) + + " v" + Localization.getString(Strings.VERSION_NAME) + + " (" + Localization.getString(Strings.VERSION_CODE) + + ") from " + Localization.getString(Strings.VERSION_DATE); + bundle.getController().print(text); + return; + } + + if(command[1].equals("server")) + { + try + { + ServerConnection connection = new ServerConnection(bundle.getSettings()); + ServerInformation serverInfo = connection.getServerInfo(); + VersionInformation versionInfo = serverInfo.getVersionInfo(); + + String text = "BudgetMasterServer v" + versionInfo.getVersionName() + " (" + versionInfo.getVersionCode() + ") from " + versionInfo.getDate() + "\n" + + "Listening on port " + serverInfo.getServerPort() + "\n" + + "Connected with user \"" + serverInfo.getDatabaseUsername() + "\" to database \"" + serverInfo.getDatabaseName() + "@" + serverInfo.getDatabaseUrl() + "\"\n" + + "Keystore location is: \"" + serverInfo.getKeystorePath() + "\""; + + bundle.getController().print(text); + } + catch(Exception e) + { + bundle.getController().print(bundle.getString("delete.error.connection")); + } + + return; + } + + bundle.getController().print(bundle.getString("error.invalid.parameter", command[1], keyword)); + } +} diff --git a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java index 907982b05..9e8536214 100644 --- a/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java +++ b/BudgetMasterClient/src/main/java/de/deadlocker8/budgetmasterclient/ui/commandLine/commands/PossibleCommands.java @@ -11,6 +11,7 @@ public class PossibleCommands new CommandClear(), new CommandShortcuts(), new CommandOpen(), - new CommandDelete() + new CommandDelete(), + new CommandInfo() )); } \ No newline at end of file diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties index 314ada7b0..bc2a8acd3 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/ui/commandLine/_en.properties @@ -16,6 +16,10 @@ help.open=open - opens files and folders\nSYNTAX: open [PARAMETER]\npossible par open.success=Successfully opened folder {0} # delete -help.delete=delte - deletes files\nSYNTAX: delete [PARAMETER]\npossible parameters:\nlog-client\nlog-server +help.delete=delete - deletes files\nSYNTAX: delete [PARAMETER]\npossible parameters:\nlog-client\nlog-server delete.success=Successfully deleted {0} delete.error.connection=An error occurred while establishing the server connection + +# info +help.info=info - information about client and server \nSYNTAX: info [PARAMETER]\npossible parameters:\client\nserver +info.error.connection=An error occurred while establishing the server connection \ No newline at end of file diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java index e04ab2d77..cd04ca5d7 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java @@ -561,8 +561,26 @@ public class ServerConnection } /* - * VERSION + * INFORMATION */ + public ServerInformation getServerInfo() throws Exception + { + URL url = new URL(settings.getUrl() + "/info?secret=" + Helpers.getURLEncodedString(settings.getSecret())); + HttpsURLConnection httpsCon = (HttpsURLConnection)url.openConnection(); + httpsCon.setDoOutput(true); + httpsCon.setRequestMethod("GET"); + + if(httpsCon.getResponseCode() == HttpsURLConnection.HTTP_OK) + { + String result = Read.getStringFromInputStream(httpsCon.getInputStream()); + return gson.fromJson(result, ServerInformation.class); + } + else + { + throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); + } + } + public VersionInformation getServerVersion() throws Exception { URL url = new URL(settings.getUrl() + "/version?secret=" + Helpers.getURLEncodedString(settings.getSecret())); @@ -579,7 +597,7 @@ public class ServerConnection { throw new ServerConnectionException(String.valueOf(httpsCon.getResponseCode())); } - } + } public void deleteLog() throws Exception { diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java new file mode 100644 index 000000000..d4172b446 --- /dev/null +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerInformation.java @@ -0,0 +1,84 @@ +package de.deadlocker8.budgetmaster.logic.serverconnection; + +import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; + +public class ServerInformation +{ + private String databaseUrl; + private String databaseName; + private String databaseUsername; + private int serverPort; + private String keystorePath; + private VersionInformation versionInfo; + + public ServerInformation() + { + + } + + public String getDatabaseUrl() + { + return databaseUrl; + } + + public void setDatabaseUrl(String databaseUrl) + { + this.databaseUrl = databaseUrl; + } + + public String getDatabaseName() + { + return databaseName; + } + + public void setDatabaseName(String databaseName) + { + this.databaseName = databaseName; + } + + public String getDatabaseUsername() + { + return databaseUsername; + } + + public void setDatabaseUsername(String databaseUsername) + { + this.databaseUsername = databaseUsername; + } + + public int getServerPort() + { + return serverPort; + } + + public void setServerPort(int serverPort) + { + this.serverPort = serverPort; + } + + public String getKeystorePath() + { + return keystorePath; + } + + public void setKeystorePath(String keystorePath) + { + this.keystorePath = keystorePath; + } + + public VersionInformation getVersionInfo() + { + return versionInfo; + } + + public void setVersionInfo(VersionInformation versionInfo) + { + this.versionInfo = versionInfo; + } + + @Override + public String toString() + { + return "ServerInfo [databaseUrl=" + databaseUrl + ", databaseName=" + databaseName + ", databaseUsername=" + databaseUsername + ", serverPort=" + serverPort + ", keystorePath=" + keystorePath + ", versionInfo=" + versionInfo + "]"; + } +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java index 3272b8046..2e4d55abf 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java @@ -33,6 +33,8 @@ import de.deadlocker8.budgetmasterserver.server.charts.MonthInOutSum; import de.deadlocker8.budgetmasterserver.server.database.DatabaseDelete; import de.deadlocker8.budgetmasterserver.server.database.DatabaseExport; import de.deadlocker8.budgetmasterserver.server.database.DatabaseImport; +import de.deadlocker8.budgetmasterserver.server.info.InformationGet; +import de.deadlocker8.budgetmasterserver.server.info.VersionGet; import de.deadlocker8.budgetmasterserver.server.log.LogDelete; import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentAdd; import de.deadlocker8.budgetmasterserver.server.payment.normal.PaymentDelete; @@ -59,7 +61,6 @@ import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGet; import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGetAll; import de.deadlocker8.budgetmasterserver.server.tag.tag.TagGetByName; import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; -import de.deadlocker8.budgetmasterserver.server.version.VersionGet; import logger.Logger; import spark.Spark; import spark.route.RouteOverview; @@ -167,6 +168,7 @@ public class SparkServer post("/database", new DatabaseImport(handler, tagHandler, gson)); delete("/database", new DatabaseDelete(handler, settings)); + get("/info", new InformationGet(gson, versionInfo, settings)); get("/version", new VersionGet(gson, versionInfo)); delete("/log", new LogDelete()); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java new file mode 100644 index 000000000..199b19a2a --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java @@ -0,0 +1,38 @@ +package de.deadlocker8.budgetmasterserver.server.info; + +import com.google.gson.Gson; + +import de.deadlocker8.budgetmaster.logic.serverconnection.ServerInformation; +import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; +import de.deadlocker8.budgetmasterserver.logic.Settings; +import spark.Request; +import spark.Response; +import spark.Route; + +public class InformationGet implements Route +{ + private Gson gson; + private VersionInformation versionInfo; + private Settings settings; + + public InformationGet(Gson gson, VersionInformation versionInfo, Settings settings) + { + this.gson = gson; + this.versionInfo = versionInfo; + this.settings = settings; + } + + @Override + public Object handle(Request req, Response res) throws Exception + { + ServerInformation serverInfo = new ServerInformation(); + serverInfo.setDatabaseUrl(settings.getDatabaseUrl()); + serverInfo.setDatabaseName(settings.getDatabaseName()); + serverInfo.setDatabaseUsername(settings.getDatabaseUsername()); + serverInfo.setServerPort(settings.getServerPort()); + serverInfo.setKeystorePath(settings.getKeystorePath()); + serverInfo.setVersionInfo(versionInfo); + + return gson.toJson(serverInfo); + } +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/version/VersionGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java similarity index 86% rename from BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/version/VersionGet.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java index dfbb05e48..eb77c8cbc 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/version/VersionGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmasterserver.server.version; +package de.deadlocker8.budgetmasterserver.server.info; import com.google.gson.Gson; @@ -14,7 +14,7 @@ public class VersionGet implements Route public VersionGet(Gson gson, VersionInformation versionInfo) { - this.gson=gson; + this.gson = gson; this.versionInfo = versionInfo; } -- GitLab