Fix webserver disabling always by accident

This commit is contained in:
Aurora Lahtela 2023-10-10 10:03:50 +03:00
parent 176c090f39
commit b92dfdb127
4 changed files with 21 additions and 5 deletions

View File

@ -189,7 +189,7 @@ public class PlanSystem implements SubSystem {
// Disables Webserver if Proxy is detected in the database
if (serverInfo.getServer().isNotProxy()) {
processing.submitNonCritical(new NonProxyWebserverDisableChecker(
configSystem.getConfig(), webServerSystem.getAddresses(), webServerSystem, logger, errorLogger
configSystem.getConfig(), localeSystem.getLocale(), webServerSystem.getAddresses(), webServerSystem, logger, errorLogger
));
}

View File

@ -72,7 +72,7 @@ public class Addresses {
}
public Optional<String> getMainAddress() {
Optional<String> proxyServerAddress = getProxyServerAddress();
Optional<String> proxyServerAddress = getAnyValidServerAddress();
return proxyServerAddress.isPresent() ? proxyServerAddress : getAccessAddress();
}
@ -105,6 +105,14 @@ public class Addresses {
}
public Optional<String> getProxyServerAddress() {
return dbSystem.getDatabase().query(ServerQueries.fetchProxyServers())
.stream()
.map(Server::getWebAddress)
.filter(this::isValidAddress)
.findAny();
}
public Optional<String> getAnyValidServerAddress() {
return dbSystem.getDatabase().query(ServerQueries.fetchPlanServerInformationCollection())
.stream()
.map(Server::getWebAddress)

View File

@ -20,6 +20,8 @@ import com.djrapitops.plan.delivery.webserver.http.WebServer;
import com.djrapitops.plan.settings.config.PlanConfig;
import com.djrapitops.plan.settings.config.paths.PluginSettings;
import com.djrapitops.plan.settings.config.paths.WebserverSettings;
import com.djrapitops.plan.settings.locale.Locale;
import com.djrapitops.plan.settings.locale.lang.PluginLang;
import com.djrapitops.plan.utilities.logging.ErrorContext;
import com.djrapitops.plan.utilities.logging.ErrorLogger;
import net.playeranalytics.plugin.server.PluginLogger;
@ -34,6 +36,7 @@ import java.io.IOException;
public class NonProxyWebserverDisableChecker implements Runnable {
private final PlanConfig config;
private final Locale locale;
private final Addresses addresses;
private final WebServerSystem webServerSystem;
private final PluginLogger logger;
@ -41,12 +44,14 @@ public class NonProxyWebserverDisableChecker implements Runnable {
public NonProxyWebserverDisableChecker(
PlanConfig config,
Locale locale,
Addresses addresses,
WebServerSystem webServerSystem,
PluginLogger logger,
ErrorLogger errorLogger
) {
this.config = config;
this.locale = locale;
this.addresses = addresses;
this.webServerSystem = webServerSystem;
this.logger = logger;
@ -58,7 +63,7 @@ public class NonProxyWebserverDisableChecker implements Runnable {
if (config.isFalse(PluginSettings.PROXY_COPY_CONFIG)) return;
addresses.getProxyServerAddress().ifPresent(address -> {
logger.info("Proxy server detected in the database - Proxy Webserver address is '" + address + "'.");
logger.info(locale.getString(PluginLang.ENABLE_NOTIFY_PROXY_ADDRESS, address));
WebServer webServer = webServerSystem.getWebServer();
if (webServer.isEnabled()) {
@ -68,12 +73,12 @@ public class NonProxyWebserverDisableChecker implements Runnable {
}
private void disableWebserver(WebServer webServer) {
logger.warn("Disabling Webserver on this server - You can override this behavior by setting '" + PluginSettings.PROXY_COPY_CONFIG.getPath() + "' to false.");
logger.warn(locale.getString(PluginLang.ENABLE_NOTIFY_PROXY_DISABLED_WEBSERVER, PluginSettings.PROXY_COPY_CONFIG.getPath()));
webServer.disable();
try {
config.set(WebserverSettings.DISABLED, true);
config.save();
logger.warn("Note: Set '" + WebserverSettings.DISABLED.getPath() + "' to true");
logger.warn(locale.getString(PluginLang.ENABLE_NOTIFY_SETTING_CHANGE, WebserverSettings.DISABLED.getPath(), "true"));
} catch (IOException e) {
errorLogger.warn(e, ErrorContext.builder()
.whatToDo("Set '" + WebserverSettings.DISABLED.getPath() + "' to true manually.")

View File

@ -29,6 +29,9 @@ public enum PluginLang implements Lang {
API_ADD_RESOURCE_CSS("plugin.apiCSSAdded", "API - css+", "PageExtension: ${0} added stylesheet(s) to ${1}, ${2}"),
RELOAD_LOCALE("plugin.localeReloaded", "API - locale reload", "Custom locale.yml was modified so it was reloaded and is now in use."),
ENABLE_NOTIFY_PROXY_ADDRESS("plugin.enable.notify.proxyAddress", "Enable - Notify proxy address", "Proxy server detected in the database - Proxy Webserver address is '${0}'."),
ENABLE_NOTIFY_PROXY_DISABLED_WEBSERVER("plugin.enable.notify.proxyDisabledWebserver", "Enable - Notify proxy disabled webserver", "Disabling Webserver on this server - You can override this behavior by setting '${0}' to false."),
ENABLE_NOTIFY_SETTING_CHANGE("plugin.enable.notify.settingChange", "Enable - Notify settingChange", "Note: Set '${0}' to ${1}"),
ENABLE_NOTIFY_STORING_PRESERVED_SESSIONS("plugin.enable.notify.storeSessions", "Enable - Storing preserved sessions", "Storing sessions that were preserved before previous shutdown."),
ENABLE_NOTIFY_EMPTY_IP("plugin.enable.notify.emptyIP", "Enable - Notify Empty IP", "IP in server.properties is empty & Alternative_IP is not in use. Incorrect links might be given!"),
ENABLE_NOTIFY_BAD_IP("plugin.enable.notify.badIP", "Enable - Notify Bad IP", "0.0.0.0 is not a valid address, set up Alternative_IP settings. Incorrect links might be given!"),