IRCForumda.Net  

Geri git   IRCForumda.Net > Genel IRCd > Servisler

Servisler Anope, Ircservices v.b. servisler ile ilgili kurulumları, modulleri, ayarları, soru, sorunlarınız ve paylaşımlarınız.

Cevapla
 
LinkBack Seçenekler Stil
Eski 10-11-2009   #1 (permalink)
Halfop (%)
CONSTANTiN Kullanıcısının Avatarı
Giriş Tarihi: 04-05-2008
Yaş: 27
Mesajlar: 254
Ruh Hali:
İtibar Gücü: 11
Rep Puanı : 130
Rep Derecesi : CONSTANTiN will become famous soon enoughCONSTANTiN will become famous soon enough
CONSTANTiN  Kullanıcısına MSN yoluyla mesaj gönder
Varsayılan ircservices çoklu root eklentisi

Bir zamanlar çok istenen bir özellik..
16.06.2007 tarihinde yapmıştım, ve yayınlamaya karar verdim.
kodlama : orta~zor
ekleme (edit) : kolay~orta

tek dosya içerisinde işlem yapıyoruz:

Aşama #0:
Kod:
cd ircservices-xxx
cd modules
cd operserv
pico main.c
Aşama #1:


Kod:
  char * ServicesRoot;

bu kodu bulup "hemen altına" şu kodları ekleyin:



Kod:
        char **Sky_Roots_Char;
    static int Sky_Roots_Int;
    static int Sky_Realod=0;

Aşama #2:


Kod:
static int introduce_operserv(const char *nick)

bu kodu bulup "hemen üstüne" şu kodları ekleyin:



Kod:
     void Root_Ayir(char *ServicesRoot_);
void Root_Ayir(char *ServicesRoot_) {
 char *Sky_Temp=NULL;
 Sky_Realod=1;
    if (ServicesRoot_) {
        Sky_Roots_Int = 0;
        Sky_Temp = strtok(ServicesRoot_, " ");
        do {
            if (Sky_Temp) {
                 Sky_Roots_Int++;
                Sky_Roots_Char = realloc(Sky_Roots_Char, sizeof(char *) * Sky_Roots_Int);
                Sky_Roots_Char[Sky_Roots_Int - 1] = sstrdup(Sky_Temp);
            }
        }
  while ((Sky_Temp = strtok(NULL, " ")));
    }
    if (!Sky_Roots_Int)
  config_error("operserv/main", 0, "No Root NickName(s) Defined");
}

Aşama #3:


Kod:
  int is_services_root(User *u)
{
    NickInfo *ni;
    int rootid;
    static int warned_ni = 0, warned_id = 0;
    if (u->flags & UF_SERVROOT)
 return 1;
    if (!(ni = get_nickinfo(ServicesRoot))) {
 if (!warned_ni) {
     wallops(s_OperServ, "Warning: Services super-user nickname %s"
      " is not registered", ServicesRoot);
     warned_ni = 1;
 }
 module_log("warning: ServicesRoot nickname not registered");
 return 0;
    }
    warned_ni = 0;
    if (!(rootid = ni->nickgroup)) {
 if (!warned_id) {
     wallops(s_OperServ, "Warning: Services super-user nickname %s"
      " is forbidden or not properly registered", ServicesRoot);
     warned_id = 1;
 }
 module_log("warning: ServicesRoot nickname forbidden or registered"
     " data corrupt");
 return 0;
    }
    if (!is_oper(u) || !u->ni || u->ni->nickgroup != rootid)
 return 0;
    if (user_identified(u))
 return 1;
    return 0;
}

bu kodları silip yerine şu kodları ekleyin (7~8 yerde değişim olduğu için iş karışabilir, o yüzden eskiyi silip yeniyi ekleyin diyorum)



Kod:
     int is_services_root(User *u)
{
 int i;
 int ret=0;
    NickInfo *ni;
    int rootid;
    static int warned_ni = 0, warned_id = 0;
    if (u->flags & UF_SERVROOT)
 return 1;
 for (i = 0; i < Sky_Roots_Int; i++) {
 
  if (!(ni = get_nickinfo(Sky_Roots_Char[i]))) {
//   if (!warned_ni) {
    wallops(s_OperServ, "Warning: Services super-user nickname %s"
     " is not registered", Sky_Roots_Char[i]);
    warned_ni = 1;
//   }
   module_log("warning: ServicesRoot nickname not registered");
   continue;
  }
//  warned_ni = 0;
  if (!(rootid = ni->nickgroup)) {
//   if (!warned_id) {
    wallops(s_OperServ, "Warning: Services super-user nickname %s"
    " is forbidden or not properly registered", Sky_Roots_Char[i]);
//   warned_id = 1;
//   }
   module_log("warning: ServicesRoot nickname forbidden or registered"
     " data corrupt");
  continue;
  }
 }
 for (i = 0; i < Sky_Roots_Int; i++) {
  if (!(ni = get_nickinfo(Sky_Roots_Char[i])))
   continue;
  if (!(rootid = ni->nickgroup))
   continue;
  if (!is_oper(u) || !u->ni || u->ni->nickgroup != rootid) {
   ret=0;
  }
  else {
   ret=1;
  break;
  }
 }
    if (ret && user_identified(u))
 return 1;
    return 0;
}

