
ssh-chat بلغة C الحديثة

برنامج BBS عام
بدأ SSH-Chatter كإعادة تنفيذ بلغة C لخادم ssh-chat المكتوب بـ Go. إنه يعكس/يوسع السلوك الأصلي مع استخدام أنماط C الحديثة ونواة صغيرة قابلة للاختبار. يستمع الخادم إلى اتصالات SSH/TELNET ويضع كل مستخدم مصادق عليه في غرفة دردشة مشتركة تعرض نفس سطح الأوامر مثل التنفيذ المرجعي في Go.
هل تعلم لماذا يستغرق فهم C وقتًا طويلاً؟ لأنه غريزة.
/rss list، /rss read <tag>، بالإضافة إلى /rss add <url> <tag> و /rss del <tag> (للمشغلين فقط) حتى تتمكن الغرفة من تصفح العناوين معًا./delete-msg لتنظيف تاريخ الدردشة المستهدف./bbs يفتح نظام لوحة إعلانات قديم غامر مع علامات، تعليقات، bumping، ومحرر متعدد الأسطر.
bumped (النشاط الأخير)، hot (الرائجة حسب النقاط والتعليقات)، top (أعلى نتيجة صافية للتصويتات الإيجابية)، أو new (تاريخ الإنشاء) باستخدام list [hot|top|new|bumped|all].search <query>.▲ 12 💬 5) مباشرة في القوائم./bbs داخل وضع BBS./asciiart المباشر بحد 640 سطرًا، وفترة تبريد لمدة عشر دقائق لكل عنوان IP، وإخراج متعدد الأسطر، واختصارات لوحة المفاتيح للإلغاء بـ Ctrl+A والإرسال بـ Ctrl+S أو >/__ARTWORK_END> الافتراضي المدرك للغة المنطقة./birthday، و /grant <ip> حتى يتمكن مشغلو الشبكة المحلية من تفويض الصلاحيات حسب العنوان، و /revoke <ip> حتى يتمكن كبار مسؤولي الشبكة المحلية من استعادتها./ban التي تقبل عناوين IP الخام إلى جانب أسماء المستخدمين./weather <city> لتوقعات عالمية سريعة.

| المسار | الوصف |
|---|---|
src/main.c | تحليل سطر الأوامر وبدء التشغيل (عنوان الربط، المنفذ، رسالة اليوم MOTD، دليل مفتاح المضيف). |
src/host_aggregate.c, include/ssh_chatter/host.h | تطبيق مضيف الدردشة – دورة حياة الجلسة، معالجة رسالة اليوم (MOTD)، وخطافات لمنطق بث الرسائل في المستقبل. |
src/host | أنظمة مضيف فرعية معيارية يتم تجميعها في وحدة ترجمة واحدة عبر src/host_aggregate.c. |
include/ssh_chatter | رؤوس مشتركة للخفي (daemon)، أدوات الإجهاد، وخلفية الترجمة. |
include/ssh_chatter/contexts | تعريفات لـ session_ctx_t والهياكل ذات الصلة التي تغلف حالة كل اتصال. |
data/banner/banner | لافتة ترحيبية نموذجية يمكن الإشارة إليها باستخدام CHATTER_WELCOME_BANNER. |
scripts/install_chatter_service.sh | مثبت ملائم يقوم ببناء الثنائي، تثبيته تحت /usr/local/bin، وربط وحدة systemd (chatter.service). |
scripts/install_dependencies.sh | مثبت حزم أدنى للمتطلبات الأساسية للبناء على أنظمة Debian/Ubuntu. |

