Gotify - proyek sumber terbuka untuk mengirimkan pemberitahuan dan mengirim pesan ke server



Bagi mereka yang mengelola server dan / atau proyek web, ada pertanyaan akut tentang apa yang terjadi dengan "bangsal" mereka. Ada banyak keputusan di pasar tentang peringatan tentang kegagalan, status koneksi dan parameter lainnya, termasuk melalui SMS. Kita berbicara tentang MRTG, Twilio, F-Droid, layanan Google dan banyak lagi lainnya. Satu-satunya masalah adalah bahwa sebagian besar solusi ini sangat terspesialisasi, dan tidak mungkin untuk mempengaruhi fungsinya. MRTG akan memberikan informasi tentang lalu lintas dan koneksi, Google akan mengirim SMS. Twilio memberikan kebebasan dalam hal menulis skrip JavaScript untuk memenuhi kebutuhan Anda, tetapi saya minta maaf, ini adalah proyek komersial. Artinya, "ayolah, bayar rampasan atau pergilah."

Jadi, dalam rangkaian alat ini, kami memiliki pengisian ulang sumber terbuka: Gotify adalah proyek server-klien sederhana untuk menerima dan mengirim pemberitahuan dan perintah push, termasuk melalui aplikasi Android. Dan itu layak untuk diceritakan sedikit lebih banyak tentang itu, saya pikir itu akan berguna bagi mereka yang mencari sesuatu yang serupa dan pada saat yang sama gratis, tetapi akhirnya memulai proyek hewan peliharaan mereka sendiri. Mungkin publikasi ini akan menghemat waktu Anda beberapa ratus jam.

Apa yang Gotify Tawarkan


Proyek ini telah ada secara damai selama beberapa tahun dan telah berkembang di GitHub dan selama ini telah mengakuisisi server, klien web, aplikasi Android, API dan, tentu saja, dokumentasi. Saya memutuskan untuk berbicara tentang Gotrify karena dua alasan: ini adalah open source dan bekerja tidak hanya pada "penerimaan", tetapi juga pada "kembali", semua jenisnya ada di GitHub, ditambah lagi dikonfigurasi menggunakan bash scripts. Dan tentu saja, gratis.

Sebagian besar solusi yang ada ditujukan khusus untuk menerima pemberitahuan dari server target / perangkat, tetapi tidak pada interaksi penuh antara klien dan server. Artinya, Anda mungkin menerima pemberitahuan bahwa server Anda mogok atau Internet telah menghilang. Tidak selalu nyaman untuk bertanya pada diri sendiri apa yang terjadi di "sisi lain" dan dapat dilakukan dalam aplikasi / jendela yang sama. Lebih sering daripada tidak, untuk mendapatkan informasi seperti ini, Anda harus memotong VPN atau (Tuhan melarang) beberapa TeamViever dan menontonnya "dengan tangan Anda". Saya sebutkan di atas bahwa Twilio menyediakan beberapa ruang lingkup melalui skrip JS yang ditulis sendiri, tetapi dibayar, oleh karenanya.

Faktanya, keseluruhan proyek Gotify dibagi menjadi tiga bagian: server, klien, dan aplikasi. Server dapat dimengerti bagaimana - untuk mengirim dan menerima pesan, klien - hanya untuk menerima, dan aplikasi - hanya untuk mengirim.



Selain itu, proyek ini memiliki klien API (dan dokumentasi), templat API, templat plugin, situs web sendiri, pustaka konfigurasi Go yang mendukung variabel JSON, YAML, TOML dan lingkungan, serta server build, klien dan, pada kenyataannya, , Aplikasi Android. Satu-satunya hal yang mungkin mengganggu adalah aplikasi Android. Tidak ada yang lebih tak berdaya, tidak bertanggung jawab dan tidak bermoral di dunia selain memonitor infrastruktur melalui ponsel. Tetapi teknologi maju dan kita tahu bahwa cepat atau lambat kita akan beralih ke sampah ini. Bukan berarti itu set minimum yang diperlukan untuk berkomunikasi jarak jauh dengan server, tetapi ketika komunitas open source mulai memotong alat sendiri, sulit baginya untuk berhenti.

Secara terpisah, perlu disebutkan bahwa untuk berkomunikasi dengan server, hanya otentikasi dan token aplikasi yang diperlukan, yang dikembalikan oleh server melalui permintaan REST. Di masa depan, menggunakan token ini, Anda dapat menerima pesan melalui klien http apa pun, misalnya, melalui curl atau HTTPie :

$ curl -X POST "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5" $ http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message" priority="5" 

Menurut manual di situs web resmi proyek, push ke server dengan prioritas berbeda dapat dikirim ke Golang dan Python:

Golang

 package main import ( "net/http" "net/url" ) func main() { http.PostForm("http://localhost:8008/message?<apptoken>", url.Values{"message": {"My Message"}, "title": {"My Title"}}) } 

Python

 import requests #pip install requests resp = requests.post('http://localhost:8008/message?token=<apptoken>', json={ "message": "Well hello there.", "priority": 2, "title": "This is my title" }) 

Juga untuk Linux dan Mac, menulis plugin Anda sendiri juga dimungkinkan. Berikut adalah fitur yang tersedia, yang terdaftar di situs web proyek:

  • plugin individual untuk setiap pengguna;
  • pendaftaran penangan http khusus;
  • mengirim pesan sebagai aplikasi;
  • Sistem konfigurasi berbasis YAML di WebUI;
  • penyimpanan persisten untuk setiap plugin pengguna;
  • Tampilkan instruksi yang dihasilkan secara dinamis untuk pengguna.

Sistem plugin Gotify didasarkan pada sistem plugin Go standar, yang dijelaskan di sini . Mengapa mereka dapat digunakan di Gotify? pengembang mengutip contoh menerima webhook dari GitHub, Travis CI dan lainnya, polling feed melalui RSS, sumber Atom dan memperluas fungsionalitas standar WebUI, dan tentu saja pengiriman peringatan peringatan tentang crash. Di halaman ini Anda dapat menemukan templat untuk plugin dan penjelasan kodenya. Agar plugin berfungsi dengan benar, pengembang merekomendasikan untuk menggunakan Docker, tetapi bahkan tanpa itu, sangat mungkin untuk mengonfigurasi Gotify agar berfungsi, meskipun pengiriman dan penerimaan pesan yang benar dalam kasus ini tidak dijamin.

Saya tidak memberikan di sini teks lengkap dari dokumentasi dasar untuk proyek ini - Anda dapat membaca semuanya sendiri. Dilihat oleh ulasan, proyek ini ternyata cukup bijaksana, setidaknya di sisi lain bahwa notifikasi SMS tidak digunakan (yang merepotkan jika Anda berada di luar negeri atau di ruang bawah tanah), secara aktif berusaha mengabaikan mode hemat daya yang dibawa di Android 6-7 . Gotify penasaran walaupun itu open source, yaitu gratis dan tidak ada yang menghalangi, mengambil file dan membawa alat ini ke keadaan yang sesuai untuk kebutuhan orang / tim tertentu.



Referensi


  1. Repositori GitHub.
  2. Situs resmi proyek.
  3. Dokumentasi API.

Source: https://habr.com/ru/post/id443258/


All Articles