Aşama #4:


Kod:
        int nick_is_services_admin(NickInfo *ni)
{
    NickGroupInfo *ngi;
    if (!ni || !(ngi = get_ngi(ni)))
 return 0;
    if (stricmp(ni->nick, ServicesRoot) == 0)
 return 1;
    return ngi->os_priv >= NP_SERVADMIN;
}

bu kodları silip, yerine şu kodları ekleyin;



Kod:
       int nick_is_services_admin(NickInfo *ni)
{
 int i;
    NickGroupInfo *ngi;
    if (!ni || !(ngi = get_ngi(ni)))
 return 0;
 for (i = 0; i < Sky_Roots_Int; i++)
  if (stricmp(ni->nick, Sky_Roots_Char[i]) == 0)
   return 1;
    //if (stricmp(ni->nick, ServicesRoot) == 0)
 //return 1;
    return ngi->os_priv >= NP_SERVADMIN;
}

Aşama #5:


Kod:
old_clearchan_sender_set = 1;

yukarıdaki kodu bulup, hemen altına şu kodları ekleyin;



Kod:
 if (Sky_Realod==0)
  Root_Ayir(ServicesRoot);

make & make install çekip, servislerinizi yeniden başlatınız..

kodlar biraz karışık. Bu yüzden anlayamayabilirsiniz nerde ne yapıldığını.. ama kısaca özetlemek gerekir ise;
Root satırından gelen nick verisini, aradaki boşluklara göre ayırıp, array'e aktarıp, is_service_root vs. kısmında bu arraydeki nicklerin varlığı||yokluğu şeklinde bakıyoruz.. Varsa root diyoruz. Yok ise root değil diyoruz

moduels.conf unuzdaki Root satırınıza bilgi girerken;
ServicesRoot Nick1 Nick2
yukarıdaki şekilde DEĞİL;
ServicesRoot "Nick1 Nick2"
şeklinde girmeniz gerekiyor..

Not : 1 defa test edip olumlu sonuç aldım..

Başka forumlarda paylaşırsanız; Kodun Kimin tarafından yapıldığını da söylemeniz dileğiyle

iyi Çalışmalar..

Programcı[IMG] : Sky-Dancer
__________________
ڪéђìђ OŁmǻmı ìڪ†ìyǿrڪǻђ ßéђìm OŁmǻyı Òqréђécékڪìђ

mIRCLan (SRA) By: CONSTANTiN
CONSTANTiN Şuan Çevrimdışı   Alıntı ile Cevapla
Cevapla

Etiketler
çoklu, eklentisi, ircservices, root


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Mesaj Yazma Kuralları
Konu Açma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

İfadeler Açık
[IMG] Kodları Açık
HTML Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Foruma Zıpla

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
RooT aranıyor (ücretsiz) JackDaniels Geri Dönüşüm Kutusu 1 14-01-2009 17:08
RooT aranıyor (ücretsiz) JackDaniels Sunucu Tanıtımı 2 11-01-2009 22:41
IRCServices Kurulumu Nemrut Geri Dönüşüm Kutusu 3 15-12-2008 11:40
Web Geliştiriciler İçin En İyi 17 Firefox Eklentisi Stripling Program Download 0 16-10-2008 19:27
Cr Root Admin komutları Sinner ConferenceRoom 0 05-08-2008 23:57

Bağlantılar Temel Forum Bilgileri ve Yasal Uyarılar
toplist

Bu forum, Türkiye'nin yeni IRC forum girişimi olan IRCForum.Com'u desteklemektedir.
IRCForumda.Net, vBulletin® 3.8.3 altyapısı kullanılarak tasarlanmıştır.
Telif hakkı ©2000-2012, Jelsoft Enterprises Ltd. şirketine aittir.
Site açıklaması: IRC Forum Sitesi - IRC sunucuları, mIRC Scripting, IRCd yardım, Webmaster ve her tür forumlara yer veren IRC forumu!

IRCForumda.Net, bir forum sitesi olduğu için kullanıcılar her türlü görüşünü, onay beklemeksizin siteye ileti olarak gönderebilmektedir. 5651 sayılı yasaya göre bu yazılardan doğabilecek tüm sorumluluk ilgili kullanıcıya ait olup, yine 5651 sayılı yasaya göre sitemiz, iletileri kontrol etmekle yükümlü değildir. Forum yöneticilerinin gözünden kaçan bu tür durumlarda, şikâyetlerinizi admin@ircforumda.net elektronik posta adresine bildirirseniz gerekli işlemler iki iş günü içerisinde forum sorumlularınca gerçekleştirilecektir.

2008-2011© IRC bir tutkudur!


Search Engine Friendly URLs by vBSEO 3.2.0