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

 Kayıt ol  Topluluk
13Beğeni(ler)

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 04 Ekim 2014, 11:30   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Web Nick Kayıt Sistemi




selamlar..


hep istemiştim dün akşamda yazmıştım baktımki bir arkadaşımız o Nacizane elerinden Mükemel bir kod yazmış ircservices icin. paylaşalım dedik. inş umuldugu gibidir.


Örnek Görünüm istenildigi gibi dizayn edile bilir.


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


kurulum üc Aşamadan oluşmaktadır.


WEB, eggdrop, ircservices.


WEB tabanlı paylaşım kısmını


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Eggdrop tabanlı kısmı


[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


services tabanlı kısmı :
ircservices*.* > modules > nickserv > main.c

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_unsuspend(User *u);

altına
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
static void do_registernick(User *u);

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ "DROPNICK", do_dropnick, is_services_admin, -1, -1, NICK_OPER_HELP_DROPNICK },

altına
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
{ "REGISTERNICK", do_registernick, is_services_admin, -1, -1, NICK_HELP_REGISTER },

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/*************************************************************************/ static void do_identify(User *u) {

üstüne

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
/*************************************************************************/ static void do_registernick(User *u) { char *nick = strtok(NULL, " "); char *pass = strtok(NULL, " "); char *email = strtok(NULL, " "); NickInfo *ni = u->ni, *ni2; NickGroupInfo *ngi = u->ngi, *ngi2; int n; if (readonly) { notice_lang(s_NickServ, u, NICK_REGISTRATION_DISABLED); } else if (!is_services_admin(u)) { notice_lang(s_NickServ, u, PERMISSION_DENIED); } else if (!nick || !pass || (NSRequireEmail && !email) || (stricmp(pass, u->nick) == 0 && (strtok(NULL, "") || (email && (!strchr(email,'@') || !strchr(email,'.')))))) { send_cmd(s_NickServ, "NOTICE %s Kullanimi: \2REGISTERNICK \37nick\37 \37sifre\37 \37email\37\2", u->nick); } else if (strlen(nick) > protocol_nickmax) { notice_lang(s_NickServ, u, NICK_TOO_LONG, protocol_nickmax); } else if (!valid_nick(nick)) { notice_lang(s_NickServ, u, NICK_INVALID, nick); } else if (stricmp(pass, u->nick) == 0 || (StrictPasswords && strlen(pass) < 5)) { notice_lang(s_NickServ, u, MORE_OBSCURE_PASSWORD); } else if (email && !valid_email(email)) { send_cmd(s_NickServ, "NOTICE %s Lütfen gecerli bir email adresi giriniz.", u->nick); } else if (!reglink_check(u, nick, NULL, NULL)) { notice_lang(s_NickServ, u, NICK_CANNOT_BE_REGISTERED, nick); } else if (!ni || !ngi || ngi == NICKGROUPINFO_INVALID) { notice_lang(s_NickServ, u, NICK_NOT_REGISTERED); } else if (!user_identified(u)) { notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); } else if (irc_stricmp(u->nick, nick) == 0) { send_cmd(s_NickServ, "NOTICE %s Kullandığınız nicki kayıt edemezsiniz.", u->nick); } else if ((ni2 = get_nickinfo(nick)) != NULL) { if (ni2->status & NS_VERBOTEN) notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick); else notice_lang(s_NickServ, u, NICK_X_ALREADY_REGISTERED, nick); put_nickinfo(ni2); } else if (get_user(nick)) { notice_lang(s_NickServ, u, NICK_LINK_IN_USE, nick); } else { Password passbuf; init_password(&passbuf); if (encrypt_password(pass, strlen(pass), &passbuf) != 0) { clear_password(&passbuf); memset(pass, 0, strlen(pass)); module_log("Failed to encrypt password for %s (register)", u->nick); notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED); return; } ni2 = makenick(nick, &ngi2); if (!ni) { clear_password(&passbuf); module_log("makenick(%s) failed", u->nick); notice_lang(s_NickServ, u, NICK_REGISTRATION_FAILED); return; } copy_password(&ngi2->pass, &passbuf); clear_password(&passbuf); if (ni->last_usermask) ni2->last_usermask = sstrdup(ni->last_usermask); if (ni->last_realmask) ni2->last_realmask = sstrdup(ni->last_realmask); if (ni->last_realname) ni2->last_realname = sstrdup(ni->last_realname); if (ni->last_quit) ni2->last_quit = sstrdup(ni->last_quit); ni2->time_registered = ni2->last_seen = time(NULL); if (email) ngi2->email = sstrdup(email); ngi2->flags = NSDefFlags; ngi2->memos.memomax = MEMOMAX_DEFAULT; ngi2->channelmax = CHANMAX_DEFAULT; ngi2->language = LANG_DEFAULT; ngi2->timezone = TIMEZONE_DEFAULT; put_nickinfo(ni2); notice_lang(s_NickServ, u, NICK_REGISTERED, nick); if (readonly) notice_lang(s_NickServ, u, READ_ONLY_MODE); } }


