संदर्भ / सुरक्षा और परियोजना
वास्तुकला
कलेक्टर, पैनल, जर्नल, वर्कर्स और विटनेस के घटक, और डेटा उनके बीच कैसे प्रवाहित होता है।
एक पाइथन प्रक्रिया फ़ास्टएपीआई पैनल और किसी भी संख्या में अलग-थलग वर्कस्पेस को होस्ट करती है, जिनमें से प्रत्येक में एक टेलीथॉन यूज़र-अकाउंट क्लाइंट होता है। SQLite एक केवल-जोड़ने वाला (append-only) हस्ताक्षरित इवेंट जर्नल और परिवर्तनीय परिचालन सेटिंग्स रखता है। एक एन्क्रिप्टेड वॉल्ट में API क्रेडेंशियल, स्ट्रिंगसेशन, और साइनिंग कुंजी होती है। फ्रंटएंड साधारण बंडल HTML/CSS/जावास्क्रिप्ट है: नोड बिल्ड, CDN, या रनटाइम फ्रंटएंड डाउनलोड की आवश्यकता नहीं है।
| मॉड्यूल | जिम्मेदारी |
|---|---|
| कलेक्टर.पाइ | अधिकृतकरण, संवाद चयन, अपडेट, स्नैपशॉट, मीडिया कतार, कनेक्शन निगरानी |
| interactions.py / telegram_client.py | स्पष्ट पैनल क्रियाएँ, हस्ताक्षरित रसीदें, स्थायी अनुरोध आईडी और कार्य-स्थानीय कॉलबैक/जॉइन पुनःप्रयास नीति |
| message_content.py | परिवहनीय संदेश तुलना, परिवहन पहुँच मेटाडेटा को छोड़कर |
| workers.py | रद्द करने की सफ़ाई से पहले एक्सपोर्ट फ़ाइल वर्कर्स का इंतज़ार करें |
| store.py | WAL लेनदेन, क्रमिक घटना श्रृंखला, क्वेरी फ़िल्टर, परिचालन सेटिंग्स |
| security.py | निजी फ़ाइल निर्माण, एन्क्रिप्टेड वॉल्ट, Ed25519 हस्ताक्षर, एकल-प्रक्रिया लॉक |
| evidence.py | पूरे जर्नल का निर्यात, व्युत्पन्न, चेकपॉइंट्स, संलग्नक सत्यापन |
| verify.py | स्वतंत्र, केवल-पठन सत्यापक (स्टैंडर्ड लाइब्रेरी + क्रिप्टोग्राफी): अभिलेखागार, कवरेज, विटनेस जर्नल और चैनल पोस्ट, प्रोफ़ाइल फ़ाइलें |
| app.py | प्रमाणित एपीआई, जीवनचक्र, अनुरोध सत्यापन, स्थिर पैनल |
| profiles.py | एकाधिक खाता संग्रहकर्ता, साझा पहुँच नियंत्रक, प्रति कार्यक्षेत्र जीवनचक्र |
| access.py | दायरे के भीतर अनुदान, अनुमति जाँच, आईपी प्रतिबंध, सत्र सीमाएँ और प्रशासक कंसोल |
| proxy_catalog.py | पब्लिक फ़ीड स्नैपशॉट, ट्रांसपोर्ट जांच, साझा प्रॉक्सी पूल और स्वास्थ्य-आधारित चयन |
| provenance.py | हस्ताक्षरित अधिग्रहण-संचालित पहचान, कोड और निर्भरता माप |
| network.py | प्रत्येक कार्यक्षेत्र के लिए सत्यापित मार्ग; संपादित स्थिति और साक्ष्य; टेलीथॉन परिवहन विकल्प |
| sessions.py | समीक्षित टेलीथॉन SQLite स्कीमाओं का ऑफ़लाइन केवल-पठन रूपांतरण |
| account_import.py | समर्थित खाता फ़ाइलों और JSON की इन-मेमोरी पहचान और सामान्यीकरण |
| tdata.py | सीमित आधुनिक TData ZIP रीडर, चेकसम/डिक्रिप्शन सत्यापन, कोई निष्कर्षण नहीं |
| doctor.py | स्थानीय तैयारी जाँचें बिना संग्रह, लॉगिन या पैकेज इंस्टॉलेशन |
| डाउनलोड.पाइ | प्रामाणिकृत स्ट्रीमिंग निर्यात डाउनलोड, सीमित रीड्स के साथ और बिना ओवरराइट्स के |
| monitoring.py | प्रत्येक कार्यक्षेत्र-वार घटना नीति और प्रत्येक प्रकार के संलग्नक नियम, हैंडलरों द्वारा साझा, स्थिति और हस्ताक्षरित रसीदें |
| scope.py | निरीक्षण दायरा (चुनी गई चैट्स, टेलीग्राम फ़ोल्डर, पूरा खाता), स्रोत प्रकार, अपवाद, पुनः जाँच स्तर |
| डॉसियर.पाइ | हर चैट के लिए लोगों की प्रोफ़ाइल सहेजे गए रिकॉर्ड से तैयार: तथ्य रिकॉर्ड संदर्भों के साथ, अवतार का SHA-256/pHash, उल्लेख निष्कर्षण |
| witness_api.py | केवल-पढ़ने योग्य विटनेस टोकन और वे हस्ताक्षरित जर्नल हेड जिन्हें वे प्राप्त कर सकते हैं |
| witness.py | स्वतंत्र साक्षी प्रक्रिया: अपनी कुंजी और जर्नल, हेड चेक्स, हस्ताक्षरित चैनल पोस्ट, एक्सपोर्ट |
| alerts.py | अप्रिज़ नोटिफिकेशन्स और पैनल की नोटिफिकेशन सूची |
| लॉगिंग_कॉन्फ़िग.पाइ | विंडो रहित लॉन्च के लिए कंसोल लॉगिंग और रोटेटिंग सर्वर डायग्नोस्टिक्स |
| स्टैटिक/ | प्रतिक्रियाशील इंटरफ़ेस, स्थानीय एक्सेस गेट, फ़िल्टर, विवरण, एक्सपोर्ट, खाता सेटअप |
| demo.py | स्पष्ट रूप से लेबल किया गया सिंथेटिक जर्नल, वास्तविक संग्रह से पृथक |
ऑब्ज़र्वेशन हैंडलर्स कनेक्ट करने से पहले पंजीकृत होते हैं। लाइव संग्रह सक्रिय क्लाइंट पहचान, स्पष्ट चलने की स्थिति, सक्षम स्रोतों या ऑब्ज़र्वेशन स्कोप (फ़ोल्डर या पूरे-खाते मोड अपनी पहली अपडेट पर एक नई चैट को स्रोत के रूप में जोड़ते हैं), और इवेंट पॉलिसी द्वारा नियंत्रित होता है। अस्वीकार किए गए और प्रतिस्थापित क्लाइंट लाइव अपडेट में योगदान नहीं कर सकते। कच्ची प्रतिक्रियाएं और सदस्यता अपडेट दृश्यता सीमाओं को बनाए रखते हैं। आने वाले संदेश की सामग्री और उसका स्थायी मीडिया कार्य एक साथ प्रतिबद्ध किए जाते हैं। कार्य मूल TL डिस्क्रिप्टर को बनाए रखते हैं और इसके हैश को हस्ताक्षरित संदेश अवलोकन से बांधते हैं। प्रेषक/संपादक/हटाने वाले के अर्थ अलग किए गए हैं।
प्रत्येक वर्कस्पेस एक खाता स्वीकार करता है और इसकी अपनी निर्देशिका और हस्ताक्षर पहचान होती है। संगतता के लिए मुख्य वर्कस्पेस रूट पर बना रहता है; अतिरिक्त वर्कस्पेस profiles/<id>/ में रहते हैं। एक बेयरर टोकन पूरे इंस्टॉलेशन को नियंत्रित करता है; वर्कस्पेस अलग प्राधिकरण किरायेदार नहीं हैं। प्रोसेस लॉक निर्देशिकाओं की सुरक्षा करते हैं; डेटाबेस लॉक घटनाओं को क्रमबद्ध करते हैं। प्रत्येक जोड़ (एपेंड) पूर्ण समकालिक मोड के साथ SQLite WAL में समकालिक रूप से प्रतिबद्ध होता है। इवेंट अपडेट/डिलीट ट्रिगर सामान्य एप्लिकेशन संपादन को रोकते हैं; फ़ाइल सिस्टम प्रशासक विश्वास की सीमा के अंदर रहते हैं।
एपीआई प्राधिकरण एक बेयरर टोकन है। लॉगिन संचालन सीरियलाइज़्ड और समय-सीमित होते हैं। खाते के अपलोड के लिए एक समर्पित 12 MiB एन्कोडेड-बॉडी सीमा और 8 MiB डीकोडेड-फ़ाइल सीमा का उपयोग होता है; सामान्य एपीआई अनुरोध 16 KiB सीमा को बनाए रखते हैं। कनवर्ज़न एक वर्कर थ्रेड में चलता है, अपलोड को मेमोरी में रखता है, और प्रमाणीकृत ब्राउज़र को सामान्यीकृत इनपुट लौटाता है। QR लॉगिन में प्रति-वर्कस्पेस एक उम्मीदवार, अल्पकालिक पहचानकर्ता, वेटर टास्क, और स्पष्ट रद्दीकरण होता है। केवल स्वीकृत प्राधिकरण ही सक्रिय क्लाइंट बनता है। टेलीग्राम फ्लडवेट एक रिट्राई-आफ्टर मान के साथ लौटा जाता है; क्रेडेंशियल और कच्चे RPC त्रुटि संदेश API त्रुटियों में प्रदर्शित नहीं किए जाते हैं। एक्सपोर्ट्स असिंक्रोनस इवेंट लूप के बाहर चलते हैं और प्रति वर्कस्पेस सीरियलाइज़ किए जाते हैं। वे एक स्थिर रीड स्नैपशॉट को स्ट्रीम करते हैं, और चल रहे WAL राइट्स के साथ सह-अस्तित्व में रह सकते हैं। वर्कस्पेस कलेक्टर प्रोसेस/इवेंट लूप साझा करते हैं।
वर्तमान इतिहास स्नैपशॉट और लाइव अपडेट ओवरलैप हो सकते हैं। दोनों अलग-अलग अवलोकन हैं, जिन्हें स्रोत द्वारा लेबल किया गया है; डुप्लिकेट को चुपचाप नहीं जोड़ा जाता है। कोई निष्कर्ष नहीं निकाला जाता है लगे-भुगते आईडी, गढ़े गए हटाए गए टेक्स्ट, जबरन सदस्य सूचीकरण, या स्वचालित समूह जुड़ाव से कोई निष्कर्ष नहीं निकाला जाता है।
ऑपरेटर-उन्मुख स्पष्टीकरण के लिए, देखें कि संग्रह कैसे काम करता है और खाते और सत्र प्रारूप।
नेटवर्क कॉन्फ़िगरेशन एन्क्रिप्टेड वॉल्ट में रहता है। एक रूट लागू करने पर पुराने क्लाइंट बंद हो जाते हैं और अधूरा लॉगिन रद्द हो जाता है; बाद के कनेक्शन बिना किसी सीधे फॉलबैक के उस रूट का उपयोग करते हैं। एक नई बाहरी-कुंजी इंस्टॉलेशन प्रत्येक वर्कस्पेस की फर्नेट कुंजी को एक मास्टर कुंजी फ़ाइल और एक संग्रहीत यादृच्छिक सॉल्ट से HKDF-SHA256 के साथ प्राप्त करती है। यह गोपनीयता को डेटा निर्देशिका से अलग रखकर सुरक्षित करती है, न कि प्लेनटेक्स्ट जर्नल/मीडिया की सामग्री से।
स्थानीय डेमो प्रविष्टि एक अलग से उत्पन्न प्रक्रिया क्षमता का उपयोग करती है, कभी भी कॉन्फ़िगर किए गए पैनल टोकन का नहीं। जारी करने और स्वीकार करने के लिए स्पष्ट डेमो मोड, अतिरिक्त वर्कस्पेस या अधिकृत सत्र के बिना एक सिंथेटिक रूट, लूपबैक पीयर/होस्ट, कोई प्रॉक्सी फॉरवर्डिंग हेडर, और कोई क्रॉस-ओरिजिन ब्राउज़र अनुरोध नहीं आवश्यक है। लाइव एपीआई बेयरर प्रमाणीकरण बनाए रखते हैं और डेमो मोड में संग्रह परिवर्तनों को अस्वीकार करते हैं।