mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-11-03 01:10:17 +01:00
Disabled Bukkit/Sponge webserver if Proxy in db
This commit is contained in:
parent
3c2b73794a
commit
f27aece88b
@ -20,6 +20,7 @@ import com.djrapitops.plan.api.PlanAPI;
|
|||||||
import com.djrapitops.plan.capability.CapabilityServiceImplementation;
|
import com.djrapitops.plan.capability.CapabilityServiceImplementation;
|
||||||
import com.djrapitops.plan.delivery.DeliveryUtilities;
|
import com.djrapitops.plan.delivery.DeliveryUtilities;
|
||||||
import com.djrapitops.plan.delivery.export.ExportSystem;
|
import com.djrapitops.plan.delivery.export.ExportSystem;
|
||||||
|
import com.djrapitops.plan.delivery.webserver.NonProxyWebserverDisableChecker;
|
||||||
import com.djrapitops.plan.delivery.webserver.WebServer;
|
import com.djrapitops.plan.delivery.webserver.WebServer;
|
||||||
import com.djrapitops.plan.delivery.webserver.WebServerSystem;
|
import com.djrapitops.plan.delivery.webserver.WebServerSystem;
|
||||||
import com.djrapitops.plan.exceptions.EnableException;
|
import com.djrapitops.plan.exceptions.EnableException;
|
||||||
@ -40,6 +41,7 @@ import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
|||||||
import com.djrapitops.plan.storage.file.PlanFiles;
|
import com.djrapitops.plan.storage.file.PlanFiles;
|
||||||
import com.djrapitops.plan.version.VersionCheckSystem;
|
import com.djrapitops.plan.version.VersionCheckSystem;
|
||||||
import com.djrapitops.plugin.logging.L;
|
import com.djrapitops.plugin.logging.L;
|
||||||
|
import com.djrapitops.plugin.logging.console.PluginLogger;
|
||||||
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@ -76,6 +78,7 @@ public class PlanSystem implements SubSystem {
|
|||||||
private final ExtensionServiceImplementation extensionService;
|
private final ExtensionServiceImplementation extensionService;
|
||||||
private final QueryServiceImplementation queryService;
|
private final QueryServiceImplementation queryService;
|
||||||
private final SettingsServiceImplementation settingsService;
|
private final SettingsServiceImplementation settingsService;
|
||||||
|
private final PluginLogger logger;
|
||||||
private final ErrorHandler errorHandler;
|
private final ErrorHandler errorHandler;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@ -97,6 +100,7 @@ public class PlanSystem implements SubSystem {
|
|||||||
ExtensionServiceImplementation extensionService,
|
ExtensionServiceImplementation extensionService,
|
||||||
QueryServiceImplementation queryService,
|
QueryServiceImplementation queryService,
|
||||||
SettingsServiceImplementation settingsService,
|
SettingsServiceImplementation settingsService,
|
||||||
|
PluginLogger logger,
|
||||||
ErrorHandler errorHandler,
|
ErrorHandler errorHandler,
|
||||||
PlanAPI.PlanAPIHolder apiHolder
|
PlanAPI.PlanAPIHolder apiHolder
|
||||||
) {
|
) {
|
||||||
@ -117,6 +121,7 @@ public class PlanSystem implements SubSystem {
|
|||||||
this.extensionService = extensionService;
|
this.extensionService = extensionService;
|
||||||
this.queryService = queryService;
|
this.queryService = queryService;
|
||||||
this.settingsService = settingsService;
|
this.settingsService = settingsService;
|
||||||
|
this.logger = logger;
|
||||||
this.errorHandler = errorHandler;
|
this.errorHandler = errorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,6 +154,14 @@ public class PlanSystem implements SubSystem {
|
|||||||
listenerSystem,
|
listenerSystem,
|
||||||
taskSystem
|
taskSystem
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Disables Webserver if Proxy is detected in the database
|
||||||
|
if (serverInfo.getServer().isNotProxy()) {
|
||||||
|
processing.submitNonCritical(new NonProxyWebserverDisableChecker(
|
||||||
|
configSystem.getConfig(), databaseSystem, webServerSystem, logger, errorHandler
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
settingsService.register();
|
settingsService.register();
|
||||||
queryService.register();
|
queryService.register();
|
||||||
extensionService.register();
|
extensionService.register();
|
||||||
|
@ -0,0 +1,83 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of Player Analytics (Plan).
|
||||||
|
*
|
||||||
|
* Plan is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License v3 as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Plan is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public License
|
||||||
|
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
package com.djrapitops.plan.delivery.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.storage.database.DBSystem;
|
||||||
|
import com.djrapitops.plan.storage.database.queries.objects.ServerQueries;
|
||||||
|
import com.djrapitops.plugin.logging.L;
|
||||||
|
import com.djrapitops.plugin.logging.console.PluginLogger;
|
||||||
|
import com.djrapitops.plugin.logging.error.ErrorHandler;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In charge of disabling Webserver if a Proxy server is detected in the database.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class NonProxyWebserverDisableChecker implements Runnable {
|
||||||
|
|
||||||
|
private final PlanConfig config;
|
||||||
|
private final DBSystem dbSystem;
|
||||||
|
private final WebServerSystem webServerSystem;
|
||||||
|
private final PluginLogger logger;
|
||||||
|
private final ErrorHandler errorHandler;
|
||||||
|
|
||||||
|
public NonProxyWebserverDisableChecker(
|
||||||
|
PlanConfig config,
|
||||||
|
DBSystem dbSystem,
|
||||||
|
WebServerSystem webServerSystem,
|
||||||
|
PluginLogger logger,
|
||||||
|
ErrorHandler errorHandler
|
||||||
|
) {
|
||||||
|
this.config = config;
|
||||||
|
this.dbSystem = dbSystem;
|
||||||
|
this.webServerSystem = webServerSystem;
|
||||||
|
this.logger = logger;
|
||||||
|
this.errorHandler = errorHandler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (config.isFalse(PluginSettings.PROXY_COPY_CONFIG)) return;
|
||||||
|
|
||||||
|
dbSystem.getDatabase().query(ServerQueries.fetchProxyServerInformation()).ifPresent(proxy -> {
|
||||||
|
logger.info("Proxy server detected in the database - Proxy Webserver address is '" + proxy.getWebAddress() + "'.");
|
||||||
|
WebServer webServer = webServerSystem.getWebServer();
|
||||||
|
|
||||||
|
if (webServer.isEnabled()) {
|
||||||
|
disableWebserver(webServer);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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.");
|
||||||
|
webServer.disable();
|
||||||
|
try {
|
||||||
|
config.set(WebserverSettings.DISABLED, true);
|
||||||
|
config.save();
|
||||||
|
logger.warn("Note: Set '" + WebserverSettings.DISABLED.getPath() + "' to true");
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
errorHandler.log(L.WARN, this.getClass(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -62,7 +62,7 @@ public class BukkitConfigSystem extends ConfigSystem {
|
|||||||
@Override
|
@Override
|
||||||
public void enable() throws EnableException {
|
public void enable() throws EnableException {
|
||||||
super.enable();
|
super.enable();
|
||||||
if (config.isTrue(PluginSettings.BUNGEE_COPY_CONFIG)) {
|
if (config.isTrue(PluginSettings.PROXY_COPY_CONFIG)) {
|
||||||
serverSettingsManager.enable();
|
serverSettingsManager.enable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -136,7 +136,8 @@ public class ConfigUpdater {
|
|||||||
new ConfigChange.Removed("Display_options.Show_player_IPs"),
|
new ConfigChange.Removed("Display_options.Show_player_IPs"),
|
||||||
new ConfigChange.Removed("Export.Parts.JavaScript_and_CSS"),
|
new ConfigChange.Removed("Export.Parts.JavaScript_and_CSS"),
|
||||||
new ConfigChange.Moved("Plugins.LiteBans", "Plugins.Litebans"),
|
new ConfigChange.Moved("Plugins.LiteBans", "Plugins.Litebans"),
|
||||||
new ConfigChange.Moved("Plugins.BuyCraft", "Plugins.Buycraft")
|
new ConfigChange.Moved("Plugins.BuyCraft", "Plugins.Buycraft"),
|
||||||
|
new ConfigChange.Moved("Plugin.Configuration.Allow_bungeecord_to_manage_settings", "Plugin.Configuration.Allow_proxy_to_manage_settings")
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ public class PluginSettings {
|
|||||||
public static final Setting<Integer> KEEP_LOGS_DAYS = new IntegerSetting("Plugin.Logging.Delete_logs_after_days", Setting::timeValidator);
|
public static final Setting<Integer> KEEP_LOGS_DAYS = new IntegerSetting("Plugin.Logging.Delete_logs_after_days", Setting::timeValidator);
|
||||||
public static final Setting<Boolean> CHECK_FOR_UPDATES = new BooleanSetting("Plugin.Update_notifications.Check_for_updates");
|
public static final Setting<Boolean> CHECK_FOR_UPDATES = new BooleanSetting("Plugin.Update_notifications.Check_for_updates");
|
||||||
public static final Setting<Boolean> NOTIFY_ABOUT_DEV_RELEASES = new BooleanSetting("Plugin.Update_notifications.Notify_about_DEV_releases");
|
public static final Setting<Boolean> NOTIFY_ABOUT_DEV_RELEASES = new BooleanSetting("Plugin.Update_notifications.Notify_about_DEV_releases");
|
||||||
public static final Setting<Boolean> BUNGEE_COPY_CONFIG = new BooleanSetting("Plugin.Configuration.Allow_bungeecord_to_manage_settings");
|
public static final Setting<Boolean> PROXY_COPY_CONFIG = new BooleanSetting("Plugin.Configuration.Allow_proxy_to_manage_settings");
|
||||||
|
|
||||||
private PluginSettings() {
|
private PluginSettings() {
|
||||||
/* static variable class */
|
/* static variable class */
|
||||||
|
@ -179,6 +179,6 @@ Export:
|
|||||||
# If a plugin is causing issues the integration can be disabled by setting Plugin_name.Enabled: false
|
# If a plugin is causing issues the integration can be disabled by setting Plugin_name.Enabled: false
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
Plugins:
|
Plugins:
|
||||||
BuyCraft:
|
Buycraft:
|
||||||
# http://help.buycraft.net/article/36-where-to-find-the-secret-key
|
# http://help.buycraft.net/article/36-where-to-find-the-secret-key
|
||||||
Secret: "-"
|
Secret: "-"
|
@ -20,7 +20,7 @@ Plugin:
|
|||||||
Check_for_updates: true
|
Check_for_updates: true
|
||||||
Notify_about_DEV_releases: false
|
Notify_about_DEV_releases: false
|
||||||
Configuration:
|
Configuration:
|
||||||
Allow_bungeecord_to_manage_settings: true
|
Allow_proxy_to_manage_settings: true
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
# Supported databases: SQLite, H2, MySQL
|
# Supported databases: SQLite, H2, MySQL
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
@ -185,7 +185,7 @@ Export:
|
|||||||
# If a plugin is causing issues the integration can be disabled by setting Plugin_name.Enabled: false
|
# If a plugin is causing issues the integration can be disabled by setting Plugin_name.Enabled: false
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
Plugins:
|
Plugins:
|
||||||
BuyCraft:
|
Buycraft:
|
||||||
# http://help.buycraft.net/article/36-where-to-find-the-secret-key
|
# http://help.buycraft.net/article/36-where-to-find-the-secret-key
|
||||||
Secret: '-'
|
Secret: '-'
|
||||||
Factions:
|
Factions:
|
||||||
|
@ -112,7 +112,7 @@ public class ConfigSettingKeyTest {
|
|||||||
|
|
||||||
// Server settings contained in the key classes, remove
|
// Server settings contained in the key classes, remove
|
||||||
settings.remove(PluginSettings.SERVER_NAME);
|
settings.remove(PluginSettings.SERVER_NAME);
|
||||||
settings.remove(PluginSettings.BUNGEE_COPY_CONFIG);
|
settings.remove(PluginSettings.PROXY_COPY_CONFIG);
|
||||||
settings.remove(DatabaseSettings.TYPE);
|
settings.remove(DatabaseSettings.TYPE);
|
||||||
settings.remove(DisplaySettings.WORLD_ALIASES);
|
settings.remove(DisplaySettings.WORLD_ALIASES);
|
||||||
return settings;
|
return settings;
|
||||||
|
Loading…
Reference in New Issue
Block a user