IFGT Hazır kod OP Kanalı Eklentisi For IRCServices-5.0.*

IFGENTR Konu Bilgileri

Konu Hakkında Merhaba, tarihinde Services Hazır Kodlar kategorisinde KraL tarafından oluşturulan OP Kanalı Eklentisi For IRCServices-5.0.* başlıklı konuyu okuyorsunuz. Bu konu şimdiye dek 8 kez görüntülenmiş, 0 yorum ve 0 tepki puanı almıştır...
Kategori Adı Services Hazır Kodlar
Konu Başlığı OP Kanalı Eklentisi For IRCServices-5.0.*
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; Yapacağımız editlemeler; tarafımdan yapılmış olup, Sky-Dancer, Diablo ve Bronx [AnarchYBrotherS tester] tarafından test edildi. [ kendilerine teşekkür ederim ]

Bu uygulamanın yararı, her kanal sahibi kendisine bir op kanalı seçebilecektir ve de kanala giren bir op otomatik olarak op kanalına girecektir. OP Kanaliniz aynı zamanda da kanalınızın infosunda görünecektir. Küçük kanallar ise OP Kanalı yönlendirmesini kardeş kanalı için kullanabilirler, böylece Kardeş kanallarına oplarını da otomatik olarak gönderebilirler.


Yapacağımız uygulama da ilk yapmanız gereken şey chan.db nizi yedeklemektir. Lütfen Bunu unutmayınız. Aksi Durumlarda chan.db niz hasar görebilir ve de kullanılmaz hale gelebilir.

Kodlama; ircservices-5.0.59 kodlama yapısında yapılmış ve diğer ircservices versiyonları içinde denenmiştir.

Öncelikle;

Kod:
cd ircservices-5.x.xx

Kod:
cd modules

Kod:
cd chanserv

komutları ile chanservimizin modüllerini açıyoruz.

Kod:
pico main.c

main.c klasöründe;

Kod:
{ "SET URL", NULL, NULL, CHAN_HELP_SET_URL, -1,-1 },

kodunu bulup hemen altına,

Kod:
{ "SET OPSCHAN", NULL, NULL, CHAN_HELP_SET_OPSCHAN, -1,-1 },

ekliyoruz. aynı dosyada;

Kod:
if (ci->url)
notice_lang(s_ChanServ, u, CHAN_INFO_URL, ci->url);

kodunu bulup hemen altına,

Kod:
if (ci->opschan)
notice_lang(s_ChanServ, u, CHAN_INFO_OPSCHAN, ci->opschan);

ekliyoruz ve de main.c dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter)

daha sonra, aynı klasörde ( /modules/chanserv ) bulunan,

Kod:
pico set.c

komutu ile set.c dosyasını açıyoruz.

Kod:
static void do_set_url(User *u, ChannelInfo *ci, char *param);

kodunu bulup hemen altına,

Kod:
static void do_set_opschan(User *u, ChannelInfo *ci, char *param);

ekliyoruz ve aynı dosyada;

Kod:
} else if (stricmp(cmd, "URL") == 0) {
do_set_url(u, ci, param);

kodunu bulup hemen altına,

Kod:
} else if (stricmp(cmd, "OPSCHAN") == 0) {
do_set_opschan(u, ci, param);

ekliyoruz ve aynı dosyada;

Kod:
} else if (stricmp(cmd, "URL") == 0) {
do_set_url(u, ci, NULL);

kodunu bulup hemen altına,

Kod:
} else if (stricmp(cmd, "OPSCHAN") == 0) {
do_set_opschan(u, ci, NULL);

ekliyoruz ve aynı dosyada;

Kod:
/*************************************************************************/
static void do_set_url(User *u, ChannelInfo *ci, char *param)
{
if (param && !valid_url(param)) {
notice_lang(s_ChanServ, u, BAD_URL);
return;
}
free(ci->url);
if (param) {
ci->url = sstrdup(param);
notice_lang(s_ChanServ, u, CHAN_URL_CHANGED, ci->name, param);
} else {
ci->url = NULL;
notice_lang(s_ChanServ, u, CHAN_URL_UNSET, ci->name);
}
put_channelinfo(ci);
}
/*************************************************************************/

kodlarını bulup hemen altına,

Kod:
static void do_set_opschan(User *u, ChannelInfo *ci, char *param)
{
/** Coded by Diablo **/
        if (param) {
        if (param[0]!='#') {
        notice_lang(s_ChanServ, u, BAD_OPSCHAN);
        return;
/** Coded by Diablo **/
    } 

    free(ci->opschan);
    if (param) {
        ci->opschan = sstrdup(param);
        notice_lang(s_ChanServ, u, CHAN_OPSCHAN_CHANGED, ci->name, param);
     }  else {
        ci->opschan = NULL;
        notice_lang(s_ChanServ, u, CHAN_OPSCHAN_UNSET, ci->name);
    }
    put_channelinfo(ci);
}
}
/*************************************************************************/

ekliyoruz. [ /***/ arası sadece düzenli olsun diye koydum düzenli olmak lazım değil mi ? :) ] ve de set.c dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter) (Ara Kodlamada eklentisi için diabloya teşekkürler )

