يتضمن المشروع كلا من جانب الخادم وتطبيق الويب المصمم للتواصل مع أجهزة الساعات الذكية للأطفال المزودة بجهاز تعقب GPS من نماذج مختلفة والمعروفة تحت علامات تجارية مختلفة. على سبيل المثال، يمكن أن تعمل مع 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 حارس آمن، DS18، T58، T100، I8، G10، G100، D99، D100، D100S، وغيرها الكثير. بشكل تقريبي، فهو يفعل نفس ما تفعله تطبيقات مثل SeTracker وFindMyKids وما إلى ذلك. والفرق الرئيسي هو أن جميع البيانات الشخصية، مثل جهات الاتصال والمناصب وسجل الاتصالات وما إلى ذلك، تصبح خاصة حقًا، حيث يتم تخزينها على أجهزة يتحكم فيها المستخدم.
هناك مشكلة أخرى تمت معالجتها وهي نموذج الأمان لتطبيقات الاتصال والتتبع الخاصة بالساعات الذكية للأطفال. افتراضيًا، يمكن لأي شخص التحكم في الجهاز بشرط أن يكون معرف الجهاز معروفًا، دون أي تأكيد إضافي على كونه مالك الجهاز. ويمكن الحصول على المعرف بسهولة عن طريق إرسال رسالة نصية إلى الجهاز إذا كان رقم الهاتف المحمول الخاص بالجهاز معروفًا. هناك كلمة مرور بالطبع، لكن جميع الأجهزة لها نفس كلمة مرور المصنع ولا توجد إشعارات مزعجة تطلب تغييرها، وبالتالي لا أحد يفعل ذلك.
في هذا التطبيق تم تنفيذ السيناريوهات الأمنية التالية:
وأخيرًا وليس آخرًا، فهو مجاني وإعلانات :).
بناء المشروع بسيط مثل
docker compose -f docker-builder.yml run --rm builder
أثناء البناء، يتم إنشاء شهادة SSL المطلوبة لاتصالات https
. من الممكن تحديد مجال و/أو عنوان IP باستخدام متغيرات البيئة DOMAIN
و IP
docker compose -f docker-builder.yml run --rm -e DOMAIN=example.com -e IP=123.45.67.89 builder
يمكن دعم التطبيق بقواعد بيانات مختلفة حسب اختيارك. السيناريو الأكثر خفة هو استخدام قاعدة بيانات H2 المضمنة. في هذه الحالة، يمكن بدء التطبيق بالأمر
docker compose --profile h2 up -d
من الممكن أيضًا استخدام PostreSQL، إما في حاوية أو بشكل مستقل. في الحالة السابقة يمكنك بدء التطبيق باستخدام الأمر
docker compose --profile pg up -d
في الحالة الأخيرة، يجب عليك إكمال الملف db.env
باستخدام عنوان URL لقاعدة البيانات وبيانات الاعتماد ثم تشغيل الأمر
docker compose --profile pg_ext up -d
إذا كان إصدار الإنشاء الخاص بك لا يدعم ملفات التعريف، فيمكنك استخدام ملفات الإنشاء المخصصة لكل سيناريو
docker compose -f h2.yml up -d
docker compose -f pg.yml up -d
docker compose -f pg_ext.yml up -d
في الحالة الأخيرة، لا تزال بحاجة إلى إكمال ملف db.env
باستخدام عنوان URL لقاعدة البيانات وبيانات الاعتماد.
من الممكن أيضًا تخطي مرحلة البناء المملة وتشغيل الملف الثنائي المرفق للإصدار (من المفترض تثبيت Java 8 أو أعلى)
java -jar kidtracker.jar
تم تكوين الملف الثنائي لاستخدام قاعدة بيانات H2 المضمنة. يتم إنشاء ثلاثة مجلدات عند بدء التشغيل الأول في دليل العمل:
data
على سجلات قاعدة بيانات لمواقع الأجهزة وأرقام الهواتف وما إلى ذلك، وهذا التاريخ سري، لذا احتفظ به آمنًا!logs
وصفية بما فيه الكفاية، وتحتوي على سجلات، سواء للتطبيق نفسه أو للأجهزة عندما يكون تصحيح أخطاء الجهاز نشطًا،media
يستخدم هذا المجلد لتحويل الصوت الوارد بتنسيق amr إلى mp3 واجهة مستخدم الويب متاحة على https://<hostname>:8003
. لتسجيل الدخول، استخدم بيانات الاعتماد الافتراضية admin
/ password
.
لتعيين جهاز لمستخدم مسجل في التطبيق، يجب أن يكون التطبيق متاحًا من الشبكات العامة، أي يجب أن يكون له عنوان IP عام، وربما اسم مجال مرتبط. افتراضيًا، يستمع التطبيق إلى الأجهزة الموجودة على المنفذ 8001
، لنفترض أن نفس المنفذ معين للشبكة العامة. ثم الرسالة النصية التالية المرسلة إلى الجهاز تجعله يبدأ بالاتصال بالتطبيق:
pw,123456,ip,<public IP address or domain>,8001#
هنا 123456
هي كلمة المرور الافتراضية، والتي على الأرجح تم ضبطها على الجهاز. كلمات المرور الافتراضية الأخرى المعروفة هي 523681
و 54321
و 654321
. ومع ذلك، إذا تم تغيير كلمة المرور، فيجب استخدام كلمة المرور الجديدة بدلاً من كلمة المرور الافتراضية.
يوصى بشدة بتغيير كلمة المرور الافتراضية!
ثم انقر فوق الزر الموجود على الجانب الأيمن من شريط التنقل، ثم انقر فوق الزر الموجود في التذييل. معرف الجهاز مطلوب لتعيين الجهاز. بمجرد توصيل الجهاز بالتطبيق، يتم إرسال رمز التأكيد المكون من أربعة أرقام إلى الجهاز. للتأكد من ملكية المستخدم للجهاز، يجب إدخال هذا الرمز المميز في النموذج المنبثق خلال الدقائق الخمس التالية، بعد انتهاء صلاحية الرمز المميز.
يمكن لأي مستخدم مسجل في التطبيق أن يكون مستخدمًا عاديًا أو مسؤولًا. يمكن للمسؤولين تسجيل مستخدمين آخرين، في حين لا يمكن للمستخدمين العاديين، وهذا هو الفرق الوحيد. يمكن للمسؤولين إنشاء مستخدمين عاديين ومسؤولين آخرين. بالنسبة للمستخدم الحالي، لا يمكن منح امتياز المسؤول أو إبطاله، والطريقة الوحيدة لتعديله هي إزالة حساب المستخدم وإعادة إنشائه من جديد.
ولأسباب أمنية، لا يمكن تعديل رقم الهاتف المحمول للمستخدم أيضًا. مرة أخرى، لتغييره، يجب إزالة حساب المستخدم وإعادة إنشائه. لإزالة حساب المستخدم، يجب إلغاء تعيين كافة الأجهزة منه.
عند التشغيل لأول مرة، يكون هناك حساب مستخدم افتراضي يتمتع بامتياز المسؤول مع تسجيل الدخول admin
وكلمة المرور password
المرور. يوصى إما بإزالة هذا الحساب عند إنشاء حسابات مستخدمين أخرى، أو تغيير كلمة المرور الافتراضية. إذا كان هناك حساب واحد فقط يتمتع بامتياز المسؤول، فلا يمكن إزالته. لا يحتوي حساب المسؤول الافتراضي على رقم هاتف محمول صالح، ولا يمكن تخصيص أي جهاز له.
تتواصل الأجهزة مع التطبيق عن طريق الرسائل. هناك عدة أنواع من الرسائل، بعضها يمكن أن يوفر معلومات حول موقع الجهاز والتنبيهات، والبعض الآخر يحتوي على شحن البطارية الفعلي وقيمة عداد الخطى.
كما يمكن أن يرسل التطبيق بعض الرسائل إلى الجهاز ليقوم بعدة إجراءات أو يعدل إعداداته. للتأكد من أن الجهاز قد تلقى الرسالة، فإنه يرسل رسالة تأكيد مرة أخرى إلى التطبيق. أثناء انتظار رسالة التأكيد، تظل واجهة المستخدم محظورة. إذا لم يتم تلقي أي تأكيد خلال 10 ثوانٍ (يمكن تهيئته)، فسيتم اعتبار الرسالة الأولية غير مؤكدة.
تشترك علامات الموضع لجميع الأجهزة المخصصة مع علامة موضع المستخدم في نفس الخريطة. تحتوي علامات الجهاز على معلومات حول وقت آخر موقع معروف، وشحن البطارية، وقيمة عداد الخطى، وفي النهاية تنبيه إقلاع الجهاز، وتنبيه انخفاض البطارية، وتنبيه فقدان الاتصال، وتنبيه الموقع القديم. يعتبر الجهاز مفقودًا إذا تم استلام آخر رسالة من الجهاز منذ أكثر من 15 دقيقة.
يمكن للجهاز توفير موقعه الفعلي، بناءً على بيانات GPS المباشرة، عندما تكون متاحة، بالإضافة إلى آخر موقع تم اكتشافه، عندما لا تتوفر مراقبة GPS المباشرة، غالبًا داخل المباني أو في ظل وجود ضوضاء كهرومغناطيسية، في مثل هذه الحالات بيانات GPS
يعتبر عفا عليه الزمن. عندما تكون بيانات الموقع المستلمة قديمة، يتم عرض تنبيه البيانات القديمة.
لاحظ أن تنبيه انخفاض البطارية وقيمة الشحن الفعلية تأتي في أنواع مختلفة من الرسائل. تأتي الرسائل ذات الرسوم الفعلية بشكل متكرر (كل 5 دقائق) أكثر من الرسائل ذات المواقع والتنبيهات، والتي لا يمكن إرسالها لمدة ساعات. لذلك، ليس من غير المألوف أن تُظهر العلامة نسبة شحن البطارية بنسبة 100% مع تنبيه انخفاض البطارية. في هذه الحالة تكون الأولوية للقيمة الرقمية لشحن البطارية ويمكن تجاهل تنبيه انخفاض البطارية.
يرسل الجهاز رسائل إنذار عند الضغط على زر SOS. تصبح علامة الجهاز حمراء في هذه الحالة، ويتم تشغيل صوت صفارة الإنذار حتى يتم النقر فوق العلامة. يؤدي النقر على علامة التحديد إلى تحريكها في الأعلى وتبديل اختيار الطفل. عندما يتم تبديل خيار اختيار الطفل، تظهر علامة الجهاز المحدد في الأعلى.
يمكن للجهاز إرسال رسائل صوتية ولقطات (إذا كانت مزودة بالكاميرا) إلى التطبيق. عند وصول رسالة جديدة من هذا النوع، تصبح علامة الجهاز زرقاء، ويتم تشغيل صوت رنين الهاتف القديم حتى يتم النقر فوق العلامة. كما هو الحال في حالة التنبيه، يؤدي النقر فوق العلامة إلى تحريكها في الأعلى وتبديل اختيار الطفل.
يمكن النقر على الطوابع الزمنية في أي مكان في واجهة المستخدم، ويمكن من خلال النقر التبديل بين التاريخ المطلق وقيمة الوقت والفاصل الزمني من الآن.
يوجد رمزان لهما حالتان، مملوءتان وسلكيتان. يصبح الأول ممتلئًا عندما يتبع عرض الخريطة علامة الجهاز المحددة. يمكن تبديل حالتها من خلال النقر عليها. يتم ملء واحد آخر عندما يتبع عرض الخريطة علامة موضع المستخدم. يمكن أيضًا تبديل حالتها من خلال النقر عليها. عندما يمتلئ أحد الأيقونة يصبح الآخر سلكيًا والعكس صحيح. يصبح كلا الرمزين متصلين عند سحب الخريطة.
من خلال النقر على أمر تنبيه نظام تحديد المواقع العالمي (GPS) وتوفير الموقع الحالي يتم إرساله إلى الجهاز. يبدأ عرض الخريطة بمتابعة علامة الجهاز، ويصبح رمز متابعة الجهاز ممتلئًا.
الدردشة مع الجهاز غير متماثلة. يمكن إرسال رسائل الدردشة النصية إلى الجهاز باستخدام الزر، بينما يمكن للجهاز إرسال رسائل صوتية قصيرة ولقطات إذا كان الجهاز مزودًا بكاميرا. يمكن أيضًا إجبار الجهاز على التقاط لقطة باستخدام الزر أو عمل تسجيل صوتي مدته 15 ثانية باستخدام الزر.
يسمح مربع حوار السجل باختيار الفاصل الزمني في وضعين، التاريخ، من منتصف الليل إلى الوضع التالي، والوضع العام، حيث يمكن للمستخدم اختيار بداية ونهاية الفاصل الزمني. للتبديل بين الأوضاع، انقر فوق تسميات منتقي التاريخ والوقت.
عند اختيار الفاصل الزمني، يمكن عرض سجل الدردشة أو الرسم البياني لعداد الخطى وشحن البطارية. يمكن أيضًا وضع مسار الجهاز للفاصل الزمني المحدد على الخريطة. يظهر شريط التمرير في الزاوية العلوية اليمنى، ويتم استخدامه لتحريك علامة الجهاز على طول المسار. عند فحص مسار السجل، يتغير رمز حوار السجل إلى . لإزالة المسار والعودة إلى مواضع العلامات عبر الإنترنت، انقر عليه.
يسمح مربع حوار جهات الاتصال بتحرير مسؤول الجهاز الأساسي والثانوي وأرقام SOS وجهات اتصال الجهاز والأرقام المسموح لها بإجراء مكالمات إلى الجهاز وأرقام الاتصال السريع المخصصة لأزرار الجهاز. بالنسبة لجميع فئات جهات الاتصال، يوجد عدد محدد من الفتحات التي يمكن ملؤها. بشكل افتراضي، تكون الفتحات الفارغة مخفية، ولكن يمكن إظهارها من خلال النقر على الزر الموجود في تذييل مربع الحوار.
يتيح مربع حوار الأطفال للمستخدم تعيين أجهزة الأطفال وإلغاء تعيينها، وتغيير الإبهام، والحصول على بعض المعلومات العامة حول الجهاز وحالته الفعلية. في العمود الموجود على الجانب الأيسر، يتم وضع إبهام قابل للنقر عليه، ويؤدي النقر عليه إلى ظهور مربع حوار تعديل الطفل. يوجد في العمود الأوسط معرف الجهاز. إذا كان الجهاز متصلاً بالإنترنت، فسيكون معرفه باللون الأخضر، وإلا فسيكون باللون الأحمر. يوجد أسفل معرف الجهاز وقت استلام آخر رسالة من الجهاز. يتم إدراج جميع المستخدمين الذين لديهم حق الوصول إلى الجهاز في العمود الموجود في أقصى اليمين مع هواتفهم المحمولة.