Proyek ini mencakup sisi server dan aplikasi web yang dirancang untuk berkomunikasi dengan perangkat jam tangan pintar anak-anak yang dilengkapi dengan pelacak GPS dengan model berbeda dan dikenal dengan berbagai merek. Misalnya, dapat bekerja dengan Q50, Q60, Q80, Q90, Q100, Q360, Q523, Q730, Q750, Q8, GW100, GW100S, GW200, GW200S, GW300, GW300S, GW400S, GW400X, GW500S, GW600S, GW700, GW800, GW900, GW900S, GW1000, GW1000S, EW100, EW100S, EW200, K911, W8, W9, W10, Y3, G36 PENJAGA AMAN, DS18, T58, T100, I8, G10, G100, D99, D100, D100S, dan masih banyak lainnya. Secara kasar, fungsinya sama dengan aplikasi seperti SeTracker, FindMyKids, dan sebagainya. Perbedaan utamanya adalah semua data pribadi, seperti kontak, posisi, riwayat komunikasi, dan sebagainya, menjadi benar-benar pribadi, karena disimpan di perangkat keras yang dikendalikan oleh pengguna.
Masalah lain yang diatasi adalah model keamanan aplikasi komunikasi dan pelacakan jam tangan pintar anak. Secara default, siapa pun dapat mengambil kendali atas perangkat asalkan pengidentifikasi perangkat diketahui, tanpa konfirmasi lebih lanjut sebagai pemilik perangkat. Pengidentifikasinya, pada gilirannya, dapat diperoleh dengan mudah dengan mengirimkan pesan teks ke perangkat jika nomor ponsel perangkat tersebut diketahui. Tentu saja ada kata sandinya, tetapi semua perangkat memiliki kata sandi pabrik yang sama dan tidak ada pemberitahuan mengganggu yang meminta untuk mengubahnya, oleh karena itu tidak ada yang melakukan itu.
Dalam aplikasi ini skenario keamanan berikut telah diterapkan:
Dan yang terakhir, namun tidak kalah pentingnya, gratis dan iklan :).
Membangun proyek itu sesederhana
docker compose -f docker-builder.yml run --rm builder
Saat membangun, sertifikat SSL yang diperlukan untuk koneksi https
dibuat. Dimungkinkan untuk menentukan domain dan/atau alamat ip menggunakan variabel lingkungan DOMAIN
dan IP
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
Aplikasi ini dapat didukung oleh database yang berbeda, sesuai pilihan Anda. Skenario paling ringan adalah menggunakan database H2 tertanam. Dalam hal ini aplikasi dapat dimulai dengan perintah
docker compose --profile h2 up -d
PostreSQL juga dapat digunakan, baik dalam container atau mandiri. Dalam kasus sebelumnya Anda dapat memulai aplikasi dengan perintah
docker compose --profile pg up -d
Dalam kasus terakhir Anda harus melengkapi file db.env
dengan URL database dan kredensial, lalu jalankan perintah
docker compose --profile pg_ext up -d
Jika versi penulisan Anda tidak mendukung profil, Anda dapat menggunakan file penulisan khusus untuk setiap skenario
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
Dalam kasus terakhir Anda masih perlu melengkapi file db.env
dengan URL database dan kredensial.
Dimungkinkan juga untuk melewati fase pembangunan yang membosankan dan menjalankan biner yang dilampirkan ke rilis (seharusnya menginstal Java 8 atau lebih tinggi)
java -jar kidtracker.jar
Biner dikonfigurasi untuk menggunakan database H2 tertanam. Tiga folder dibuat saat startup pertama di direktori kerja:
data
berisi catatan basis data untuk lokasi perangkat, nomor telepon, dll. Tanggal ini bersifat rahasia, jadi simpanlah dengan aman!logs
cukup deskriptif, berisi log, baik untuk aplikasi itu sendiri, dan untuk perangkat saat debugging perangkat aktif,media
folder ini digunakan untuk mengubah audio masuk dalam format amr menjadi mp3 UI Web tersedia di https://<hostname>:8003
. Untuk masuk, gunakan kredensial default admin
/ password
.
Untuk menetapkan perangkat ke pengguna yang terdaftar pada aplikasi, aplikasi harus tersedia dari jaringan publik, yaitu aplikasi harus memiliki alamat ip publik, dan, mungkin, nama domain terkait. Secara default, aplikasi mendengarkan perangkat pada port 8001
, misalkan port yang sama dipetakan ke jaringan publik. Kemudian pesan teks berikut yang dikirim ke perangkat membuatnya mulai terhubung ke aplikasi:
pw,123456,ip,<public IP address or domain>,8001#
Di sini 123456
adalah kata sandi default, yang kemungkinan besar disetel pada perangkat. Kata sandi default lain yang diketahui adalah 523681
, 54321
, dan 654321
. Namun, jika kata sandi diubah, kata sandi baru harus digunakan, bukan kata sandi default.
Sangat disarankan untuk mengubah kata sandi default!
Kemudian klik tombol di sisi kanan bilah navigasi lalu klik tombol di footer. Pengidentifikasi perangkat diperlukan agar perangkat dapat ditetapkan. Setelah perangkat terhubung ke aplikasi, token konfirmasi empat digit dikirim ke perangkat. Untuk mengonfirmasi bahwa pengguna adalah pemilik perangkat, token ini harus dimasukkan ke formulir pop-up selama 5 menit berikutnya, setelah waktu tersebut token habis masa berlakunya.
Setiap pengguna yang terdaftar pada aplikasi dapat menjadi pengguna biasa, atau administrator. Administrator dapat mendaftarkan pengguna lain, sedangkan pengguna biasa tidak, inilah satu-satunya perbedaan. Administrator dapat membuat pengguna biasa dan administrator lainnya. Untuk pengguna yang sudah ada, hak istimewa administrator tidak dapat diberikan atau dicabut, satu-satunya cara untuk mengubahnya adalah dengan menghapus akun pengguna, dan membuatnya kembali.
Demi keamanan, nomor ponsel pengguna juga tidak dapat diubah. Sekali lagi, untuk mengubahnya, akun pengguna harus dihapus dan dibuat ulang. Untuk menghapus akun pengguna, semua perangkat harus dibatalkan penetapannya.
Saat dijalankan pertama kali, terdapat akun pengguna default dengan hak istimewa administrator dengan login admin
dan password
password . Disarankan untuk menghapus akun ini ketika akun pengguna lain dibuat, atau mengubah kata sandi default. Jika hanya ada satu akun dengan hak administrator, maka akun tersebut tidak dapat dihapus. Akun administrator default tidak memiliki nomor ponsel yang valid, dan tidak ada perangkat yang dapat ditetapkan ke akun tersebut.
Perangkat berkomunikasi ke aplikasi melalui pesan. Ada beberapa jenis pesan, beberapa dapat memberikan informasi tentang lokasi dan peringatan perangkat, yang lain berisi daya baterai aktual dan nilai pedometer.
Beberapa pesan juga dapat dikirim oleh aplikasi ke perangkat untuk membuatnya melakukan beberapa tindakan atau mengubah pengaturannya. Untuk memastikan perangkat telah menerima pesan tersebut, perangkat akan mengirimkan pesan konfirmasi kembali ke aplikasi. Selagi menunggu pesan konfirmasi, UI tetap diblokir. Jika tidak ada konfirmasi yang diterima dalam 10 detik (dapat dikonfigurasi), pesan awal dianggap tidak dikonfirmasi.
Penanda posisi semua perangkat yang ditetapkan bersama dengan penanda posisi pengguna berbagi peta yang sama. Penanda perangkat berisi informasi tentang waktu lokasi terakhir yang diketahui, daya baterai, nilai pedometer, dan pada akhirnya peringatan lepas landas perangkat, peringatan baterai lemah, peringatan koneksi terputus, dan peringatan lokasi usang. Perangkat dianggap hilang jika pesan terakhir dari perangkat diterima lebih dari 15 menit yang lalu.
Perangkat dapat memberikan lokasi sebenarnya, berdasarkan data GPS langsung, jika tersedia, serta posisi terakhir yang terdeteksi, saat pengamatan GPS langsung tidak tersedia, sebagian besar di dalam gedung atau saat terdapat gangguan elektromagnetik, dalam kasus tersebut data GPS
dianggap usang. Jika data lokasi yang diterima sudah usang, peringatan data usang akan ditampilkan.
Perhatikan bahwa peringatan baterai lemah, dan nilai pengisian daya sebenarnya muncul dalam berbagai jenis pesan. Pesan dengan tagihan sebenarnya datang lebih sering (setiap 5 menit) dibandingkan pesan dengan lokasi dan peringatan, yang tidak dapat dikirim selama berjam-jam. Oleh karena itu, tidak jarang penanda menunjukkan daya baterai 100% bersamaan dengan peringatan baterai lemah. Dalam hal ini prioritasnya adalah agar nilai numerik dari daya baterai dan peringatan baterai lemah dapat diabaikan.
Perangkat mengirimkan pesan alarm ketika tombol SOS ditekan. Penanda perangkat menjadi merah dalam hal ini, dan suara sirene diputar hingga penanda diklik. Hasil klik penanda memindahkannya ke atas dan mengalihkan pilihan anak. Saat pilihan anak dialihkan, penanda perangkat yang dipilih berada di atas.
Perangkat dapat mengirim pesan audio dan (jika dilengkapi dengan kamera) foto ke aplikasi. Saat pesan baru semacam ini tiba, penanda perangkat menjadi biru, dan bunyi dering telepon kuno diputar hingga penanda diklik. Seperti dalam kasus alarm, hasil klik penanda memindahkannya ke atas dan mengalihkan pilihan anak.
Stempel waktu di mana saja di UI dapat diklik, dan dengan satu klik dapat dialihkan antara nilai tanggal dan waktu absolut serta interval waktu dari sekarang.
Ada dua ikon yang memiliki dua status, terisi dan berkabel. Yang pertama terisi ketika tampilan peta mengikuti penanda perangkat yang dipilih. Statusnya dapat diubah dengan mengkliknya. Satu lagi terisi ketika tampilan peta mengikuti penanda posisi pengguna. Statusnya juga dapat diubah dengan mengkliknya. Ketika satu ikon terisi, ikon lainnya menjadi berkabel dan sebaliknya. Kedua ikon menjadi berkabel ketika peta diseret.
Dengan mengklik perintah untuk membangunkan GPS dan memberikan posisi saat ini dikirim ke perangkat. Tampilan peta mulai mengikuti penanda perangkat, ikon ikuti perangkat menjadi terisi.
Obrolan dengan perangkat tidak simetris. Pesan obrolan teks dapat dikirim ke perangkat dengan tombol , sedangkan perangkat dapat mengirim pesan audio singkat dan, jika perangkat dilengkapi dengan kamera, foto. Perangkat juga dapat dipaksa untuk mengambil snapshot dengan tombol atau membuat rekaman audio 15 detik dengan tombol.
Dialog riwayat memungkinkan pemilihan interval waktu dalam dua mode, tanggal, dari satu tengah malam ke tengah malam berikutnya, dan umum, di mana awal dan akhir interval dapat dipilih oleh pengguna. Untuk beralih antar mode, klik label pemilih tanggal dan waktu.
Ketika interval waktu dipilih, riwayat obrolan, atau pedometer dan grafik pengisian daya baterai dapat ditampilkan. Jalur perangkat untuk interval waktu yang dipilih juga dapat dimasukkan ke dalam peta. Penggeser muncul di pojok kanan atas, digunakan untuk memindahkan penanda perangkat di sepanjang trek. Saat trek riwayat diperiksa, ikon dialog riwayat diubah menjadi . Untuk menghapus trek dan kembali ke posisi penanda online, klik trek tersebut.
Dialog kontak memungkinkan pengeditan administrator perangkat primer dan sekunder, nomor SOS, kontak perangkat, nomor yang diizinkan untuk melakukan panggilan ke perangkat, dan nomor panggilan cepat yang ditetapkan ke tombol perangkat. Untuk semua kategori kontak, terdapat jumlah slot tetap yang dapat diisi. Secara default, slot kosong disembunyikan, namun dapat ditampilkan dengan mengklik tombol di footer dialog.
Dialog anak-anak memungkinkan pengguna untuk menetapkan dan membatalkan penetapan perangkat anak, mengganti jempol, dan memperoleh beberapa informasi umum tentang perangkat dan status sebenarnya. Di kolom sebelah kiri ditempatkan jempol yang dapat diklik, mengkliknya akan menghasilkan dialog edit anak. Di kolom tengah ada pengenal perangkat. Jika perangkat sedang online, pengenalnya berwarna hijau, jika tidak maka berwarna merah. Di bawah pengidentifikasi perangkat terdapat waktu terakhir pesan diterima dari perangkat. Semua pengguna yang memiliki akses ke perangkat tercantum di kolom paling kanan dengan ponselnya.