mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-11-04 03:03:43 +01:00 
			
		
		
		
	Added DebugPaste command, to upload settings.yml and latest.log
This commit is contained in:
		@@ -6,6 +6,7 @@ import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.UUID;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.commands.*;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.ChatColor;
 | 
			
		||||
import org.bukkit.Location;
 | 
			
		||||
@@ -18,70 +19,6 @@ import org.bukkit.generator.ChunkGenerator;
 | 
			
		||||
import org.bukkit.plugin.Plugin;
 | 
			
		||||
import org.bukkit.plugin.java.JavaPlugin;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Add;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Auto;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.BukkitCommand;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Chat;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Claim;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Clear;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Cluster;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Comment;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Condense;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Confirm;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Copy;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.CreateRoadSchematic;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Database;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Debug;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugAllowUnsafe;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugClaimTest;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugClear;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugExec;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugFill;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugFixFlags;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugLoadTest;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugRoadRegen;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugSaveTest;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.DebugUUID;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Delete;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Deny;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Disable;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Download;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.FlagCmd;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Help;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Home;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Inbox;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Info;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Inventory;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Kick;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.MainCommand;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Merge;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Move;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.MusicSubcommand;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Purge;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Rate;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.RegenAllRoads;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Reload;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Remove;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.SchematicCmd;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Set;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.SetOwner;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Setup;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Swap;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.TP;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Target;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Template;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Toggle;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Trim;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Trust;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Unclaim;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Undeny;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Unlink;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Untrust;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Update;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.Visit;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.WE_Anywhere;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.list;
 | 
			
		||||
import com.intellectualcrafters.plot.commands.plugin;
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.config.Settings;
 | 
			
		||||
import com.intellectualcrafters.plot.database.plotme.ClassicPlotMeConnector;
 | 
			
		||||
