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 0000000000000000000000000000000000000000..977faa7434dd7b1b66e1b237fc328075fd700464 --- /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 907982b0500c6e3d60d9a1a2d6bcc78a4096e71a..9e8536214ad9139ac1b130945557fdf29f82b2ce 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 314ada7b021bb41b0f8b4f5f8e41fd6645e42e08..bc2a8acd373c35ec0eb8b684e478e5434222c599 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 e04ab2d77f742a3a2fd0439b0ae051dc94104d89..cd04ca5d70863a407fd6ca139a189ea4eb86570d 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 0000000000000000000000000000000000000000..d4172b446694ea58eb4b269f57903837d87f17bc --- /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 3272b8046a9a0ff83872e210074e65d980de064f..2e4d55abf7d2113c3ada2fe859f6d97ac484f2ae 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 0000000000000000000000000000000000000000..199b19a2a283a7bce75bb9352d6af8d62489b679 --- /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 dfbb05e481e274b158baf6c4e5e0371ae4cd7313..eb77c8cbc3f574f2818093c2289864e174fa62bf 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; }