Forum: D Programlama Dili RSS
Apache gelen url'lerini okumak
agora #1
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Apache gelen url'lerini okumak
Selam ygs-lys hazirligindan bayadir yoktum ama o siralarda da d diline baktim baya :)

Merakim var mesela benim windows makinemde

wamp kurulu olsun ama bu zaten apache standart geliyor icinde neyse benim merakim diyelim ki ben wamp'i calistirdim bir adres var

localhost/blog/article.jsf?id=124

gibi bir adres geldiginde bunu D ile nasil okurum?

Aslinda amacim adresi almak ve sonunda ',+, vs. gibi tek basina bir anlam ifade etmeyen karakterleri gormek adres ile birlikte. bunu saglamak mumkun mu?

localhost/blog/article.jsf?id=124

yazildiginda d programi konsolda

adress: localhost/blog/article.jsf?id=124, ping: 0.12 ms
ip adress: 127.0.0.1

gibi gosterme sansi var mi bunu nasil saglayabiliriz?

socket mi olusturmak gerekiyor? mevcut bir socketi okuyacagiz sanirim yani o portu
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Apache ile CGI programlama mı yapmak istiyorsun? Şu konulara bakabilirsin:

  http://ddili.org/forum/thread/452

  http://ddili.org/forum/thread/453

Bir örnek hâlâ şurada çalışmakta:

  http://ddili.org/cgi-bin/deneme

Kaynak kodu şuymuş:

  http://ddili.org/ornek_kod/deneme.d

Umarım yeni D ile derleniyordur. :)

Ali
acehreli (Moderatör) #3
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
acehreli:
Umarım yeni D ile derleniyordur.

Derleniyor ama içinde eskiden daha iyi olduğunu sandığım dout kullanılmış. Kodu şöyle değiştirebilirsiniz:

1) std.cstream yerine std.stdio modülünü ekleyin

2) Bütün dout.'ları silin. Örneğin, dout.writef değil, yalnızca writef yazın.

Ali
agora #4
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #2
Yok hocam öyle değil.

PHP ile çalışan bir site olsun.

Ben D ile bir program yapayım, bu program PHP ile yazılan sitedeki hareketleri takip etsin

POST, GET, PUT gibi hareketleri. bunu da apache'ye gelen değerler üzerinden yapsın.

Apache sunucusunun çalıştırdığı adresleri göstersin bana

linux içinde Lampp var mesela

Lampp'a "Unclassified NewsBoard " kurduk diyelim. Deneme mesajları atıyoruz foruma ve örneğin tarayıcıda açtığımız adres:

http://ddili.org/forum/fo…?req=post&thread=1379&…

d ile yazdığımız program ise işte bu adresi okuyabilir mi?

Lampp apacheyi çalıştırıyor, bu URL apache'den geçiyor.

Benim istediğim ise apache'nin çalıştırdığı url'yi tam değeri ile alabilmek yani.

Örnek bir senaryo

[Resim: http://imgim.com/4242incip2587022.png]

Burada bütün işleri Lampp yapıyor diyelim, ama D programı ise bu sunucuya gelen istekleri kontrol ediyor. Benim tam istediğim şey ise bu istekler aslında.

Sunucuya gelen istekleri görmek.

Baya suredir kafami sorulardan kaldiramadigim icin biraz unuttum yazmayi sormayi :(
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bu konuları bilen arkadaşlar düzelteceklerdir ama sanırım sen Apache modülü yazmak istiyorsun:

  http://httpd.apache.org/docs/current/developer/modguide.html

Orada gösterilen bir C arayüzü olduğuna göre gereken işlevleri D kodunda extern (C) olarak tanımlamak gerekecek.

Başka bir ayrıntı, Apache modülleri apxs denen bir araçla derleniyormuş ama onun perde arkasında gcc'yi ve ld'yi nasıl kullandığı şurada gösteriliyor:

  http://httpd.apache.org/docs/current/programs/apxs.html

gcc yerine bir D derleyicisi kullanarak .o oluşturulabilir herhalde.

Geç de olsa aklıma D haber gruplarında aramak geliyor: :)

  apache module site:forum.dlang.org

Kısacası, ben bilmiyorum. :)

Ali
agora #6
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yok hocam modul yazmak niyetinde degilim aslinda ama aklima o geldi. Arama yaptim nedense ben sonuc bulamadim mod_d falan bulabildim ama sanirim bu FastCGI tarzi bir sey.

Ben apache monitor istiyorum diyeyim

Python'da yaptim aslinda dedigimi

