
आधुनिक c में ssh-chat

सामान्य बीबीएस सॉफ्टवेयर
SSH-Chatter, Go ssh-chat सर्वर के C पुनर्कार्यान्वयन से शुरू हुआ है। यह मूल व्यवहार को दर्पण/विस्तारित करता है, जबकि आधुनिक C पैटर्न और एक छोटा, परीक्षण योग्य कोर का उपयोग करता है। सर्वर SSH/TELNET कनेक्शन सुनता है और प्रत्येक प्रमाणित उपयोगकर्ता को एक साझा चैट कक्ष में रखता है जो Go संदर्भ कार्यान्वयन के समान कमांड सतह प्रस्तुत करता है।
क्या आप जानते हैं कि C को समझने में इतना समय क्यों लगता है? क्योंकि यह एक वृत्ति है।
/rss list, /rss read <tag>, साथ ही /rss add <url> <tag> और /rss del <tag> (केवल संचालकों के लिए) से सुलभ है, ताकि कक्ष एक साथ शीर्षक ब्राउज़ कर सके।/delete-msg।/bbs कमांड एक इमर्सिव रेट्रो बुलेटिन बोर्ड सिस्टम को अनलॉक करता है जिसमें टैग, टिप्पणियाँ, बम्पिंग और एक मल्टी-लाइन कम्पोज़र है।
bumped (हालिया गतिविधि), hot (स्कोर और टिप्पणियों द्वारा ट्रेंडिंग), top (उच्चतम शुद्ध अपवोट स्कोर), या new (निर्माण तिथि) द्वारा क्रमबद्ध देखने के लिए list [hot|top|new|bumped|all] का उपयोग करें।search <query> के साथ पोस्ट शीर्षकों, मुख्य भागों, लेखकों या टैग को केस-असंवेदनशील रूप से तुरंत खोजें।▲ 12 💬 5) में शुद्ध अपवोट स्कोर और टिप्पणी गणना प्रदर्शित करता है।/bbs उपसर्ग की आवश्यकता के बिना स्वचालित रूप से कमांड रूट करता है।/asciiart लाइव कम्पोज़र जिसमें 640-लाइन सीमा, प्रति-आईपी दस मिनट का कूलडाउन, मल्टी-लाइन आउटपुट, और Ctrl+A से रद्द करने और Ctrl+S या स्थानीय जागरूक >/__ARTWORK_END> डिफ़ॉल्ट के साथ सबमिट करने के लिए कीबोर्ड शॉर्टकट।/birthday जन्मदिन पंजीकृत करने के लिए, /grant <ip> ताकि LAN संचालक पते द्वारा विशेषाधिकार प्रदान कर सकें, और /revoke <ip> ताकि शीर्ष LAN प्रशासक उन्हें वापस ले सकें।/ban अपग्रेड जो उपयोगकर्ता नामों के साथ-साथ कच्चे IP पतों को भी स्वीकार करते हैं।/weather <city> त्वरित वैश्विक पूर्वानुमानों के लिए।

कोडबेस जानबूझकर कॉम्पैक्ट है ताकि नए योगदानकर्ता इसे जल्दी से नेविगेट कर सकें:

