سياسة الخصوصية
آخر تحديث: أغسطس 2026
1. ما هو OpenedMic
OpenedMic خدمة بث صوتي مباشر، مع دعم اختياري للفيديو، تعمل داخل المتصفح. يفتح المضيف غرفة، وينضم الحضور عبر رمز الغرفة، أو مسح رمز QR، أو رابط مباشر. لا يلزم تثبيت ولا تسجيل لاستخدام الخدمة.
تشمل الخدمة الصفحة العامّة الرئيسية على https://www.openedmic.com/، والتطبيق المستقل على https://www.openedmic.com/app. صُمِّم التطبيق للعمل داخل المتصفح، ويمكن تثبيته على الأجهزة المتوافقة كتطبيق على الشاشة الرئيسية - من دون المرور بأي متجر تطبيقات.
2. من دون تسجيل
لا تطلب منك OpenedMic إنشاء حساب، أو تقديم بريد إلكتروني، أو مشاركة أي بيانات شخصية لاستخدام الخدمة. ويمكنك إنشاء الغرف والانضمام إليها من دون تسجيل.
3. بيانات مستبعدة من التحليلات الذاتية وقياس الأخطاء
صُمّمت قاعدة تحليلات SQLite ذاتية الاستضافة وصادرات التحليلات وقياس أخطاء العميل المنظّم في OpenedMic بحيث لا تتضمن البيانات الآتية. لا يعني ذلك أن هذه البيانات لا تُعالَج مطلقًا. يُستخدم بعضها مؤقتًا لتشغيل غرفة مباشرة، أو يُخزَّن محليًا في المتصفح، أو تعالجه خدمات البنية التحتية، أو يُقدَّم عبر نموذج التواصل، كما هو موضح في الأقسام 4 و7 و10 و12.
- الأسماء، والبريد الإلكتروني، وأسماء العرض في الغرف المباشرة، والصور الرمزية
- رموز الغرف أو معرّفاتها أو تجزئاتها
- عناوين IP الخام أو المجزأة. تظل عناوين IP الخام تُعالَج مؤقتًا في ذاكرة الخادم لتحديد معدل الطلبات، وقد تعالجها أيضًا خدمات البنية التحتية وأطراف خارجية، كما هو موضح في القسمين 4 و12.
- معرّفات حساب أو مستخدم أو جلسة خاصة بـ OpenedMic. لا تنشئ الخدمة حسابات مستخدمين ولا تصدر معرّفات مستخدم دائمة لمستخدمي الخدمة المباشرة.
- بصمات الجهاز أو بصمات المتصفح
- محتوى رسائل المحادثة
- محتوى ردود الفعل
- كلمات مرور الغرف
- نصّ الروابط المنسوخة
- الصوت أو الفيديو أو أي محتوى وسائط أيًا كان نوعه
- رسائل الخطأ الحرّة من العميل، أو تتبّع الأكوام الخام، أو محتوى الطلبات
- معرّفات دائمة أو معرّفات جلسة تنشئها OpenedMic لسجلات تحليلاتها الذاتية
4. بيانات الجلسة
أثناء استخدام OpenedMic، قد تُعالَج المعلومات التالية مؤقتًا لتشغيل الخدمة وحمايتها. ويُتخلّص من كل عنصر وفق المدة الموضّحة أدناه، ولا يُكتب في قاعدة بيانات التحليلات ذاتية الاستضافة إلا إذا نصّ القسم 5 صراحةً على خلاف ذلك.
- رموز الغرف - رموز عشوائية من ستة أحرف، تبقى في ذاكرة الخادم فقط طوال فترة عمل الغرفة
- أسماء العرض والصور الرمزية: تُختار طوعًا، وتُرسل كبيانات للغرفة المباشرة، وتبقى في ذاكرة الخادم أثناء الجلسة النشطة، وتظهر للمشاركين الآخرين. وقد يُحفَظ اسم العرض أيضًا على جهازك كما في القسم 10.
- بيانات إشارات WebRTC: تُعالَج عروض SDP والردود ومرشّحات ICE لحظيًا لإنشاء اتصال صوت أو فيديو، ولا يحتفظ بها خادم تطبيق OpenedMic. وقد يعالج النظراء ومزوّدو الاتصال بيانات وصفية لعناوين الشبكة، كما في القسم 12.
- رسائل المحادثة - تُنقل لحظيًا داخل الغرفة، ولا تُخزَّن على الخادم
- ردود الفعل - تُنقل لحظيًا، ولا يُخزَّن محتواها، ولا تُدرَج في بيانات التحليلات
- تحديد معدل طلبات HTTP: يستخدم الخادم مؤقتًا عنوان الشبكة للطلب مفتاحًا في الذاكرة لأربع وسائل حماية: حتى 10 طلبات لبيانات TURN كل 60 ثانية؛ و10 تقارير أخطاء عميل كل 60 ثانية؛ و5 رسائل تواصل في الساعة؛ و60 حدثًا للتحليلات الذاتية كل 60 ثانية. يُطبّع العنوان قبل استخدامه، ولا تُكتب هذه المفاتيح في SQLite أو صادرات التحليلات. تُنظَّف الخرائط الأربع في الذاكرة كل خمس دقائق، كما تُزال الطوابع الزمنية المنتهية عندما يرسل العنوان نفسه طلبًا جديدًا. لخرائط أخطاء العميل والتواصل سعة محددة ونهائية. وإذا امتلأت إحداهما، يُرفض طلب العنوان الجديد حتى تُزال خانة منتهية الصلاحية.
- رمز إعادة اتصال المضيف - قيمة عشوائية قصيرة العمر تُخزَّن في
localStorageتحت مفتاح مرتبط بالغرفة (om_btoken_[room]) أثناء البث النشط، لدعم إعادة الاتصال بعد انقطاع قصير. مدّة صلاحيتها في العميل ~60 ثانية، ويقبل الخادم إعادة الاتصال فقط خلال نافذة سماح مدتها 15 ثانية. الرمز غير مرتبط بأي حساب أو ملف تعريف - قيمة عشوائية محصورة بغرفة واحدة فقط - حالة ميكروفون الضيف بعد الموافقة: تبقى آلة حالة خاصة بالغرفة ورمز طلب مبهم في ذاكرة الخادم طوال عمر الغرفة فقط. الرمز عشوائي ولا يُسجَّل، ويُحذف عند الموافقة أو الرفض أو الإلغاء أو انتهاء المهلة. ولا يُحفَظ معرّف للضيف.
4أ. ميكروفون الضيف بعد الموافقة - تفاصيل الخصوصية
عندما يستخدم مستمع ميزة ميكروفون الضيف بعد الموافقة، تنطبق الخصائص التالية المتعلّقة بالخصوصية:
- إذن الميكروفون مطلوب وصريح. بعد موافقة المُرسِل، يطلب متصفّح المستمع الإذن للوصول إلى الميكروفون. إذا رفض المستمع، يُنهى ميكروفون الضيف بنظافة ولا يُلتقَط أي صوت.
- يُنقَل صوت الضيف عبر WebRTC. يستخدم الاتصال من الضيف إلى المُرسِل مسارًا مباشرًا عند توفره، أو ترحيل TURN مشفّرًا عندما تفرض الشبكة ذلك. يمزج المُرسِل الصوت في البث الصادر للغرفة. لا تسجّل خوادم OpenedMic صوت الضيف ولا تنسخه أو تخزّنه.
- يحصل جهاز المُرسِل على إشارة مراقبة محلية فقط لسماع الضيف الموافق عليه عبر مخرج الصوت المحدد. لا تُنقَل هذه المراقبة كتدفق إضافي ولا تُسجَّل.
- لا يُحفَظ أي معرّف للضيف. اسم العرض والصورة الرمزية اللذان يظهران للمُرسِل في الطلب هما القيمتان نفسهما المغطّاتان في «بيانات الجلسة» أعلاه. لا تُحفَظ على الخادم ولا تُكتب في السجلّات أو التحليلات.
- تحليلات ميكروفون الضيف من نوع enum فقط. يسجّل الخادم أحداث عدّاد (مثل guest_mic_requested وguest_mic_started وguest_mic_ended) مع وضع البث وفئة سبب الانتهاء. لا يُكتَب أي معرّف سوكِت أو رمز غرفة أو اسم أو رمز مميّز أو SDP أو ICE أو عنوان IP أو معرّف جهاز.
5. تحليلات تشغيلية ذاتية الاستضافة
تُشغِّل OpenedMic نظام تحليلات على الخادم ومدعومًا بقاعدة SQLite محلية. يحفظ النظام حقولًا تقنية وتشغيلية ثابتة لفهم استخدام المنتج وصحّة الخدمة وتبنّي الميزات. وصُمّم لاستبعاد المعرّفات المباشرة، ومعرّفات العميل أو الجلسة المستعارة، وعناوين IP الخام، وسلاسل User-Agent الخام، ورموز الغرف وروابطها، والأسماء، ومحتوى التواصل، والنص الحر. وقد تبقى سجلات الأحداث التقنية بيانات شخصية وفق القانون المعمول به إذا أمكن ربطها بشخص يمكن التعرّف عليه، ولذلك لا تصفها هذه السياسة بأنها مجهولة قانونيًا.
ما تحتفظ به التحليلات:
- الطوابع الزمنية (UTC)
- نوع الحدث، بما في ذلك إنشاء غرفة؛ بدء البث أو انتهاؤه؛ تحميل صفحة من رابط وارد لغرفة؛ محاولة الانضمام؛ انضمام مستمع أو مغادرته؛ مراحل اتصال المستمع بعد 10 و60 ثانية؛ وصول أول مستمع؛ فشل الانضمام؛ واستخدام الميزات
- وضع البث أو الفئة المختارة
- غرفة خاصة أو عامّة
- عدد المستمعين وذروة المستمعين
- المدد التشغيلية بالثواني الصحيحة، بما في ذلك مدة البث والوقت المنقضي من إنشاء الغرفة حتى انضمام أول مستمع
- إعداد اللغة / locale
- نوع الجهاز العامّ المستنتَج من الطلب (mobile / tablet / desktop / unknown)
- عائلة المتصفح العامّة (chrome / safari / firefox / edge / unknown)
- عائلة نظام التشغيل العامّة (ios / android / windows / macos / linux / unknown)
- فئة مصدر الانضمام (رمز QR / رابط مباشر / رمز يدوي / غير معروف). وتشمل فئة الرابط المباشر أيضًا الوصول من رابط منسوخ أو من المشاركة الأصلية للنظام، لأن هذه الروابط لا تحمل وسمًا منفصلًا. ولا يُحفَظ رابط الغرفة أو رمزها.
- مؤشّرات استخدام الميزات (مثال: مشاركة الشاشة مفعّلة، التسجيل بدأ)
- رموز أخطاء مُهيكَلة من قائمة محدّدة مسبقًا (مثال: room_not_found, wrong_password, room_full, mic_permission_denied)
- إشارات التفاعل مع PWA (مثال: نافذة التثبيت عُرضت، قُبلت، أو تم اكتشاف وضع standalone)
- نسخة الخادم عند لحظة الحدث
لقياس مسار انضمام المستمعين، تحفظ OpenedMic سجلات أحداث تقنية عندما تُحمَّل صفحة من رابط وارد لغرفة يتضمن معلمة غرفة من ستة أحرف؛ أو تحدث محاولة انضمام؛ أو ينضم مستمع أو يغادر؛ أو يبقى اتصال المستمع نشطًا لمدة 10 أو 60 ثانية على الأقل؛ أو تستقبل الغرفة أول مستمع؛ أو تفشل محاولة الانضمام لسبب مسموح مثل room_full. وتجمع التقارير هذه السجلات في أعداد وملخصات زمنية. وقد يتضمن السجل، بحسب الحدث، طابعًا زمنيًا بتوقيت UTC، ونوع الحدث، وفئة عامة لمصدر الانضمام، وإعداد اللغة، ووضع البث، وحالة الغرفة الخاصة أو العامة، وعدد المستمعين، والوقت المنقضي بالثواني الصحيحة، وفئات عامة للجهاز والمتصفح ونظام التشغيل، وإصدار الخادم. ولا يتضمن رمز الغرفة أو رابطها، أو كلمة المرور، أو اسم العرض، أو معرّف المقبس أو المستمع، أو عنوان IP، أو سلسلة User-Agent الخام، أو محتوى الوسائط، أو أي معرّف دائم أو معرّف جلسة.
تُحفَظ التحليلات التشغيلية ذاتية الاستضافة في قاعدة بيانات SQLite المُعدّة. وعند بدء التطبيق، إذا تم تعيين مدة احتفاظ موجبة، تُحذف السجلات الأقدم من عدد الأيام المحدد. وإذا كانت قيمة الاحتفاظ صفرًا أو غير معيّنة، فلا يحدث حذف تلقائي بحسب العمر، وتبقى السجلات حتى تُحذف يدويًا أو تُزال قاعدة البيانات أو وحدة التخزين الأساسية.
لا تُحفظ سلاسل User-Agent الخامّ أبدًا. تُستنتج عائلات المتصفح ونظام التشغيل ونوع الجهاز لحظة وصول الطلب، ثم تُهمَل السلسلة الأصلية مباشرة.
جميع نقاط قراءة التحليلات والتقارير - بما فيها صفحة /stats، وواجهة /analytics/*، ونقاط التشغيل /logs و/ops و/ops/snapshot - محميّة بـ bearer token، ومُقيَّدة في الإنتاج على اسم مضيف تشغيلي منفصل. ولا تُتاح أيّ منها للعموم.
6. قياس منظّم لأخطاء العميل
يتضمّن التطبيق آلية خفيفة للإبلاغ عن أخطاء العميل. عند حدوث خطأ تقني في المتصفح، قد يرسل إلى الخادم قياسًا يقتصر على الحقول التقنية الثابتة الآتية:
- فئة نوع الخطأ من قائمة محدّدة مسبقًا (مثال: JS_ERROR, UNHANDLED_REJECTION)
- العائلة والمرحلة والواجهة من قوائم محدّدة (مثال: «permissions», «browser_api», «app»)
- رقم السطر والعمود
- عائلات المتصفح ونظام التشغيل ونوع الجهاز العامّة (مستنتجة من UA، مع إهمال UA الخامّ)
- اللغة / locale
لا تُرسَل ولا تُحفَظ رسائل الأخطاء الحرّة، أو تتبّع الأكوام الخامّ، أو محتوى الطلبات، أو مسارات ملفات المصدر، أو أي محتوى قد يحوي بيانات مستخدم أو معرّفات. يُزيل العميل هذه الحقول قبل الإرسال.
7. نموذج التواصل
عند إرسال نموذج التواصل على openedmic.com/contact.html، يصل الطلب إلى خادم OpenedMic للتحقّق من البنية. يتحقّق الخادم من الصيغة، ويسجّل فقط حدثًا تشغيليًا بلا محتوى (عدد عمليات الإرسال الناجحة)، ثم يُعيد ردًّا إلى متصفحك.
يُرسَل محتوى الرسالة - الاسم، والبريد، والموضوع، والنصّ - مرّة واحدة إلى نقطة خروج مُعدَّة مسبقًا (webhook)، ليتمكّن مشغّل الخدمة من استلامها والردّ عليها، ثم يُمحى. لا يُحتفَظ به في أي قاعدة بيانات، أو ملف سجلّات، أو نظام تحليلات لـ OpenedMic بعد هذا الإرسال. وتسري سياسة خصوصية مزوّد الـ webhook على ما يحتفظ به في نظامه.
إن كانت نقطة الخروج متوقّفة أو غير مهيّأة، لا يحتفظ الخادم أيضًا بمحتوى الرسالة؛ وتقدّم الواجهة بديلًا لمراسلة hello@openedmic.com مباشرةً من تطبيق البريد.
8. خدمات التحليل التابعة لأطراف خارجية
لا يحمّل الموقع العام أو التطبيق المباشر علامات تحليل تابعة لأطراف خارجية، ولا يرسل أحداث استخدام المنتج من متصفحك إلى مزود تحليل خارجي. تظل التحليلات التشغيلية ذاتية الاستضافة الموضحة في القسم 5 قيد الاستخدام.
9. تطبيق ويب قابل للتثبيت (PWA)
يمكن تثبيت OpenedMic كتطبيق على الشاشة الرئيسية على الأجهزة والمتصفحات المتوافقة. عند التثبيت:
- يُقدَّم قالب التطبيق من المنشأ نفسه - من دون المرور بأي متجر تطبيقات
- يُسجَّل Service Worker في متصفحك ليحمِّل الموارد الثابتة (الخطوط، والسكربتات) بموثوقية، ويعرض صفحة أساسية عند انقطاع الشبكة
- لا يخزّن الـ Service Worker صفحات HTML أو المحتوى الديناميكي. وظائف الجلسة المباشرة - إنشاء الغرفة، والانضمام، وتدفّق الصوت/الفيديو، والإشارات - تتطلّب اتصال إنترنت نشط ولا تعمل دون اتصال
- إذا رفضت نافذة التثبيت، تُحفَظ علامة في
localStorageلمنع إعادة عرضها - إذا فتحت التطبيق بوضع standalone بعد التثبيت، فقد تسجّل التحليلات الذاتية حدثًا تقنيًا لاستخدام التطبيق المثبّت
10. ملفات تعريف الارتباط وتخزين المتصفح
لا ينشئ الموقع العام أو التطبيق المباشر ملفات ارتباط للتحليلات أو الإعلانات. ويستخدم تخزينًا وظيفيًا في المتصفح على جهازك:
- اسم العرض (
localStorage:openedmic-username): يتذكر الاسم المدخل على جهازك بين الزيارات. عند دخول غرفة، يُرسل كبيان جلسة وقد يظهر للمشاركين. يبقى حتى تغييره أو مسح بيانات الموقع. - لغة التطبيق (
localStorage:openedmic-app-lang) - تحفظ اللغة المختارة داخل التطبيق - لغة الصفحة الرئيسية (
localStorage:openedmic-lang) - تحفظ اللغة المختارة على الصفحة الرئيسية - إعدادات الوصول (
localStorage:openedmic-a11y) - تحفظ تفضيلات التباين، والحركة، والخط إن عُدِّلت - رفض نافذة التثبيت (
localStorage:pwa-dismissed) - تُضبط إن رفضت عرض التثبيت - رفض نافذة التثبيت على iOS (
localStorage:pwa-ios-dismissed) - رمز إعادة اتصال المضيف (
localStorage:om_btoken_[room]) - يبقى فقط أثناء البث النشط بمدّة صلاحية ~60 ثانية
تستعيد قيم localStorage الوظيفية التفضيلات، وتمنع تكرار تنبيهات التثبيت، وتعيد استخدام اسم العرض، أو تدعم استمرار الجلسة النشطة. يؤدي مسح بيانات الموقع إلى إزالة هذه القيم. تنشئ لوحة العمليات المحمية على ops.openedmic.com ملف ارتباط ضروريًا واحدًا للجلسة باسم openedmic_dash_sid وموسومًا بـ HttpOnly، وذلك فقط بعد تسجيل دخول مشغّل مصرح له. يستخدم الملف Secure وSameSite=Strict، وتنتهي صلاحيته المتجددة بعد 30 دقيقة، ولا يُستخدم للزوار العامين أو التحليلات أو الإعلانات.
11. التسجيل المحلي
إن استخدمت وظيفة التسجيل المحلي خلال البث، يُلتقَط الصوت و/أو الفيديو داخل المتصفح عبر MediaRecorder API، ويُحفَظ على جهازك بصيغة WebM. لا يُرسَل شيء إلى أيّ خادم. ولا تستطيع OpenedMic الوصول إلى تسجيلاتك.
12. البنية التحتية والخدمات الخارجية
- Render.com: استضافة خادم Node.js. قد تعالج المنصة IP وتنتج سجلات وصول قياسية وفق سياستها.
- Cloudflare: خدمات DNS وحماية الشبكة عند إعدادها. قد تستلم Cloudflare بيانات اتصال وصفية، بما فيها IP، عند اتصال المتصفح بنطاق OpenedMic يمر عبر وكيلها.
- Google Fonts: تطلب صفحات المعلومات العامة أوراق الأنماط والخطوط من نطاقات Google، فتستلم Google بيانات الاتصال الوصفية، بما فيها IP ورؤوس طلب المتصفح. يستخدم تطبيق الغرفة المباشرة في
/appخطوطًا مستضافة محليًا ولا يتصل بخدمة Google Fonts. - Metered.live: ترحيل TURN عند تعذّر WebRTC المباشر. يعالج بيانات الاتصال وقد يرحّل وسائط مشفّرة لحظيًا.
- Google STUN: قد يساعد
stun.l.google.comفي إنشاء WebRTC، بما في ذلك كخيار احتياطي عند غياب بيانات TURN. - مزوّد تسليم رسائل التواصل: إذا كان مُعدًّا، يستلم عبر webhook الاسم والبريد والموضوع والرسالة والوقت وصفحة المصدر المذكورة في القسم 7.
أي اتصال من المتصفح بمزوّد استضافة أو خطوط أو CDN أو STUN أو TURN يكشف له بالضرورة بيانات شبكة وصفية مثل عنوان IP. وقد يعالج نظراء WebRTC وخدمات الاكتشاف أو الترحيل أيضًا عناوين الشبكة اللازمة لإنشاء الاتصال. وتسري شروط وسياسات وممارسات الاحتفاظ الخاصة بكل مزوّد.
13. لا إعلانات
لا تعرض OpenedMic إعلانات مدفوعة ولا تستخدم تحليلاتها التشغيلية ذاتية الاستضافة لإنشاء ملفات إعلانية.
14. القاصرون
OpenedMic مخصّص لمن بلغوا 18 عامًا فأكثر وفق شروط الاستخدام. ولا تطلب OpenedMic عن علم بيانات شخصية من الأطفال. وقد تحدث المعالجة التقنية ومعالجة الشبكة والتحليلات التشغيلية ذاتية الاستضافة الموضحة هنا عندما يزور شخص الموقع أو يستخدم الخدمة. إذا اعتقدت أن طفلًا قدّم بيانات عبر النموذج أو جلسة مباشرة، فتواصل مع OpenedMic للمراجعة.
15. التغييرات على هذه السياسة
قد تُحدَّث هذه السياسة مع تطوّر الخدمة. ويعكس التاريخ أعلى الصفحة آخر تحديث. والاستخدام المستمرّ للخدمة بعد التحديث يعني القبول بالنسخة الجديدة.
16. الاتصال
لأي استفسار حول هذه السياسة، استخدم صفحة الاتصال.