IFGT Hazır kod Online Seviyesi Ve Buna Göre /NS SET HOST

IFGENTR Konu Bilgileri

Konu Hakkında Merhaba, tarihinde Services Hazır Kodlar kategorisinde KraL tarafından oluşturulan Online Seviyesi Ve Buna Göre \/NS SET HOST başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 9 kez görüntülenmiş, 0 yorum ve 0 tepki puanı almıştır...
Kategori Adı Services Hazır Kodlar
Konu Başlığı Online Seviyesi Ve Buna Göre \/NS SET HOST
Konbuyu başlatan KraL
Başlangıç tarihi
Cevaplar
Görüntüleme
İlk mesaj tepki puanı
Son Mesaj Yazan KraL

KraL

IFGT Süper Moderatör
Katılım
27 Kas 2025
Mesajlar
1,421
Tepkime puanı
19
IFGT Puan
38
Öncelikle Bu Sistemi Kullanabilmeniz icin, TOTAL Online Time IRCServiceslerinizde var olmali.

( Kodlar ve anlatim -> IFGT Hazır kod - Total Online Time )

Bununla ilişki icinde Seviye sistemi Kurarak, Onlineye Göre, Nick infosuna Birtakım seyler yazacağız. Bu Sistem ile Bircok komutu acabilir bircok özellik yapabilirsiniz.
Anopedeki nick Kayit tarihine göreki olaydaki sistemi ircservicese göre Online olarak ayarlayıp faaliyete sokuyoruz.
Ayrıca /NS Set host hostunuz Komutu ilede, Hostunuzu Belirleyebilir Tabi sonunda %s.Kelebek.Gen.TR Yani Vhost.Kelebek.Gen.TR Olarak belirleniyor. Sunucu adını Sonuna yazabilirsiniz.
Fakat Bu Komutu, Sadece Onlinesi Belirli Bir Süreye Ulasan Kullanıcılar ERİŞEBİLİR. O Seviyeden Düşük Olan Kullanıcılar Komutu Kullanamaz.
IDENTFY Edilince, Hostu varsa, Kullanıcıya verilir.



Aynen Bu Sekildeki Gibi.

Ayrica Online Seviyesinide INFO 'Da gösteriyoruz.

nickserv -- info toXic
© NickServ ------------------ KELEBEK IRCd Network--------------
© NickServ
© NickServ toXic isim: return -1;
© NickServ Online oldugu adres: 1@IRCAdministrator.Kelebek.Gen.TR
© NickServ Toplam Online Süresi: 139 Gun 6 Saat 49 Dakika ve 58 Saniye.
© NickServ Online Durumuna Gore Seviyesi (Asistan KELEBEK)
© NickServ Kayit zamani: Agu 12 22:45:13 2007 CEST
© NickServ Son quit mesaji: www.kelebekblog.com
© NickServ URL: UnrealIRCd •» News/Announcements
© NickServ Bilgi: İşleri Varken Yalarlar, İşleri Bitince KRALLAR!
© NickServ Ekler: Kill korumasi,Ek Guvenlik,Ozel
© NickServ Daha fazla bilgi icin: /msg NickServ INFO toXic ALL
© NickServ
© NickServ Tüm Nick ve Kanallar GENEL IRC kuralları dahilinde ilk kayit eden kişiye Aittir
© NickServ Kelebek Yönetimi, Nick ve Kanalların kullanımını kurallar dahilinde yasaklayabilir, devir edebilir.
© NickServ Yönetim bu konuda herhangi bir ACIKLAMA veya DUYURU gerekmedikçe yapmaz.
© NickServ Bu Kisi KELEBEK bağımlısıdır, tedavisi yoktur.!
© NickServ
© NickServ ------------------ KELEBEK IRCd Network--------------


Olarak Gösteriyoruz..

Söylediğim Gibi, /ns set HOST Komutunu Sadece Services Adminler ve Online Seviyesi, Daha Önce Belirlenmiş Süreyi Geçti ise Kullanabilirler.
Saolsun Serkan Abide, Tıkandıgım anda yardımcı Oldu. :)

Gelelim Kodlara;

-


Kod:
cd ircservices*-*

Kod:
pico modules/nickserv/main.c


