Serverime Plugin yazıyorum Kaynak kodları burda dalın

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Ek not: Pluginlerin hiçbirinde perm ayarlamadım haberiniz olsun siz kendiniz ayarlayın özel olarak :) ben ayarlıcamda kod karısmasın diye sade halini attım çünkü permleri mysql aracılıgıyla olusturdum bir grup plugininde ayarlıcam

Önemli bir not: Pluginler birbiriyle bağlantılıdır kaynak kodlarını editlemenize izniniz vardır sadece konuyu kaynak olarak belirtirseniz sevinirim yada bir etiket atarsanız.Kaynak kodlarını editleyerek pluginleri birbirinden bağımsız hale getirebilirsiniz örneğin kayıt plugini oyuncunun satırını eklerken mysql 'e money satırınıda eklemiş oluyor null olarak ve money plugininde bu işlemi yapmamış oluyorum bunu direk money pluginine ekelyerek money pluginin kayıt plugininden bağımsız yapabilirsiniz.
-Mysql gerekmesin diye böyle yaptım verileri config dosyasında tutuyor.(config.yml oluşturun plugin.yml nin olduğu yere , yoksa hata verir.)
Komutlar = /kayit , /login

Kod:
package me.Register;//size göre değişin class ve paket adını

import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;



public class Main extends JavaPlugin implements Listener  {



    public void onEnable(){
        getLogger().info("Plugin Başladı!");
        Bukkit.getPluginManager().registerEvents(this, this);
        this.saveDefaultConfig();
        getConfig().options().copyDefaults(true);
        saveConfig();

        }

        public void onDisable(){
        getLogger().info("Plugin Durdu!");
        }
        HashMap<String, Boolean>girislog=new HashMap<String, Boolean>();
        /// Hashmap yap giriş yapanları kayıt etsin lef eventindede listeden cıkarsın :)
    @EventHandler
    public void joinevent(PlayerJoinEvent playerjoin)
    {
    Player player = playerjoin.getPlayer();
    player.sendMessage(ChatColor.MAGIC+"AA"+ChatColor.GOLD+"Serverimize Hoşgeldiniz"+ChatColor.RESET+ChatColor.MAGIC+"AA");
    girislog.put(player.getName(), false);

    if(this.getConfig().getString(player.getName()) != null)
    {
        player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/giris"+ChatColor.DARK_GRAY+" Sifre"+ChatColor.DARK_RED+" yazarak giris yapınız");
    }
    else
    {
        player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/kayit"+ChatColor.DARK_GRAY+" Sifre Sifre "+ChatColor.DARK_RED+" yazarak kayıt olunuz. Güvenliğiniz açısından kullandığınız şifreleri kullanmayıp farklı bir şifre oluşturmanızı tavsiye ederiz.");
    }

    }
    @EventHandler
    public void onPlayerQuit(PlayerQuitEvent event) {

            Player player = event.getPlayer();
            if(girislog.get(player.getName())== true){
                girislog.put(player.getName(), false);
            }

        }
    @EventHandler
    public void onPlayerWalk(PlayerMoveEvent event) {
         Player player = event.getPlayer();

        if(girislog.get(player.getName())== false)
     {

            event.setCancelled(true);
     }
    }
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        Player player = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("kayit")){
            try{
            if(args[0].equalsIgnoreCase(args[1].toString())&&this.getConfig().getString(player.getName()) == null)
            {

                this.getConfig().addDefault(player.getName(), args[0].toString());
                player.sendMessage(ChatColor.WHITE +"Kayıt Başarılı.");
                player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/giris"+ChatColor.DARK_GRAY+" Sifre"+ChatColor.DARK_RED+" yazarak giris yapınız");
            }
            else
            {
                player.sendMessage(ChatColor.WHITE +"Zaten kayıtlısınız.");
            }
            }
            catch(Exception e){
                player.sendMessage(ChatColor.WHITE +"Kayıt Başarısız.");
            }
        }


        if(cmd.getName().equalsIgnoreCase("giris")&&this.getConfig().getString(player.getName()) != null)
        {

            try
            {
            if(args[0].equalsIgnoreCase(this.getConfig().getString(player.getName()))&& girislog.get(player.getName())== false)
            {
                player.sendMessage(ChatColor.WHITE +"Giriş başarılı.");
                girislog.put(player.getName(), true);
            }
            else
            {
                player.sendMessage(ChatColor.WHITE +"Zaten giriş yapmışsınız.");
            }
            }
            catch(Exception e){
                player.sendMessage(ChatColor.WHITE +"Giriş başarısız.");
            }

            }

        return false;
        }


}
Kod:
/////////plugin.yml Not Boş bir config.yml oluşturun.

