Şifremi Unuttum Skripti! E-Mail ve Yedek Şifre ile Hesap Kurtarma!

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali

Bilgi & Açıklama:



Şifremi Unuttum Sistemi, Oyuncuların şifrelerini unuttuklarında hesaplarıyla ilişkili email hesaplarıyla veya önceden belirledikleri yedek şifre ile hesaplarını kurtarabilmelerini sağlar. Yedek Şifre ile kurtarmak için önceden belirlenen yedek şifreyi girip şifrelerini değiştirirler. Email ile kurtarmak için ise önceden belirledikleri email'lerine gelen kodu girip şifrelerini değiştirirler. Mail gönderme işlemi Skript ile oyun içerisinden yapılır. Maile gelen kod random oluşturulur ve 8 karekterlidir. 3 Deneme hakkı vardır ondan sonra aynı IP adresinden tekrar mail ile sıfırlama yapamaz. Sunucuda toplam kaç kişinin mail adresi eklediğini /mailList yazarak görebilirsiniz. Herneyse açıklamayı geçelim, aşşağıda Komutlar & Yetkiler, Ekran Görüntüleri ve Skript Kodu & Kurulum kısımlarını inceleyin.


Komutlar & Yetkiler:



/sifremiunuttum > Kurtarma seçeneklerini gösterir.
/yedeksifre <yedek şifre> > Yedek şifrenizi belirler.
/mail <mail adresiniz> > Mail adresinizi ekler.
/mailList > Mail hesabı ekleyen toplam kullanıcıları gösterir. Yetkisi "op".


Ekran Görüntüleri:


(DL Güvenlik Şifresi ile kurtarma benim sunucuma özgü bir şey paylaştığım versiyonda yok.)

















Skript Kodu & Kurulum:


1. Sunucunuzdan plugins\AuthMe\config.yml dosyasını açın.
2. CTRL+F yapıp "AllowCommands" aratın.
3. Orada yazan komutların listesine /sifremiunuttum , /sifremiunuttum?yedeksifre , /sifremiunuttum?mail ve /kurtar komutlarını ekleyin.
4. Dosyayı kaydedip sunucunuza yükleyin.
5. Skript ve skMorkaz Eklentilerinin uygun versiyonlarını indirip plugins\ içerisine atın.
6. Sunucunuzu yeniden başlatın.
7. Sunucunuzdan plugins\skMorkaz\config.yml dosyasını NotePad++ ile açın.
8. EmailServer kısmına email sunucunuzu girin. (GMail için smtp.gmail.com, Batihost için srv.batihost.com)
9. EmailPort kısmına TLS için 587, SSL için 465 yazın.
10. EmailTLSRequired TLS için "true", SSL için "false" yapın.
11. EmailAuthRequired "false" yapın. (Bu ayar hakkında bi fikrim yok)
12. EmailUsername kısmına mail göndereceğiniz Eposta adresini girin. (örn. [email protected])
13. EmailPassword kısmına mail göndereceğiniz Eposta şifresini girin.
14. Dosyayı kaydedin ve sunucunuza yükleyin.
15. Sunucunuzun plugins\Skript\scripts klasörünün içerisine "sifremiunuttum.sk" adında bir dosya oluşturun.
16. Dosyayı NotePad++ ile açın.
17. Websiteden kopyaladığınız Skript'i yapıştırın.
18. Yukarıdan "Kodlama" seçin ve sonrasında "UTF-8'e Dönüştür" seçin.
19. Dosyayı kaydedin ve sunucunuza yükleyin.

20. Sunucunuzu yeniden başlatın.
21. Sistemi test edin.

Skript Kodu:
PHP:
# Şifremi unuttum sistemi by @LifeMCServer
# Mail ve yedek şifre sistemi ile ek site, program v.s gerekmeden tamamen otomatik olarak şifrenizi sıfırlayın ve hesabınızı kurtarın.
# Gerekli eklentiler;
#  - Skript
#  - skMorkaz (Email için gerekli, configinden Email ayarlarını yapmayı unutmayın.)
#  - AuthMe / AuthMe Reloaded
options:
    sunucuad: LifeMC
    sunucusite: https://www.lifemcserver.com/
    sunucu-ip: play.LifeMCServer.com
