Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Плагин [GEN] WhiteListSQL v1.0 - Удаленный вайтлист [1.7.2-R0.3]

Тема в разделе "Релизы плагинов", создана пользователем serega6531, 13 фев 2014.

  1. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    WhiteListSQL - Удаленный вайтлист:
    Версия: v1.0

    Этот плагин позволяет сделать вайтлист в вашей mysql базе данных. Содержит API и поддерживает мультисерверность.

    Для разделения по серверам служит колонка serverId. Он настраивается в конфиге.

    Для работы плагина нужен SQLibrary.

    Скачать плагин
    Исходный код:

    Код:
    package ru.serega6531.WhiteListSQL;
    
    import java.util.logging.Logger;
    
    import lib.PatPeter.SQLibrary.Database;
    import lib.PatPeter.SQLibrary.MySQL;
    
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerLoginEvent;
    import org.bukkit.event.player.PlayerLoginEvent.Result;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class WhiteListSQL extends JavaPlugin implements Listener {
       
        private static Database sql;
        private Logger logger;
        private FileConfiguration config;
        private static String serverId;
       
        @Override
        public void onEnable(){
            logger = getLogger();
            saveDefaultConfig();
            config = getConfig();
            serverId = config.getString("serverId", "DefaultServerId");
            sql = new MySQL(
                    logger,
                    "[WhiteListSQL]",
                    config.getString("mysql.host"),
                    config.getInt("mysql.port"),
                    config.getString("mysql.database"),
                    config.getString("mysql.username"),
                    config.getString("mysql.password"));
            WhiteListAPI.createDBTables();
            Bukkit.getPluginManager().registerEvents(this, this);
            logger.info("WhiteListSQL loaded!");
        }
       
        @Override
        public void onDisable(){
            sql.close();
            logger.info("WhiteListSQL unloaded!");
        }
       
        @EventHandler
        public void onPlayerLogin(PlayerLoginEvent e){
            if(!(WhiteListAPI.isInWhiteList(e.getPlayer()))){
                e.disallow(Result.KICK_WHITELIST, "Not in whitelist!");
            }
        }
       
        public static Database getSQL(){
            return sql;
        }
       
        public static String getServerId(){
            return serverId;
        }
    
    }
    Код:
    package ru.serega6531.WhiteListSQL;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.bukkit.entity.Player;
    
    import lib.PatPeter.SQLibrary.Database;
    
    public class WhiteListAPI {
       
        public static void addToWhiteList(String player){
            addToWhiteList(player, WhiteListSQL.getServerId());
        }
       
        public static void addToWhiteList(Player player){
            addToWhiteList(player.getName(), WhiteListSQL.getServerId());
        }
       
        public static void addToWhiteList(String player, String serverId){
            SQLQuery("INSERT INTO `whitelist` VALUES ('"+ player +"','"+ serverId +"')");
        }
       
        public static void removeFromWhiteList(String player){
            removeFromWhiteList(player, WhiteListSQL.getServerId());
        }
       
        public static void removeFromWhiteList(Player player){
            removeFromWhiteList(player.getName(), WhiteListSQL.getServerId());
        }
       
        public static void removeFromWhiteList(String player, String serverId){
            SQLQuery("DELETE FROM `whitelist` WHERE `username`='"+ player +"' AND `serverId`='"+ serverId +"'");
        }
       
        public static boolean isInWhiteList(String player){
            return isInWhiteList(player, WhiteListSQL.getServerId());
        }
       
        public static boolean isInWhiteList(Player player){
            return isInWhiteList(player.getName(), WhiteListSQL.getServerId());
        }
       
        public static boolean isInWhiteList(String player, String serverId){
            ResultSet result = SQLQuery("SELECT * FROM `whitelist` WHERE `username`='"+ player +"' AND `serverId`='"+ serverId +"'");
            try {
                return result.next();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return false;
        }
       
        public static void createDBTables(){
            SQLQuery("CREATE TABLE IF NOT EXISTS `whitelist` ("
                    +"`username` TEXT NOT NULL,"
                    +"`serverId` TEXT NOT NULL)");
        }
       
        private static ResultSet SQLQuery(String query){
            Database sql = WhiteListSQL.getSQL();
            if (!(sql.isOpen())){
                sql.open();
            }
            try {
                return sql.query(query);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    }
    Особенности:
    • Whitelist в БД
    • Разделение по серверам
    Changelog:
    1. Релиз плагина
     
    VLADPRO100LORD, eduardavic и 0bsid1 нравится это.
  2. Хостинг MineCraft
    <
  3. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
  4. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    А теперь подумай сколько времени будет висеть сервер если кто-то подключит его к удалённой БД.
     
  5. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Кто-то подключает плагины к удаленным БД?
     
  6. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    WhiteListSQL - Удаленный вайтлист

    Назвался груздем - полезай в кузов.


    В пределах одной машины я могу хардлинков натыкать и не париться.
     
    ql_Nik_lp, Den_Abr и Mik1313 нравится это.
  7. The Midnight Wizard

    The Midnight Wizard Старожил Пользователь

    Баллы:
    153
    Skype:
    you.dont.own.me
    Интиресна, а кавычку можно использовать в нике? :3
     
  8. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Для дорогих людей и опку можно предложить ;D
     
  9. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Никогда не видел ников со спецсимволами
     
  10. The Midnight Wizard

    The Midnight Wizard Старожил Пользователь

    Баллы:
    153
    Skype:
    you.dont.own.me
    Это был намёк на возможную SQL-инъекцию...
     
  11. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    И как же?
     
  12. The Midnight Wizard

    The Midnight Wizard Старожил Пользователь

    Баллы:
    153
    Skype:
    you.dont.own.me
    Не уверен насчет спецсимволов в нике (именно кавычки), но подозреваю, что можно зайти на сервер с ником вроде ' UNION DROP TABLE `whitelist`;--
     
    ql_Nik_lp нравится это.
  13. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Нельзя
     
  14. The Midnight Wizard

    The Midnight Wizard Старожил Пользователь

    Баллы:
    153
    Skype:
    you.dont.own.me
    Через оригинальный клиент - нельзя, через стороннее приложение, с реализованным протоколом майна - можно
     
  15. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Сервер не пустит.
     
  16. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    И от таких случаев лучше использовать PreparedStatement
     
    The Midnight Wizard и ql_Nik_lp нравится это.
  17. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Повеселили :3
    Честно говоря никогда не понимал зачем выкладывать плагины в 50 строк кода...
     
  18. -FoX-

    -FoX- Старожил Пользователь

    Баллы:
    123
    Skype:
    orlov143
    Имя в Minecraft:
    FoX
    Есть замечательный плагин, на вход только с наличием определённого пермишна, по мне он куда проще и удобнее.
     

Поделиться этой страницей