Kod:
static void do_identify(User *u)
{
    char *pass = strtok_remaining();
    NickInfo *ni = NULL;
    NickGroupInfo *ngi = NULL;

satirinin altina;

Kod:
    static int SEVIYEX = 1; 
    static int SEVIYEXX =  4320000;
    static int SEVIYEXXX = 8640000;
    static int SEVIYEXXXX = 17280000;
/* Seviyex 1 saniye , SeviyeXX 50 Gün , SeviyeXXX 100 G, SEVİYEXXXX 200 Gün  Saniye Olarak ayarlidir. */


Ekliyoruz..

Kod:
    } else if (call_callback_2(module, cb_id_check, u, pass) <= 0) {
        int old_authstat = ni->authstat;
        set_identified(u, ni, ngi);
        module_log("%s!%s@%s identified for nick %s",
                   u->nick, u->username, u->host, u->nick);
        notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);

Altina;

Kod:
 if((ngi->host!=NULL))
send_cmd(s_NickServ, "CHGHost %s %s.Kelebek.Gen.TR", u->nick, ngi->host);

Ekliyoruz.

/* Eğer Ben NS SET HOST Sistemini Değilde, Sadece Online Seviyesini yapmak istiyorum diyenler Assadaki kodu kullansın, eğer hem online sistemi hemde ns set host sistemini kullanırsanız karısır cünkü Online sistemi KENDİ HOST VERMEKTEDİR. NS SET HOST Kullanırsanız cakısma yasanır. */

Kod:
 if(!is_oper(u))
        {
        if (SEVIYEXXXX &&  ni->toplamzaman  >= SEVIYEXXXX) {
        notice(s_NickServ, u->nick, "Online  Surenize Gore Durumunuz \2Profosyonel KELEBEK\2 Olarak Kaydedildi");
        send_cmd(s_NickServ, "CHGHost %s ProfosyonelKelebek.%s.Kelebek.Gen.Tr", u->nick, u->nick);
        }
        else if (SEVIYEXXX && ni->toplamzaman >= SEVIYEXXX) {
   notice(s_NickServ, u->nick, "Online  Surenize Gore Durumunuz \2Asistan KELEBEK\2 Olarak Kaydedildi");
 send_cmd(s_NickServ, "CHGHost %s AsistanKelebek.%s.Kelebek.Gen.Tr", u->nick, u->nick);
        }
        else if (SEVIYEXX &&  ni->toplamzaman >= SEVIYEXX) {
send_cmd(s_NickServ, "NOTICE %s \2Online\2 Surenize Gore Durumunuz \2StudenT KELEBEK\2 Olarak Kaydedildi", u->nick);;
        }
}

/* Yukardada belirttiğim gibi Yukardaki Kodu , /NS SET HOST Komutunu kullanmayacaksanız ekleyin. Bunda, Services operler icin deaktif olacaktır. Eğer Kullanacaksanız Yukardaki Kodu es gecin */