command /sifremiunuttum:
    aliases: su
    trigger:
        delete {sifremiUnuttum::%player%::*}
        send "&c&lŞifreni mi unuttun? Aşşağıdaki kurtarma seçeneklerinden birini seç."
        send ""
        send json of "&71. &bYedek Şifre İle Kurtar" run "/sifremiunuttum?yedeksifre" tooltip "&6Hesabını Yedek Şifren İle Kurtar!" to player
        send ""
        send json of "&72. &cMail'ine Gelen Kod İle Kurtar" run "/sifremiunuttum?mail" tooltip "&6Hesabını Mail Adresin İle Kurtar!" to player
        send ""
command /sifremiunuttum?mail:
    trigger:
        delete {sifremiUnuttum::%player%::*}
        if {email::%player%} is set:
            set {_1} to random integer between 1 and 9
            set {_2} to random integer between 1 and 9
            set {_3} to random integer between 1 and 9
            set {_4} to random integer between 1 and 9
            set {_5} to random integer between 1 and 9
            set {_6} to random integer between 1 and 9
            set {_7} to random integer between 1 and 9
            set {_8} to random integer between 1 and 9
            set {sifremiUnuttum::%player%::mailCode} to "%{_1}%%{_2}%%{_3}%%{_4}%%{_5}%%{_6}%%{_7}%%{_8}%"
            send email with subject "Merhaba, %player% ! %nl%İşte, doğrulama için gereken onay kodun;%nl%%{sifremiUnuttum::%player%::mailCode}%%nl% %nl%Sunucu adresimiz: {@sunucu-ip}%nl%Sitemiz: {@sunucusite}" with message "{@sunucuad} Doğrulama Kodu!" to "%{email::%player%}%"
            send ""
            send "&a&lKod başarıyla mail adresinize gönderildi."
            send "&6&lMail adresinize gelen mail kodunu &c&l/kurtar <kod> &6&lŞeklinde girin."
            send ""
        else:
            send "&cHesabına email eklenmemiş."