name: RegisterKayitPlugin
version: 1.0
author: vatansbeytr
main: me.Register.Main
commands:
  kayit:
    description: Kayit olmanizi saglar.
  giris:
    description: Giris yapmanizi saglar.
-plugin.yml aynı değişmedi ama artık config.yml ye gerek yok silebilirsiniz .Oyuncu kitlerini permlerini falan daha rahat ayarlayabilmek ve @IRFN tavsiyesi ile Mysql yapıcam.Elimde o var şimdilik :şapka:
-Mysql için gereken kütüphane
Link bunu craftbukkiti eklediğiniz gibi external jar olarak ekleyin projenize.
Kod:
package me.Register;

import java.util.HashMap;
import java.sql.*;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;



public class Main extends JavaPlugin implements Listener  {
     public static String myDriver = "com.mysql.jdbc.Driver";
     public static String db = "jdbc:mysql://hostadı/veritabanıadı";
     public static String name = "kullanıcıadı";
     public static String dbpassword = "sifre";

public static void add(String playername){
            try
           {
    
             Class.forName(myDriver);
             Connection conn = DriverManager.getConnection(db, name, dbpassword);
      
             String sorgu = "insert into member(playername) values('"+playername+"')";
    
             Statement komut = conn.createStatement();
             komut.executeUpdate(sorgu);
             conn.close();
           }
    
           catch (Exception a)
           {
             System.err.println("Hata ! ");
             System.err.println(a.getMessage());
           }

        }

     public static void update(String playername,String password){
            try
            {

              Class.forName(myDriver);
              Connection conn = DriverManager.getConnection(db, name, dbpassword);
 
              String query = "update member set password = ? where playername = '"+playername+"'";
              PreparedStatement preparedStmt = conn.prepareStatement(query);
              preparedStmt.setString   (1, password);


              // execute the java preparedstatement
              preparedStmt.executeUpdate();
  
              conn.close();
            }

            catch (Exception a)
            {
              System.err.println("Hata ! ");
              System.err.println(a.getMessage());
            }

        }


         public static String get(String playername,String password){




            try
            {
            Class.forName(myDriver);
            Connection conn = DriverManager.getConnection(db, name, dbpassword);
            Statement komut = conn.createStatement();
            ResultSet rs = komut.executeQuery("SELECT * FROM member WHERE playername = '"+playername+"'");
            while (rs.next()) {
            password = rs.getString("password");

            }
  
                conn.close();
           }

            catch (Exception a)
            {
              System.err.println("Hata ! ");
              System.err.println(a.getMessage());
            }
            return password;


         }





     public void onEnable(){
        getLogger().info("Plugin Başladı!");
        Bukkit.getPluginManager().registerEvents(this, this);


        }
        // These To well logged in the Console Saying "Disabled!" and "Enabled!"
        public void onDisable(){
        getLogger().info("Plugin Durdu!");
        }
        HashMap<String, Boolean>girislog=new HashMap<String, Boolean>();
        /// Hashmap yap giriş yapanları kayıt etsin lef eventindede listeden cıkarsın :)

        @EventHandler
    public void joinevent(PlayerJoinEvent playerjoin)
    {

    Player player = playerjoin.getPlayer();
    player.sendMessage(ChatColor.MAGIC+"AA"+ChatColor.GOLD+"Serverimize Hoşgeldiniz"+ChatColor.RESET+ChatColor.MAGIC+"AA");
    girislog.put(player.getName(), false);
    String password="";
    try{

String a = get(player.getName(),password);
        if(a ==""){
            add(player.getName());
        }
    }
    catch(Exception e){
        add(player.getName());
    }


    if(get(player.getName(),password)!=null)
    {


        player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/giris"+ChatColor.DARK_GRAY+" Sifre"+ChatColor.DARK_RED+" yazarak giris yapınız");
    }
    else
    {
        player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/kayit"+ChatColor.DARK_GRAY+" Sifre Sifre "+ChatColor.DARK_RED+" yazarak kayıt olunuz.Güvenliğiniz açısından kullandığınız şifreleri kullanmayıp farklı bir şifre oluşturmanızı tavsiye ederiz.");
    }

    }

