IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Services Hazır Kodlar (https://www.ircforumlari.net/services-hazir-kodlar/)
-   -   /NickServ REGISTERNICK Komutu (https://www.ircforumlari.net/services-hazir-kodlar/619755-nickserv-registernick-komutu.html)

xwerswoodx 29 Eylül 2014 17:51

/NickServ REGISTERNICK Komutu
 
Huyum kurusun hep üşengeçliğin sonucunda kendimce bir kod yazdım, paylaşayım isteyen varsa yararlansın dedim.

Kod, /ns link ve /ns register komutlarının birleşimidir yani tamamı benim tarafımdan yazılmamıştır.


Kullanımı: /nickserv registernick nick şifre email şeklindedir.
Süre sınırı, email sınırı vb. tarzı limitler olmadan hiç nicke geçmeden nick kayıt etmenizi sağlar. Services Admin (/os admin list) listesinde olmanız gerekmektedir.

ircservices*.* > modules > nickserv > main.c

Kod:

static void do_unsuspend(User *u);
altına
Kod:

static void do_registernick(User *u);
Kod:

    { "DROPNICK", do_dropnick, is_services_admin, -1,
                -1, NICK_OPER_HELP_DROPNICK },

altına
Kod:

    { "REGISTERNICK", do_registernick, is_services_admin, -1,
                -1, NICK_HELP_REGISTER },

Kod:

/*************************************************************************/

static void do_identify(User *u) {

üstüne

Kod:

/*************************************************************************/

static void do_registernick(User *u) {
    char *nick = strtok(NULL, " ");
    char *pass = strtok(NULL, " ");
    char *email = strtok(NULL, " ");
    NickInfo *ni = u->ni, *ni2;
    NickGroupInfo *ngi = u->ngi, *ngi2;
    int n;

    if (readonly) {
            notice_lang(s_NickServ, u, NICK_REGISTRATION_DISABLED);
    } else if (!is_services_admin(u)) {
            notice_lang(s_NickServ, u, PERMISSION_DENIED);
    } else if (!nick || !pass || (NSRequireEmail && !email) || (stricmp(pass, u->nick) == 0 && (strtok(NULL, "") || (email && (!strchr(email,'@') || !strchr(email,'.')))))) {
            send_cmd(s_NickServ, "NOTICE %s Kullanimi: \2REGISTERNICK \37nick\37 \37sifre\37 \37email\37\2", u->nick);
    } else if (strlen(nick) > protocol_nickmax) {
        notice_lang(s_NickServ, u, NICK_TOO_LONG, protocol_nickmax);
    } else if (!valid_nick(nick)) {
        notice_lang(s_NickServ, u, NICK_INVALID, nick);
    } else if (stricmp(pass, u->nick) == 0 || (StrictPasswords && strlen(pass) < 5)) {
        notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD);
    } else if (email && !valid_email(email)) {
            send_cmd(s_NickServ, "NOTICE %s Lütfen gecerli bir email adresi giriniz.", u->nick);
    } else if (!reglink_check(u, nick, NULL, NULL)) {
        notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, nick);
    } else if (!ni || !ngi || ngi == NICKGROUPINFO_INVALID) {
        notice_lang(s_NickServ, u, NICK_NOT_REGISTERED);
    } else if (!user_identified(u)) {
        notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
    } else if (irc_stricmp(u->nick, nick) == 0) {
            send_cmd(s_NickServ, "NOTICE %s Kullandığınız nicki kayıt edemezsiniz.", u->nick);
    } else if ((ni2 = get_nickinfo(nick)) != NULL) {
                if (ni2->status & NS_VERBOTEN)
            notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
        else
            notice_lang(s_NickServ, u, NICK_X_ALREADY_REGISTERED, nick);
        put_nickinfo(ni2);
        } else if (get_user(nick)) {
        notice_lang(s_NickServ, u, NICK_LINK_IN_USE, nick);
    } else {
            Password passbuf;
        init_password(&passbuf);
        if (encrypt_password(pass, strlen(pass), &passbuf) != 0) {
            clear_password(&passbuf);
            memset(pass, 0, strlen(pass));
            module_log("Failed to encrypt password for %s (register)", u->nick);
            notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
            return;
        }
        ni2 = makenick(nick, &ngi2);
        if (!ni) {
            clear_password(&passbuf);
            module_log("makenick(%s) failed", u->nick);
            notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
            return;
        }
        copy_password(&ngi2->pass, &passbuf);
        clear_password(&passbuf);
        if (ni->last_usermask)
            ni2->last_usermask = sstrdup(ni->last_usermask);
        if (ni->last_realmask)
            ni2->last_realmask = sstrdup(ni->last_realmask);
        if (ni->last_realname)
            ni2->last_realname = sstrdup(ni->last_realname);
        if (ni->last_quit)
            ni2->last_quit = sstrdup(ni->last_quit);
        ni2->time_registered = ni2->last_seen = time(NULL);
        if (email)
                        ngi2->email = sstrdup(email);
        ngi2->flags = NSDefFlags;
        ngi2->memos.memomax = MEMOMAX_DEFAULT;
        ngi2->channelmax = CHANMAX_DEFAULT;
        ngi2->language = LANG_DEFAULT;
        ngi2->timezone = TIMEZONE_DEFAULT;
        put_nickinfo(ni2);
        notice_lang(s_NickServ, u, NICK_REGISTERED, nick);
        if (readonly)
            notice_lang(s_NickServ, u, READ_ONLY_MODE);
    }
}

HELP yada türkçe çeviri yapmadım dilerseniz siz yapabilirsiniz.

Alıntı:

[14:22:48] -NickServ- Guard nick'i basari ile kaydedilmistir.
[14:22:55] -NickServ- Host nick'i basari ile kaydedilmistir.
[14:23:02] -NickServ- Host nickine linkli nickler:
[14:23:02] -NickServ- *Host
[14:23:02] -NickServ- 1 linkli nick.

MesqeN 04 Ekim 2014 10:47

Cevap: /NickServ REGISTERNICK Komutu
 
Aydınlatma olsun diye soruyorum : /ns register şifre email komutu devreden cıkmıcak degilmi bu sayede?

xwerswoodx 04 Ekim 2014 13:16

Cevap: /NickServ REGISTERNICK Komutu
 
Hayır, bu sadece misal atıyorum ki bazen helpte yardımcı olmaya çalıştığımız kişiler nick kayıt edemiyor ve bizde, kendisine daha fazla çaba verip nick değiştirip kaydediyoruz.

Bu tarz durumlarda (ben services adminlere verdim bu yetkiyi) /nickserv registernick nick şifre email yazarak hiç nick değişmeye gerek kalmadan nick kayıt etmek için.

Tabi önceden nick varsa bile kayıt yaptırıyrdum ama, nick bir kere identify edilene kadar release, recover komutları veya ghost komutu çalışmadığı için nickin sunucuda olmaması gerektiğini ayarladım, tabi isteyen değişebilir.

Bu kısmı çıkararak;
Kod:

        } else if (get_user(nick)) {
        notice_lang(s_NickServ, u, NICK_LINK_IN_USE, nick);

Yani diğer hiç bir komut değişmiyor, sadece nick değişmeden hızlıca nick kayıt etmeye yarıyor komut.

Bir diğer örnek ise atıyorum ki S-Bot, Nomercy veya Soyle botları gibi çok socketli botları kullanacağınız zaman tek tek nick kaydetmek çok zor oluyor. Hele bide süre sınırı var ya nick kayıtlarında her nick arasında 10 dk bekleme falan. İşte o zaman yine bu komut ile bütün nickleri 30-40 sn içerisinde kayıt edebilirsin.

hAte 05 Ekim 2014 08:49

Cevap: /NickServ REGISTERNICK Komutu
 
Emeğine sağlık , mantıklı bi sistem

xwerswoodx 10 Ekim 2014 20:18

Cevap: /NickServ REGISTERNICK Komutu
 
Teşekkürler, umarım işinize yarar :)