TCL : yardımında Emegi gecen : CLubber

Services emegi gecen Arkadaşımız xwerswoodx Sonsuz teşekkürler

not yıldırım hızı ile bukadar oluyor. geliştirmeye devam etme sözü ile hayırlı olsun.


ve kodları codeler icinde paylaşamıyorum. Explorerler yada makina ile ilgili bir problemden dolayı malum butonları kulanamıyorum.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Alt 04 Ekim 2014, 11:38   #2
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (1)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




Hata verdi;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Parse error: syntax error, unexpected T_STRING in C:\inetpub\vhosts\klbk.gen.tr\httpdocs\xline\deneme\gonder.php on line 16


 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 12:26   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




Toprak Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Hata verdi;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Parse error: syntax error, unexpected T_STRING in C:\inetpub\vhosts\klbk.gen.tr\httpdocs\xline\deneme\gonder.php on line 16


$dosyaya_baglanti = fopen($dosya_adi,"w");
if (!fwrite($dosyaya_baglanti,$yazilacak_deger)){
echo "Dosyaya yazilamiyor!";
exit;
}
echo "isleminiz Basarili bir şekilde IRCd Serverine Gönderilmiştir..<BR>";

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] dosyasi olmadiği için hata veriyor. bu 1'nci hatan.

proc basla {{text ""}} {
global zaman_araligi
set connect [::http::geturl [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
set files [::http::data $connect]
set list [split [subst -nocommands $files] "w"]
foreach i $list {
putquick "nıckserv register $i"
::http::cleanup $files
}
timer $zaman_araligi basla
}

Eggdrop bot deneme/kayit.txt'e gidiyor register.ini'ye gitmeliydi bu 2'nci hatan

putquick "nıckserv register $i" Nicke Geçmeden Nick Kayit Etmeye Calisiyorsun Bu 3'ncü Hatan.

Web sayfasindan kayit ederken post ettiğin veriler içinde nick var Eggdrop'dan direkt post edilen ve register.ini'ye kaydolan nickleri kayit etmeye calisiyorsun orada nick verisinide $i değişkenine atamiş oluyorsun ircserviceste nick /ns register nick şifre email diye kaydedilmez.
Bu 4'ncü hatan.

Eğer auth sistemi varsa kişinin nickini kayit edersin 24 saat sonra düşer, gerekli önlem almamişsin bu 1'nci eksikliğin.

Eğer bu kayit sayfasina giden kullanıcı o an nick üzerindeyse Eggdrop bot bu nick kullanılıyor hatasi alir nicke geçemez bu 2'nci eksikliğin

Eğer E-Mail üzerine auth code girilmemişse, veyahut 5'den fazla nick kaydedilmişse hata alirsin ve kullaniciya hiç geri bildirim yapmamişsin bu 3'ncü eksiğin

4-5-6-7-8-9'ncu eksiklerinde var saymıyorum talep edersen geliştirmen açisindan sana o eksiklerin neler oldugunu buradan yazicam bu bir tepki mesajı değildir. Sadece "Çocuk oyuncaği" dediğin şeyin aslinda çocuk oyuncaği olmadiğini sana göstertmek maksatlı bir mesajdır.

Hani hepsinde ayni ufak tefek hatalar diyordunya işte eggdrop tarafina oyle 2 satir kod yazarsan bu tip hatalarin onlarcasiyla karsilasirsin. Sanada söylediğim gibi bu iş en aşaği 100 satir kodla yapilir.(yada byte bakimindan eşdeğer daha az satirla) Hele ki Eggdropta bu sayi daha fazla olacaktir. Çünkü Eggdrop mS gibi geniş fonksiyonlara sahip bir geliştirme araci değil.

Kolay gelsin kodlar için teşekkürler.

--IRCForumlari.NET ; Flood Engellendi -->-> Yeni yazılan mesaj 12:26 -->-> Daha önceki mesaj 12:13 --

Ha unutmadan ekleyim;

set zaman_araligi "4"
if {![string match "*basla*" [timers]]} {
timer $zaman_araligi basla
}
proc basla {{text ""}} {
global zaman_araligi
set connect [::http::geturl [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
set files [::http::data $connect]
set list [split [subst -nocommands $files] "w"]
foreach i $list {
putquick "nıckserv register $i"
::http::cleanup $files
}
timer $zaman_araligi basla
}

Bu iskelet üzerine bu sistemi geliştirmen mümkün değil. 4 saniyede bir komutu calistirip register.ini'de nickleri kaydetmeye calisiyorsun olurda 2-3 nick eklenirse oraya 4 saniye içinde sen 2 nicki ircserviceste arka arkaya kaydedemezsin. While oluşturmuşsun orada (Eggdropttaki adi neyse) o while'a ya süre siniri koyman lazim yada kullaniciya geri dönüş yapman lazim (X dakika sonra tekrar deneyin diye)

Bu iskelette sen hiçbir şekilde kullanıcına geri dönemezsin. Çünkü işlemleri tamamen register.ini ye endeskli yapiyorsun ortada iletişim halinde bir veri kanalın yok.

Kullanici nicki kayit edip etmediğini bile anlayamaz (Ezbere mesaj atarsin kayit ettim diye)

Peki ya nick zaten kayitliysa ne olacak ? Sonra #Help kanalında nickimi çalmışlar diyen userlerle uğraşir durursun.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 12:26   #4
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




uFuK Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
$dosyaya_baglanti = fopen($dosya_adi,"w");
if (!fwrite($dosyaya_baglanti,$yazilacak_deger)){
echo "Dosyaya yazilamiyor!";
exit;
}
echo "isleminiz Basarili bir şekilde IRCd Serverine Gönderilmiştir..<BR>";

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] dosyasi olmadiği için hata veriyor. bu 1'nci hatan.

proc basla {{text ""}} {
global zaman_araligi
set connect [::http::geturl [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
set files [::http::data $connect]
set list [split [subst -nocommands $files] "w"]
foreach i $list {
putquick "nıckserv register $i"
::http::cleanup $files
}
timer $zaman_araligi basla
}

Eggdrop bot deneme/kayit.txt'e gidiyor register.ini'ye gitmeliydi bu 2'nci hatan

putquick "nıckserv register $i" Nicke Geçmeden Nick Kayit Etmeye Calisiyorsun Bu 3'ncü Hatan.

Web sayfasindan kayit ederken post ettiğin veriler içinde nick var Eggdrop'dan direkt post edilen ve register.ini'ye kaydolan nickleri kayit etmeye calisiyorsun orada nick verisinide $i değişkenine atamiş oluyorsun ircserviceste nick /ns register nick şifre email diye kaydedilmez.
Bu 4'ncü hatan.

Eğer auth sistemi varsa kişinin nickini kayit edersin 24 saat sonra düşer, gerekli önlem almamişsin bu 1'nci eksikliğin.

Eğer bu kayit sayfasina giden kullanıcı o an nick üzerindeyse Eggdrop bot bu nick kullanılıyor hatasi alir nicke geçemez bu 2'nci eksikliğin

Eğer E-Mail üzerine auth code girilmemişse, veyahut 5'den fazla nick kaydedilmişse hata alirsin ve kullaniciya hiç geri bildirim yapmamişsin bu 3'ncü eksiğin

4-5-6-7-8-9'ncu eksiklerinde var saymıyorum talep edersen geliştirmen açisindan sana o eksiklerin neler oldugunu buradan yazicam bu bir tepki mesajı değildir. Sadece "Çocuk oyuncaği" dediğin şeyin aslinda çocuk oyuncaği olmadiğini sana göstertmek maksatlı bir mesajdır.

Hani hepsinde ayni ufak tefek hatalar diyordunya işte eggdrop tarafina oyle 2 satir kod yazarsan bu tip hatalarin onlarcasiyla karsilasirsin. Sanada söylediğim gibi bu iş en aşaği 100 satir kodla yapilir.(yada byte bakimindan eşdeğer daha az satirla) Hele ki Eggdropta bu sayi daha fazla olacaktir. Çünkü Eggdrop mS gibi geniş fonksiyonlara sahip bir geliştirme araci değil.

Kolay gelsin kodlar için teşekkürler.




degerli @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


tcl de sorun yok sadece uzantı kısmını gözden kacırmışım gerekli düzenleme ve kuruluma ayit detaylı bilgileri tekrardan paylaşıcam. dedigim gibi Yıldırım hızı bukadar olur Ama bilgili bir insanın bunlara takılması ve aktif edememeside beni düşündürdü
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.




Toprak Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
Hata verdi;
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
Parse error: syntax error, unexpected T_STRING in C:\inetpub\vhosts\klbk.gen.tr\httpdocs\xline\deneme\gonder.php on line 16




Degerli @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] web dosyasının icerisinde bulunan register.txt cmd 777 izni verilmelidir



Gerekli düzenlemeler Yapılmıştır ve kuruluma ayit bilgileri icerisine aktardım DEMO Adresinide Yakında paylaşacagım


indirme link 1 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


indirme link 2 [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]


Adreslerinden Ulaşabilirsiniz.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 12:32   #5
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




ben .ini dosyasına gerek duymuyorum cünkü wind makina gerek duymaksızın yapıla bile bir işlem

Değerli MesqeN Win makina mIRC'i çalıştırmak için lazim bana sen Eggdrop kullanıyorsun tabiki senin Win makinaya ihtiyacin yok.

Fakat işe öncelikle dinamik bir veri kanalı oluşturarak başlamalisin. Ben mS'de socket kullanabiliyorum, Eggdropta socket kullanip (Var ise) dinamik bir veri kanalı oluşturabilirsin dediğim gibi amacım eleştirmek değil sadece eksiklerini söylüyorumki sen veya senden başka birisi geliştirmek isterse bunlari gözden kaçirmasin diye. Dinamik bir veri kanalı olmaksizin bu işlem .txt, ini dosyalarindan kurtulamaz. Ve sürekli o dosyalari yoklaman gerekir bu zaman kaybina yol açar ve mutlakada sana bir aksaklık cıkartacaktır.

Ben onlari aktif ederim zaten problem değil düz userler nasil edecek ?
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 12:44   #6
Çevrimiçi
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (1)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] demo verdigin siteden aldım o hatayı.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 13:11   #7
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




uFuK Tcl'de socket tabiki de var.. .
sadece yazan/kullanan yada kullanmayı bilip te* birşey yazan-paylaşan olmamış burada...

php kısmında yorum yapmayacağım, php'yle aram bir iki ufak tecrübem dışında son derece sınırlı kaldı,meil ettiğim bir dil olmadı hiç doğrusu...

yukarıda CLubber'ın katkılarıyla dediğiniz tcl hakkında yorum yapmasam olmayacak. nedenine gelince bunu CLubber yazmış olamaz .... olsa olsa CLubber'ın yazdığı kodlardan parçalar halinde satırlar devşirilip bir araya getirilmiş gibi... toplamda 9 hata saydım. ve kodu çalıştıracak ,çalışmasına neden olacak birşeyde yok ... ( bind ) yok eğer shell üstünde tclsh gibi çalıştırılmayacaksa ,eggdrop ile çalıştıracaksa ne çalıştıracak/başlatacak bu kodu ?

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
timer $zaman_araligi basla

timer yada utimer kullanımı :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
timer $zaman_araligi [list basla]

gibidir.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc basla {{text ""}} {

buradaki text "" amacı yok...ne için konulduğu belli değil çünkü prosedür içinde herhangi bir $text yok...

http bağlantısıyla adresteki kayit.txt'tekiler alınmak istenmiş ancak :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
set list [split [subst -nocommands $files] "w"]

"w" nedir ? eğer bir dosya operasyonu yani dosyadan veri okutma yazma işlemi olaydı "w" dosyaya yazmada kullanılır.oysa bu dosya http bağlantısında "okunmaya" çalışılıyor.

bu durumda veriyi split "w" demek, satırları "w" den itibaren kesip oku * gibi anlam taşır ancak... ve eğer o web üzerindeki dosyada alınmak istenen veri* <b>bla</b> yada $nick $text vs gibi komut yada variable'lar içermiyorsa bu satırda subst -nocommands çok anlamsız duruyor. subst "substitution" yani "yerine yerleştirme / değiştirme /değişiklik" anlamları içeriyor ki Tcl'de tamda buna göre kullanılan bir komut.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
putquick "nıckserv register $i"

bu şekilde $i değişkenindeki bilgi ,hedefe ulaşmaz bu kod satırıda çalışmaz.doğrusu:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
putquick "nıckserv register :$i"

olmalıdır.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
::http::cleanup $files

::http::cleanup tcllib http paketinde,bağlantıdan veri çekildikten sonra hafızada yer işgal etmemesi için hafızayı temizlemekte kullanılır. ancak burada yanlış şekilde kullanılmış ,doğrusu :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
::http::cleanup $connect

olmalıydı bu örnek için...

prosedür içinde son satırda timer durdurulmalıydı oysa burada yeniden çağrılmış. bu şekilde kullanılırsa timer hatası atacaktır.zaten prosedür dışında üstte çağrılmaya çalışlmış olan timer halen işlerken birkez daha bu kez prosedür içinde aynı prosedür için ikinci kez çağrılıyor :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
foreach _ [timers] { killtimer [lindex $_ 2] }

gibi ,halen işleyen timer'ı timerID'sinden yakalayıp ( ki bu lindex $timerID 2 ' ye denk gelir.) yakalayıp işini bitirirsiniz.

ve en başta yazdığım gibi bu kodu "ne" çalıştıracak ne çalışmasına sebep* olacak.. timer yerine bind cron yada bind time :

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind cron - "*/5" proc_adı

->
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind time - "?5 *" [list foo bes]; proc foo {icerik m h D M Y} { putlog "${icerik} dakika oldu." }

gibi .her 5 dakikada bir ..prosedür çağrılması/tetiklenmesi/işlemesi sağlanabilir...di...

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 13:20   #8
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




saywhat Nickli Üyeden Alıntı
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
uFuK Tcl'de socket tabiki de var.. .
sadece yazan/kullanan yada kullanmayı bilip te* birşey yazan-paylaşan olmamış burada...

php kısmında yorum yapmayacağım, php'yle aram bir iki ufak tecrübem dışında son derece sınırlı kaldı,meil ettiğim bir dil olmadı hiç doğrusu...

yukarıda CLubber'ın katkılarıyla dediğiniz tcl hakkında yorum yapmasam olmayacak. nedenine gelince bunu CLubber yazmış olamaz .... olsa olsa CLubber'ın yazdığı kodlardan parçalar halinde satırlar devşirilip bir araya getirilmiş gibi... toplamda 9 hata saydım. ve kodu çalıştıracak ,çalışmasına neden olacak birşeyde yok ... ( bind ) yok eğer shell üstünde tclsh gibi çalıştırılmayacaksa ,eggdrop ile çalıştıracaksa ne çalıştıracak/başlatacak bu kodu ?

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
timer $zaman_araligi basla

timer yada utimer kullanımı :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
timer [list $zaman_araligi basla]

gibidir.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
proc basla {{text ""}} {

buradaki text "" amacı yok...ne için konulduğu belli değil çünkü prosedür içinde herhangi bir $text yok...

http bağlantısıyla adresteki kayit.txt'tekiler alınmak istenmiş ancak :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
set list [split [subst -nocommands $files] "w"]

"w" nedir ? eğer bir dosya operasyonu yani dosyadan veri okutma yazma işlemi olaydı "w" dosyaya yazmada kullanılır.oysa bu dosya http bağlantısında "okunmaya" çalışılıyor.

bu durumda veriyi split "w" demek, satırları "w" den itibaren kesip oku * gibi anlam taşır ancak... ve eğer o web üzerindeki dosyada alınmak istenen veri* <b>bla</b> yada $nick $text vs gibi komut yada variable'lar içermiyorsa bu satırda subst -nocommands çok anlamsız duruyor. subst "substitution" yani "yerine yerleştirme / değiştirme /değişiklik" anlamları içeriyor ki Tcl'de tamda buna göre kullanılan bir komut.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
putquick "nıckserv register $i"

bu şekilde $i değişkenindeki bilgi ,hedefe ulaşmaz bu kod satırıda çalışmaz.doğrusu:
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
putquick "nıckserv register :$i"

olmalıdır.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
::http::cleanup $files

::http::cleanup tcllib http paketinde,bağlantıdan veri çekildikten sonra hafızada yer işgal etmemesi için hafızayı temizlemekte kullanılır. ancak burada yanlış şekilde kullanılmış ,doğrusu :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
::http::cleanup $connect

olmalıydı bu örnek için...

prosedür içinde son satırda timer durdurulmalıydı oysa burada yeniden çağrılmış. bu şekilde kullanılırsa timer hatası atacaktır.zaten prosedür dışında üstte çağrılmaya çalışlmış olan timer halen işlerken birkez daha bu kez prosedür içinde aynı prosedür için ikinci kez çağrılıyor :
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
foreach _ [timers] { killtimer [lindex $_ 2] }

gibi ,halen işleyen timer'ı timerID'sinden yakalayıp ( ki bu lindex $timerID 2 ' ye denk gelir.) yakalayıp işini bitirirsiniz.

ve en başta yazdığım gibi bu kodu "ne" çalıştıracak ne çalışmasına sebep* olacak.. timer yerine bind cron yada bind time :

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind cron - "*/5" proc_adı

->
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
bind time - "?5 *" [list foo bes]; proc foo {icerik m h D M Y} { putlog "${icerik} dakika oldu." }

gibi .her 5 dakikada bir ..prosedür çağrılması/tetiklenmesi/işlemesi sağlanabilir...di...


üstad kod sorunsuz calışıyor. ben yazıları ezbere hızlı okudugum icin.


hatalarım yüksek oluyor. Ama mevcut tcl linklerde bunları günceliyerek insanlara sunmakta bir emektir. emek vermek güzeldir.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 13:20   #9
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




Peki Eggdrop ile bir portu dinleyebiliyormusunuz @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Çünkü Eggdrop websitesi dizinine kurulacak tabiatiyla ip adresi, web ile ayni olacak tam bir iç haberleşme söz konusu biz mS'de socklisten ile bir porta gelen veriyi (local portumuza) dinleyebiliyoruz. Sizde bu mümkünse Eggdrop temelli olarak sistem geliştirilebilir. Çünkü burada esas olan kullanıcıyı bilgilendirebilmek ve doğru olarak bilgilendirebilmek.

Başta'da bahsettiğim gibi dinamik veri kanalının oluşturulması bu sistem için sadece core'dir. Asil iş IRC tabaninda NickServ ile olan iletişiminizde saklı birçok koşulu kontrolünüz altında tutmak önemli.

 
Alıntı ile Cevapla

Alt 04 Ekim 2014, 13:39   #10
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Web Nick Kayıt Sistemi




Tcl socket çok eskilerden beri bilhassa cisco IOS yazılımlarında/yönetiminde/scriptlerinde -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] ayrıca son Mac (sanırım maverick sürümünde)portları Tcl ile yazıldığı duyurulmuştu -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]...

eggdrop Tcl olarak örnekleri fazla yok ,çoğunlukla Rus (bastel,sergio/vertigo, anastasia, perplexa ...) ve Fransız Tcl script yazarlarının (crazycat,menzegitat,dj.kenny...) çalışmaları var. fransızlar bizdeki mirc socket botlarına benzer güvenlik vs işleri yapan uzun binlerce satırlık Tcl socket kodları var.(lea service ,gestion bot vs sunucu koruma eggdrop Tcl socket scriptleri gibi...)... ruslar güvenlikten ziyade bizdeki cycle botları benzeri ancak sunucu doldurmak için değilde relay (yansıtma) için yazdıkları socket scriptleri var.

ancak Tcl - Tcl/tk 'da socket kullanımı çok daha yaygın -> [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] - [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] shell / sunucu scriptlerinde tclsh olarak çokça kullanılabiliyor. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] - [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

port taramak belli bir ip/host : açık port üzerinden veri alışverişi dcc bağlantısında olduğu gibi mümkün. (örnek yazılmış ssh scriptleri vardır. dosya alış verişi yaptıran xdcc file server scriptleri vs vardır. ) ancak :

pure/safe Tcl'deki bazı/kimi komutlar eggdrop tcl için kullanımı uygun değil "sakıncalı" after ,vwait gibi... botun kasmasına asılı kalıp diğer yapması gereken işleri askıya almasına neden oluyor.bir süre sonra bot ping time out oluyor. ..

 
Alıntı ile Cevapla

Cevapla

Etiketler
kayıt, nick, sistemi, web


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

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
İnşaat İşletmeleri Kayıt Sistemi Burce Ödev ve Tezler 0 13 Mayıs 2014 19:03
Nick Kayıt. AttackZone mIRC Scripting Sorunları 20 23 Mayıs 2012 22:58
Kanal Kayıt Sistemi GeceAktif mIRC Scripting Sorunları 8 13 Ocak 2012 03:48
Kanal Kayıt Sistemi | Channel Registration uFuK mIRC Scripting Hazır Kodlar 6 29 Nisan 2011 22:11
nick kayıt Selim01 mIRC Scripting Sorunları 6 22 Eylül 2009 17:23