PHPCommunicator - Java Socket

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
PHPCommunicator'ı kısaca özetleyecek olursak sunucunuza İnternet üzerinden komut yollayabilir hatta sunucunuzdan bilgi alabilirsiniz. Her türlü öneriye açığım.
  • /phpd komutu debug mesajlarının konsola gönderilmesini açar veya kapatır.
  • konfik.yml dosyasında bir hata olursa dosya kendini sıfırlar ve yeni bir default config oluşturur.
  • Default configdeki şifre 10 karakterlidir ve rastgele harflerden oluşur (config sıfırlandığında şifre de değişir)
  • Dışarıdan gelen bağlantılar config üzerinden açılıp kapatılabilir.
  • konfik.yml üzerinden IP adresi eklenebiliyor.
  • Eğer eklenirse bu IP adresleri dışından bağlantı sağlanamıyor.
  • PHP tarafından gönderilen mesajın formatı şudur;
  • şifre\nCallable:CallableTürü:Argümanlar
  • Şifre configde belirtilen şifredir.
  • Callable REQUEST veya ACTION olabilir. REQUEST istek, ACTION eylem dir.
  • Callable türü REQUEST olarak şu anda sadece ONLINE_COUNT dır.
  • ACTION türleri KICK_PLAYER ve CONSOLE_COMMAND dır.
  • Argümanlar arasında iki nokta bulunur.
  • ONLINE_COUNT'ın argümanı bulunmaz.
  • KICK_PLAYER da birinci argüman oyuncu adı ikinci argüman kick sebebidir.
  • CONSOLE_COMMAND'da tek argüman konsol tarafından gerçekleştirilecek komuttur. Örnek;
  • testpassword\nACTION:KICK_PLAYER:Elfen:TestMesajı
  • Eklenti içerisindeki konfik.yml dosyasına dokunulmamalıdır.
PHP Tarafında CONSOLE_COMMAND kullanımı;
PHP:
$PORT = 20222;
$HOST = "localhost";

$sock = socket_create(AF_INET, SOCK_STREAM, 0)
        or die("error: could not create socket\n");

$succ = socket_connect($sock, $HOST, $PORT)
        or die("error: could not connect to host\n");
$text = "CZGNwVCBWt\nACTION:CONSOLE_COMMAND:broadcast deneme";

socket_write($sock, $text . "\n", strlen($text) + 1)
        or die("error: failed to write to socket\n");


PHPCommunicator-1.2.0
İndir
VirusTotal

PHPCommunicator-1.3.0
İndir
VirusTotal
 


Son düzenleme:

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
Kimse iplememiş güzelim eklentiyi :/ SSL ve Json vb. ile daha iyi bir format dışında eksik göremiyorum.
 

ilkeroyun

Elmas Madencisi
Mesajlar
774
En iyi cevaplar
1
Beğeniler
431
Puanları
600
Ruh hali
Kesinlikle kaliteli bir plugin pek kullanma fırsatım olmamasına rağmen oldukça değerli
 

Bkunkcu

Windows 10 CDsi bulunur.
Emektar Üye
Mesajlar
1,244
En iyi cevaplar
2
Beğeniler
117
Puanları
640
Hocam öncelikle eline sağlık, güzel çalışma olmuş. Config dosyası ile rastgele şifre oluşturma fikri ve dışarıdan gelen bağlantıların kontrol edilebilmesi gayet güzel fakat uzak bir web sunucudan bağlantı kurmak gerektiğinde, socketler üzerinden veri yollarken herhangi bir şifreleme yapılmayacağı için bu bağlantının arasına girerek şifreyi ele geçirmek pek de zor değil. Tam güvenlik için SSL kullanılabilir tabii ama kullancılar için külfetli olacağından SSL de pek mantıklı gözükmüyor. Kesin çözüm olmasa da güvenliği kayda değer oranda arttırmak için sadece belli ip adreslerinden bağlantıya izin vererek yapılacak erişimin kendi uzak web sunucundan olacağını garantileyebilirsin(tabii ki hiçbir zaman garanti değil). Tekrar eline sağlık, kolay gelsin.
 
Son düzenleme:

amiral