    @EventHandler
    public void onPlayerQuit(PlayerQuitEvent event) {

            Player player = event.getPlayer();
            if(girislog.get(player.getName())== true){
                girislog.remove(player.getName());
            }

        }
    @EventHandler
    public void onPlayerWalk(PlayerMoveEvent event) {
         Player player = event.getPlayer();

        if(girislog.get(player.getName())== false)
     {

            event.setCancelled(true);
     }
    }







    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){





        Player player = (Player) sender;
        if(cmd.getName().equalsIgnoreCase("kayit")){
            try{
            String password="";
            if(get(player.getName(),password)!=null)
            {
                    player.sendMessage(ChatColor.WHITE +"Zaten kayıtlısınız.");
            }
   
            if(args[0].equalsIgnoreCase(args[1].toString())&&get(player.getName(),password)==null)
            {
                update(player.getName(), args[0].toString());
                player.sendMessage(ChatColor.WHITE +"Kayıt Başarılı.");
                player.sendMessage(ChatColor.WHITE +"Servere "+ChatColor.GOLD+"/giris"+ChatColor.DARK_GRAY+" Sifre"+ChatColor.DARK_RED+" yazarak giris yapınız");
            }




            }
            catch(Exception e){
                player.sendMessage(ChatColor.WHITE +"Kayıt Başarısız.");
            }
        }


        if(cmd.getName().equalsIgnoreCase("giris"))
        {

            try
            {
            String password="";
            if(args[0].equalsIgnoreCase(get(player.getName(),password))&& girislog.get(player.getName())== false)
            {
                player.sendMessage(ChatColor.WHITE +"Giriş başarılı.");
                girislog.put(player.getName(), true);
            }
            else
            {
                player.sendMessage(ChatColor.WHITE +"Zaten giriş yapmışsınız.");
            }
            }
            catch(Exception e){
                player.sendMessage(ChatColor.WHITE +"Giriş başarısız.");
            }

            }

        return false;
        }


}
Kullandığım tablo(not veri girilmediği taktirde NULL olmasını tabloyu oluştururken ayarlayinki kodlarda hata yaratmasın.)

-Kayıt Pluginsiz çalışmaz kodu editliyerek tek başına çalışıcak hale getirebilirsiniz eksik olan bir pluginin join eventinde parasını başlangıç parası oalrak kayıt etmesi 0 dır 30 dur her neyse onu money pluginine eklerseniz bağımsız olur. fakat suanki haliyle kayıt plugini ile beraber çalışıyor.
Kod:
package me.Money;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin implements Listener {
     public static String myDriver = "com.mysql.jdbc.Driver";
     public static String db = "jdbc:mysql://sunucuadı/veritabanıadı";
     public static String name = "kullanıcıadı";
     public static String dbpassword = "sifre";

     public static String get(String playername,String money){
           
            try
            {
            Class.forName(myDriver);
            Connection conn = DriverManager.getConnection(db, name, dbpassword);
            Statement komut = conn.createStatement();
            ResultSet rs = komut.executeQuery("SELECT * FROM member WHERE playername = '"+playername+"'");
            while (rs.next()) {
            money = rs.getString("money");
     
            }
          
                conn.close();
            }
       
            catch (Exception a)
            {
              System.err.println("Hata ! ");
              System.err.println(a.getMessage());
            }
            return money;
   
   
         }
     public static void update(String playername,String money){
            try
            {
        
              Class.forName(myDriver);
              Connection conn = DriverManager.getConnection(db, name, dbpassword);
         
              String query = "update member set money = ? where playername = '"+playername+"'";
              PreparedStatement preparedStmt = conn.prepareStatement(query);
              preparedStmt.setString   (1, money);
        
    
              // execute the java preparedstatement
              preparedStmt.executeUpdate();
          
              conn.close();
            }
       
            catch (Exception a)
            {
              System.err.println("Hata ! ");
              System.err.println(a.getMessage());
            }

        }


     public void onEnable(){
            getLogger().info("Plugin Başladı!");
            Bukkit.getPluginManager().registerEvents(this, this);
       
       
            }
            // These To well logged in the Console Saying "Disabled!" and "Enabled!"
            public void onDisable(){
            getLogger().info("Plugin Durdu!");
            }
       
            @EventHandler
            public void joinevent(PlayerJoinEvent playerjoin)
            {
       
            Player player = playerjoin.getPlayer();
            String money="";
            try{
           
                if(get(player.getName(),money)==""||get(player.getName(),money)==null){
               
                    update(player.getName(),"0");
                }
            }
            catch(Exception e){
                player.sendMessage(ChatColor.DARK_BLUE + "Para atama başarısız oldu");
            }
            }

            public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
           
           
                Player player = (Player) sender;
                if(cmd.getName().equalsIgnoreCase("hesap")){
                    try{
                    String param="";
               
                       
                       
                       
                            if(args.length == 0)
                            {
                                player.sendMessage(ChatColor.AQUA +"Hesabınızdaki para: "+ChatColor.GREEN+get(player.getName(),param));
                           
                            }
                       
                            else{
                           
                                player.sendMessage(ChatColor.AQUA+args[0]+" Adlı oyuncunun parası: "+ChatColor.GREEN+get(args[0],param));
                            }
                    }
                    catch(Exception e){
                        player.sendMessage(ChatColor.WHITE +"Para miktarında hata bulundu.");
                    }
               
                }
           
           
           
           
                return false;
                }
       
       
       
           
}
Kod:
///Plugin.yml  Money plugini için

