22 Temmuz 2012, 23:07 | #1 | |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Services Yapısı ve Işleyişi <Superdesk_ibRet> Merhaba arkadaşlar. <Superdesk_ibRet> Kanal başlığında belirttiğimiz gibi, eğitim zamanı geldi. <Superdesk_ibRet> Elimizden geldiğince, sizlerin belirttiğimiz konuda fikir sahibi olmanızı sağlayacağız. <Superdesk_ibRet> Sözü fazla uzatmadan başlayalım. <Superdesk_ibRet> - <Superdesk_ibRet> Konu: Services Yapısı ve Işleyişi <Superdesk_ibRet> Serviceslerin Yapısı; <Superdesk_ibRet> Servisler Nedir? <Superdesk_ibRet> Servisler standart kullanıcılarla benzer özellikler taşıyan fakat farklı bir kodlama yapısına sahip olan Client/Kullanıcı(lar) 'dır. <Superdesk_ibRet> Hemen hemen bütün IRC kullanıcıları mIRC Scripting kullanmaktadır. Servisler için en kısa benzetmeyide buradan kurabiliriz. <Superdesk_ibRet> Servisler kendilerine ait olan kod yapısı ile bağlantı kurar ve hareket ederler. <Superdesk_ibRet> Standart kullanıcılar ise kendileri için kodlanmış olan programla bağlantı kurar ve programın izin verdiği şemada hareket ederler. <Superdesk_ibRet> Farklılıkları; <Superdesk_ibRet> 1- Kodlama yapısı <Superdesk_ibRet> 2- Çalışma Prensibleri <Superdesk_ibRet> Kodlama yapısı, genel olarak kullandığınız mIRC programlarından farklıdır. <Superdesk_ibRet> Bir çoğumuz mIRC'a eklenen basit kodlar kullanmaktayız ve kodların çalışma mantıklarını az çok bilmekteyiz. <Superdesk_ibRet> Servisleri kafanızda en iyi canlandıra bileceğiniz mantık da budur. <Superdesk_ibRet> Belirlenen kodlar ve o kodların oluşturduğu döngüler sayesinde hareketini tamamlayan sistemlere servisler diyebiliriz. <Superdesk_ibRet> Kodlama, C++ ile yapılmakta olup linux sistemine uyumlu şekilde düzenlenmektedir. <Superdesk_ibRet> Çalışma mantığı, hedef ve tarama yapısı ile ilişkili olarak çalışmaktadır. <Superdesk_ibRet> Hedef olarak bakacağımız kısım; irtibatı sağlayan kişidir. <Superdesk_ibRet> Tarama ise; irtibat için gönderilen mesajlarda geçen içeriktir. <Superdesk_ibRet> Her mesaj içeriğinde ayrı döngü şeması çalışmaktadır. Ilk döngü kayıtlı verilerin kontrolü için dönmektedir. Işleve göre farklılıklar gösterebilir fakat dil seçeneği bilgisi bu döngüde alınmaktadır. <Superdesk_ibRet> Ikinci döngü tarama döngüsüdür ve mesaj içeriğinin uyuştuğu kelimeleri taramaktadır. <Superdesk_ibRet> Bunu en basit şu şekilde izah edelim; <Superdesk_ibRet> /Nickserv Help <Superdesk_ibRet> Yukarıda yazan komutu uyguladığınız takdirde döngüler başlamaktadır. Ilk olarak çalışan döngü kayıtlı rumuza ait bilgileri incelemektedir. <Superdesk_ibRet> Orneğin ; Bu rumuz kendisine hangi dil seçeneği ile cevap verilmesini istiyor? <Superdesk_ibRet> Yani services bu kişi iletişim kurarken hangi dil seçenegini kullanacağını seçmektedir. <Superdesk_ibRet> Diğer döngü ise komuttaki mesaj içeriği ile alakalıdır. <Superdesk_ibRet> Örneğin; PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<Superdesk_ibRet> Yukarıdaki satırlarda chanserv'e HELP ile başlayan ve REGISTER ile devam eden bir komut yollandığında yani; <Superdesk_ibRet> /Chanserv HELP Register komutu uygulandığında chanservin kullanacağı LANG parçası gözükmektedir. <Superdesk_ibRet> Az öncede söylediğim gibi ilk döngü dil seçeneğini buldu ve 2. döngü size size gönderlicek olan cevabı buldu. <Superdesk_ibRet> Ileride yazağım örneklerle, daha iyi anlayacaksınız. <Superdesk_ibRet> Şu şekilde sıralayalım; <Superdesk_ibRet> 1. Döngü çalıştı ve taramasını yaptı <Superdesk_ibRet> 2. Döngü 1. döngüden aldığı komut neticesinde mesajı inceleme başladı. <Superdesk_ibRet> Daha sonra irtibatta kullanılacak olan ( CHAN_HELP_REGISTER ) içeriğini 1. döngüye aktararak kapandı. <Superdesk_ibRet> 1. Döngü buradan aldığı bilgi neticesinde kendisinde bulunan bilgi ile gerekli LANG (Dil Dosyası) 'na bağlandı ve gerekli satırları size yansıtmış oldu. <Superdesk_ibRet> LANG Dosyasında '' Chan_help_register '' kısmı görüntüsü; <Superdesk_ibRet> CHAN_HELP_REGISTER <Superdesk_ibRet> Kullanimi: REGISTER kanal sifre aciklama <Superdesk_ibRet> <Superdesk_ibRet> Bir kanali sizin adiniza kaydeder.Bu komutu kullanabilmek <Superdesk_ibRet> icin sozkonusu kanalda operator olmaniz gerekir.Sifreniz <Superdesk_ibRet> daha sonra IDENTIFY komutunu kullanarak kendinizi kanalin <Superdesk_ibRet> Ayrıca bu tarz kodlamalarda dikkat çeken bir durum daha söz konusudur; %s ( Variables/Değişken ) <Superdesk_ibRet> IRCd sistemindeki değişkenler biraz farklı bir mantık ile çalışmaktadır. Şöyle ki; <Superdesk_ibRet> Lang. dosyalarında bulunan bütün değişkenlerin adı %s veya %d olarak tanımlıdır. PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<Superdesk_ibRet> Yukarıdaki satırlar /Nickserv listemail email@[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]ss komutu uygulandığında gelen sonuçların gösterimi için kullanılan lang satırlarıdır. <Superdesk_ibRet> %s değişkeni bir çok farklı anlamda kullanılabiliyor. <Superdesk_ibRet> Örneğin; Nickserv/Chanserv/Memoserv yerine %s yazılıp, servisler tarafından ortak olarak kullanılan lang satırlarında sadece %s değişkeni eklenerek hangi services üzerinden bu lang satırı istendi ise o servicesin adı eklene biliyor. <Superdesk_ibRet> Yukarıdaki örneğimize devam edelim; <Superdesk_ibRet> /Nickserv listemail Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. <Superdesk_ibRet> Komutuna aldığım cevap; <Superdesk_ibRet> -NickServ- Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. 'a uyan veriler: <Superdesk_ibRet> -NickServ- KafKef Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. <Superdesk_ibRet> -NickServ- Slytherin Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. <Superdesk_ibRet> -NickServ- liste sonu - 2/2 . <Superdesk_ibRet> Email adresini gösteren kısım lang dosyasında %s olarak kayıtlıdır. <Superdesk_ibRet> Yani değişken olarak. <Superdesk_ibRet> Sayısal verileri gösteren kısımlar ise %d olarak kayıtlıdır. <Superdesk_ibRet> Not: %d değişkeni sadece rakamsal değerler için kullanılmaktadır. <Superdesk_ibRet> Fakat; <Superdesk_ibRet> %s değişkeni ise diğer bütün konularda kullanılan değişken görevini almaktadır. <Superdesk_ibRet> Uygulanan komuta ve kodlamaya göre, %s değişkeninin verdiği cevap değişebiliyor. Yani sabit olarak bir veri aktarılmıyor. <Superdesk_ibRet> Orneğin ; /Nickserv dropemail Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. komutu uygulandığı takdirde; <Superdesk_ibRet> Kullanılan lang satırları; <Superdesk_ibRet> NICK_DROPEMAIL_COUNT <Superdesk_ibRet> Belirtilen maskeye uygun %d adet nick bulundu. <Superdesk_ibRet> Silmek icin lütfen /msg %s DROPEMAIL-CONFIRM %s komutunu kullaniniz. <Superdesk_ibRet> Komut uyuşması ; <Superdesk_ibRet> notice_lang(s_NickServ, u, NICK_DROPEMAIL_COUNT, count, s_NickServ, mask); <Superdesk_ibRet> Yukarıdaki notice_lang bu komutun döngüsünden alınmış cevap satırıdır. <Superdesk_ibRet> Yani mesajın aktarılması için, uygun şartları oluşturan kodlama yapısından. <Superdesk_ibRet> Komut cevabı; <Superdesk_ibRet> -NickServ- Belirtilen maskeye uygun 2 adet nick bulundu. <Superdesk_ibRet> -NickServ- Silmek icin lütfen /msg NickServ DROPEMAIL-CONFIRM Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. komutunu kullaniniz. <Superdesk_ibRet> %d -> 2 adet. <Superdesk_ibRet> %s -> Mail <Superdesk_ibRet> Burada dikkat edilecek satır notice_lang yani size gelen cevap kullanımı. <Superdesk_ibRet> Belirtilen maskeye uygun %d adet nick bulundu. <Superdesk_ibRet> Belirtilen maskeye uygun 2 adet nick bulundu. <Superdesk_ibRet> %d değişkeni yerini herzaman ki gibi rakamsal değere bıraktı. <Superdesk_ibRet> Notice_lang satırındaki karşılı ise ; Count <Superdesk_ibRet> /msg %s DROPEMAIL-CONFIRM %s <Superdesk_ibRet> /msg NickServ DROPEMAIL-CONFIRM Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir. <Superdesk_ibRet> + Yukarıda belirttiğimiz gibi, %s değişkeni uygulanan komuta göre veri aktarımı yapıyor. <Superdesk_ibRet> Bu lang parçasında, bize mail kısmı olarak yansıtıldı. <Superdesk_ibRet> <Superdesk_ibRet> Burada ise ilk %s değişkeni nickserv olarak geldi karşımıza. <Superdesk_ibRet> Diğer değişken ise email adresi olarak karşımızda. <Superdesk_ibRet> Notice lang satırındaki karşılıklar ise; <Superdesk_ibRet> <Superdesk_ibRet> Nickserv ; s_NickServ <Superdesk_ibRet> Email ; mask <Superdesk_ibRet> Bilgi: Email'in mask olarak tanımlanmasıda; mask kullanılarak tarama yapılabilmesi açısından o şekilde düzenlenmiştir. <Superdesk_ibRet> <Superdesk_ibRet> Bir diğer konumuz ise CS MS NS vb. gibi servis isim kısaltmalarıdır. <Superdesk_ibRet> Bugüne kadar, Helper arkadaşlarımıza komutlarda /cs /ns kullanmayalım dedik. Böyle bir servis yok dedik. <Superdesk_ibRet> Evet böyle, bir servis yok ancak bu şekildede veri elde edebiliyotuz. <Superdesk_ibRet> Bunun nedeni, unrealircd.conf'da tanımlanan alias. <Superdesk_ibRet> Aslında bu gibi kısaltmalar geçmiş dönemlerde mIRC Scripting vb. programlara eklenen kodlar ile sağlanmaktaydı fakat bu olay okadar benimsendi ki IRCd sisteminde olması daha mantıklı hale geldi. <Superdesk_ibRet> Sürekli /Cs /NS gibi kullanan komutlardan alınan hatalar neticesinde kullanıcılara kod vermek yerine unreal'in kendi sistemine eklemek daha pratik bir çözüm oldu. <Superdesk_ibRet> IRCd Kodlama Yapısı; PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<Superdesk_ibRet> Yukarıdaki kodlama yapısı Unrealircd.conf'un içerisinde herhangi bir satıra eklenmesi durumunda CS ile başlayan komutların sisteme Chanserv olarak iletilmesi sağlanmaktadır. <Superdesk_ibRet> Isterseniz cs değilde ''MT'' kelimesini bile sisteme tanımlatabilir bu kelime ile Chanserv'a hitap edebilirsiniz. <Superdesk_ibRet> <Superdesk_ibRet> alias "MT" { <Superdesk_ibRet> şeklinde sadece bu satırı değişmeniz yeterli olacaktır. <Superdesk_ibRet> Bu kısmın daha iyi anlaşılması için birde Identify/Services/Register komutu için örnek verelim; <Superdesk_ibRet> PHP Kod: Kodu kopyalamak için üzerine çift tıklayın!
<Superdesk_ibRet> Kodlama yapımız bu. <Superdesk_ibRet> Şimdi açıklayarak algılamaya çalışalım. <Superdesk_ibRet> Açıklama; <Superdesk_ibRet> Alias identify -> Identify aliası oluşturuldu. <Superdesk_ibRet> Format "^#" { -> Regex ifade yardımı ile format # ile başlıyorsa. <Superdesk_ibRet> Target Chanserv; -> Chanserv servisi hedef alınır. <Superdesk_ibRet> Type services; -> Tip services. <Superdesk_ibRet> Parameters "IDENTIFY %1-"; -> Şartlar uyum sağladığında, /Identify #Kanal %1- komutu uygulanır. <Superdesk_ibRet> %1- -> Manuel olarak işlev görecek olan kelime veya sonrası. <Superdesk_ibRet> format "^[^#]" { -> Regex ifade yardımı ile, format # ile başlamıyorsa. <Superdesk_ibRet> target nickserv; -> Nickserv servisi hedef alınır. <Superdesk_ibRet> type services; -> Tip services. <Superdesk_ibRet> parameters "IDENTIFY %1-"; -> Şartlar uyum sağladığında, /Identify %1- komutu uygulanır. <Superdesk_ibRet> %1- -> Manuel olarak işlev görecek olan kelime veya sonrası. <Superdesk_ibRet> type command; -> Alias Identify sona erdiğini belirtir. (Tip Komut) <Superdesk_ibRet> <Superdesk_ibRet> alias services { -> Services aliası oluşturuldu. <Superdesk_ibRet> format "^#" { -> Format # ile başlıyorsa. <Superdesk_ibRet> target chanserv; -> Chanserv servisi hedef alınır. <Superdesk_ibRet> type services; -> Tip services. <Superdesk_ibRet> parameters "%1-"; -> %1 veya sonrası işlev olarak alınır. <Superdesk_ibRet> type command; -> Alias Services sona erdiğini belirtir. (Tip Komut) <Superdesk_ibRet> * Burada services aliasının oluşturulma amacı, Nickserv ve Chanserv servislerini bu kısım içinde tanımlayabilmektir. <Superdesk_ibRet> Orneğin; /Services identify Şifre yapıldığında, # komut içinde olmadığından dolayı Nickserv servisi esas alınacaktır. <Superdesk_ibRet> -> format "^[^#]" { <Superdesk_ibRet> target nickserv; <Superdesk_ibRet> <Superdesk_ibRet> Orneğin; /Services identify #Kanal Şifre yapıldığında, # formatı kullanıldığından dolayı, Chanserv servisi esas alınacaktır. <Superdesk_ibRet> -> format "^#" { <Superdesk_ibRet> target chanserv; <Superdesk_ibRet> <Superdesk_ibRet> alias register { -> Register aliası oluşturuldu. <Superdesk_ibRet> format "^#" { -> Regex ifade yardımı ile Format # ile başlıyorsa. <Superdesk_ibRet> target chanserv; -> Chanserv servisi hedef alınır. <Superdesk_ibRet> type services; -> Tip services. <Superdesk_ibRet> parameters "REGISTER %1-"; -> Şartlar uyum sağladığında, /Register #Kanal %1- komutu uygulanır. <Superdesk_ibRet> format "^[^#]" { -> Regex ifade yardımı ile format # ile başlamıyorsa. <Superdesk_ibRet> target nickserv; -> Nickserv servisi hedef alınır. <Superdesk_ibRet> type services; -> Tip services. <Superdesk_ibRet> parameters "REGISTER %1-"; -> Şartlar uyum sağladığında, /Register %1- komutu uygulanır. <Superdesk_ibRet> type command; -> Alias register sonu. (Tip Komut) <Superdesk_ibRet> <Superdesk_ibRet> Notlar; <Superdesk_ibRet> Lang dosyasının içinde yer alan servis mesajlarının kodlama yapısı, her servisin Main.c dosyası içinde yer almaktadır. <Superdesk_ibRet> <Superdesk_ibRet> Kodlamaya göre, uygulan komut analiz edilip buna uygun mesaj .conf dosyasının içinden çekilerek veri olarak status ekranına yansıtılır. <Superdesk_ibRet> Ornek: ON *:Text:*:#HELP:{ IF $1 == .Selam { MSG $Chan Aselam. } <Superdesk_ibRet> Help kanalında .Selam yazıldığında Aselam olarak cevap verilmesi sağlanır. <Superdesk_ibRet> Ornek: Conf Mesajı -> NICK_IDENTIFY_FAILED -> Tanimlama basarisiz - Sifre gecersiz. <Superdesk_ibRet> if (!nick_check_password(u, u->ni, pass, "IDENTIFY", <Superdesk_ibRet> NICK_IDENTIFY_FAILED)) { <Superdesk_ibRet> Şifre kontrolünde (Kod Yapısı) sorun çıkması halinde, .conf dosyasının içinden NICK_IDENTIFY_FAILED mesajı çekilerek status ekranına yansıtılır. <Superdesk_ibRet> + /Nickserv veya diğer servisismi komutları uygulandığında, "No text to send" cevabı alınır. Bu bize komutun ardından veri belirtmemiz gerektiğini anlatır. <Superdesk_ibRet> + Komut uygulamarında beliren mesajlar her zaman komutta belirtilen sıralamaya göre alınmaktadır. <Superdesk_ibRet> Orneğin; <Superdesk_ibRet> /Nickserv Yardım Commands <Superdesk_ibRet> Veri: -NickServ- yardım diye bir komut yok. "/msg NickServ HELP" yaziniz. <Superdesk_ibRet> <Superdesk_ibRet> Açıklama: Yardım komutlarında her zaman servisisminden sonra, Help kullanılması zorunludur. 1 veride hata gerçekleştiği için doğru olan 2. veri (Commands) göz ardı edilerek; <Superdesk_ibRet> UNKNOWN_COMMAND_HELP hata mesajı aktarıldı. <Superdesk_ibRet> <Superdesk_ibRet> /Nickserv Help Komut <Superdesk_ibRet> Veri: -NickServ- komut hakkinda yardim bulunamadi. <Superdesk_ibRet> Açıklama: 2. veri kontrol edilip doğrulandı, ancak 3. veride hata bulundu ve; <Superdesk_ibRet> Kodlama yapısı ile NICK_HELP_COMMANDS listesi kontrol edildi ve NO_HELP_AVAILABLE hata mesajı belirtilerek komutun bulunamadığı belirtildi. <Superdesk_ibRet> <Superdesk_ibRet> Eğitim tamamlanmıştır. <Superdesk_ibRet> Hazırladığımız bilgiler, hata payını ortadan kaldırmak için TR'nin en iyi IRCd coderlerinden olan @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] (Serkan) tarafından kontrol edilip onaylanmıştır. <Superdesk_ibRet> <Superdesk_ibRet> Dahada fazla detaya girerek IRCd kodlama yapısının tamamını açıklamalarla aktarabilirdik. Ancak sizleri fazla sıkmadan ve tadında bırakmak istediğimizden birkaç örnekle açıklamak istedik. <Superdesk_ibRet> Umarım yapı ve işleyiş konusunda fikir sahibi olmuşsunuzdur. <Superdesk_ibRet> Ramazan dolayısı ile doğal olarak yoğunluğumuz az oldu. Katılamayan arkadaşlar için, forumda paylaşılacaktır. <Superdesk_ibRet> Hatamız olmuşsa, affola. Katılım gösteren tüm arkadaşlara mIRCTurk/Help olarak teşekkür ederiz. | |
|
23 Temmuz 2012, 02:35 | #4 |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Cevap: Services Yapısı ve Işleyişi Uzun zamandır bu kadar açıklayıcı ve öğretici bir eğitim dokümana denk gelmemiştim. Bu güzel çalışma için tebrikler @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]. Senden buna benzer özel ve güzel çalışmaları bekliyorum. Başarılar. |
|
17 Mayıs 2014, 18:08 | #8 |
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0) | Cevap: Services Yapısı ve Işleyişi @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...] Emeğinize Sağlık.
__________________ Kim olduğunuzun önemi yok.; İNSAN olun yeter... |
|
Etiketler |
işleyişi, services, ve, yapısı |
Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir) | |
| |
Benzer Konular | ||||
Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
Zurna.NET -Help Departmanı Kadro ve işleyişi. | Blackwolf | Help Departmanlarından Son Haberler | 17 | 03 Ağustos 2018 10:04 |
Services Botta, ''Services.Domain.Com'' Kısmını Gizleme Hk.Bilgi. | No_FeaR | Servisler | 5 | 18 Kasım 2014 22:59 |
Yaş Yapısı | PySSyCaT | Çevre Terimleri Sözlüğü | 0 | 30 Eylül 2014 10:03 |
DOS(Denial Of Services) ve DDOS(Distributed Denial Of Services) Atakları | CeSaRCripS | Güvenlik ve Güvenlik Açıkları | 0 | 07 Haziran 2013 18:46 |
C++ İf - Else Yapısı | aSi | C ve C++ | 0 | 19 Mart 2012 19:30 |