Delioper 03 Ocak 2015 02:24

Cevap: /NickServ REGISTERNICK Komutu
 
modules/nickserv/main.c:662: error: for each function it appears in.)
modules/nickserv/main.c:662: error: expected â;â before âpassbufâ
modules/nickserv/main.c:663: warning: implicit declaration of function âinit_passwordâ
modules/nickserv/main.c:663: error: âpassbufâ undeclared (first use in this function)
modules/nickserv/main.c:664: warning: implicit declaration of function âencrypt_passwordâ
modules/nickserv/main.c:665: warning: implicit declaration of function âclear_passwordâ
modules/nickserv/main.c:678: warning: implicit declaration of function âcopy_passwordâ
modules/nickserv/main.c:629: warning: unused variable ânâ
modules/nickserv/main.c: In function âdo_infoâ:
modules/nickserv/main.c:987: warning: unused variable âbuf2â

bire bir 2 kez uygulamama rahmen aynı hatayı alıyorum
ircservices-5.0.64 kullanıyorum

BehroozWolf 11 Ocak 2015 20:06

Cevap: /NickServ REGISTERNICK Komutu
 
Alıntı:

xwerswoodx Nickli Üyeden Alıntı (Mesaj 1041501463)
Huyum kurusun hep üşengeçliğin sonucunda kendimce bir kod yazdım, paylaşayım isteyen varsa yararlansın dedim.