Taş Madencisi
Mesajlar
65
En iyi cevaplar
0
Beğeniler
165
Puanları
240
Ruh hali
Şu anki haliyle gerçekten anlamsız bir proje olmuş zira böyle bir işlem için Socket açmak hem aldığınız performansı düşürecek, hem de yapmanız gereken işi olduğundan komplike hale getirecektir. Amacınız eğer ki konsola komut göndermekse bunu Bukkit dahi kullanmadan doğrudan Vanilla bir sunucu ile dahi "RCON" (server.properties dosyasından aktif edebilirsiniz) özelliğiyle yapabilirsiniz. Projenin tek amacı konsola komut göndermek veya sunucudan bilgi almaksa size önerim daha ihtiyaç duyulabilir şeyler yapmanız olacaktır çünkü söylediğim gibi bu özellik oyuna zaten direkt güvenli ve hızlı bir metod ile geliyor. Örnekler için ektekilere bakabilirsiniz.

https://github.com/ekaomk/Minecraft-RCON-Console
https://github.com/thedudeguy/PHP-Minecraft-Rcon
https://github.com/Rauks/Minecraft-RCON
https://github.com/xPaw/PHP-Minecraft-Query
 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Şu anki haliyle gerçekten anlamsız bir proje olmuş zira böyle bir işlem için Socket açmak hem aldığınız performansı düşürecek, hem de yapmanız gereken işi olduğundan komplike hale getirecektir. Amacınız eğer ki konsola komut göndermekse bunu Bukkit dahi kullanmadan doğrudan Vanilla bir sunucu ile dahi "RCON" (server.properties dosyasından aktif edebilirsiniz) özelliğiyle yapabilirsiniz. Projenin tek amacı konsola komut göndermek veya sunucudan bilgi almaksa size önerim daha ihtiyaç duyulabilir şeyler yapmanız olacaktır çünkü söylediğim gibi bu özellik oyuna zaten direkt güvenli ve hızlı bir metod ile geliyor. Örnekler için ektekilere bakabilirsiniz.

https://github.com/ekaomk/Minecraft-RCON-Console
https://github.com/thedudeguy/PHP-Minecraft-Rcon
https://github.com/Rauks/Minecraft-RCON
https://github.com/xPaw/PHP-Minecraft-Query
Aslında eklentinin yazılma amacı RCON'a alternatif çıkarmak çünkü nedenini bulamadığımız bir problemden ötürü sunucumuzda RCON çalışmıyor. @Whoisthatinblack 'in isteği üzerine paylaştım.
 

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
Şu anki haliyle gerçekten anlamsız bir proje olmuş zira böyle bir işlem için Socket açmak hem aldığınız performansı düşürecek, hem de yapmanız gereken işi olduğundan komplike hale getirecektir. Amacınız eğer ki konsola komut göndermekse bunu Bukkit dahi kullanmadan doğrudan Vanilla bir sunucu ile dahi "RCON" (server.properties dosyasından aktif edebilirsiniz) özelliğiyle yapabilirsiniz. Projenin tek amacı konsola komut göndermek veya sunucudan bilgi almaksa size önerim daha ihtiyaç duyulabilir şeyler yapmanız olacaktır çünkü söylediğim gibi bu özellik oyuna zaten direkt güvenli ve hızlı bir metod ile geliyor. Örnekler için ektekilere bakabilirsiniz.

https://github.com/ekaomk/Minecraft-RCON-Console
https://github.com/thedudeguy/PHP-Minecraft-Rcon
https://github.com/Rauks/Minecraft-RCON
https://github.com/xPaw/PHP-Minecraft-Query
Maalesef RCON veya Query kullanarak yapılamayacak şeyler var. Mesela bir oyuncunun üzerinde belirli bir işlem gerçekleştirip, sonuca bağlı olarak geri bildirim almak gibi. Örnek vermek gerekirse: Oyuncu site üzerinden tl ile rank satın alır, PHP ile oyuncunun rank satın aldığı sunucuya iletilir, sunucu oyuncuya rankını başarıyla verebilirse oyuncunun an itibariyle üyesi olduğu rankleri ve bunların sürelerini PHP ye iletir. Ayrııca online sayısına bakarken vanishtekileri hesaba katmak, Vault ile oyuncunun bakiyesini sorgulamak veya oyuncunun oyun içi bildirimlerini web de görebilmesini sağlamak gibi sürüyle mantıklı ve işe yarar kullanımı sıralanabilir.

Performans açısından sorun olacağını sanmıyorum çünkü yalnızca bir adet socket var ve gelen bağlantılar sırayla kabul ediliyor. Hem zaten RCON'da socket kullanmıyor mu?
 

amiral

