Bot Gema XMPP
Tahukah Anda situasinya, Anda benar-benar membutuhkan bot gema XMPP, tetapi Anda tidak memiliki akses ke alat tingkat tinggi seperti Python untuk menulisnya? Yang Anda miliki hanyalah openssl, bash, dig, stdbuf dan sed? Maka alat ini cocok untuk Anda.
Ini adalah bot gema XMPP yang ditulis (kebanyakan) sed. Bash digunakan untuk melakukan pengaturan pra-otentikasi (mencari catatan DNS, membuat TLS melalui openssl s_client
). sed memproses aliran XML dan menangani semua interaksi dengan server pada level XMPP. Ya, ini semacam mem-parsing XML di sed.
Diuji untuk bekerja melawan Prosody 0.9.
Penggunaan
./echoz.sh kata sandi pengguna@domain
Fitur yang Didukung
- Pesan yang tidak direkam
- XEP-0092 (Versi Perangkat Lunak)
- XEP-0199 (Ping XMPP)
Testimonial
- Ini gila, aku belum menabraknya! — Matius Liar
- saya takut. Hanya tinggal dua langkah lagi untuk mendapatkan kesadaran. — Georg Lukas
- Saya terkejut dan kagum secara bersamaan. wow - Lance
- Dengan Echoz.sed, kami dapat mengurangi biaya server XMPP Echo sebesar 90% dibandingkan dengan solusi berbasis TeX kami sebelumnya. —Leon
- Meskipun sederhana dan terbatas, sed cukup kuat untuk banyak tujuan. —Wikipedia
- ya Tuhan ini benar-benar berhasil - Tes
Detail Implementasi
- Kami menggunakan
tr
untuk mengonversi >
menjadi n
-- karena sed berbasis baris (atau NUL), sebenarnya tidak ada cara lain untuk mengurai XML XMPP (yang umumnya tidak pernah berisi baris baru) dengan sed. - TLS ditangani di luar sed karena alasan serupa. Dan untuk menjaga kewarasan saya (beberapa orang mungkin mempertanyakan apakah saya masih memiliki sedikit kewarasan).
- Demikian pula, pencarian SRV dan komposisi data otentikasi sepenuhnya ditangani di bash. Ini juga berarti bahwa hanya otentikasi SASL POLOS yang didukung -- SCRAM memerlukan tingkat interaktivitas yang akan sangat sulit dicapai di sed (meskipun bukan tidak mungkin; kita "hanya" harus mengimplementasikan base64 dan sha1-hmac di sed).
- Karena XMPP adalah protokol di mana klien berbicara terlebih dahulu, kita perlu memberikan beberapa masukan awal agar dapat menghasilkan "baris" keluaran (header aliran). Kami melakukannya dengan bash, dan menggunakan kesempatan itu untuk meneruskan beberapa konfigurasi ke program sed (yaitu JID dan string otentikasi).
Pertimbangan Desain
- Kami mempertimbangkan untuk menggunakan
xml2
untuk mengubah aliran XML menjadi acara; Namun, ternyata 2xm[
tidak menyukai penyetelan ulang aliran. Selain itu, penggunaan pendekatan tr
juga memungkinkan kita mendeteksi akhir elemen, yang berguna untuk berbagai tujuan.