Retrieving a IP to ban from MySQL.

Discussion in 'Plugin Development' started by xDrapor, Apr 3, 2012.

Thread Status:
Not open for further replies.
  1. Offline

    xDrapor

    Alright, so I set up my plugin with MySQL like this:

    Main Class:
    Code:
    package me.xdrapor.dynamicban;
     
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.InetSocketAddress;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import java.awt.Color;
    import java.net.InetSocketAddress;
     
    import lib.PatPeter.SQLibrary.MySQL;
    import me.xdrapor.dynamicban.DynamicBan;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import me.xdrapor.dynamicban.DynamicListener;
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.FileConfigurationOptions;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Event;
     
    import me.xdrapor.dynamicban.commands.DynamicCheck;
    import me.xdrapor.dynamicban.commands.DynamicCheckBan;
    import me.xdrapor.dynamicban.commands.DynamicIPBan;
    import me.xdrapor.dynamicban.commands.DynamicIPBanKick;
    import me.xdrapor.dynamicban.commands.DynamicIPList;
    import me.xdrapor.dynamicban.commands.DynamicIPUnban;
    import me.xdrapor.dynamicban.commands.DynamicOfflineIPCheck;
    import me.xdrapor.dynamicban.commands.DynamicReload;
     
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.java.JavaPlugin;
     
    @SuppressWarnings("unused")
    public class DynamicBan extends JavaPlugin implements CommandExecutor{
          public MySQL mysql;
          public String host;  //<--- I use a config file to fill these up, if you don't fill them up yourself.
          public String port;
          public String dbname;
          public String user;
          public String password;
          public String tablename;
        public DynamicListener playerListener = new DynamicListener(this);
        public FileConfiguration customConfig = null;
        private File customConfigurationFile = null;
        public Logger log = Logger.getLogger("Minecraft");
       
        private DynamicIPBan myExecutor;
        private DynamicIPBanKick myExecutor2;
        private DynamicCheck myExecutor3;
        private DynamicIPList myExecutor4;
        private DynamicOfflineIPCheck myExecutor5;
        private DynamicIPUnban myExecutor6;
        private DynamicReload myExecutor7;
        private DynamicCheckBan myExecutor8;
        public void reloadCustomConfig() {
            if (customConfigurationFile == null) {
            customConfigurationFile = new File(getDataFolder(), "users.yml");
            }
            customConfig = YamlConfiguration.loadConfiguration(customConfigurationFile);
       
            // Look for defaults in the jar
            InputStream defConfigStream = getResource("users.yml");
            if (defConfigStream != null) {
                YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
                customConfig.setDefaults(defConfig);
            }
        }
        public FileConfiguration getCustomConfig() {
            if (customConfig == null) {
                reloadCustomConfig();
            }
            return customConfig;
        }
        public void saveCustomConfig() {
            if (customConfig == null || customConfigurationFile == null) {
            return;
            }
            try {
                customConfig.save(customConfigurationFile);
            } catch (IOException ex) {
                Logger.getLogger(JavaPlugin.class.getName()).log(Level.SEVERE, "Could not save loglist to " + customConfigurationFile, ex);
               
            }
            return;
        }   
        public void sqlConnection() {
                    host = this.getConfig().getString("mysql.host");
                      port = this.getConfig().getString("mysql.port");
                      dbname = this.getConfig().getString("mysql.dbname");
                      user = this.getConfig().getString("mysql.username");
                    password = this.getConfig().getString("mysql.password");
            mysql = new MySQL(log,
                            "[DynamicBan]",
                            host,
                          port,
                          dbname,
                          user,
                          password);
                    try {
                        this.mysql.open();
                    } catch (Exception e) {
                        this.log.info(e.getMessage());
                    }
            }
        public void sqlDoesDatabaseExist() {
                if(mysql.checkTable("dynamicban_data")){
       
                  }else{
                      mysql.query("CREATE TABLE dynamicban_data (playername, ipaddress)");
       
                      System.out.println("Created database.");
                  }
       
            }
        public void onEnable() {
            getServer().getPluginManager().registerEvents(playerListener, this);
            myExecutor = new DynamicIPBan(this);
            myExecutor2 = new DynamicIPBanKick(this);
            myExecutor3 = new DynamicCheck(this);
            myExecutor4 = new DynamicIPList(this);
            myExecutor5 = new DynamicOfflineIPCheck(this);
            myExecutor6 = new DynamicIPUnban(this);
            myExecutor7 = new DynamicReload(this);
            myExecutor8 = new DynamicCheckBan(this);
            getCommand("dynban").setExecutor(myExecutor);
            getCommand("dynbk").setExecutor(myExecutor2);
            getCommand("dynip").setExecutor(myExecutor3);
            getCommand("dynlist").setExecutor(myExecutor4);
            getCommand("dynunban").setExecutor(myExecutor6);
            getCommand("dynlogip").setExecutor(myExecutor5);
            getCommand("dynreload").setExecutor(myExecutor7);
            getCommand("dynstatus").setExecutor(myExecutor8);
            System.out.println("[" + getDescription().getName() + "] : Plugin has been enabled!");
            getConfig().options().copyDefaults(true);
            saveConfig();
            System.out.println("[" + getDescription().getName() + "] : Author of this version: xDrapor");
            System.out.println("[" + getDescription().getName() + "] : Using CraftBukkit version " + this.getServer().getBukkitVersion() + "!");
            System.out.println("[" + getDescription().getName() + "] : Checking for PermissionsEx...");
            Plugin PermissionsEx = this.getServer().getPluginManager().getPlugin("PermissionsEx");
            if (PermissionsEx != null) {
                if (!this.getServer().getPluginManager().isPluginEnabled(PermissionsEx)) {
                    this.getServer().getPluginManager().enablePlugin(PermissionsEx);
                    System.out.println("[DynaminBan] : " + "Using PermissionsEx" + " " + PermissionsEx.getDescription().getVersion() + " " + "by"+ " " + PermissionsEx.getDescription().getAuthors());
                }
            } else {
                System.out.println("[DynamicBan] : PermissionsEx not installed! Defaulting to operators or other supported Permissions plugins!");
                return; 
            }
            if(getConfig().getString("config.use_mysql") != "false"){
            try{
                sqlConnection();
                sqlDoesDatabaseExist();
            }catch (Exception e) {
                this.log.info(e.getMessage());
            }
        }
        }
     
        public void onDisable() {
            saveCustomConfig();
            saveConfig();
            mysql.close();
            System.out.println("[" + getDescription().getName() + "] Plugin has been disabled!");
            }
    public void addPlayer(Player player) {
        for (Player onlinePlayer : getServer().getOnlinePlayers())
        {
                String onlinePlayerName = onlinePlayer.getName();
                InetSocketAddress onlinePlayerIP = onlinePlayer.getAddress();
               
                String undelimited = onlinePlayerIP.toString(); //  /127.0.0.1:34657
                String[] delimitedOne;                          //  127.0.0.1:34657
                String[] delimitedTwo;                          //  127.0.0.1
                String delimiter = "/";
                String delimiterTwo = ":";
                           
                delimitedOne = undelimited.split(delimiter);        //  127.0.0.1:34657
                delimitedTwo = delimitedOne[1].split(delimiterTwo); //  127.0.0.1
                String IPAddressDelimited = delimitedOne[1];        // 127.0.0.1:34657
                String IPAddressDelimitedTwo = delimitedTwo[0];    // 127.0.0.1
        if(! getCustomConfig().contains(onlinePlayerName.toLowerCase())) {
            getCustomConfig().set(onlinePlayerName.toLowerCase() + ".IP-Address", IPAddressDelimitedTwo);
        saveCustomConfig();
        }
        }
    }
        public void addPlayerSQL(Player player)
        {
            for (Player onlinePlayer : getServer().getOnlinePlayers())
            {
                    String onlinePlayerName = onlinePlayer.getName();
                    InetSocketAddress onlinePlayerIP = onlinePlayer.getAddress();
                   
                    String undelimited = onlinePlayerIP.toString(); //  /127.0.0.1:34657
                    String[] delimitedOne;                          //  127.0.0.1:34657
                    String[] delimitedTwo;                          //  127.0.0.1
                    String delimiter = "/";
                    String delimiterTwo = ":";
                               
                    delimitedOne = undelimited.split(delimiter);        //  127.0.0.1:34657
                    delimitedTwo = delimitedOne[1].split(delimiterTwo); //  127.0.0.1
                    String IPAddressDelimited = delimitedOne[1];        // 127.0.0.1:34657
                    String IPAddressDelimitedTwo = delimitedTwo[0];    // 127.0.0.1
            String query = "INSERT INTO dynamicban_data (playername, ipaddress) VALUES (\"" + onlinePlayerName + "\", \"" + IPAddressDelimitedTwo + "\");";
            this.log.info("DynamicBan: "+ query); //DEBUG
            this.mysql.query(query);
            return;
            }
        }
    }
    The player listener checks whether SQL is enabled in the config, and executes the appropriate logging method.

    My question is, how would I get the SQL to work with something like this:

    Code:
    package me.xdrapor.dynamicban.commands;
     
    import me.xdrapor.dynamicban.DynamicBan;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
     
    public class DynamicIPBan implements CommandExecutor
    {
       
        private DynamicBan plugin;
       
        public DynamicIPBan(DynamicBan plugin)
        {
            this.plugin = plugin;
        }
     
        public boolean onCommand(CommandSender cs, Command cmd, String alias, String[] args)
        {
            if(args.length == 0)
            {
                cs.sendMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + "The correct command is /dynban (name)");
                cs.sendMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + "Usage: IP Bans the player specified.");
                return true;
            }
            String offlinePlayerIP = plugin.getCustomConfig().getString(args[0].toLowerCase() + ".IP-Address");
            if(offlinePlayerIP == null && cs.hasPermission("dynamicban.offlineipcheck"))
            {
                cs.sendMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + args[0] + " has never been seen online/is not in the logs!" );
                return true;
            }else
            if (cmd.getName().equalsIgnoreCase("dynban"))
                {
                  String ip = plugin.getCustomConfig().getString(args[0].toLowerCase() + ".IP-Address");
                   
                    if(cs instanceof Player)
                    {
                        Player player = (Player)cs;
                        if(player.hasPermission("dynamicban.ipban"))
                        {
                            player.sendMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + args[0] + "'s IP-Address " + ip + " is now banned!");
                            plugin.getServer().banIP(ip);
                            if (plugin.getConfig().getString("config.broadcast_on_ban", "true") != "false")
                            {
                                plugin.getServer().broadcastMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + ChatColor.AQUA + args[0]+ " " + plugin.getConfig().getString("messages.broadcast_message_ban"));
                                return true;
                                }
                        }
                       
                        else
                        {
                            player.sendMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : You do not have the permissions to ban " + args[0] + "'s IP ");
                        }
                    }
                    else
                    {
                        cs.sendMessage("[DynamicBan] " + args[0] + "'s IP-Address : " + ip + " is now banned!");
                        plugin.getServer().banIP(ip);
                        if (plugin.getConfig().getString("config.broadcast_on_ban", "true") != "false")
                        {
                            plugin.getServer().broadcastMessage(ChatColor.DARK_PURPLE + "[" + ChatColor.DARK_RED + "DynamicBan" + ChatColor.DARK_PURPLE + "] : " + ChatColor.AQUA + args[0]+ " " + plugin.getConfig().getString("messages.broadcast_message_ban"));
                            return true;
                            }
                    }
                }
            return true;
              }
        }
     
  2. Offline

    xDrapor

    Anyone? I just need to get an IP from a table from SQL to ban.
     
Thread Status:
Not open for further replies.

Share This Page