Taş Madencisi
Mesajlar
65
En iyi cevaplar
0
Beğeniler
165
Puanları
240
Ruh hali
Maalesef RCON veya Query kullanarak yapılamayacak şeyler var. Mesela bir oyuncunun üzerinde belirli bir işlem gerçekleştirip, sonuca bağlı olarak geri bildirim almak gibi. Örnek vermek gerekirse: Oyuncu site üzerinden tl ile rank satın alır, PHP ile oyuncunun rank satın aldığı sunucuya iletilir, sunucu oyuncuya rankını başarıyla verebilirse oyuncunun an itibariyle üyesi olduğu rankleri ve bunların sürelerini PHP ye iletir. Ayrııca online sayısına bakarken vanishtekileri hesaba katmak, Vault ile oyuncunun bakiyesini sorgulamak veya oyuncunun oyun içi bildirimlerini web de görebilmesini sağlamak gibi sürüyle mantıklı ve işe yarar kullanımı sıralanabilir.

Performans açısından sorun olacağını sanmıyorum çünkü yalnızca bir adet socket var ve gelen bağlantılar sırayla kabul ediliyor. Hem zaten RCON'da socket kullanmıyor mu?
Fark ettiyseniz zaten ilk yorumumda "Amacınız eğer ki konsola komut göndermekse" diye başlamışım, RCON ile nelerin yapılıp nelerin yapılamayacağını zaten bildiğimi anlatmaya çalışarak ve konuda da yapılan tek şeyin bu olduğunu belirterek. Gözümden kaçan bir şey varsa belirtin lütfen.

Zaten yapılmışı daha doğrusu yapılmışı ve en az yüz defa denenmiş ve bu konudaki bütün ihtiyacınızı karşılayacak bir sistemi elinizin tersiyle itip bir kenara koymak için sizin alternatifinizin daha iyi olması gerekir ki bu kütüphaneyi kullanacak kişiler için ne bir doküman, ne de bir kaynak kodu mevcut. Şahsımı geçtim bu projeyi üstlenen arkadaş bile muhtemelen ciddi bir eklenti kodlarken bir protokole ihtiyaç duyduğunda rastgele bir tanesini kullanmaktan ziyade gerçekten kalite testinden geçtiğine inandığı bir yazılımı tercih edecektir. Kendinize, "Bunun RCON'a veya başka bir protokole göre ne avantajı var?" diye sorduğunuzda bir şey bulamıyor fakat bilakis dezavantajlarını sorduğunuzda birkaç şey aklınıza geliyorsa projeniz başarılı bir alternatif değil demektir. Belki de yapılmamış şeyler deneyerek orijinalliğiniz ile bir şeyler çıkartmanız gerekiyordur.
 

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
Fark ettiyseniz zaten ilk yorumumda "Amacınız eğer ki konsola komut göndermekse" diye başlamışım, RCON ile nelerin yapılıp nelerin yapılamayacağını zaten bildiğimi anlatmaya çalışarak ve konuda da yapılan tek şeyin bu olduğunu belirterek. Gözümden kaçan bir şey varsa belirtin lütfen.

Zaten yapılmışı daha doğrusu yapılmışı ve en az yüz defa denenmiş ve bu konudaki bütün ihtiyacınızı karşılayacak bir sistemi elinizin tersiyle itip bir kenara koymak için sizin alternatifinizin daha iyi olması gerekir ki bu kütüphaneyi kullanacak kişiler için ne bir doküman, ne de bir kaynak kodu mevcut. Şahsımı geçtim bu projeyi üstlenen arkadaş bile muhtemelen ciddi bir eklenti kodlarken bir protokole ihtiyaç duyduğunda rastgele bir tanesini kullanmaktan ziyade gerçekten kalite testinden geçtiğine inandığı bir yazılımı tercih edecektir. Kendinize, "Bunun RCON'a veya başka bir protokole göre ne avantajı var?" diye sorduğunuzda bir şey bulamıyor fakat bilakis dezavantajlarını sorduğunuzda birkaç şey aklınıza geliyorsa projeniz başarılı bir alternatif değil demektir. Belki de yapılmamış şeyler deneyerek orijinalliğiniz ile bir şeyler çıkartmanız gerekiyordur.
İlk yorumunda bahsettiğin kısmı zaten okudum ve anladım fakat kullanım amacını daha detaylı bir biçimde belirtme gereksinimi duydum çünkü bu eklentinin yaptığı olayı RCON ile yapamıyoruz ve bundan dolayı RCON'ı senin tabirinle elimizin tersiyle itmek zorundayız.

