mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-30 16:19:56 +08:00
Fixes some things broken earlier:
- Fixed local InfoRequest handling - Fixed /player/xxx pages causing internal exception - Fixed /server/ pages remaining as "refreshing" page (Caused by Analysis being run before returning the info page, essentially overriding the finished analysis page) - Fixed /folder/xxx pages not having javascript or css.
This commit is contained in:
parent
311be89b03
commit
a8b4caf58b
@ -59,7 +59,7 @@ public class AnalyzeCommand extends SubCommand {
|
||||
Server server = getServer(args).orElseGet(ServerInfo::getServer);
|
||||
UUID serverUUID = server.getUuid();
|
||||
if (!ServerInfo.getServerUUID().equals(serverUUID) || !Analysis.isAnalysisBeingRun()) {
|
||||
InfoSystem.getInstance().sendRequest(new GenerateAnalysisPageRequest(serverUUID));
|
||||
InfoSystem.getInstance().generateAnalysisPage(serverUUID);
|
||||
}
|
||||
sendWebUserNotificationIfNecessary(sender);
|
||||
sendLink(server, sender);
|
||||
|
@ -14,7 +14,9 @@ public class SQLErrorUtil {
|
||||
String message = e.getMessage();
|
||||
if (message.contains("Communications link failure")) {
|
||||
return new FatalDBException("MySQL-connection failed", e);
|
||||
} else if (message.contains("syntax")) {
|
||||
} else if (message.contains("syntax")
|
||||
|| message.contains("SQL Error or missing database")
|
||||
|| message.contains("no such column")) {
|
||||
return new FatalDBException("There is an error in SQL syntax", e);
|
||||
} else if (message.contains("duplicate key")) {
|
||||
return new FatalDBException("An SQL save method attempts to save duplicates.", e);
|
||||
|
@ -56,7 +56,7 @@ public class TransferTable extends Table {
|
||||
columnContent +
|
||||
") VALUES (" +
|
||||
serverTable.statementSelectServerID + ", " +
|
||||
"?, ?, ?, ?, ?)";
|
||||
"?, ?, ?, ?)";
|
||||
|
||||
selectStatement = "SELECT * FROM " + tableName +
|
||||
" WHERE " + columnInfoType + "= ?" +
|
||||
@ -241,7 +241,7 @@ public class TransferTable extends Table {
|
||||
@Override
|
||||
public Optional<UUID> processResults(ResultSet set) throws SQLException {
|
||||
if (set.next()) {
|
||||
return Optional.of(UUID.fromString(set.getString(columnExtraVariables)));
|
||||
return Optional.of(UUID.fromString(set.getString("s_uuid")));
|
||||
}
|
||||
return Optional.empty();
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ public class BukkitInfoSystem extends InfoSystem {
|
||||
if (infoRequest instanceof CacheNetworkPageContentRequest) {
|
||||
return;
|
||||
}
|
||||
infoRequest.placeDataToDatabase();
|
||||
if (infoRequest instanceof InfoRequestWithVariables) {
|
||||
infoRequest.handleRequest(((InfoRequestWithVariables) infoRequest).getVariables());
|
||||
} else {
|
||||
|
@ -36,7 +36,7 @@ public class ConnectionIn {
|
||||
|
||||
private void checkAuthentication(Map<String, String> variables) throws WebException {
|
||||
String sender = variables.get("sender");
|
||||
NullCheck.check(sender, new BadRequestException("Sender ('sender') was not included."));
|
||||
NullCheck.check(sender, new BadRequestException("Sender ('sender') variable not supplied in the request."));
|
||||
UUID serverUUID = UUID.fromString(sender);
|
||||
|
||||
try {
|
||||
@ -44,7 +44,7 @@ public class ConnectionIn {
|
||||
if (infoRequest instanceof RequestSetupRequest) {
|
||||
return;
|
||||
}
|
||||
throw new UnauthorizedServerException(sender + "Sender was not found from database");
|
||||
throw new UnauthorizedServerException(sender + " (Sender) was not found from database");
|
||||
}
|
||||
} catch (DBException e) {
|
||||
throw new TransferDatabaseException(e);
|
||||
|
@ -10,7 +10,7 @@ import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.processing.Processor;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
|
@ -10,7 +10,7 @@ import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.processing.Processor;
|
||||
import com.djrapitops.plan.system.settings.Settings;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
|
@ -9,7 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.TransferDatabaseException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
@ -65,7 +65,7 @@ public class CacheInspectPluginsTabRequest extends InfoRequestWithVariables impl
|
||||
// Available variables: sender, player
|
||||
|
||||
String player = variables.get("player");
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
|
||||
|
||||
UUID uuid = UUID.fromString(player);
|
||||
|
||||
|
@ -9,7 +9,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
|
@ -12,7 +12,7 @@ import com.djrapitops.plan.system.cache.DataCache;
|
||||
import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.pages.parsing.AnalysisPage;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.pages.AnalysisPageResponse;
|
||||
@ -53,7 +53,7 @@ public class GenerateAnalysisPageRequest extends InfoRequestWithVariables implem
|
||||
// Variables available: sender, server
|
||||
|
||||
String server = variables.get("server");
|
||||
NullCheck.check(server, new BadRequestException("Server UUID 'server' variable not supplied."));
|
||||
NullCheck.check(server, new BadRequestException("Server UUID 'server' variable not supplied in the request."));
|
||||
|
||||
UUID serverUUID = UUID.fromString(server);
|
||||
if (!ServerInfo.getServerUUID().equals(serverUUID)) {
|
||||
|
@ -11,7 +11,7 @@ import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebFailException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.pages.parsing.InspectPage;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.utilities.NullCheck;
|
||||
@ -53,7 +53,7 @@ public class GenerateInspectPageRequest extends InfoRequestWithVariables impleme
|
||||
// Available variables: sender, player
|
||||
|
||||
String player = variables.get("player");
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
|
||||
|
||||
UUID uuid = UUID.fromString(player);
|
||||
String html = getHtml(uuid);
|
||||
|
@ -7,7 +7,7 @@ package com.djrapitops.plan.system.info.request;
|
||||
import com.djrapitops.plan.api.exceptions.connection.BadRequestException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
@ -51,7 +51,7 @@ public class GenerateInspectPluginsTabRequest extends InfoRequestWithVariables i
|
||||
// Available variables: sender, player
|
||||
|
||||
String player = variables.get("player");
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied."));
|
||||
NullCheck.check(player, new BadRequestException("Player UUID 'player' variable not supplied in the request."));
|
||||
|
||||
UUID uuid = UUID.fromString(player);
|
||||
String[] navAndhtml = getNavAndHtml(uuid);
|
||||
|
@ -120,15 +120,14 @@ public class ResponseHandler extends TreePageHandler {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (targetString.endsWith(".css")) {
|
||||
return ResponseCache.loadResponse(PageId.CSS.of(targetString), () -> new CSSResponse(targetString));
|
||||
}
|
||||
if (targetString.endsWith(".js")) {
|
||||
return ResponseCache.loadResponse(PageId.JS.of(targetString), () -> new JavaScriptResponse(targetString));
|
||||
}
|
||||
PageHandler pageHandler = getPageHandler(target);
|
||||
if (pageHandler == null) {
|
||||
if (targetString.endsWith(".css")) {
|
||||
return ResponseCache.loadResponse(PageId.CSS.of(targetString), () -> new CSSResponse(targetString));
|
||||
}
|
||||
if (targetString.endsWith(".js")) {
|
||||
return ResponseCache.loadResponse(PageId.JS.of(targetString), () -> new JavaScriptResponse(targetString));
|
||||
}
|
||||
return DefaultResponses.NOT_FOUND.get();
|
||||
} else {
|
||||
if (authentication.isPresent() && pageHandler.isAuthorized(authentication.get(), target)) {
|
||||
|
@ -10,6 +10,7 @@ import com.djrapitops.plan.system.info.connection.ConnectionIn;
|
||||
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
|
||||
import com.djrapitops.plan.system.info.request.InfoRequest;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.utilities.NullCheck;
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
package com.djrapitops.plan.system.webserver.pages;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.WebUserAuthException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.InternalErrorException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.api.exceptions.database.DBException;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
@ -12,6 +13,7 @@ import com.djrapitops.plan.system.database.databases.Database;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
import com.djrapitops.plan.system.webserver.auth.Authentication;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
@ -54,6 +56,7 @@ public class PlayerPageHandler extends PageHandler {
|
||||
}
|
||||
} catch (DBException e) {
|
||||
Log.toLog(this.getClass().getName(), e);
|
||||
throw new InternalErrorException("Analysis", e);
|
||||
}
|
||||
return notFound("Player has not played on this server.");
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
import com.djrapitops.plan.system.webserver.ResponseHandler;
|
||||
import com.djrapitops.plan.system.webserver.auth.Authentication;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.errors.InternalErrorResponse;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
|
@ -30,7 +30,12 @@ public class ServerPageHandler extends PageHandler {
|
||||
@Override
|
||||
public Response getResponse(Request request, List<String> target) {
|
||||
UUID serverUUID = getServerUUID(target);
|
||||
return ResponseCache.loadResponse(PageId.SERVER.of(serverUUID), AnalysisPageResponse::refreshNow);
|
||||
Response response = ResponseCache.loadResponse(PageId.SERVER.of(serverUUID));
|
||||
if (response != null) {
|
||||
return response;
|
||||
} else {
|
||||
return AnalysisPageResponse.refreshNow();
|
||||
}
|
||||
}
|
||||
|
||||
private UUID getServerUUID(List<String> target) {
|
||||
|
@ -8,6 +8,7 @@ import com.djrapitops.plan.api.exceptions.WebUserAuthException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
import com.djrapitops.plan.system.webserver.auth.Authentication;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
@ -2,7 +2,7 @@
|
||||
* Licence is provided in the jar as license.yml also here:
|
||||
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||
*/
|
||||
package com.djrapitops.plan.system.webserver.pages;
|
||||
package com.djrapitops.plan.system.webserver.response;
|
||||
|
||||
import com.djrapitops.plan.system.webserver.response.PromptAuthorizationResponse;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
@ -16,7 +16,8 @@ public class NotFoundResponse extends ErrorResponse {
|
||||
}
|
||||
|
||||
public NotFoundResponse(String msg) {
|
||||
this();
|
||||
super.setHeader("HTTP/1.1 404 Not Found");
|
||||
super.setTitle(Html.FONT_AWESOME_ICON.parse("map-signs") + " 404 Not Found");
|
||||
super.setParagraph(msg);
|
||||
super.replacePlaceholders();
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.djrapitops.plan.system.webserver.response.pages;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.processing.Processor;
|
||||
import com.djrapitops.plan.system.webserver.response.Response;
|
||||
import com.djrapitops.plan.system.webserver.response.errors.ErrorResponse;
|
||||
import com.djrapitops.plugin.api.utility.log.Log;
|
||||
@ -13,12 +14,14 @@ import com.djrapitops.plugin.api.utility.log.Log;
|
||||
public class AnalysisPageResponse extends Response {
|
||||
|
||||
public static AnalysisPageResponse refreshNow() {
|
||||
try {
|
||||
InfoSystem.getInstance().generateAnalysisPageOfThisServer();
|
||||
} catch (WebException e) {
|
||||
// TODO Exception handling
|
||||
Log.toLog(AnalysisPageResponse.class, e);
|
||||
}
|
||||
Processor.queue(() -> {
|
||||
try {
|
||||
InfoSystem.getInstance().generateAnalysisPageOfThisServer();
|
||||
} catch (WebException e) {
|
||||
// TODO Exception handling
|
||||
Log.toLog(AnalysisPageResponse.class, e);
|
||||
}
|
||||
});
|
||||
return new AnalysisPageResponse(getRefreshingHtml());
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.info.connection.WebExceptionLogger;
|
||||
import com.djrapitops.plan.system.info.request.GenerateAnalysisPageRequest;
|
||||
import com.djrapitops.plan.system.info.server.ServerInfo;
|
||||
import com.djrapitops.plan.system.webserver.pages.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.DefaultResponses;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.PageId;
|
||||
import com.djrapitops.plan.system.webserver.response.cache.ResponseCache;
|
||||
import com.djrapitops.plan.system.webserver.response.pages.AnalysisPageResponse;
|
||||
|
Loading…
Reference in New Issue
Block a user