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

6Beğeni(ler)

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 19 Ekim 2009, 12:36   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
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:
cd ircservices-xxx
cd modules
cd operserv
pico main.c

Aşama #1:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char * ServicesRoot;

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

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char **Sky_Roots_Char; static int Sky_Roots_Int; static int Sky_Realod=0;

Aşama #2:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static int introduce_operserv(const char *nick)

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

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
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:   Kodu kopyalamak için üzerine çift tıklayın!
old_clearchan_sender_set = 1;

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

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


iyi Çalışmalar..

__________________
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları sohbet odaları Benimmekan Mobil Sohbet
Alt 19 Ekim 2009, 12:41   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Bu belirttiğiniz herhangi bir nick, kayıtlı değil ise, uyarı verecektir status de (normalde hani Servis Root nicki kayıtlı değil gibisinden bir hata verir, root nicki kayıtlı değil ise..)

yani kısacası kodun eksiksiz olması lazım (yanlış hatırlamıyor isem [e 2~2,5 sene geçmiş
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
bayadır dokunmadığım bir editti.])

iyi Çalışmalar..

__________________
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alıntı ile Cevapla

Alt 19 Ekim 2009, 15:49   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Tebrikler, Sky-Dancer ..

__________________
n/a
 
Alıntı ile Cevapla

Alt 19 Ekim 2009, 16:59   #4
Çevrimdışı
Raw
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Mehmet kopardın yine ortalığı .. zaman makinesi ne zaman çıkıo
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.

__________________
ĻêģäĻ Düšűņ īĻĹęğàĻ Yàşà! ~
 
Alıntı ile Cevapla

Alt 19 Ekim 2009, 17:00   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




modules/operserv/main.c: In function âRoot_Ayirâ:
modules/operserv/main.c:203: error: âLeviS_Roots_Charâ undeclared (first use in this function)
modules/operserv/main.c:203: error: (Each undeclared identifier is reported only once
modules/operserv/main.c:203: error: for each function it appears in.)
modules/operserv/main.c: At top level:
modules/operserv/main.c:359: error: expected â;â, â,â or â)â before â*â token

Böyle bir hata veriyor hoca.


Konu toXic tarafından (19 Ekim 2009 Saat 17:14 ) değiştirilmiştir.
 
Alıntı ile Cevapla

Alt 19 Ekim 2009, 17:11   #6
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Üstad Sky ilede denedim yine aynı hataya vardım
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
vallahi.

 
Alıntı ile Cevapla

Alt 19 Ekim 2009, 17:14   #7
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Kendi Nickini yazarsan doğal olarak verir sky sabitlenmiş durumda ve sabit olarak kaydetmiş sen ahmet_roots_char olarak değiştirirsen normal olarak hata verir. eğer ki değiştirceksen tüm editleri tekrar göze almalısın.


Kod:   Kodu kopyalamak için üzerine çift tıklayın!
char **Sky_Roots_Char; static int Sky_Roots_Int; static int Sky_Realod=0;

Bu Sekil değiştirmeden kullanırsan bir sorun olmaz.

 
Alıntı ile Cevapla

Alt 20 Ekim 2009, 00:51   #8
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




İşte budur sonunda yine herkesin istediği fakat başaramadığı düzenlemeyi yaptın ve kodu yazdın helal olsun be usta cidden. Eline koluna yüreğine sağlık
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.

 
Alıntı ile Cevapla

Alt 20 Ekim 2009, 00:55   #9
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




CoboL Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
modules/operserv/main.c: In function âRoot_Ayirâ:
modules/operserv/main.c:203: error: âLeviS_Roots_Charâ undeclared (first use in this function)
modules/operserv/main.c:203: error: (Each undeclared identifier is reported only once
modules/operserv/main.c:203: error: for each function it appears in.)
modules/operserv/main.c: At top level:
modules/operserv/main.c:359: error: expected â;â, â,â or â)â before â*â token

Böyle bir hata veriyor hoca.

Sky yazan yerleri neden başka isim ile değiştirirsiniz anlamam. Sonradan telnete giriş yapacaklar için ise; yine bu, bir tür emek hırsızlığı sayılıyor.

LeviS_Roots_Char -> Sky_Roots_Char'ı bu halde değiştirmişsin fakat en üstteki tanımda değiştirmemişsin veya tanımlamayı unutmuşsun. Haliyle derleyici sana demiş ki: âLeviS_Roots_Charâ tanımlanmadı (bu fonksiyon içerisinde ilk kullanımı)

iyi Çalışmalar..

__________________
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
 
Alıntı ile Cevapla

Alt 20 Ekim 2009, 01:07   #10
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ircservices çoklu root eklentisi




Bizim milletimiz nedense birşeylerle oynamayı çok seviyor orasını değiştirir burasını değiştirir. Bırakın bu işleri madem çok seviyorsunuz oturun kendiniz yazın sıfırdan ama yazılmışsa emeğe saygısızlık yapmayın kurcalamayın orasını burasını.

 
Alıntı ile Cevapla

Cevapla

Etiketler
coklu, eklentisi, root


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

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Ircservices'te Çoklu Root Hakkında ecoll IRCServices 1 31 Ocak 2011 16:25
OP Kanalı Eklentisi For IRCServices-5.0.* ArresT Services Hazır Kodlar 28 09 Ekim 2010 00:55
ircservices root sorunu? aSi_GeNçx IRCServices 10 29 Ocak 2009 03:59
ircservices te sadece tek root mu eklenebiliyor ? zimone Servisler 9 31 Ocak 2006 09:07