Kod, /ns link ve /ns register komutlarının birleşimidir yani tamamı benim tarafımdan yazılmamıştır.


Kullanımı: /nickserv registernick nick şifre email şeklindedir.
Süre sınırı, email sınırı vb. tarzı limitler olmadan hiç nicke geçmeden nick kayıt etmenizi sağlar. Services Admin (/os admin list) listesinde olmanız gerekmektedir.

ircservices*.* > modules > nickserv > main.c

Kod:

static void do_unsuspend(User *u);
altına
Kod:

static void do_registernick(User *u);
Kod:

    { "DROPNICK", do_dropnick, is_services_admin, -1,
                -1, NICK_OPER_HELP_DROPNICK },

altına
Kod:

    { "REGISTERNICK", do_registernick, is_services_admin, -1,
                -1, NICK_HELP_REGISTER },

Kod:

/*************************************************************************/

static void do_identify(User *u) {

üstüne

Kod:

/*************************************************************************/

static void do_registernick(User *u) {
    char *nick = strtok(NULL, " ");
    char *pass = strtok(NULL, " ");
    char *email = strtok(NULL, " ");
    NickInfo *ni = u->ni, *ni2;
    NickGroupInfo *ngi = u->ngi, *ngi2;
    int n;

    if (readonly) {
            notice_lang(s_NickServ, u, NICK_REGISTRATION_DISABLED);
    } else if (!is_services_admin(u)) {
            notice_lang(s_NickServ, u, PERMISSION_DENIED);
    } else if (!nick || !pass || (NSRequireEmail && !email) || (stricmp(pass, u->nick) == 0 && (strtok(NULL, "") || (email && (!strchr(email,'@') || !strchr(email,'.')))))) {
            send_cmd(s_NickServ, "NOTICE %s Kullanimi: \2REGISTERNICK \37nick\37 \37sifre\37 \37email\37\2", u->nick);
    } else if (strlen(nick) > protocol_nickmax) {
        notice_lang(s_NickServ, u, NICK_TOO_LONG, protocol_nickmax);
    } else if (!valid_nick(nick)) {
        notice_lang(s_NickServ, u, NICK_INVALID, nick);
    } else if (stricmp(pass, u->nick) == 0 || (StrictPasswords && strlen(pass) < 5)) {
        notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD);
    } else if (email && !valid_email(email)) {
            send_cmd(s_NickServ, "NOTICE %s Lütfen gecerli bir email adresi giriniz.", u->nick);
    } else if (!reglink_check(u, nick, NULL, NULL)) {
        notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, nick);
    } else if (!ni || !ngi || ngi == NICKGROUPINFO_INVALID) {
        notice_lang(s_NickServ, u, NICK_NOT_REGISTERED);
    } else if (!user_identified(u)) {
        notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ);
    } else if (irc_stricmp(u->nick, nick) == 0) {
            send_cmd(s_NickServ, "NOTICE %s Kullandığınız nicki kayıt edemezsiniz.", u->nick);
    } else if ((ni2 = get_nickinfo(nick)) != NULL) {
                if (ni2->status & NS_VERBOTEN)
            notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
        else
            notice_lang(s_NickServ, u, NICK_X_ALREADY_REGISTERED, nick);
        put_nickinfo(ni2);
        } else if (get_user(nick)) {
        notice_lang(s_NickServ, u, NICK_LINK_IN_USE, nick);
    } else {
            Password passbuf;
        init_password(&passbuf);
        if (encrypt_password(pass, strlen(pass), &passbuf) != 0) {
            clear_password(&passbuf);
            memset(pass, 0, strlen(pass));
            module_log("Failed to encrypt password for %s (register)", u->nick);
            notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
            return;
        }
        ni2 = makenick(nick, &ngi2);
        if (!ni) {
            clear_password(&passbuf);
            module_log("makenick(%s) failed", u->nick);
            notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED);
            return;
        }
        copy_password(&ngi2->pass, &passbuf);
        clear_password(&passbuf);
        if (ni->last_usermask)
            ni2->last_usermask = sstrdup(ni->last_usermask);
        if (ni->last_realmask)
            ni2->last_realmask = sstrdup(ni->last_realmask);
        if (ni->last_realname)
            ni2->last_realname = sstrdup(ni->last_realname);
        if (ni->last_quit)
            ni2->last_quit = sstrdup(ni->last_quit);
        ni2->time_registered = ni2->last_seen = time(NULL);
        if (email)
                        ngi2->email = sstrdup(email);
        ngi2->flags = NSDefFlags;
        ngi2->memos.memomax = MEMOMAX_DEFAULT;
        ngi2->channelmax = CHANMAX_DEFAULT;
        ngi2->language = LANG_DEFAULT;
        ngi2->timezone = TIMEZONE_DEFAULT;
        put_nickinfo(ni2);
        notice_lang(s_NickServ, u, NICK_REGISTERED, nick);
        if (readonly)
            notice_lang(s_NickServ, u, READ_ONLY_MODE);
    }
}

HELP yada türkçe çeviri yapmadım dilerseniz siz yapabilirsiniz.

Kod:

static void do_registernick(User *u) {
    char *nick = strtok(NULL, " ");
    char *pass = strtok(NULL, " ");
    char *email = strtok(NULL, " ");
    NickInfo *ni = u->ni, *ni2;
    NickGroupInfo *ngi = u->ngi, *ngi2;
  int n;

int n; ? gözden kaçmiş olabilir mi? Bir kullanım alanı belirtmemişin derleme işleminde uyari verecektir.

xwerswoodx 20 Şubat 2015 23:58

Cevap: /NickServ REGISTERNICK Komutu
 
Sanırım öyle oldu, kodda kullanmamışım, bir nedenle yazmıştım heralde sonra vazgeçmişimdir, ama uzun zaman olduğu için neden yazdığım aklımda değil :) silinse sorun çıkacağını sanmıyorum

Delioper 24 Şubat 2015 15:49

Cevap: /NickServ REGISTERNICK Komutu
 
Şimdi doğrusu nasıl olacak ne yapmamız lazm

¿ 09 Mayıs 2015 07:16

Cevap: /NickServ REGISTERNICK Komutu
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 03:30.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net