main के साथ अद्यतन रहनाwork शाखा नियमित रूप से अपस्ट्रीम विकास से अलग होती है ताकि बड़ी सुविधाएँ उत्पादन ट्रैफ़िक को बाधित किए बिना विकसित हो सकें। जब main के साथ सिंक्रोनाइज़ करने का समय हो, तो नवीनतम ट्री खींचें और इसे स्थानीय रूप से मर्ज करें, फिर एक पुल अनुरोध खोलें:```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 वॉचडॉग समय-समय पर पोस्ट और टिप्पणियों को AI मॉडरेशन पाइपलाइन (Gemini प्राथमिक, Ollama बैकअप) के माध्यम से फीड करता है। चिह्नित पोस्ट स्वचालित रूप से हटा दी जाती हैं और कमरे में एक सूचना प्रसारित की जाती है।
- चैट संदेश, ASCII कला, और BBS पोस्ट/टिप्पणियाँ AI मॉडरेशन पाइपलाइन से गुज़रती हैं। इसे `CHATTER_SECURITY_AI=on` से सक्षम करें (Gemini के लिए `GEMINI_API_KEY` सेट करें; डेमॉन स्वचालित रूप से `http://127.0.0.1:11434` पर स्थानीय Ollama एंडपॉइंट पर वापस आ जाता है)। `CHATTER_SECURITY_FILTER=off` से सब कुछ अक्षम करें। यदि सभी प्रदाता विफल हो जाते हैं, तो फ़िल्टर स्वचालित रूप से स्वयं को अक्षम कर देता है ताकि बातचीत जारी रखी जा सके, बजाय चुपचाप सामग्री को गिराने के।
- SSH ट्रांसपोर्ट आधुनिक कुंजी विनिमय, सिफर और MAC पर पिन किया गया है, और प्रत्येक ब्रिज पेलोड को ट्रिपल AES-256-GCM प्याज में लपेटा गया है ताकि रिले केवल सिफरटेक्स्ट देख सकें।
- स्तरित फ़िल्टर को ट्रिगर करने वाले संदिग्ध सबमिशन अब प्रति-IP ट्रैक किए जाते हैं; बार-बार हिट होने पर सक्षम होने पर स्वचालित किक और बैन ट्रिगर होता है, जबकि तेज़ पुन: कनेक्ट डिटेक्टर लंबी रिकवरी विंडो की अनुमति देता है ताकि अस्थिर नेटवर्क सत्र बिना दंडित हुए फिर से जुड़ सकें। स्वचालित बैन प्रविष्टियाँ **डिफ़ॉल्ट रूप से बंद** हैं; उन्हें सक्षम करने के लिए `CHATTER_AUTO_BAN=on` (या `true`/`1`) सेट करें, या चेतावनियों और थ्रॉटलिंग को बनाए रखने के लिए वेरिएबल को अनसेट छोड़ दें बिना स्वचालित बैन प्रविष्टियाँ लिखे।
- ऑपरेटर `CHATTER_PROTECTED_IPS` (अल्पविराम से अलग, डिफ़ॉल्ट `127.0.0.1,::1,192.168.0.1`) के साथ भरोसेमंद इनग्रेस पॉइंट (VPN एक्ज़िट, रिवर्स प्रॉक्सी, लोकलहोस्ट) को चिह्नित कर सकते हैं ताकि आपातकालीन प्रतिबंध कभी भी डेमॉन को अपने नियंत्रण विमान से बाहर न लॉक कर दें।
## फ़ाइल भंडारण और स्थानांतरण
- सभी उपयोगकर्ता-प्रबंधित फ़ाइलें अब `/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, अंतर्निहित ZMODEM टूलिंग के साथ पुरानी यादों वाले BBS क्लाइंट के लिए TELNET।
## मोर्स रिले
SSH-Chatter शौकिया हैम रेडियो रिले का समर्थन करता है।
यह वैश्विक मोर्स सिग्नल दिखाता है।
देखने के लिए `/morse on`, भेजने के लिए `/morse-reply`।
### प्रोटोकॉल विवरण
कार्यान्वयन Binkp प्रोटोकॉल विनिर्देश का पालन करता है:
- मानक Binkp फ्रेम संरचना 2-बाइट हेडर के साथ
- सत्र पासवर्ड प्रमाणीकरण (CMD\_PWD/CMD\_OK)
- हर 60 सेकंड में कीपलाइव तंत्र (CMD\_NUL)
- संदेश सिंक्रनाइज़ेशन के लिए कस्टम CHAT कमांड (CMD\_CHAT, एक्सटेंशन)
## पूर्वापेक्षाएँ
प्रोजेक्ट बनाने के लिए एक POSIX वातावरण आवश्यक है:
- एक C23 संगत कंपाइलर (जैसे `gcc` या `clang`)
- `make`
- `libssh` विकास हेडर और लाइब्रेरी (`libssh-dev` Debian/Ubuntu पर)
- `libcurl` विकास हेडर और लाइब्रेरी (`libcurl4-openssl-dev` Debian/Ubuntu पर)
- `uchardet` विकास हेडर और लाइब्रेरी (`libuchardet-dev` Debian/Ubuntu पर)
- `icu` (यूनिकोड के लिए अंतर्राष्ट्रीय घटक) विकास हेडर और लाइब्रेरी (`libicu-dev` Debian/Ubuntu पर)
- `lz4` संपीड़न लाइब्रेरी और विकास हेडर (`liblz4-dev` Debian/Ubuntu पर)
- POSIX थ्रेड (आमतौर पर सिस्टम `libpthread` द्वारा प्रदान किए जाते हैं)
- `python3-pygments` (Tetris छलावरण स्क्रीन के लिए `pygmentize` हाइलाइटर प्रदान करता है)
Debian/Ubuntu पर निर्भरताएँ निम्नलिखित के साथ स्थापित की जा सकती हैं:```bash
sudo apt-get update
sudo apt-get install build-essential libssh-dev libcurl4-openssl-dev libuchardet-dev libicu-dev liblz4-dev
रिपॉजिटरी क्लोन करें और प्रदान की गई Makefile का उपयोग करें:```bash
make
यह रिपॉजिटरी रूट में एक `ssh-chatter` बाइनरी और एक `libssh_chatter_backend.so` शेयर्ड ऑब्जेक्ट बनाता है जो अन्य अनुप्रयोगों में पुन: उपयोग के लिए अनुवाद सहायकों को उजागर करता है। इंटरमीडिएट आर्टिफैक्ट्स को `make clean` से साफ करें।
### शेयर्ड अनुवाद बैकएंड का उपयोग करना
शेयर्ड ऑब्जेक्ट सर्वर के C अनुवाद पाइपलाइन (ANSI प्लेसहोल्डर संरक्षण सहित) का पुन: उपयोग करता है ताकि अन्य प्रक्रियाएं पूर्ण SSH होस्ट को चालू किए बिना अनुवाद प्राप्त कर सकें। `libssh_chatter_backend.so` के विरुद्ध लिंक करें और `include/ssh_chatter/ssh_chatter_backend.h` शामिल करें:```c
#include "ssh_chatter/ssh_chatter_backend.h"
int main(void) {
char translated[4096];
char detected[64];
if (ssh_chatter_backend_translate_line("Hello, world!", "ko", translated, sizeof(translated), detected, sizeof(detected))) {
printf("Detected %s -> %s\n", detected, translated);
}
}
पर्यावरण में GEMINI_API_KEY (और वैकल्पिक रूप से GEMINI_API_BASE या GEMINI_MODEL) सेट करें ताकि सहायक Google Generative Language API तक पहुँच सके, जो मुख्य डेमॉन के रनटाइम आवश्यकताओं को दर्शाता है। चैट सर्वर शुरू करने से पहले आप ./scripts/test_gemini_connection.sh चला सकते हैं ताकि सत्यापित कर सकें कि क्रेडेंशियल बाहरी कॉल की अनुमति देते हैं; स्क्रिप्ट कच्चा Gemini प्रतिक्रिया प्रिंट करती है ताकि आप देख सकें कि अनुरोध सफल हुआ या नहीं।
सर्वर डिफ़ॉल्ट रूप से 0.0.0.0:2222 पर सुनता है। आप उपलब्ध फ़्लैग के साथ रनटाइम पैरामीटर समायोजित कर सकते हैं:```
Usage: ./ssh-chatter [-a address] [-p port] [-m motd_file] [-k host_key_dir] [-T telnet_port|off] [-J json_port|off]
./ssh-chatter [-h]
./ssh-chatter [-V]
जब प्रदान किया जाता है, `-m` निर्दिष्ट फ़ाइल पथ से दिन का संदेश पढ़ता है।
सामान्य उदाहरण:```bash
# Start the chat server on port 2022, loading host keys from /etc/ssh
./ssh-chatter -p 2022 -k /etc/ssh
# Enable telnet access on 0.0.0.0:4242 alongside SSH
./ssh-chatter -T 0.0.0.0:4242
# Serve a custom MOTD from a file and bind to localhost
./ssh-chatter -a 127.0.0.1 -m /etc/ssh-chatter/motd
एक बार चलने के बाद, किसी भी SSH क्लाइंट से कनेक्ट करें:```bash ssh -p 2222 user@server-address
सार्वजनिक सर्वर डिफ़ॉल्ट SSH पोर्ट पर `bbs.chatter.pw` पर उपलब्ध है:```bash
ssh -p 2222 [email protected]
SSH प्रॉम्प्ट पर दिए गए उपयोगकर्ता नाम आपके चैट उपनाम के रूप में उपयोग किए जाते हैं।
Telnet क्लाइंट भी समान सुविधा सेट के साथ जुड़ सकते हैं। Telnet सुनना डिफ़ॉल्ट रूप से पोर्ट 2323 पर सक्षम है और -T फ्लैग के साथ समायोजित या अक्षम किया जा सकता है। बाइंड पता ओवरराइड करने के लिए -T address:port प्रदान करें (यह छोड़े जाने पर SSH बाइंड को प्राप्त करता है; सभी इंटरफ़ेस पर सुनने के लिए -T :4242 जैसे खाली होस्ट का उपयोग करें)। उदाहरण के लिए, एक रेट्रो टर्मिनल से telnet पर जुड़ने के लिए:```bash
telnet server-address 2323
Pass `-T off` (या `-T disable`) टेलनेट लिसनर को पूरी तरह से बंद करने के लिए पास करें।
### JSON line API
सर्वर स्वचालन और बाह्य एकीकरण के लिए TCP पर एक JSON line protocol भी प्रदान करता है। यह डिफ़ॉल्ट रूप से पोर्ट `34567` पर सुनता है और इसे `-J` के साथ अक्षम या पुन: कॉन्फ़िगर किया जा सकता है।```bash
# Disable the JSON API
./ssh-chatter -J off
# Bind JSON API on a custom port
./ssh-chatter -J 0.0.0.0:45678
प्रत्येक अनुरोध एक एकल JSON ऑब्जेक्ट है जो \n से समाप्त होता है। प्रतिक्रियाएँ और चैट घटनाएँ JSON ऑब्जेक्ट हैं, जो न्यूलाइन द्वारा सीमांकित होती हैं। API सामान्य चैट और /poll, /vote, /image, /video, /audio, /files, और /asciiart प्रवाह का समर्थन करता है।
इवेंट पेलोड (सर्वर → क्लाइंट)```json {"type":"event","event":"message","payload":{"id":123,"username":"alice","message":"hello","created_at":1710000000,"system":false,"preserve_whitespace":false,"attachment":{"type":"none","target":"","caption":""}}}
**अनुरोध उदाहरण (client → server)**```json
{"type":"chat","id":1,"username":"alice","message":"안녕하세요"}
{"type":"image","id":2,"username":"alice","url":"https://example.com/cat.png","caption":"cat"}
{"type":"asciiart","id":3,"username":"alice","message":" /\\_/\\\\n( o.o )\\\\n > ^ <"}
{"type":"poll","id":4,"username":"op","is_operator":true,"question":"Favorite color?","options":["red","blue","green"]}
{"type":"poll","id":5,"username":"bob","action":"vote","choice":2}
{"type":"vote","id":6,"username":"op","label":"weekend","question":"Plan?","options":["hike","rest"],"allow_multiple":true}
{"type":"vote","id":7,"username":"bob","label":"weekend","action":"vote","choice":1}
प्रतिक्रियाएँ id को प्रतिध्वनित करती हैं और status, message, तथा वैकल्पिक result ऑब्जेक्ट शामिल करती हैं:```json
{"type":"response","id":4,"status":"ok","message":"poll started","result":{"poll":{"active":true,"allow_multiple":false,"id":10,"question":"Favorite color?","options":[{"index":1,"text":"red","votes":0},{"index":2,"text":"blue","votes":0}]}}}
एक चलाने योग्य उदाहरण के लिए, देखें `scripts/json_api_example.py`:```bash
python3 scripts/json_api_example.py --url tcp://127.0.0.1:34567 --save /tmp/json_api_output.txt
एक सहायक स्क्रिप्ट प्रदान की गई है जो systemd का उपयोग करने वाले सिस्टम पर स्थापना को स्वचालित करती है:```bash
sudo ./scripts/install_chatter_service.sh
स्क्रिप्ट क्या करती है:
1. प्रोजेक्ट को संकलित करता है (`make`)।
2. परिणामी बाइनरी को `/usr/local/bin/ssh-chatter` पर स्थापित करता है।
3. एक समर्पित `ssh-chatter` सिस्टम उपयोगकर्ता और समूह बनाता है (यदि वे पहले से मौजूद नहीं हैं)।
4. रनटाइम स्थिति (SSH होस्ट कुंजी सहित) के लिए `/var/lib/ssh-chatter` और कॉन्फ़िगरेशन फ़ाइलों के लिए `/etc/ssh-chatter` बनाता है।
5. जब अनुपलब्ध हो, तो `/var/lib/ssh-chatter/ssh_host_rsa_key` के अंतर्गत एक डिफ़ॉल्ट RSA होस्ट कुंजी उत्पन्न करता है।
6. `/etc/ssh-chatter/motd` पर एक डिफ़ॉल्ट MOTD और पर्यावरण-आधारित ट्यूनिंग के लिए एक ओवरराइड फ़ाइल `/etc/ssh-chatter/chatter.env` बनाता है।
7. `/etc/systemd/system/chatter.service` लिखता है, `systemd` को रीलोड करता है, सेवा को सक्षम करता है, और इसे तुरंत प्रारंभ करता है।
परिणामी `chatter.service` यूनिट सर्वर को उचित डिफ़ॉल्ट के साथ प्रारंभ करता है और `CAP_NET_BIND_SERVICE` क्षमता प्रदान करता है, ताकि गैर-रूट सेवा खाता आवश्यकता पड़ने पर विशेषाधिकार प्राप्त पोर्ट से बाइंड कर सके।
### सेवा को अनुकूलित करना
आप `/etc/ssh-chatter/chatter.env` को संपादित करके और सेवा को पुनः प्रारंभ करके डिफ़ॉल्ट को समायोजित कर सकते हैं:```bash
sudo systemctl edit chatter.service # or edit the environment file directly
sudo systemctl restart chatter.service
समर्थित पर्यावरण चर में शामिल हैं:
CHATTER_BIND_ADDRESS – बाइंड करने का IP पता (डिफ़ॉल्ट 0.0.0.0)।CHATTER_PORT – क्लाइंट को उजागर TCP पोर्ट (डिफ़ॉल्ट 2222)।CHATTER_MOTD_FILE – मैसेज-ऑफ-द-डे फ़ाइल का पथ (डिफ़ॉल्ट /etc/ssh-chatter/motd)।CHATTER_HOST_KEY_DIR – ssh_host_rsa_key वाली निर्देशिका (डिफ़ॉल्ट /var/lib/ssh-chatter)।CHATTER_EXTRA_ARGS – ssh-chatter कॉल में जोड़े जाने वाले अतिरिक्त तर्क।CHATTER_VOTE_FILE – वोट स्थिति फ़ाइल का पथ (डिफ़ॉल्ट vote_state.dat)।कैमोफ्लाज कोड स्निपेट्स:
Tetris कैमोफ्लाज सुविधा के लिए, रनटाइम को /var/lib/ssh-chatter/ में कोड स्निपेट फ़ाइलों की अपेक्षा होती है।
इस रिपॉजिटरी में अब ./camouflage/ के अंतर्गत उपयोग के लिए तैयार उदाहरण शामिल हैं (c.txt, cpp.txt, java.txt, go.txt, js.txt, ts.txt, rust.txt)।
सेटअप के दौरान एक बार उन्हें रनटाइम निर्देशिका में कॉपी करें:```bash
sudo install -d /var/lib/ssh-chatter
sudo cp camouflage/*.txt /var/lib/ssh-chatter/
आप किसी भी कॉपी किए गए फ़ाइल को संपादित कर सकते हैं ताकि यह अनुकूलित किया जा सके कि कैमोफ्लाज स्क्रीन सक्रिय होने पर क्या दिखाई देता है।
अनुवाद समर्थन अब Google Gemini API पर निर्भर करता है। इसे सक्षम करने के लिए `chatter.env` (या एनवायरनमेंट) में निम्नलिखित सेट करें:
- `GEMINI_API_KEY` – अनुवाद अनुरोधों को प्रमाणित करने के लिए उपयोग की जाने वाली गुप्त API कुंजी।
- `GEMINI_API_BASE` – API बेस URL के लिए वैकल्पिक ओवरराइड (डिफ़ॉल्ट `https://generativelanguage.googleapis.com/v1beta`)।
- `GEMINI_MODEL` – Gemini मॉडल नाम के लिए वैकल्पिक ओवरराइड (डिफ़ॉल्ट `gemini-2.5-flash`)।
जब अनुवाद सक्रिय होता है, तो चैट प्रत्येक संदेश को तुरंत उसकी मूल भाषा में वितरित करता है और एक बार Gemini प्रतिक्रिया आने पर इंडेंटेड कैप्शन के साथ अनुवादित पाठ प्रस्तुत करता है। प्रतिक्रिया सारांश समान कैप्शन शैली का उपयोग करते हैं ताकि अपडेट सीधे उस संदेश के नीचे दिखाई दें जिसका वे संदर्भ देते हैं।
यदि इनलाइन कैप्शन इंसर्ट अजीब लगते हैं, तो आप `/chat-spacing <0-5>` के साथ पहले से खाली पंक्तियों का एक छोटा बफर आरक्षित कर सकते हैं। यह सेटिंग केवल लाइव चैट थ्रेड को प्रभावित करती है—बुलेटिन बोर्ड सामग्री बिना आरक्षण के अनुवादित होती रहती है—इसलिए आप लंबी पोस्ट को प्रभावित किए बिना अपने स्वयं के सत्र के लिए स्पेसिंग को ट्यून कर सकते हैं।
आपके अनुवाद टॉगल और भाषा विकल्प `chatter_state.dat` में सहेजे जाते हैं, इसलिए भविष्य के सत्र पुनः कनेक्ट होने पर स्वचालित रूप से समान कॉन्फ़िगरेशन को पुनर्स्थापित करते हैं।
यदि आप सेवा को तुरंत शुरू किए बिना इंस्टॉल करना पसंद करते हैं, तो स्क्रिप्ट को `SKIP_START=1` के साथ चलाएँ।
सेवा प्रबंधन कमांड:```bash
sudo systemctl status chatter.service
sudo systemctl restart chatter.service
sudo systemctl disable --now chatter.service
-m फ्लैग या सेवा-प्रबंधित कॉन्फ़िगरेशन फ़ाइल के माध्यम से MOTD वितरण।/help कमांड।/ban, /poke) की सर्वर-साइड लॉगिंग।/weather/vote पोल और एकल-विकल्प /vote-single विकल्पों का समर्थन करते हुए, जिसमें टेक्स्ट-अनुकूल मतदान शॉर्टकट के रूप में /elect <label> <choice> शामिल है।/bbs के माध्यम से सुलभ है जिसमें टैगिंग, टिप्पणियाँ, बम्पिंग, और एक इंटरैक्टिव कंपोज़र है जो लोकेल-अवेयर टर्मिनेटर (डिफ़ॉल्ट >/__BBS_END>) के साथ समाप्त होता है।मुद्दे और पुल अनुरोधों का स्वागत है। कृपया बग के लिए पुनरुत्पादन चरण शामिल करें और बदलाव सबमिट करने से पहले make सफल होना सुनिश्चित करें।
| पथ | विवरण |
|---|
src/main.c | कमांड-लाइन पार्सिंग और प्रक्रिया बूटस्ट्रैप (बाइंड पता, पोर्ट, MOTD, होस्ट की निर्देशिका)। |
src/host_aggregate.c, include/ssh_chatter/host.h | चैट होस्ट कार्यान्वयन – सत्र जीवनचक्र, MOTD हैंडलिंग, और भविष्य के संदेश प्रसारण तर्क के लिए हुक। |
src/host | मॉड्यूलर होस्ट उपप्रणालियाँ जो src/host_aggregate.c के माध्यम से एकल अनुवाद इकाई में संकलित होती हैं। |
include/ssh_chatter | डेमॉन, स्ट्रेस टूल्स और अनुवाद बैकएंड के लिए साझा हेडर। |
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 सिस्टम पर बिल्ड पूर्वापेक्षाओं के लिए न्यूनतम पैकेज इंस्टॉलर। |
CHATTER_GEMINI_COOLDOWN_FILE – Gemini कूलडाउन स्थिति फ़ाइल का पथ (डिफ़ॉल्ट gemini_cooldown.dat)।CHATTER_SECURITY_FILTER – स्तरित सुरक्षा फ़िल्टर को अक्षम करने के लिए off/false/0 पर सेट करें (डिफ़ॉल्ट रूप से सक्षम)।CHATTER_SECURITY_AI – AI मॉडरेशन सक्षम करने के लिए on/true/1 पर सेट करें (डिफ़ॉल्ट रूप से अक्षम)।CHATTER_FILESTORE_PATH – प्रबंधित फ़ाइल भंडारण पथ को ओवरराइड करें (डिफ़ॉल्ट /etc/ssh-chatter/user-files)।CHATTER_FILE_STORAGE_ROOT – प्रबंधित फ़ाइल भंडारण पथ के लिए लीगेसी फ़ॉलबैक।CHATTER_MAX_ALLOC_BYTES – आंतरिक मेमोरी प्रबंधक में एकल सन्निकट आवंटन प्रयास के लिए ऊपरी सीमा। डिफ़ॉल्ट रूप से कोई सीमा नहीं है (SIZE_MAX)। इसे केवल तभी सेट करें यदि आप एक आवंटन पर कठोर सीमा लगाना चाहते हैं। किसी भी सीमा को स्पष्ट रूप से हटाने के लिए 0, unlimited, inf, या infinity पर सेट करें।/asciiart एडिटर जिसमें 640-लाइन ड्राफ्ट, प्रति-IP दस मिनट का पोस्टिंग कूलडाउन, मल्टी-लाइन डिलीवरी, और Ctrl+A/Ctrl+S शॉर्टकट हैं।/game हब जिसमें बिल्ट-इन tetris (मूल सोवियत-युग C कार्यान्वयन से ट्रांसकोडेड) और liargame शामिल हैं, दोनों को /suspend! या Ctrl+Z के माध्यम से निलंबित किया जा सकता है।