mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-10-03 00:48:00 +02:00
Redirect on an invalid server address
This commit is contained in:
parent
aebf6c0b25
commit
d90273da50
@ -60,13 +60,18 @@ public class ServerPageHandler implements PageHandler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
public Response getResponse(Request request, RequestTarget target) throws WebException {
|
||||||
UUID serverUUID = getServerUUID(target);
|
Optional<UUID> serverUUID = getServerUUID(target);
|
||||||
|
boolean proxy = serverInfo.getServer().isProxy();
|
||||||
checkDBState();
|
if (serverUUID.isPresent()) {
|
||||||
if (serverInfo.getServer().isProxy() && serverInfo.getServerUUID().equals(serverUUID)) {
|
checkDBState();
|
||||||
return responseFactory.networkPageResponse();
|
if (proxy && serverInfo.getServerUUID().equals(serverUUID.get())) {
|
||||||
|
return responseFactory.networkPageResponse();
|
||||||
|
}
|
||||||
|
return responseFactory.serverPageResponse(serverUUID.get());
|
||||||
|
} else {
|
||||||
|
// Redirect to base server page.
|
||||||
|
return responseFactory.redirectResponse(proxy ? "/network" : "/server");
|
||||||
}
|
}
|
||||||
return responseFactory.serverPageResponse(serverUUID);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkDBState() throws ForbiddenException {
|
private void checkDBState() throws ForbiddenException {
|
||||||
@ -76,24 +81,18 @@ public class ServerPageHandler implements PageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private UUID getServerUUID(RequestTarget target) {
|
private Optional<UUID> getServerUUID(RequestTarget target) {
|
||||||
// Default to current server's page
|
|
||||||
UUID serverUUID = serverInfo.getServerUUID();
|
|
||||||
|
|
||||||
if (!target.isEmpty()) {
|
if (!target.isEmpty()) {
|
||||||
try {
|
try {
|
||||||
String serverName = target.get(0);
|
String serverName = target.get(0);
|
||||||
Optional<UUID> serverUUIDOptional = dbSystem.getDatabase()
|
return dbSystem.getDatabase()
|
||||||
.query(ServerQueries.fetchServerMatchingIdentifier(serverName))
|
.query(ServerQueries.fetchServerMatchingIdentifier(serverName))
|
||||||
.map(Server::getUuid);
|
.map(Server::getUuid);
|
||||||
if (serverUUIDOptional.isPresent()) {
|
|
||||||
serverUUID = serverUUIDOptional.get();
|
|
||||||
}
|
|
||||||
} catch (IllegalArgumentException ignore) {
|
} catch (IllegalArgumentException ignore) {
|
||||||
/*ignored*/
|
/*ignored*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return serverUUID;
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -134,6 +134,12 @@ public class ResponseFactory {
|
|||||||
return new ByteResponse(ResponseType.IMAGE, FileResponse.format(fileName), files);
|
return new ByteResponse(ResponseType.IMAGE, FileResponse.format(fileName), files);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Redirect somewhere
|
||||||
|
*
|
||||||
|
* @param location Starts with '/'
|
||||||
|
* @return Redirection response.
|
||||||
|
*/
|
||||||
public Response redirectResponse(String location) {
|
public Response redirectResponse(String location) {
|
||||||
return new RedirectResponse(location);
|
return new RedirectResponse(location);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user