Kod:
[CODE]    } else if (call_callback_2(module, cb_id_check, u, pass) <= 0) {
        int old_authstat = ni->authstat;
        set_identified(u, ni, ngi);
        module_log("[COLOR=#0000ff]%s!%s@%s[/COLOR] identified for nick %s",
                   u->nick, u->username, u->host, u->nick);
        notice_lang(s_NickServ, u, NICK_IDENTIFY_SUCCEEDED);
[/CODE]

Altina;

Kod:
 if((ngi->host!=NULL))
send_cmd(s_NickServ, "CHGHost %s %s.Kelebek.Gen.TR", u->nick, ngi->host);

Ekleyin..


Aynı Dosyada;

Kod:
static void do_info(User *u)
{
    char *nick = strtok(NULL, " ");
    char *param = strtok(NULL, " ");
    NickInfo *ni;
    NickGroupInfo *ngi;

Altina;

Kod:
    static int SEVIYEX = 1;
    static int SEVIYEXX =  4320000;
    static int SEVIYEXXX = 8640000;
    static int SEVIYEXXXX = 17280000;

Ekleyin..

Yine Aynı Dosyada;

Kod:
send_cmd(s_NickServ,
"NOTICE %s :Toplam Online S�resi: %d Gun %d Saat %d Dakika ve %d Saniye.",
u->nick,  (ni->toplamzaman / 86400), ((ni->toplamzaman % 86400) / 3600),
  (((ni->toplamzaman % 86400) % 3600) / 60),
  ((((ni->toplamzaman % 86400) % 3600) % 60) % 60));

Altina;

Kod:
        if (SEVIYEXXXX &&  ni->toplamzaman  >= SEVIYEXXXX) {
                notice(s_NickServ, u->nick, "\2Online\2 Durumuna Gore Seviyesi \2(ProfosyoneL KELEBEK)\2");
        }
        else if (SEVIYEXXX && ni->toplamzaman >= SEVIYEXXX) {
                notice(s_NickServ, u->nick, "\2Online\2 Durumuna Gore Seviyesi \2(Asistan KELEBEK)\2");
        }
        else if (SEVIYEXX &&  ni->toplamzaman >= SEVIYEXX) {
        notice(s_NickServ, u->nick, "\2Online\2 Durumuna Gore Seviyesi \2(StudenT KELEBEK)\2");
        }
else  if (SEVIYEX &&  ni->toplamzaman >= SEVIYEX) {
        notice(s_NickServ, u->nick, "\2Online\2 Durumuna Gore Seviyesi \2(New KELEBEK)\2");
}

Ekleyin..

Aynı dosyada;

Kod:
 { "SET INFO",     NULL,    NULL,  NICK_HELP_SET_INFO,     -1,-1 },

Altina;

Kod:
{ "SET HOST", NULL, NULL, -1 -1,-1 },

Ekleyin.

Kod:
     if (ngi->info)
            notice_lang(s_NickServ, u, NICK_INFO_INFO, ngi->info);

Altina,

Kod:
if (ngi->host)
            notice_lang(s_NickServ, u, NICK_INFO_HOST, ngi->host);

Ekleyip, Kaydedip Cikin.

Kod:
pico modules/nickserv/set.c

Dosyasında;

Kod:
static void do_set_info(User *u, NickGroupInfo *ngi, char *param);

Altina;

Kod:
static void do_set_host(User *u, NickGroupInfo *ngi, char *param);

ekleyin.

Kod:
 } else if (stricmp(cmd, "KILL") == 0) {
        do_set_kill(u, ngi, param);

SATIRININ ÜSTÜNE


Kod:
   } else if (stricmp(cmd, "HOST") == 0) {
        do_set_host(u, ngi, param);

EKLEYİN.

Kod:
do_set_host(u, ngi, NULL);
    } else {
        syntax_error(s_NickServ, u, "UNSET",
            NSRequireEmail ? NICK_UNSET_SYNTAX_REQ_EMAIL : NICK_UNSET_SYNTAX);
    }
}

SATIRININ ÜSTÜNE