name: MoneyPlugin
version: 1.0
author: vatansbeytr
main: me.Money.Main
commands:
  hesap:
   description: Hesabınızdaki parayı gösterir

Kod:
Spawn ayarlamak isteyenler önce konsola veya oyundayken bulundugunuz konumu /setworldspawn x y z yazın.Sonrada şu komutu 
Location location = new Location( player.getWorld(), -356, 27, 177);
    player.teleport(location);
kayit pluginindee join eventine ekleyinki girdiğiniz gibi seçtiğiniz spawna atsın.
 


Son düzenleme:

>>TheLegend<<

Легенды никогда не умирают
Mesajlar
991
En iyi cevaplar
3
Beğeniler
1,903
Puanları
2,530
İyi düşünmüşsün dostum ama bunu herhangi bir oyuncu öğrense sunucunda kullandığını, sunucun batar. Kimse istemez şifresinin birinin elinde olmasını.
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
Dosya tabanlı veritabanı kullanılmamalıdır. Yılların tecrübesiyle AuthMe bile belli bir kayıt miktarı sonrasında sqlite kullanımına izin vermeyip, MySql kullanılmasını istiyor.
Ben şahsi olarak MySql kullanımını bile önermiyorum. Maksimum performans için NoSQL türü veritabanı kullanılmalı.

Kodlama olarak da;
PlayerQuitEvent'ta girislog'u false yapmak yerine oyuncunun verisini hashmap'ten tamamen sildirebilirsin. Zaten PlayerJoinEvent'ta yeniden hashmap'e ekliyorsun.

Ayrıca 1-2 de kodlama kolaylığı göstermek istiyorum;
Kod:
        if(girislog.get(player.getName())== false)
     {
        
            event.setCancelled(true);
     }
kodu ile,
Kod:
if(girislog.get(player.getName())== false)
            event.setCancelled(true);
kodu aynı anlama gelmektedir. Tırnaklı parantez açmaya gerek yok.

Yine;
Kod:
if(girislog.get(player.getName())== true){
                girislog.put(player.getName(), false);
            }