[Resim: http://imgim.com/6581inciw3241702.png]

Bottle diye bir framework var. Ben orada ufak bir giris betigi kodladim ve run dedikten sonra localhost:8080/merhaba/ali.php?id=135 gibi yazinca gosterdi

alttaki linkleri GET yontemi ile almis zaten yani benim okumak istedigim de bu aslinda :D

Edit:

Python programinda

Listenin on localhost:8080

yaziyor yani sanirim bu belirtilen port'u dinliyor.

Benim de amacim bu olabilir belki ama dogru seyi dusunup dusunmedigimi bile bilmyorum. Sadece ne istedigimi biliyorum o.O
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Bottle Apache'yi kullanmıyor çünkü kendisi bir sunucu, değil mi? Onun D eşdeğeri vibe.d'dir:

  http://vibed.org/

Ali
agora #8
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Evet hocam bootle bir ornekti benim demek istedigim calisan bir sunucuya gelen degerleri okumak nasil anlatsam ki simdi :/

Ben kendim bir sunucu kurmak istemiyorum.

Halihazirda bir apache sunucusu var ve bu sunucuya gelen degerleri okumak istiyorum. Apachenin sanirim portlarini dinlemek oluyor bu.
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
url snooper?

Ali
agora #10
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
O dediğinizi bilmiyorum hocam ama şey gibi düşünelim

Ziyaretçi siteye gelir, IP adresi ve dolaştığı sayfalar loglanır ya sunucu bazlı. Hostgator falan kesin bunu yapıyordur.

Ben de real time olarak diyorum işte

php tabanlı siteye gelen ziyaretçileri d dili vasitasi ile görüntüleyeyim.

sunucuya gönderilen

get, post istekleri mesela

apache sunucusu => get, post gibi istekler alsın.

bu istekler için bir api var mı mesela d dili bu istekleri okusun.

örneğin

ddili.org sitesine yollanan istekleri okumak istiyorum diyelim linux konsolda bottle gibi düşünelim

ddili.org apache üzerinde, ben bunlardan tamamen bağımsız bir program yazayım, o program gelen istekleri alsın.

Ya ben aslında anlatamadım galiba tam olarak :(
Mengu (Moderatör) #11
Kullanıcı başlığı: NONSERVIAM
Üye Tem 2009 tarihinden beri · 347 mesaj · Konum: Dersaadet
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
selamlar

1) bottle bir web framework, sunucu degil; d'deki karsiligi vibe.d

2) apache bir web sunucusu. apache'yi calistirdiginizda yapilan istekleri ilk karsilayacak ve konfigurasyonuna gore isteklerin sonucunu gosterecek olan apachedir.

3) senin istediginin iki yontemi var.

3.1) ali ustadin dedigi gibi apache'ye minik bir modul yazarak apache'ye gelen istekleri d ile yazdigin / yazacagin programlar icin anlamli hale getirebilirsin.

3.2) adam ruppe'nin cgi.d modulunu kullanabilirsin. https://github.com/adamdruppe/arsd/blob/master/cgi.d

vibe.d kullanirsan herhangi bir web sunucusu kurmana gerek kalmaz, vibe.d'yi 0.0.0.0 seklinde dis dunyaya belirttigin porttan acabilirsin.
http://www.mengu.net - some kind of monster
agora #12
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@Mengu hocam aslinda demek istedigim de 2. dediginizdi yani.

Yani ben aslinda D ile bir site yazmicam.

Asp.NET, Java, Python, PHP, ASP

vs. gibi sitelere gelen istekleri D ile algilayip konsola vermek amacim ama sanirim bunun tek yolu modul yazmak
Avatar
Salih Dinçer #13
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Appache'nin hali hazırda bulundan modülünü niye kullanmıyorsun?

http://httpd.apache.org/docs/2.2/mod/mod_log_config.html

Yani oluşturduğu log dosyasını D ile pekala okutturabileceğini düşünüyorum...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
agora #14
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hocam demek istediğim buydu aslında :D bunu real-time olarak da kontrol edebiliriz sanırım.

Birisi siteye girince açılan sayfa URL'si

site.com/bilmemne.x?cs=12

gibi göstersin karşı kullanıcının yolladığı isteklere ek olarak ' vs. gibi karakterler eklenirse onları blocklasın program. bunu yapabilirim sanırım ama öncelik merak ettiğim şey

Bu belgeleri kim Türkçeleştirdi :(

İngilizceden daha zor ve Türkçe'yi, Türkçe diline çevirmek zorunda kalıcam :(
Avatar
Salih Dinçer #15
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
agora:
İngilizceden daha zor ve Türkçe'yi, Türkçe diline çevirmek zorunda kalıcam :(
Buna gerek yok, Cem Yılmaz'ın dediği gibi yapılmışı var :)

http://httpd.apache.org/docs/2.2/en/mod/mod_log_config.html
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 11:00:25 (UTC -08:00)