command /kurtar <text>:
    trigger:
        if {sifremiUnuttum::%player%::yedeksifreMode} is true:
            if arg-1 is "%{%player%.yedekSifre}%":
                send ""
                send "&6&lYeni şifrenizi /kurtar <Yeni şifreniz> şeklinde girin."
                send ""
                wait 1 ticks
                delete {sifremiUnuttum::%player%::yedekSifreMode}
                set {sifremiUnuttum::%player%::yedekSifrePassed} to true
            else:
                send "&cYanlış Yedek Şifre girdin!"
        else if {sifremiUnuttum::%player%::yedekSifrePassed} is true:
            if length of arg-1 is greater than 5:
                delete {sifremiUnuttum::%player%::*}
                execute console command "authme changepassword %player% %arg-1%"
                wait 1 ticks
                execute player command "login %arg-1%"
                send ""
                send "&a&lŞifren başarıyla değişti! Keyifli oyunlar."
                send ""
            else:
                send "&cYeni şifren en az 6 karekter olmalı."
        else if {sifremiUnuttum::%player%::mailMode} is true:
            if {sifremiUnuttum::%player's ip%::mailEngel} is not set:
                if arg-1 is "%{sifremiUnuttum::%player%::mailCode}%":
                    send ""
                    send "&6&lYeni şifrenizi /kurtar <Yeni şifreniz> şeklinde girin."
                    send ""
                    wait 1 ticks
                    delete {sifremiUnuttum::%player's ip%::mailEngel}
                    delete {sifremiUnuttum::%player%::denemeler}
                    delete {sifremiUnuttum::%player%::mailMode}
                    set {sifremiUnuttum::%player%::mailPassed} to true
                else:
                    add 1 to {sifremiUnuttum::%player%::denemeler}
                    if {sifremiUnuttum::%player%::denemeler} is greater than 2:
                        set {sifremiUnuttum::%player's ip%::mailEngel} to true
                        send "&cMail ile kurtarma seçeneği artık erişilebilir değil."
                    else:
                        set {_c} to 3 - {sifremiUnuttum::%player%::denemeler}
                        send "&cYanlış kod girdin! Kalan deneme hakkın: %{_c}%"
                        send "&cEğer deneme hakkın biter ise bir daha email ile şifre sıfırlama yapamayacaksın."
            else:
                send "&cMail ile kurtarma seçeneği artık erişilebilir değil."
        else if {sifremiUnuttum::%player%::mailPassed} is true:
            if length of arg-1 is greater than 5:
                delete {sifremiUnuttum::%player%::*}
                execute console command "authme changepassword %player% %arg-1%"
                wait 1 ticks
                execute player command "login %arg-1%"
                send ""
                send "&a&lŞifren başarıyla değişti! Keyifli oyunlar."
                send ""
                if {email::%player%} is set:
                    send email with subject "Merhaba, %player% ! %nl%Hesabının şifresi az önce değişti.%nl%Değiştiren kişinin son bilinen IP adresi: %player's ip%%nl%Bunu sen yapmadıysan, hemen hesabını kontrol et ve yetkililere ulaş.%nl% %nl%Sunucu adresimiz: {@sunucu-ip}%nl%Sitemiz: {@sunucusite}" with message "Şifreniz değişti!" to "%{email::%player%}%"
            else:
                send "&cYeni şifren en az 6 karekter olmalı."
command /sifremiunuttum?yedeksifre:
    trigger:
        delete {sifremiUnuttum::%player%::*}
        if {%player%.yedekSifre} is set:
            send ""
            send "&6&lYedek Şifrenizi /kurtar <Yedek şifreniz> şeklinde yazınız."
            send ""
            set {sifremiUnuttum::%player%::yedeksifreMode} to true
        else:
            send "&cYedek Şifren belirlenmemiş!"
command /yedeksifre <text>:
    trigger:
        if length of arg-1 is greater than 5:
            set {%player%.yedekSifre} to "%arg-1%"
            send ""
            send "&a&lYedek şifreniz başarıyla değiştirildi!"
            send ""
        else:
            send "&cYedek Şifren en az 6 karekter olmalı!"
on join:
    wait 4 ticks
    send json of "&bŞifrenizi unuttuysanız buraya tıklayın&c." run "/sifremiunuttum" tooltip "&6Şifrenizi unuttuysanız tıklayın!" to player
command /mail <text>:
    trigger:
        if arg-1 contains "10minute":
            send "&cGeçiçi mail servislerinden alınan mailler kullanılamaz."
        else:
            if arg-1 contains "@":
                if arg-1 contains ".com" or ".net" or ".org" or ".tr":
                    delete {emailDogrula::*}
                    set {emailDogrula::%player%::mail} to "%arg-1%"
                    set {_1} to random integer between 1 and 9
                    set {_2} to random integer between 1 and 9
                    set {_3} to random integer between 1 and 9
                    set {_4} to random integer between 1 and 9
                    set {_5} to random integer between 1 and 9
                    set {_6} to random integer between 1 and 9
                    set {_7} to random integer between 1 and 9
                    set {_8} to random integer between 1 and 9
                    set {emailDogrula::%player%::code} to "%{_1}%%{_2}%%{_3}%%{_4}%%{_5}%%{_6}%%{_7}%%{_8}%"
                    if {emailDogrula::%player%::code} is "12345678" or "87654321" or "11111111" or "22222222" or "33333333" or "44444444" or "55555555" or "66666666" or "77777777" or "88888888" or "99999999":
                        set {_1} to random integer between 1 and 9
                        set {_2} to random integer between 1 and 9
                        set {_3} to random integer between 1 and 9
                        set {_4} to random integer between 1 and 9
                        set {_5} to random integer between 1 and 9
                        set {_6} to random integer between 1 and 9
                        set {_7} to random integer between 1 and 9
                        set {_8} to random integer between 1 and 9
                        set {emailDogrula::%player%::code} to "%{_1}%%{_2}%%{_3}%%{_4}%%{_5}%%{_6}%%{_7}%%{_8}%"
                    send email with subject "Merhaba, %player% ! %nl%İşte, doğrulama için gereken onay kodun;%nl%%{emailDogrula::%player%::code}%%nl% %nl%Sunucu adresimiz: {@sunucu-ip}%nl%Sitemiz: {@sunucusite}" with message "{@sunucuad} Doğrulama Kodu!" to "%arg-1%"
                    set {emailDogrula::%player%} to true
                    send ""
                    send "&6&lEpostana gönderdiğimiz 8 haneli doğrulama kodunu sohbete yaz!"
                    send ""
                else:
                    send "&cYazdığınız alan adına ait mailler devre dışıdır."
            else:
                send "&cLütfen düzgün formatta mail adresi giriniz."
on chat:
    if {emailDogrula::%player%} is true:
        cancel event
        if {emailDogrula::%player%::code} is "%message%":
            set {email::%player%} to "%{emailDogrula::%player%::mail}%"
            delete {emailDogrula::*}
            send ""
            send "&a&lEposta adresiniz başarıyla onaylandı ve hesabınıza eklendi!"
            send ""
        else:
            send "&cEmail doğrulama kodunu yanlış girdin!"
command /mailList:
    permission: op
    trigger:
        loop {email::*}:
            add 1 to {_mailCount}
        wait 0.4 ticks
        send "&8&l> &e&lToplam mail adresi sayısı: &c%{_mailCount}%"

Eğer kod hata veriyor veyahut çalışmıyor ise aşşağıdaki linkten en güncel versiyonunu kopyalayıp kullanın.

TIKLA GİT ->

TEST SUNUCUSU
play.LifeMCServer.com





Konuyu okuduğunuz için teşekkürler :)
 


Son düzenleme:

_Alecks_

Lapis Toplayıcısı
Mesajlar
1,025
En iyi cevaplar
2
Beğeniler
259
Puanları
750
Ruh hali
Kullanışlı!
Mesela büyük bir serverdesin ve bi an şifreyi ne koyduğunu unuttun! Bu eposta falan olaylarıyla kurtarabilirsin :))
Yararlı bi konu...
 