mainيتفرع فرع work بانتظام عن التطوير الرئيسي (upstream) حتى تتمكن الميزات الأكبر من التطور دون مقاطعة حركة المرور الإنتاجية. عندما يحين وقت المزامنة مع main، اسحب أحدث شجرة وادمجها محليًا قبل فتح طلب سحب (pull request):```bash
git fetch origin main
git checkout work
git merge --no-ff origin/main
حل أي تعارضات في مكانها (إجراءات المساعدة `src/host_aggregate.c` تعكس بالفعل التخطيط المستخدم في `main`، لذا عادة ما تكون عمليات الدمج مباشرة) وقم بتشغيل `make` لتأكيد نجاح البناء قبل دفع النتيجة.
## خطافات الأتمتة
- يعرض `host_snapshot_last_captcha` أحدث كابتشا تم إنشاؤها مع الطلب والإجابة بالإضافة إلى طابع زمني لتمكين العملاء الخارجيين من تمرير التحديات نيابة عن الأتمتة غير المراقبة.
## تعزيز الأمان
- يقوم `scripts/safe_permission.sh` بتشديد الملكية والصلاحيات على ملفات بيانات وقت التشغيل (حالة BBS، حالة التصويت، لقطات التبريد، وحالة الدردشة العامة). قم بتشغيله بعد النشر لحصر دليل البيانات في `ssh-chatter` وضمان تعيين كل ملف إلى `0600`. يمكن تجاوز الأهداف بتمرير مسارات صريحة أو بتصدير متغيرات البيئة `STATE_ROOT` أو `CHATTER_*_FILE` قبل التنفيذ.
- يقوم مراقب BBS خلفي بتغذية المنشورات والتعليقات بشكل دوري عبر خط أنابيب الإشراف بالذكاء الاصطناعي (Gemini أساسي مع Ollama احتياطي). يتم إزالة المنشورات المميزة تلقائيًا ويتم بث إشعار إلى الغرفة.
- تمر رسائل الدردشة وفن ASCII ومنشورات / تعليقات BBS عبر خط أنابيب الإشراف بالذكاء الاصطناعي. قم بتمكينه باستخدام `CHATTER_SECURITY_AI=on` (عين `GEMINI_API_KEY` لـ Gemini؛ يعود الخفي تلقائيًا إلى نقطة نهاية Ollama المحلية عند `http://127.0.0.1:11434`). قم بتعطيل كل شيء باستخدام `CHATTER_SECURITY_FILTER=off`. إذا فشل كل مزود، يقوم الفلتر بتعطيل نفسه تلقائيًا للحفاظ على تدفق المحادثات بدلاً من إسقاط المحتوى بصمت.
- تم تثبيت نقل SSH على تبادلات مفاتيح وتشفير و MACs حديثة، ويتم تغليف كل حمولة جسر في طبقة ثلاثية من AES-256-GCM بحيث ترى المرحلات نصًا مشفرًا فقط.
- يتم الآن تتبع الإرسالات المشبوهة التي تؤدي إلى تشغيل الفلتر متعدد الطبقات لكل IP؛ تؤدي الضربات المتكررة إلى طرد وحظر تلقائيين عند التمكين، بينما يسمح كاشف إعادة الاتصال السريع بنوافذ استرداد أطول حتى تتمكن الجلسات الشبكية غير المستقرة من الانضمام مرة أخرى دون عقاب. إدخالات الحظر التلقائي **مغلقة افتراضيًا**؛ عيّن `CHATTER_AUTO_BAN=on` (أو `true`/`1`) لتمكينها، أو اترك المتغير غير معين للإبقاء على التحذيرات والتقييد دون كتابة إدخالات حظر تلقائي.
- يمكن للمشغلين تحديد نقاط الدخول الموثوقة (مخارج VPN، عكس الوكلاء، المضيف المحلي) باستخدام `CHATTER_PROTECTED_IPS` (مفصولة بفواصل، افتراضيًا `127.0.0.1,::1,192.168.0.1`) بحيث لا تؤدي عمليات الحظر الطارئة إلى قفل الخفي خارج مستوى التحكم الخاص به.
## تخزين الملفات ونقلها
- توجد جميع ملفات المستخدم المُدارة الآن تحت `/etc/ssh-chatter/user-files` (يمكن تجاوزها بـ `CHATTER_FILESTORE_PATH`، احتياطي قديم: `CHATTER_FILE_STORAGE_ROOT`). يقوم الخفي بإنشاء الدليل إذا لزم الأمر ويبقي التحميلات محصورة فيه.
- يستخدم عملاء SSH الـ `scp` القياسي دون أي غلاف مخصص. تعامل مع `/name.ext` كجذر شجرة التخزين: يكتب `scp my.zip user@host:/demos/my.zip` إلى `/etc/ssh-chatter/user-files/demos/my.zip` بينما يقوم `scp user@host:/readme.txt ./` بتنزيل `/etc/ssh-chatter/user-files/readme.txt`.
- يستخدم عملاء TELNET أوامر `/filestore` الجديدة. يسرد `/filestore` الملفات المتاحة، ويبدأ `/filestore-upload` جلسة `rz`، ويبدأ `/filestore-download <name>` جلسة `sz`. قم بتثبيت `lrzsz` (أو أي حزمة توفر `rz`/`sz`) على الخادم حتى يتمكن الخلفية ZMODEM من تشغيل هذه المساعدات.
- يقبل `/filestore-upload` وجهة اختيارية (على سبيل المثال `/filestore-upload /kitten/meow.png`). يقوم SSH-Chatter بإنشاء الدليل `/kitten` تلقائيًا ويضع الملف المرفوع هناك، مما يعكس كيفية استخدام SCP للمسارات مثل `user@host:/kitten/meow.png`.
- يمكن لكلا النقلين المزج والمطابقة: SSH لنقل النصوص البرمجية غير المراقب، TELNET لعملاء BBS الحنينين بأدوات ZMODEM المدمجة.
## مرحل مورس
يدعم SSH-Chatter مرحل راديو الهواة.
يعرض هذا إشارات مورس العالمية.
`/morse on` لرؤيتها، `/morse-reply` للإرسال.
### تفاصيل البروتوكول