bu kodu şu şekilde yazabilirsin;
Kod:
           if(girislog.get(player.getName())
                girislog.put(player.getName(), false);
Boolean == true yapmak ile booleanı eşitliksiz yazmak aynı anlama gelir.
Melsela;
Kod:
Boolean true_ise = true;

if(true_ise)
   System.out.println("true olduğunda olacaklar");
if(!true_ise)
   System.out.println("false olduğunda olacaklar");
Burada üstteki kod çalışacaktır, yani true...
Yine bir boolean'ın tersini yapmak için Boolean == false yapmak yerine direkt !Boolean (başına ünlem işareti) koyabilirsin.

Bunları ileride yazacağın kodlarda sana kolaylık olsun diye yazdım.
Eklenti yazarken takıldığın yer olursa sorarsın, müsait oldukça cevaplamaya çalışırım.
 

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Dosya tabanlı veritabanı kullanılmamalıdır. Yılların tecrübesiyle AuthMe bile belli bir kayıt miktarı sonrasında sqlite kullanımına izin vermeyip, MySql kullanılmasını istiyor.
Ben şahsi olarak MySql kullanımını bile önermiyorum. Maksimum performans için NoSQL türü veritabanı kullanılmalı.

Kodlama olarak da;
PlayerQuitEvent'ta girislog'u false yapmak yerine oyuncunun verisini hashmap'ten tamamen sildirebilirsin. Zaten PlayerJoinEvent'ta yeniden hashmap'e ekliyorsun.

Ayrıca 1-2 de kodlama kolaylığı göstermek istiyorum;
Kod:
        if(girislog.get(player.getName())== false)
     {
      
            event.setCancelled(true);
     }
kodu ile,
Kod:
if(girislog.get(player.getName())== false)
            event.setCancelled(true);
kodu aynı anlama gelmektedir. Tırnaklı parantez açmaya gerek yok.

Yine;
Kod:
if(girislog.get(player.getName())== true){
                girislog.put(player.getName(), false);
            }
bu kodu şu şekilde yazabilirsin;
Kod:
           if(girislog.get(player.getName())
                girislog.put(player.getName(), false);
Boolean == true yapmak ile booleanı eşitliksiz yazmak aynı anlama gelir.
Melsela;
Kod:
Boolean true_ise = true;

if(true_ise)
   System.out.println("true olduğunda olacaklar");
if(!true_ise)
   System.out.println("false olduğunda olacaklar");
Burada üstteki kod çalışacaktır, yani true...
Yine bir boolean'ın tersini yapmak için Boolean == false yapmak yerine direkt !Boolean (başına ünlem işareti) koyabilirsin.

Bunları ileride yazacağın kodlarda sana kolaylık olsun diye yazdım.
Eklenti yazarken takıldığın yer olursa sorarsın, müsait oldukça cevaplamaya çalışırım.
Biliyorum fakat c# kodlarken visual studioda alışkanlık tırnakları görmek istiyorum :) sonradan kod karışmasın diye .
Boolean olayıda c# dan kalma alıskanlık :/

Up Up MySql kullanan kayitplugini konu düzenlendi.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Şifreyi md5 yapıp sonra karşılaştırma yapsan? Şu şekilde MD5 Yapabilirsin:
Kod:
String string = "Şifre";
MessageDigest md = MessageDigest.getInstance("md5");
byte[] bytes = md.digest(string.getBytes());
BigInteger big = new BigInteger(1, bytes);
String md5 = big.toString(16);
int rakamsayisi = 32 // Buraya md5'li yazının kaç karakterli olmak istediğini gir. Maksimum güvenlik için 32 tavsiye edilir...
while (md5 < rakamsayisi) {
    md5 = "0"+md5;
}

// string = Şifremiz
// md5 = md5'li hali
Sonra adam giriş yaparken verdiği şifre ile configdekini karşılaştırırsın. Eşleşirse doğrudur. Aslında ben her türlü kayıt ve giriş işlemine karşıyım. Daha çok internetten kayıt yapılmasını tavsiye ederim.
 

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Şifreyi md5 yapıp sonra karşılaştırma yapsan? Şu şekilde MD5 Yapabilirsin:
Kod:
String string = "Şifre";
MessageDigest md = MessageDigest.getInstance("md5");
byte[] bytes = md.digest(string.getBytes());
BigInteger big = new BigInteger(1, bytes);
String md5 = big.toString(16);
int rakamsayisi = 32 // Buraya md5'li yazının kaç karakterli olmak istediğini gir. Maksimum güvenlik için 32 tavsiye edilir...
while (md5 < rakamsayisi) {
    md5 = "0"+md5;
}

// string = Şifremiz
// md5 = md5'li hali
Sonra adam giriş yaparken verdiği şifre ile configdekini karşılaştırırsın. Eşleşirse doğrudur. Aslında ben her türlü kayıt ve giriş işlemine karşıyım. Daha çok internetten kayıt yapılmasını tavsiye ederim.
Neden böyle yazdıgını anlamadım ama :hmm: config'e dogrudan adamın şifresini kaydetmek daha mantıklı niye ayriyetten şifreliyoruzki ? zaten config dosyası server dosyasının içinde olduğu için birtek server sahipleri ulaşabilir
 

Centeglassered

Kızıltaş Madencisi
Mesajlar
579
En iyi cevaplar
0
Beğeniler
268
Puanları
900
Ruh hali
İnternet kullanıcılarının çoğu aynı şifreyi bir kaç yerde kullanıyorlar. Yani başka hesaplarının şifrelerini böyle ele geçirebilirsin. Bu nedenle önerim ufak bir not yazmandır.
 

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Up Kullandığım tabloyu attım kafanız karışmasın diye quarylerde

İnternet kullanıcılarının çoğu aynı şifreyi bir kaç yerde kullanıyorlar. Yani başka hesaplarının şifrelerini böyle ele geçirebilirsin. Bu nedenle önerim ufak bir not yazmandır.
Hea siz onu diyonuz :) düşeriz not :)