Ayrıca bu bir eklentidir, kütüphane değildir ve bir API'a sahip değil; fakat bunu kullanacak birisi bizden rica etse bir API eklememiz hiç de zor değil. Eklentide şu anda sadece 3 adet metod var çünkü kimse ilgi gösterip "şunu ekleyebilir misiniz?" şeklinde öneride bulunmadı. Bundan ötürü bizde zahmet gösterip eklentiye yeni birşeyler eklemedik, eklentinin zaten kullanıcısı yok bu sebepten kendimizin kullanmayacağı özellikleri eklememiz sadece vakit kaybı olur. Kendimiz ihtiyaç duyduğumuzda eklentiye yeni birşeyler eklersek muhtemelen burada paylaşırız.

Bu eklentinin burada paylaşılma sebebi "belki topluluktan ilgi görür ve gelen önerilere bağlı olarak gelişir" şeklinde düşünmemdi. Fakat düşündüğüm gibi olmadı, RCON ve Query ile yapılabilenlerin ötesine geçemedi. (Kendi sunucumuzda kullandığımız sürümünde ek callablelar bulunuyor örneğin yukarıda anlattığım bildirim sistemi buna dahil)
 
Son düzenleme:

SpringHat

Ağaç Yumruklayıcı
Mesajlar
16
En iyi cevaplar
0
Beğeniler
27
Puanları
60
İlk yorumunda bahsettiğin kısmı zaten okudum ve anladım fakat kullanım amacını daha detaylı bir biçimde belirtme gereksinimi duydum çünkü bu eklentinin yaptığı olayı RCON ile yapamıyoruz ve bundan dolayı RCON'ı senin tabirinle elimizin tersiyle itmek zorundayız.

Ayrıca bu bir eklentidir, kütüphane değildir ve bir API'a sahip değil; fakat bunu kullanacak birisi bizden rica etse bir API eklememiz hiç de zor değil. Eklentide şu anda sadece 3 adet metod var çünkü kimse ilgi gösterip "şunu ekleyebilir misiniz?" şeklinde öneride bulunmadı. Bundan ötürü bizde zahmet gösterip eklentiye yeni birşeyler eklemedik, eklentinin zaten kullanıcısı yok bu sebepten kendimizin kullanmayacağı özellikleri eklememiz sadece vakit kaybı olur. Kendimiz ihtiyaç duyduğumuzda eklentiye yeni birşeyler eklersek muhtemelen burada paylaşırız.

Bu eklentinin burada paylaşılma sebebi "belki topluluktan ilgi görür ve gelen önerilere bağlı olarak gelişir" şeklinde düşünmemdi. Fakat düşündüğüm gibi olmadı, RCON ve Query ile yapılabilenlerin ötesine geçemedi. (Kendi sunucumuzda kullandığımız sürümünde ek callablelar bulunuyor örneğin yukarıda anlattığım bildirim sistemi buna dahil)
Kütüphaneden kasıt protokol veya yöntem demek istemiş @Schaffer79 galiba veya kütüphane teknik detaylarında çok uzman değilim bilmiyorum. Ama gerçekten rcon olayı vanillada bile varmışki biraz gereksiz olmuş bunun için eklenti yapman, bukkitin plugin sistemine yeni plugin sistemi eklemek kadar saçma (Skript de bunların örneklerinden) bir işe girmeni mantıklı bulmadım. Önceden o rcon şeyini denediğine emin misin çünkü ilk defa duymama rağmen tek denemede kendi local sunucum üzerinde çalıştırabildim. Yardım edebilirim gerekirse.
 

Whoisthatinblack

Taş Madencisi
Mesajlar
70
En iyi cevaplar
0
Beğeniler
85
Puanları
280
Kütüphaneden kasıt protokol veya yöntem demek istemiş @Schaffer79 galiba veya kütüphane teknik detaylarında çok uzman değilim bilmiyorum. Ama gerçekten rcon olayı vanillada bile varmışki biraz gereksiz olmuş bunun için eklenti yapman, bukkitin plugin sistemine yeni plugin sistemi eklemek kadar saçma (Skript de bunların örneklerinden) bir işe girmeni mantıklı bulmadım. Önceden o rcon şeyini denediğine emin misin çünkü ilk defa duymama rağmen tek denemede kendi local sunucum üzerinde çalıştırabildim. Yardım edebilirim gerekirse.
Sen çok yanlış gelmişsin beyim. Lütfen yazılanları tekrar oku.
 

Elfen

Kızıltaş Madencisi
Mesajlar
508
En iyi cevaplar
0
Beğeniler
596
Puanları
1,230
Konu güncel.

Konu güncel.

Konu güncel.

Eklentiye eklenmesi gerektiği veya eklense güzel olur dediğiniz özellikleri belirtirseniz sevinirim.

Konu güncel.
 

Üst