Ö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: Kodu kopyalamak için üzerine çift tıklayın!
cd ircservices-5.x.xx
Kod: Kodu kopyalamak için üzerine çift tıklayın!
cd modules
Kod: Kodu kopyalamak için üzerine çift tıklayın!
cd chanserv
komutları ile chanservimizin modüllerini açıyoruz. Kod: Kodu kopyalamak için üzerine çift tıklayın!
pico main.c
main.c klasöründe; Kod: Kodu kopyalamak için üzerine çift tıklayın!
{ "SET URL", NULL, NULL, CHAN_HELP_SET_URL, -1,-1 },
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
{ "SET OPSCHAN", NULL, NULL, CHAN_HELP_SET_OPSCHAN, -1,-1 },
ekliyoruz. aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
if (ci->url)
notice_lang(s_ChanServ, u, CHAN_INFO_URL, ci->url);
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico set.c
komutu ile set.c dosyasını açıyoruz. Kod: Kodu kopyalamak için üzerine çift tıklayın!
static void do_set_url(User *u, ChannelInfo *ci, char *param);
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
static void do_set_opschan(User *u, ChannelInfo *ci, char *param);
ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
} else if (stricmp(cmd, "URL") == 0) {
do_set_url(u, ci, param);
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
} else if (stricmp(cmd, "OPSCHAN") == 0) {
do_set_opschan(u, ci, param);
ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
} else if (stricmp(cmd, "URL") == 0) {
do_set_url(u, ci, NULL);
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
} else if (stricmp(cmd, "OPSCHAN") == 0) {
do_set_opschan(u, ci, NULL);
ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
/*************************************************************************/
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: Kodu kopyalamak için üzerine çift tıklayın!
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 ?
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
] 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: Kodu kopyalamak için üzerine çift tıklayın!
pico chanserv.h
ile açıyoruz. Kod: Kodu kopyalamak için üzerine çift tıklayın!
char *url;
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico util.c
komutu ile açıyoruz. Kod: Kodu kopyalamak için üzerine çift tıklayın!
free(ci->url);
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico tr.l
dosyasına giriş yapıp, Kod: Kodu kopyalamak için üzerine çift tıklayın!
BAD_URL
URL bilgileri http://hostname[:port]/... ya da ftp://hostname[:port]/... seklinde olmak zorundadir.
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
BAD_OPSCHAN
Sadece isimleri # ile baslayan kanallari OP Kanali secebilirsiniz.
kodunu ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_REGISTER_INVALID_NAME
Sadece isimleri # ile baslayan kanallari kaydedebilirsiniz.
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_OPSCHAN_INVALID_NAME
Sadece isimleri # ile baslayan kanallari OP Kanali secebilirsiniz.
kodunu ekliyoruz aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
# SET URL responses
CHAN_URL_CHANGED
%s kanalinin web adresi (URL) %s olarak degisti.
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
# SET OPSCHAN responses
CHAN_OPSCHAN_CHANGED
%s kanalinin OP Kanali %s olarak degisti.
# SET EMAIL responses
şeklinde ekliyoruz aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_URL_UNSET
%s kanalinin web adresi (URL) silindi.
kodunun hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_OPSCHAN_UNSET
%s kanalinin OP kanali silindi.
şeklinde ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_INFO_URL
URL: %s
kodunu bulup hemen altına da, Kod: Kodu kopyalamak için üzerine çift tıklayın!
CHAN_INFO_OPSCHAN
OP Kanali: %s
şeklinde ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
DESC Kanal hakkindaki aciklamayi degistirir.
kodunu bulup hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
OPSCHAN Kanalinizin op kanalini belirleyebilirsiniz.
şeklinde ekliyoruz ve aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico langstrs.h
dosyasına giriş yapıp en aşağıda, Kod: Kodu kopyalamak için üzerine çift tıklayın!
#define STAT_OPER_HELP_SERVERS 1209
#define NUM_STRINGS 1210
kodlarını buluyoruz ve de onları şu şekilde değiştiriyoruz, Kod: Kodu kopyalamak için üzerine çift tıklayın!
#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: Kodu kopyalamak için üzerine çift tıklayın!
pico index
dosyasına giriş yapıp en aşağıya, Kod: Kodu kopyalamak için üzerine çift tıklayın!
STAT_OPER_HELP_SERVERS
sonra, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico version4.c
ile giriş yapıyoruz Kod: Kodu kopyalamak için üzerine çift tıklayın!
SAFE(write_string(ci->url, f));
satırının hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
SAFE(write_string(ci->opschan, f));
şeklinde ekliyoruz. aynı dosyada; Kod: Kodu kopyalamak için üzerine çift tıklayın!
if (ci->url)
mem += strlen(ci->url)+1;
satırının hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
/cs set #kanal opschan #opkanalı
komutu ile yeni bir op kanalı belirliyoruz. daha sonra yeniden komut sistemine giderek, Kod: Kodu kopyalamak için üzerine çift tıklayın!
pico version4.c
dosyasına giriş yapıp Kod: Kodu kopyalamak için üzerine çift tıklayın!
SAFE(read_string(&ci->url, f));
satırının hemen altına, Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
pico check.c
dosyasına giriş yapıp Kod: Kodu kopyalamak için üzerine çift tıklayın!
/* Check early for server auto-ops */
satırını bulup hemen üstüne, Kod: Kodu kopyalamak için üzerine çift tıklayın!
if (check_access(user, ci, CA_AUTOOP) && !is_oper(user)) {
send_cmd(s_NickServ, "SAJOIN %s %s", user->nick, ci->opschan);
}
Kod: Kodu kopyalamak için üzerine çift tıklayın!
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: Kodu kopyalamak için üzerine çift tıklayın!
/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
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
D ] İyi Çalışmalar..