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

Плагин OP-Password-Safe Защищаем сервер от взлома 100% ForceOp

Тема в разделе "Неподтвержденные плагины", создана пользователем Gammer, 20 дек 2014.

  1. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Код в 90 строк. Найс :3
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    Gammer

    Gammer Активный участник Пользователь Заблокирован

    Баллы:
    88
    Имя в Minecraft:
    MrSem
    Нет я всё понимаю. Если вы опытный флаг вам в руки, радуйтесь что я что-то написал, если-же вам что то не нравиться будьте добры, напишите что то своё!
     
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Лолшто? Написать что-то своё?
     
  5. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    +1
     
  6. Автор темы
    Gammer

    Gammer Активный участник Пользователь Заблокирован

    Баллы:
    88
    Имя в Minecraft:
    MrSem
    Я не-прошу вас качать, вам не надо ББ, Найдутся те которым надо!
     
  7. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Это никому не нужно. Плагин не защищает от ForceOPов.
     
  8. Автор темы
    Gammer

    Gammer Активный участник Пользователь Заблокирован

    Баллы:
    88
    Имя в Minecraft:
    MrSem
    Вы проверь те это!
     
  9. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    ((Player)sender).setOp(true)
    Проверил, не работает ваш плагин.
     
  10. kursorik

    kursorik Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kursorik
    Нужен ForceOP на 1.5.2 срочно!
     
  11. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Т.е. Вам нужен плагин который принудительно делает вас оператором?..
     
  12. Mr_Grom

    Mr_Grom Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Failer
    Исходники плагина просто космос! Даже я так не пишу ;D
     
  13. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Смешно было еще про Funny World, да?
     
  14. QuickeeRu

    QuickeeRu Активный участник Пользователь

    Баллы:
    78
    Skype:
    reggiegs
    Имя в Minecraft:
    xDen1el
    Куда не посмотрю, везде девелоперам и ценным пользователям поддакиваешь.[DOUBLEPOST=1422014590,1422014421][/DOUBLEPOST]Как подлиза)
     
  15. kursorik

    kursorik Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    kursorik
    Да. Например ввел команду /shkolohack и стал Оператором :lol:
     
  16. QuickeeRu

    QuickeeRu Активный участник Пользователь

    Баллы:
    78
    Skype:
    reggiegs
    Имя в Minecraft:
    xDen1el
    Дабы не париться, посоветую тебе плагин MyCommands. Там в конфиге настраиваешь сам какая команда какую команду будет производить. Легко сможешь сделать нужный тебе /shkolohack :cute:
     
  17. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Пруфы мне о том, что я лижу жопу каждому. Соглашаюсь только с теми, чье мнение считаю верным. И подлизываться к старожилам мне - зачем? Я сам старожил. Многие пользователи тут - мои знакомые, которых я знаю уже не один год ;) С некоторыми даже виделся. Так что, не надо мне тут. У самого-то еще 68 баллов :D Дорасти до старожила - поговорим.
     
  18. SomeOne

    SomeOne Ньюби

    Баллы:
    1
    Лучше поздно, чем никогда.

    Сейчас попробую запилить одну фишку в код, предложивший @Dereku[DOUBLEPOST=1422184110,1422179375][/DOUBLEPOST]
    Крч вот.
    Этот код ForceOP обойти не сможет) (почти)
    Тут есть специальный список опов, легальных(опнутых с помощью этого плагина).
    Каждую секунда идёт проверка всех игроков на наличие обычного опа.
    Все найденные опы сверяются со списокм легальных опов. Если игрока в списке нет, то он де-опается.
    Можно ещё добавить отправку сообщения админам об этом инцеденте)

    Код:
    package op;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scheduler.BukkitScheduler;
    
    public class startop extends JavaPlugin {
    
        List<String> legalOps = new ArrayList<String>(); //Лист с легальными опами
        FileConfiguration config;
    
        @Override
        public void onEnable()
        {
            this.saveDefaultConfig();
            this.config = this.getConfig();
            this.getLogger().info("[OP-Password-Safe] Plugin is enabled!");
         
            BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
            scheduler.scheduleSyncRepeatingTask(this, new Runnable()
           {
             public void run()
             {
             
                for(Player player : Bukkit.getOnlinePlayers())
                {
                    if(!player.isOp())
                        continue;
                         
                    if(!isLegalOp(player))
                    {
                        player.sendMessage(ChatColor.RED + "Illegal op detected!");
                        player.setOp(false);
                        legalOps.remove(player);
                    }
                }
             
             }
           }, 0L, 60L);
        }
    
        @Override
        public void onDisable()
        {
            this.getLogger().info("[OP-Password-Safe] Plugin is disabled!");
        }
    
       
    @Override
        public boolean onCommand(CommandSender sender, Command cmd, String command, String[] args) 
        {
            //Player plr = (Player) sender; //Да мне срать, пускай и консоль юзает пароль и самоопается >:D
            //^Exception при написанни комманд в консоли
            //Говнофикс:
            if(!(sender instanceof Player))
            {
                sender.sendMessage("This command avalible only for players");
                return true;
            }
           
            Player plr = (Player)sender;
           
            switch (command)
            {
                case "ops_reload":
                    if (plr.hasPermission("ops.reload")) 
                    {
                        this.reloadConfig();
                        this.config = this.getConfig();
                        plr.sendMessage(ChatColor.translateAlternateColorCodes('&', this.config.getString("messages.pluginReloaded")));
                        return true;
                    } 
                    else 
                    {
                        plr.sendMessage(ChatColor.translateAlternateColorCodes('&', this.config.getString("messages.noPerms")));
                        return false;
                    }
                case "op":
                    if (plr.hasPermission("ops.op")) 
                    {
                        this.doitCommand(plr, args, true);
                        return true;
                    }
                    else 
                    {
                        plr.sendMessage(ChatColor.translateAlternateColorCodes('&', this.config.getString("messages.noPerms")));
                        return false;
                    }
                case "deop":
                    if (plr.hasPermission("ops.deop")) 
                    {
                        this.doitCommand(plr, args, false);
                        return true;
                    } else 
                    {
                        plr.sendMessage(ChatColor.translateAlternateColorCodes('&', this.config.getString("messages.noPerms")));
                        return false;
                    }
                case "oplist"://Список опов
                    if (plr.hasPermission("ops.oplist")) 
                    {
                        showOplist((Player)sender);
                        return true;
                    } else 
                    {
                        plr.sendMessage(ChatColor.translateAlternateColorCodes('&', this.config.getString("messages.noPerms")));
                        return false;
                    }
            }
            return false;
        }
    
     
        public void doitCommand(Player player, String[] args, boolean setOp)
        {
            if (args.length == 1)
            {
                if (args[0].equals(this.config.getString(setOp ? "password.op" : "password.deop")))
                {
                    player.setOp(setOp);
                    player.sendMessage(setOp ? tl("messages.opped") : tl("messages.deopped"));
                    legalOP(player, setOp);
                }
                else
                {
                    player.sendMessage(tl("messages.noPerms"));
                }
            }
            else if (args.length == 2)
            {
                Player other = this.getServer().getPlayer(args[1]);
                if (args[0].equals(this.config.getString(setOp ? "password.op" : "password.deop")))
                {
                    if (other != null)
                    {
                        other.setOp(setOp);
                        other.sendMessage(setOp ? tl("messages.opped") : tl("messages.deopped"));
                        player.sendMessage(setOp ? tl("messages.playerOpped").replace("%p", other.getName()) : tl("messages.playerDeopped").replace("%p", other.getName()));
                        legalOP(player, setOp);
                     
                    }
                    else
                    {
                        player.sendMessage(tl("messages.playerOffline"));
                    }
                }
                else
                {
                    player.sendMessage(tl("messages.noPerms"));
                }
            }
            else
            {
                player.sendMessage(setOp ? tl("messages.opUse") : tl("messages.deopUse"));
            }
        }
     
        private String tl(String string)
        {
            return ChatColor.translateAlternateColorCodes('&', this.config.getString(string));
        }
     
        //Изменяет спиосок ЛЕГАЛЬНЫХ опов, и синхронизирует его с конфигом
        private void legalOP(Player player, boolean setOP)
        {
            if(setOP)
                legalOps.add(player.getName());
            else
                if(legalOps.contains(player.getName()))
                    legalOps.remove(player.getName());
             
         
            config.set("legalOps", legalOps);
    
            saveConfig();
    
        }
     
        private boolean isLegalOp(Player player)
        {
         
            boolean contains = legalOps.contains(player.getName());
         
            return contains;
        }
     
        private void showOplist(Player player)
        {
            for (String name : legalOps)
            {
                player.sendMessage(name);
            }
        }
    }
    
    
    Ах, да. Тут есть уязвимость, но её очень сложно найти
     
    Последнее редактирование: 25 янв 2015
  19. SomeOne

    SomeOne Ньюби

    Баллы:
    1
    Я тестировал, экскепшины не вылетали.
    А какой должен быть, и на какой строке?

    Можно хоть каждый тик проверять, но, кажется, это будет сильно грузить сервер.
    Зачем добавлять в разные обработчики, если я уже сделал проверку каждые n тиков?
    Ну хорошо, для надёжности добавлю доп. проверку в onCommand.
     
  20. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    RuBukkit, это когда пользователи пишут все за ТС в темах о плагинах.

    То есть, как написать ахеренный плагин?

    1. Идем на РБ.
    2. Выкладываем херню.
    3. За Вас пишут код
    4. ???
    5. PROFIT!
     
  21. Mr_RoboMan

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

    Баллы:
    123
    Типа лойс.
     

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