Added custom auto clearlog. Removed keepLogDays.

This commit is contained in:
Robin Kupper
2011-11-09 20:37:36 +01:00
parent 5bb729a37f
commit 1b6269ea3e
4 changed files with 39 additions and 24 deletions

View File

@@ -0,0 +1,28 @@
package de.diddiz.LogBlock;
import static org.bukkit.Bukkit.getConsoleSender;
import static org.bukkit.Bukkit.getLogger;
import static org.bukkit.Bukkit.getServer;
import java.util.Arrays;
import java.util.logging.Level;
public class AutoClearLog implements Runnable
{
private final LogBlock logblock;
AutoClearLog(LogBlock logblock) {
this.logblock = logblock;
}
@Override
public void run() {
final CommandsHandler handler = logblock.getCommandsHandler();
for (final String paramStr : logblock.getLBConfig().autoClearLog)
try {
final QueryParams params = new QueryParams(logblock, getConsoleSender(), Arrays.asList(paramStr.split(" ")));
handler.new CommandClearLog(getServer().getConsoleSender(), params, false);
} catch (final Exception ex) {
getLogger().log(Level.SEVERE, "Failed to schedule auto ClearLog: ", ex);
}
}
}

View File

@@ -326,7 +326,7 @@ public class CommandsHandler implements CommandExecutor
}
private boolean checkRestrictions(CommandSender sender, QueryParams params) {
if (logblock.hasPermission(sender, "logblock.ignoreRestrictions"))
if (sender.isOp() || logblock.hasPermission(sender, "logblock.ignoreRestrictions"))
return true;
if (config.rollbackMaxTime > 0 && (params.before > 0 || params.since > config.rollbackMaxTime)) {
sender.sendMessage(ChatColor.RED + "You are not allowed to rollback more than " + config.rollbackMaxTime + " minutes");

View File

@@ -2,6 +2,7 @@ package de.diddiz.LogBlock;
import static de.diddiz.util.BukkitUtils.friendlyWorldname;
import static de.diddiz.util.Utils.parseTimeSpec;
import static org.bukkit.Bukkit.getConsoleSender;
import static org.bukkit.Bukkit.getLogger;
import java.io.File;
import java.io.IOException;
@@ -15,7 +16,6 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.logging.Level;
import java.util.zip.DataFormatException;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -27,7 +27,8 @@ public class Config
public final String url, user, password;
public final int delayBetweenRuns, forceToProcessAtLeast, timePerRun;
public final boolean useBukkitScheduler;
public final int keepLogDays;
public final boolean enableAutoClearLog;
public final List<String> autoClearLog;
public final boolean dumpDeletedLog;
public boolean logBlockPlacings, logBlockBreaks, logSignTexts, logExplosions, logFire, logLeavesDecay, logLavaFlow, logWaterFlow, logChestAccess, logButtonsAndLevers, logKills, logChat, logSnowForm, logSnowFade, logDoors, logCakes, logEndermen;
public final boolean logCreeperExplosionsAsPlayerWhoTriggeredThese, logPlayerInfo;
@@ -62,7 +63,8 @@ public class Config
def.put("consumer.timePerRun", 200);
def.put("consumer.useBukkitScheduler", true);
def.put("clearlog.dumpDeletedLog", false);
def.put("clearlog.keepLogDays", -1);
def.put("clearlog.enableAutoClearLog", false);
def.put("clearlog.auto", Arrays.asList("world \"world\" before 365 days all", "world \"world\" player lavaflow waterflow leavesdecay before 7 days all", "world world_nether before 365 days all", "world world_nether player lavaflow before 7 days all"));
def.put("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
def.put("logging.logKillsLevel", "PLAYERS");
def.put("logging.logPlayerInfo", true);
@@ -111,9 +113,8 @@ public class Config
forceToProcessAtLeast = config.getInt("consumer.forceToProcessAtLeast", 0);
timePerRun = config.getInt("consumer.timePerRun", 100);
useBukkitScheduler = config.getBoolean("consumer.useBukkitScheduler", true);
keepLogDays = config.getInt("clearlog.keepLogDays", -1);
if (keepLogDays * 86400000L > System.currentTimeMillis())
throw new DataFormatException("Too large timespan for keepLogDays. Must be shorter than " + (int)(System.currentTimeMillis() / 86400000L) + " days.");
enableAutoClearLog = config.getBoolean("clearlog.enableAutoClearLog");
autoClearLog = toStringList(config.getList("clearlog.auto"));
dumpDeletedLog = config.getBoolean("clearlog.dumpDeletedLog", false);
logCreeperExplosionsAsPlayerWhoTriggeredThese = config.getBoolean("logging.logCreeperExplosionsAsPlayerWhoTriggeredThese", false);
logPlayerInfo = config.getBoolean("logging.logPlayerInfo", true);
@@ -161,7 +162,7 @@ public class Config
final int item = tSec.getInt("item", 0);
final QueryParams params = new QueryParams(logblock);
params.prepareToolQuery = true;
params.parseArgs(Bukkit.getConsoleSender(), Arrays.asList(tSec.getString("params").split(" ")));
params.parseArgs(getConsoleSender(), Arrays.asList(tSec.getString("params").split(" ")));
final ToolMode mode = ToolMode.valueOf(tSec.getString("mode").toUpperCase());
final PermissionDefault pdef = PermissionDefault.valueOf(tSec.getString("permissionDefault").toUpperCase());
tools.add(new Tool(toolName, aliases, leftClickBehavior, rightClickBehavior, defaultEnabled, item, params, mode, pdef));

View File

@@ -14,7 +14,6 @@ import java.util.List;
import java.util.Timer;
import java.util.logging.Level;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -25,7 +24,6 @@ import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
import de.diddiz.LogBlock.QueryParams.BlockChangeType;
import de.diddiz.util.MySQLConnectionPool;
public class LogBlock extends JavaPlugin
@@ -131,20 +129,8 @@ public class LogBlock extends JavaPlugin
getLogger().info("[LogBlock] Permissions plugin found.");
} else
getLogger().info("[LogBlock] Permissions plugin not found. Using Bukkit Permissions.");
if (config.keepLogDays >= 0) {
final QueryParams params = new QueryParams(this);
params.before = config.keepLogDays * 1440;
params.bct = BlockChangeType.ALL;
for (final World world : getServer().getWorlds())
if (config.worlds.containsKey(world.getName().hashCode())) {
params.world = world;
try {
commandsHandler.new CommandClearLog(getServer().getConsoleSender(), params.clone(), true);
} catch (final Exception ex) {
getLogger().log(Level.SEVERE, "Failed to schedule ClearLog: ", ex);
}
}
}
if (config.enableAutoClearLog)
getServer().getScheduler().scheduleAsyncDelayedTask(this, new AutoClearLog(this));
getServer().getScheduler().scheduleAsyncDelayedTask(this, new DumpedLogImporter(this));
final LBBlockListener lbBlockListener = new LBBlockListener(this);
final LBPlayerListener lbPlayerListener = new LBPlayerListener(this);