@@ -288,6 +225,7 @@ public class BukkitMain extends JavaPlugin implements Listener, IPlotMain {
 | 
			
		||||
        MainCommand.subCommands.add(new Purge());
 | 
			
		||||
        MainCommand.subCommands.add(new Reload());
 | 
			
		||||
        MainCommand.subCommands.add(new Merge());
 | 
			
		||||
        MainCommand.subCommands.add(new DebugPaste());
 | 
			
		||||
        MainCommand.subCommands.add(new Unlink());
 | 
			
		||||
        MainCommand.subCommands.add(new Kick());
 | 
			
		||||
        MainCommand.subCommands.add(new Rate());
 | 
			
		||||
 
 | 
			
		||||
@@ -55,6 +55,7 @@ public enum Command {
 | 
			
		||||
    ALLOWUNSAFE("debugallowunsafe"),
 | 
			
		||||
    DEBUGLOADTEST("debugloadtest"),
 | 
			
		||||
    DEBUGSAVETEST("debugsavetest"),
 | 
			
		||||
    DEBUG_PASTE("debugpaste", "dp"),
 | 
			
		||||
    UNCLAIM("unclaim"),
 | 
			
		||||
    DEBUGCLEAR("debugclear", "fastclear"),
 | 
			
		||||
    SWAP("swap"),
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,38 @@
 | 
			
		||||
package com.intellectualcrafters.plot.commands;
 | 
			
		||||
 | 
			
		||||
import com.intellectualcrafters.plot.BukkitMain;
 | 
			
		||||
import com.intellectualcrafters.plot.PS;
 | 
			
		||||
import com.intellectualcrafters.plot.config.C;
 | 
			
		||||
import com.intellectualcrafters.plot.object.PlotPlayer;
 | 
			
		||||
import com.intellectualcrafters.plot.util.HastebinUtility;
 | 
			
		||||
import com.intellectualcrafters.plot.util.MainUtil;
 | 
			
		||||
import com.intellectualcrafters.plot.util.TaskManager;
 | 
			
		||||
import org.bukkit.Bukkit;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
public class DebugPaste extends SubCommand {
 | 
			
		||||
 | 
			
		||||
    public DebugPaste() {
 | 
			
		||||
        super(Command.DEBUG_PASTE, "Upload settings.yml & latest.log to hastebin", "", CommandCategory.DEBUG, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean execute(final PlotPlayer plr, String... args) {
 | 
			
		||||
        TaskManager.runTaskAsync(new Runnable() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void run() {
 | 
			
		||||
                try {
 | 
			
		||||
                    String link = HastebinUtility.upload(PS.get().configFile);
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.SETTINGS_PASTE_UPLOADED.s().replace("%url%", link));
 | 
			
		||||
                    link = HastebinUtility.upload(new File(BukkitMain.THIS.getDirectory(), "../../logs/latest.log"));
 | 
			
		||||
                    MainUtil.sendMessage(plr, C.LATEST_LOG_UPLOADED.s().replace("%url%", link));
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -283,6 +283,8 @@ public enum C {
 | 
			
		||||
     * Player not found
 | 
			
		||||
     */
 | 
			
		||||
    INVALID_PLAYER("$2Player not found: $1%s.", "Errors"),
 | 
			
		||||
    SETTINGS_PASTE_UPLOADED("$2settings.yml was uploaded to: $1%url%", "Paste"),
 | 
			
		||||
    LATEST_LOG_UPLOADED("$2latest.log was uploaded to: $1%url%", "Paste"),
 | 
			
		||||
    /*
 | 
			
		||||
     *
 | 
			
		||||
     */
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
package com.intellectualcrafters.plot.util;
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.net.HttpURLConnection;
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.util.regex.Matcher;
 | 
			
		||||
import java.util.regex.Pattern;
 | 
			
		||||
 | 
			
		||||
public class HastebinUtility {
 | 
			
		||||
 | 
			
		||||
    public static final String BIN_URL = "http://hastebin.com/documents", USER_AGENT = "Mozilla/5.0";
 | 
			
		||||
    public static final Pattern PATTERN = Pattern.compile("\\{\"key\":\"([\\S\\s]*)\"\\}");
 | 
			
		||||
 | 
			
		||||
    public static String upload(final File file) throws IOException {
 | 
			
		||||
        StringBuilder content = new StringBuilder();
 | 
			
		||||
        BufferedReader reader = new BufferedReader(new FileReader(file));
 | 
			
		||||
        String line;
 | 
			
		||||
        while ((line = reader.readLine()) != null) {
 | 
			
		||||
            content.append(line).append("\n");
 | 
			
		||||
        }
 | 
			
		||||
        reader.close();
 | 
			
		||||
        URL url = new URL(BIN_URL);
 | 
			
		||||
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
 | 
			
		||||
 | 
			
		||||
        connection.setRequestMethod("POST");
 | 
			
		||||
        connection.setRequestProperty("User-Agent", USER_AGENT);
 | 
			
		||||
        connection.setDoOutput(true);
 | 
			
		||||
 | 
			
		||||
        DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
 | 
			
		||||
        outputStream.writeUTF(content.toString());
 | 
			
		||||
        outputStream.flush();
 | 
			
		||||
        outputStream.close();
 | 
			
		||||
 | 
			
		||||
        BufferedReader in = new BufferedReader(
 | 
			
		||||
                new InputStreamReader(connection.getInputStream()));
 | 
			
		||||
        String inputLine;
 | 
			
		||||
        StringBuffer response = new StringBuffer();
 | 
			
		||||
 | 
			
		||||
        while ((inputLine = in.readLine()) != null) {
 | 
			
		||||
            response.append(inputLine);
 | 
			
		||||
        }
 | 
			
		||||
        in.close();
 | 
			
		||||
 | 
			
		||||
        Matcher matcher = PATTERN.matcher(response.toString());
 | 
			
		||||
        if (matcher.matches()) {
 | 
			
		||||
            return "http://hastebin.com/" + matcher.group(1);
 | 
			
		||||
        } else {
 | 
			
		||||
            throw new RuntimeException("Coldn't read response!");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user