Kod:
} else if (stricmp(cmd, "HOST") == 0) {
do_set_host(u, ngi, NULL);

ekleyin.

Kod:
/*************************************************************************/
static void do_set_kill(User *u, NickGroupInfo *ngi, char *param)
{
    if (stricmp(param, "ON") == 0) {
        ngi->flags |= NF_KILLPROTECT;
        ngi->flags &= ~(NF_KILL_QUICK | NF_KILL_IMMED);
        notice_lang(s_NickServ, u, NICK_SET_KILL_ON);
    } else if (stricmp(param, "QUICK") == 0) {
        ngi->flags |= NF_KILLPROTECT | NF_KILL_QUICK;
        ngi->flags &= ~NF_KILL_IMMED;
        notice_lang(s_NickServ, u, NICK_SET_KILL_QUICK);
    } else if (stricmp(param, "IMMED") == 0) {


Bölümünün YINE ÜSTÜNE




Kod:
/**********************************************************/
 
static void do_set_host(User *u, NickGroupInfo *ngi, char *param)
{
  static int SEVIYEX = 1;
    static int SEVIYEXX =  4320000;
    static int SEVIYEXXX = 8640000;
    static int SEVIYEXXXX = 17280000;
    NickInfo *ni;
    const char *nick = ngi_mainnick(ngi);
    if (!is_services_admin(u) && SEVIYEXXXX &&  ni->toplamzaman  <= SEVIYEXXXX) {
        notice_lang(s_NickServ, u, PERMISSION_DENIED);
/*
send_cmd(s_NickServ, "NOTICE %s Bu Komutu Kullanabilmeniz icin \2%d\2 Gun   online  olmalisiniz.", u->nick, SEVIYEXXXX  % 86400) % 3600) / 60);
*/
send_cmd(s_NickServ,
    "NOTICE %s :Toplam Online Süresiniz: %d Gun %d Saat %d Dakika ve %d Saniye Olmalidir.",
     u->nick,  (SEVIYEXXXX / 86400), ((SEVIYEXXXX % 86400) / 3600),
     (((SEVIYEXXXX % 86400) % 3600) / 60),
     ((((SEVIYEXXXX % 86400) % 3600) % 60) % 60));
 
         return 0;
    }
    free(ngi->host);
    if (param) {
 if (strlen(param)>10000) {
        notice_lang(s_NickServ, u, NICK_SET_HOST_SYNTAX, nick);
        return;
}
        ngi->host = sstrdup(param);
        notice_lang(s_NickServ, u, NICK_SET_HOST_CHANGED, nick, param);
send_cmd(s_NickServ, "NOTICE %s Hostunuz \2%s\2 Olarak Belirlendi. Lutfen Nıckınızı \2IDENTIFY\2 Edınız.", u->nick, ngi->host);
 
    } else {
 
        ngi->host = NULL;
        notice_lang(s_NickServ, u, NICK_UNSET_HOST, nick);
    }
    put_nickgroupinfo(ngi);
}


Ekleyip Kaydedip cıkın gencler.

Kod:
pico modules/nickserv/util.c

Girip;

Kod:
/* Free a NickGroupInfo structure and all associated data. */
EXPORT_FUNC(free_nickgroupinfo)
STANDALONE_STATIC void free_nickgroupinfo(NickGroupInfo *ngi)
{
    int i;
    if (!ngi)
        return;
    free(ngi->url);
    free(ngi->email);
    free(ngi->info);

Altina;

Kod:
free(ngi->host);

ekelyin.

Kod:
pico modules/nickserv/nickserv.h

girip;

Kod:
   SuspendInfo *suspendinfo;   /* Suspension info (non-NULL => suspended) */

SATIRININ ÜSTÜNE

Kod:
 char *host;

Olarak tanımlayalım.

Kod:
pico lang/index
girip;

Kod:
NICK_SET_INFO_CHANGED

altina;

Kod:
NICK_SET_HOST_CHANGED

ekleyin.

Kod:
NICK_UNSET_INFO

altina;

Kod:
NICK_UNSET_HOST

ekleyin.

Kod:
NICK_INFO_INFO

altina;

Kod:
NICK_INFO_HOST

ekleyin.


Kod:
NICK_HELP_SET_INFO

altina;

Kod:
NICK_HELP_SET_HOST

ekleyin.

Kod:
NICK_SET_LANGUAGE_SYNTAX

Satirinin üstüne

Kod:
NICK_SET_HOST_SYNTAX

ekleyin.

Gelelim DATABASEYE OKUTMASINA VE YAZMASINA. Ne Olur, Ne Olmaz, Siz Yedek alın. Güvenlik Her zaman Önde gelir her daim. :p

Kod:
pico modules/database/version4.c

Girerek;

Kod:
SAFE(write_string(ngi->info, f));

Altina;

Kod:
SAFE(write_string(ngi->host, f));

ekliyorz.

Kod:
    if (ngi->info)
            mem += strlen(ngi->info)+1;


Altina;

Kod:
      if (ngi->host)
        mem += strlen(ngi->host)+1;

ekliyoruz.

Sonra kaydedip Cıkarak Yaptıklarımızı Derliyoruz.

ircservices ana dizinde

Kod:
make&&make install

Ardindan /os update ile birlikte /os restart ile resetliyoruz servislerimizi.

Ardindan, IRC Üzerinden -> Ki tabi Services Admin iken Yapın Cünkü Online Var ya.. Yüksek olmak zorunda services admin değil iseniz tabi..

/ns set host hostunuz Komutunu Kullanin.



Ardından;

Yazmayı Yaptıktan Sonra, Sıra Geldi Okutmaya;

Kod:
pico modules/database/version4.c

Kod:
 SAFE(read_string(&ngi->info, f));

Altina;

Kod:
SAFE(read_string(&ngi->host, f));

Ekleyip Bitiriyoruz. Umarım Bu Sistem Zamanla Geliştirilir. Ki Zaten Bu Örnek alınarak Bence Online Süresine Göre Bircok sey yapilabilir. İmkansiz diye Birşey yoktur. ;)

Kolay Gelsin..