Up money plugini geliyor. Kayıt mesajına "Güvenliğiniz açısından kullandığınız şifreleri kullanmayıp farklı bir şifre oluşturmanızı tavsiye ederiz." metni ekledim. @Centeglassered , @MegaCrafter
 

Minecraftplayerr

Java, Skript, Php, Html, Css, Javascript, Anime
Mesajlar
3,980
En iyi cevaplar
6
Beğeniler
3,787
Puanları
7,080
Ruh hali
Neden böyle yazdıgını anlamadım ama :hmm: config'e dogrudan adamın şifresini kaydetmek daha mantıklı niye ayriyetten şifreliyoruzki ? zaten config dosyası server dosyasının içinde olduğu için birtek server sahipleri ulaşabilir
Diyelim birisi teamviewer gibi şeylerle bilgisayara ulaşıp şifreleri alırsa şifrelenmiş halini almış olurlar. Giriş yaparken şifreli şifre kullanılamaz.
Ayrıca teamviewer ile ulaşan birisi olursa zaten tüm sunucuyu ele geçirmiş olur dersen; evet haklısın. ._.
 

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Diyelim birisi teamviewer gibi şeylerle bilgisayara ulaşıp şifreleri alırsa şifrelenmiş halini almış olurlar. Giriş yaparken şifreli şifre kullanılamaz.
Ayrıca teamviewer ile ulaşan birisi olursa zaten tüm sunucuyu ele geçirmiş olur dersen; evet haklısın. ._.
Sevdiğim düşünce biçimi bu zaten hesabında yada şifresinde gözü olan adam her türlü sunucudan senin şifreni alırda sonuçta arkadaşlarda haklı olduğu için ekledim belirttim farklı şifre kullanın diye.
 

MegaCrafter

Obsidyen Madencisi
Mesajlar
1,419
En iyi cevaplar
0
Beğeniler
1,542
Puanları
3,070
Bu arada bazı özel karakterleri yasaklaman gerekebilir. Çünkü config dosyasına doğru gitmeyebilirler veya doğru geri dönmeyebilirler. Yani doğru gitmezse de bot saldırılarına çok büyük açık verilmiş olur. Authme'de yapılmıyor sanırım. Ama Authme yerine kendi pluginini yazan bir servere girdiğimde yüz kere kendi adıma kayıt olmuştum ve beni bot saldırıyo diye banlamışlardı. (Zamanında çok eğlenceli bir şeydi :D)
 

blade20090999

Kızıltaş Madencisi
Mesajlar
627
En iyi cevaplar
0
Beğeniler
321
Puanları
890
Ruh hali
Bu arada bazı özel karakterleri yasaklaman gerekebilir. Çünkü config dosyasına doğru gitmeyebilirler veya doğru geri dönmeyebilirler. Yani doğru gitmezse de bot saldırılarına çok büyük açık verilmiş olur. Authme'de yapılmıyor sanırım. Ama Authme yerine kendi pluginini yazan bir servere girdiğimde yüz kere kendi adıma kayıt olmuştum ve beni bot saldırıyo diye banlamışlardı. (Zamanında çok eğlenceli bir şeydi :D)
Aynı isimle oldugun sürece aynı isme kayıt ediyor yani birden fazla kayıt açamıyorsun ayriyetten ek olarak aynı isimle veya aynı ipden girişlerde giriş kısıtlama koyucam 2 dkkada bir giris atabilicek art arda
 

Üst