Aynı klasörde ( /modules/chanserv ) bulunan chanserv.h dosyasını,

Kod:
pico chanserv.h

ile açıyoruz.

Kod:
char *url;

kodunu bulup hemen altına,

Kod:
char *opschan;

kodunu ekliyoruz ve de chanserv.h dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter)

aynı klasörde ( /modules/chanserv ) bulunan util.c dosyasını,

Kod:
pico util.c

komutu ile açıyoruz.

Kod:
free(ci->url);

kodunu bulup hemen altına,

Kod:
free(ci->opschan);

kodunu ekliyoruz ve de util.c dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter)

modülize kısmında işimiz bitti, ANCAK; database kayıtlarının yapılması ve de Language kısmını ayarlamak için daha işlemlerimiz devam ediyor.

ircservices-5.x.xx içinde languages adlı klasöre giriş yapıyoruz.

Kod:
cd ircservices-5.x.xx/lang/

yaparak klasöre giriş yapıyoruz ve kodlamamıza devam ediyoruz. Ancak buradaki kodlamalarınızda lütfen satır kaydırmamaya dikkat edelim. Satır kaydırıldığında Chanservinizin mesajlarında kayma ya da Chanservde çalışamama hatası alabilirsiniz. Bu yüzden burada FTP yolu ile kendi makinanıza download ettikten sonra editleme en iyi yapılacak şeydir. Bir Editör programı kullanmakta mantıklı bir iş tabi ki de ancak zorunlu değil.. ( Tavsiye; Editplus ) önemli olan SATIR KAYDIRMAMAK.. [ yani bir boşluk varsa o boşluk diğer parametre içinde olmalıdır. ]

ircservices-5.x.xx/lang klasöründe,

Kod:
pico tr.l

dosyasına giriş yapıp,

Kod:
BAD_URL
URL bilgileri http://hostname[:port]/... ya da ftp://hostname[:port]/... seklinde olmak zorundadir.

kodunu bulup hemen altına,

Kod:
BAD_OPSCHAN
Sadece isimleri # ile baslayan kanallari OP Kanali secebilirsiniz.

kodunu ekliyoruz ve aynı dosyada;

Kod:
CHAN_REGISTER_INVALID_NAME
Sadece isimleri # ile baslayan kanallari kaydedebilirsiniz.

kodunu bulup hemen altına,

Kod:
CHAN_OPSCHAN_INVALID_NAME
Sadece isimleri # ile baslayan kanallari OP Kanali secebilirsiniz.

kodunu ekliyoruz aynı dosyada;

Kod:
# SET URL responses
CHAN_URL_CHANGED
%s kanalinin web adresi (URL) %s olarak degisti.

kodunu bulup hemen altına,

Kod:
# SET OPSCHAN responses
CHAN_OPSCHAN_CHANGED
%s kanalinin OP Kanali %s olarak degisti.
# SET EMAIL responses

şeklinde ekliyoruz aynı dosyada;

Kod:
CHAN_URL_UNSET
%s kanalinin web adresi (URL) silindi.

kodunun hemen altına,

Kod:
CHAN_OPSCHAN_UNSET
%s kanalinin OP kanali silindi.

şeklinde ekliyoruz ve aynı dosyada;

Kod:
CHAN_INFO_URL
URL: %s

kodunu bulup hemen altına da,

Kod:
CHAN_INFO_OPSCHAN
OP Kanali: %s

şeklinde ekliyoruz ve aynı dosyada;

Kod:
DESC Kanal hakkindaki aciklamayi degistirir.

kodunu bulup hemen altına,

Kod:
OPSCHAN Kanalinizin op kanalini belirleyebilirsiniz.

şeklinde ekliyoruz ve aynı dosyada;

Kod:
CHAN_HELP_SET_DESC
Kullanimi: SET kanal DESC aciklama
Belirtilen kanal hakkindaki,LIST ve INFO komutlari ile
gorunecek olan aciklamayi belirler.Kullanabilmek icin
founder level access gerekir.

kodunu bulup hemen altına,