Gloin

''Far Over The Misty Mountains Cold...''
Mesajlar
403
En iyi cevaplar
0
Beğeniler
647
Puanları
600
Gerçekten kullanışlı bir skript eline sağlık kadim dostum :dost:
 

LifeMCServer

Nether Yerlisi
Mesajlar
2,410
En iyi cevaplar
98
Beğeniler
2,461
Puanları
10,250
Ruh hali
Ne kadar kaliteli skript olsa da kullanan çok az olacak.
Bknz: /login 123456 [email protected]

Ben kendi sunucumda kullanıyorum, şifreni adın yapmanı, 123, 1234, 123456, 12345678 v.b yapmanı engelledim. (kayıt olamayıp sunucuyu bırakan oyuncular gördüm :p) Mailide doğrulamadan hesabına ekleyemiyorsun. Ek olarak birde yanlış şifre girenleri kickliyorum. Bu şekilde gayet güvenli oluyor. Mailin şifreside artık maili kurduğu siteye bağlı. Mesela microsoft en az 6 karekter, bir sayı, ve bir özel simge istiyor diye biliyorum. Ama dediğin gibi insanlar bu tür şeylere üşeniyor, saçma sapan parolalar koyuyor.

Skript hakkında görüşün için teşekkürler.
 

CowboyBebopTR

Elmas Madencisi
Mesajlar
886
En iyi cevaplar
1
Beğeniler
905
Puanları
2,210
Ruh hali
Ben kendi sunucumda kullanıyorum, şifreni adın yapmanı, 123, 1234, 123456, 12345678 v.b yapmanı engelledim. (kayıt olamayıp sunucuyu bırakan oyuncular gördüm :p) Mailide doğrulamadan hesabına ekleyemiyorsun. Ek olarak birde yanlış şifre girenleri kickliyorum. Bu şekilde gayet güvenli oluyor. Mailin şifreside artık maili kurduğu siteye bağlı. Mesela microsoft en az 6 karekter, bir sayı, ve bir özel simge istiyor diye biliyorum. Ama dediğin gibi insanlar bu tür şeylere üşeniyor, saçma sapan parolalar koyuyor.

Skript hakkında görüşün için teşekkürler.

O zaman mükemmel bir skript!1
 

Hyroeth

Demir Madencisi
Mesajlar
259
En iyi cevaplar
0
Beğeniler
255
Puanları
30
Mükemmel bir skript, sunucusu olanın kullanmasını tavsiye ederim.
 

Üst