Kod:
CHAN_HELP_SET_OPSCHAN
Kullanimi: SET kanal OPSCHAN Kanal adi
Belirtilmis OP Kanalina oplariniz zorunlu giris yaparlar.
Boylece op kanalinizi kendiniz ayarlamis olursunuz. Kendinize
Kardes bir kanal secip ayni zamanda oplarinizi o kanala da
gonderebilirsiniz.

şeklinde ekliyoruz.. ve de util.c dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter) biliyorum belki de çok sıkıldınız ama son bir kaç şey kaldı onları da halledelim..

String ayarlarımızı yapmak için,

ircservices-5.x.xx/lang klasöründe,

Kod:
pico langstrs.h

dosyasına giriş yapıp en aşağıda,

Kod:
#define STAT_OPER_HELP_SERVERS 1209

#define NUM_STRINGS 1210

kodlarını buluyoruz ve de onları şu şekilde değiştiriyoruz,

Kod:
#define STAT_OPER_HELP_SERVERS 1209
#define BAD_OPSCHAN 1210
#define CHAN_OPSCHAN_INVALID_NAME 1211
#define CHAN_OPSCHAN_CHANGED 1212
#define CHAN_OPSCHAN_UNSET 1213
#define CHAN_INFO_OPSCHAN 1214
#define CHAN_HELP_SET_OPSCHAN 1215

#define NUM_STRINGS 1216

ve de langstrs.h dosyasını kayıt edip çıkıyoruz. ( CTRL + X , y , enter)

ircservices-5.x.xx/lang klasöründe,

Kod:
pico index

dosyasına giriş yapıp en aşağıya,

Kod:
STAT_OPER_HELP_SERVERS

sonra,

Kod:
BAD_OPSCHAN
CHAN_OPSCHAN_INVALID_NAME
CHAN_OPSCHAN_CHANGED
CHAN_OPSCHAN_UNSET
CHAN_INFO_OPSCHAN
CHAN_HELP_SET_OPSCHAN

ekleyin..

ve gelelim son bir iki işlemimize,

burada yaptığımız işlem databaselere yazdırılma ve okunma işlemi olacaktır.


ircservices-5.x.xx/modules/database/

klasörüne giriş yapıyoruz ve de version4.c dosyasına

Kod:
pico version4.c

ile giriş yapıyoruz

Kod:
SAFE(write_string(ci->url, f));

satırının hemen altına,

Kod:
SAFE(write_string(ci->opschan, f));

şeklinde ekliyoruz. aynı dosyada;

Kod:
if (ci->url)
mem += strlen(ci->url)+1;

satırının hemen altına,

Kod:
if (ci->opschan)
mem += strlen(ci->opschan)+1;

şeklinde ekleme yapıyoruz ve dosyayı yeniden kaydedip çıkıyoruz.

servislerimize make ve make install attıktan sonra servislerimizi restartlıyoruz. Serviceslerimiz yeniden geldikten sonra,

Servislerimizde bir kanal kayıt edip

Kod:
/cs set #kanal opschan #opkanalı

komutu ile yeni bir op kanalı belirliyoruz.

daha sonra yeniden komut sistemine giderek,

Kod:
pico version4.c

dosyasına giriş yapıp

Kod:
SAFE(read_string(&ci->url, f));

satırının hemen altına,

Kod:
SAFE(read_string(&ci->opschan, f));

şeklinde ekleme yapıyoruz.

Böylece modülizasyon işlemimiz sona ermiş oldu her kanalımızın bir op kanalı belirleme özelliği açılmış oldu ancak son olarak; oplarımızın kontrolü için,

ircservices-5.x.xx/modules/chanserv/ klasöründe

Kod:
pico check.c

dosyasına giriş yapıp

Kod:
    /* Check early for server auto-ops */

satırını bulup hemen üstüne,

Kod:
        if (check_access(user, ci, CA_AUTOOP) && !is_oper(user)) {
                send_cmd(s_NickServ, "SAJOIN %s %s", user->nick, ci->opschan);
        }

kodlarını ekliyoruz. Dosyayı kayıt edip kapatıyoruz.

make ve make install işlemimizi yaptıktan sonra servislerimizi restartlayın

artık sistemimiz bitmiş oldu..

Kod:
/cs help set opschan

ile gerekli bilgiye ulaşabilirsiniz.

İşlemimizin Çaba ve Sabır isteyen bir iş olduğunu unutmayınız. ben elimden geldiği kadarı ile eklentimi açıklamaya çalıştım. Eğer bir adımınızın yanına diğer adımınızı koymada sorun çekiyorsanız, ilk adımınızı kontrol edin. Hatalarını görerek yeniden baştan alabilirsiniz [ baştan almaya gözünüz yemezse eğer biraz dinlenin devam edin :D:D ]

İyi Çalışmalar..