# আর্কিটেকচার

Canonical page: https://phishdestroy.github.io/TgWitness/bn/docs/reference/architecture/

সংগ্রাহক, প্যানেল, জার্নাল, ওয়ার্কার্স এবং উইটনেসের উপাদানসমূহ এবং কীভাবে ডেটা তাদের মধ্যে স্থানান্তরিত হয়।

একটি পাইথন প্রসেস FastAPI প্যানেল এবং যেকোনো সংখ্যক বিচ্ছিন্ন ওয়ার্কস্পেস হোস্ট করে, প্রতিটি একটি Telethon ব্যবহারকারী-অ্যাকাউন্ট ক্লায়েন্টসহ। SQLite একটি শুধুমাত্র সংযোজনযোগ্য স্বাক্ষরিত ইভেন্ট জার্নাল এবং পরিবর্তনযোগ্য অপারেশনাল সেটিংস ধারণ করে। একটি এনক্রিপ্ট করা ভল্টে API ক্রেডেনশিয়াল, StringSession, এবং স্বাক্ষর কী সংরক্ষিত থাকে। ফ্রন্টএন্ডটি হল সাধারণভাবে বান্ডেল করা HTML/CSS/JavaScript: কোনো Node বিল্ড, CDN, বা রানিটাইম ফ্রন্টএন্ড ডাউনলোডের প্রয়োজন নেই।

| মডিউল | দায়িত্ব |
| --- | --- |
| সংগ্রাহক.পিওয়াই | অনুমতি, সংলাপ নির্বাচন, আপডেট, স্ন্যাপশট, মিডিয়া ক্যু, সংযোগ মনিটরিং |
| ইন্টার‌অ্যাকশনস.পিওয়াই / টেলিগ্রাম_ক্লায়েন্ট.পিওয়াই | স্পষ্ট প্যানেল অ্যাকশন, স্বাক্ষরিত রসিদ, স্থায়ী অনুরোধ আইডি এবং টাস্ক-স্থানীয় কলব্যাক/যোগদান পুনঃচেষ্টা নীতি |
| বার্তার_বিষয়বস্তু.পিওয়াই | পরিবহন অ্যাক্সেস মেটাডেটা বাদ দিয়ে পর্যবেক্ষণযোগ্য বার্তা তুলনা |
| কর্মীরা.পিওয়াই | বাতিলের পর পরিষ্কার করার আগে এক্সপোর্ট ফাইল ওয়ার্কারদের জন্য অপেক্ষা করুন |
| স্টোর.পিওয়াই | WAL লেনদেন, ক্রমবদ্ধ ইভেন্ট চেইন, কুয়েরি ফিল্টার, অপারেশনাল সেটিংস |
| সিকিউরিটি.পিওয়াই | ব্যক্তিগত ফাইল তৈরি, এনক্রিপ্ট করা ভল্ট, Ed25519 স্বাক্ষর, একক-প্রক্রিয়া লক |
| প্রমাণ.পাই | সম্পূর্ণ জার্নাল রপ্তানি, ডেরিভেটিভস, চেকপয়েন্ট, সংযুক্তি যাচাই |
| verify.py | স্বতন্ত্র, শুধুমাত্র-পঠনযোগ্য যাচাইকারী (স্ট্যান্ডার্ড লাইব্রেরি + ক্রিপ্টোগ্রাফি): আর্কাইভ, কভারেজ, সাক্ষী জার্নাল এবং চ্যানেল পোস্ট, প্রোফাইল ফাইল |
| অ্যাপ.পিওয়াই | প্রমাণিত API, জীবনচক্র, অনুরোধ যাচাইকরণ, স্থির প্যানেল |
| প্রোফাইলসমূহ.পাই | অনেক অ্যাকাউন্ট কালেক্টর, ভাগ করা অ্যাক্সেস কন্ট্রোলার, প্রতি ওয়ার্কস্পেসের জীবনচক্র |
| অ্যাক্সেস.পিওয়াই | সীমিত অনুদান, অনুমতি যাচাই, আইপি সীমাবদ্ধতা, সেশন সীমা এবং প্রশাসক কনসোল |
| প্রক্সি_ক্যাটালগ.পিওয়াই | পাবলিক ফিড স্ন্যাপশট, পরিবহন যাচাই, ভাগ করা প্রক্সি পুল এবং স্বাস্থ্যভিত্তিক নির্বাচন |
| উৎস-পরিচয়.পিওয়াই | স্বাক্ষরিত অধিগ্রহণ-চালিত পরিচয়, কোড এবং নির্ভরতা পরিমাপ |
| নেটওয়ার্ক.পিওয়াই | প্রতি ওয়ার্কস্পেসের রুটগুলো যাচাই করা হয়েছে; অবস্থা ও প্রমাণাদি মুছে ফেলা হয়েছে; টেলিথন পরিবহন বিকল্পসমূহ |
| সেশনসমূহ.পিওয়াই | পর্যালোচিত টেলিথন SQLite স্কিমাগুলির অফলাইন শুধুমাত্র-পঠন রূপান্তর |
| অ্যাকাউন্ট_আমদানি.পিওয়াই | সমর্থিত অ্যাকাউন্ট ফাইল এবং JSON-এর ইন-মেমোরি সনাক্তকরণ ও স্বাভাবিকীকরণ |
| টি-ডেটা.পিওয়াই | সীমাবদ্ধ আধুনিক TData ZIP রিডার, চেকসাম/ডিক্রিপশন যাচাইকরণ, কোনো এক্সট্র্যাকশন নেই |
| ডক্টর.পিওয়াই | সংগ্রহ, লগইন বা প্যাকেজ ইনস্টলেশন ছাড়াই স্থানীয় প্রস্তুতি পরীক্ষা |
| ডাউনলোড.পিওয়াই | সীমিত রিড এবং কোনো ওভাররাইট ছাড়াই প্রমাণিত স্ট্রিমিং এক্সপোর্ট ডাউনলোড |
| মনিটরিং.পিওয়াই | প্রতি ওয়ার্কস্পেস ইভেন্ট নীতি এবং প্রতি-প্রকার সংযুক্তি নিয়ম যা হ্যান্ডলারদের দ্বারা যাচাই, স্থিতি এবং স্বাক্ষরিত রসিদ শেয়ার করা হয় |
| স্‌কোপ.পিওয়াই | পর্যবেক্ষণ পরিসর (নির্বাচিত চ্যাট, টেলিগ্রাম ফোল্ডার, পুরো অ্যাকাউন্ট), উৎস ধরন, বাদ, পুনরায় যাচাই স্তর |
| ডসিয়ে.পিওয়াই | সংরক্ষিত রেকর্ড থেকে নির্মিত প্রতি চ্যাটের ব্যবহারকারী প্রোফাইল: রেকর্ড রেফারেন্সসহ তথ্য, অবতারের SHA-256/pHash, উল্লেখ আহরণ |
| witness_api.py | পঠন-শুধুমাত্র সাক্ষী টোকেন এবং সেগুলি যে স্বাক্ষরিত জার্নাল হেড আনতে পারে |
| সাক্ষী.পিওয়াই | স্বতন্ত্র সাক্ষী প্রক্রিয়া: নিজস্ব কী এবং জার্নাল, হেড চেক, স্বাক্ষরিত চ্যানেল পোস্ট, রপ্তানি |
| অ্যালার্টস.পিওয়াই | অ্যাপ্রাইজ নোটিফিকেশন এবং প্যানেলের নোটিফিকেশন তালিকা |
| লগিং কনফিগারেশন পিআই | কনসোল লগিং এবং উইন্ডোবিহীন লঞ্চের জন্য ঘূর্ণায়মান সার্ভার ডায়াগনস্টিকস |
| স্থির/ | প্রতিক্রিয়াশীল ইন্টারফেস, স্থানীয় অ্যাক্সেস গেট, ফিল্টার, বিবরণ, রপ্তানি, অ্যাকাউন্ট সেটআপ |
| ডেমো.পিওয়াই | স্পষ্টভাবে লেবেলকৃত সিন্থেটিক জার্নাল, প্রকৃত সংগ্রহ থেকে বিচ্ছিন্ন। |

সংযোগ করার আগে পর্যবেক্ষণ হ্যান্ডলারগুলো নিবন্ধিত হয়। লাইভ সংগ্রহ সক্রিয় ক্লায়েন্ট পরিচয়, স্পষ্ট চলমান অবস্থা, সক্ষম উত্স বা পর্যবেক্ষণ স্কোপ (ফোল্ডার বা পুরো-অ্যাকাউন্ট মোডগুলো প্রথম আপডেটে একটি নতুন চ্যাটকে উত্স হিসেবে যোগ করে) এবং ইভেন্ট নীতি দ্বারা নিয়ন্ত্রিত হয়। প্রত্যাখ্যাত এবং প্রতিস্থাপিত ক্লায়েন্টরা লাইভ আপডেট দিতে পারে না। কাঁচা প্রতিক্রিয়া এবং সদস্যতা আপডেট দৃশ্যমানতার সীমা বজায় রাখে। ইনকামিং বার্তার বিষয়বস্তু এবং এর স্থায়ী মিডিয়া জব একসঙ্গে কমিট করা হয়। জবগুলো মূল TL ডিসক্রিপ্টর সংরক্ষণ করে এবং এর হ্যাশকে স্বাক্ষরিত বার্তা পর্যবেক্ষণের সাথে বাইন্ড করে। প্রেরক/সম্পাদক/মোছার সেম্যান্টিকস পৃথক করা হয়েছে।

প্রতিটি ওয়ার্কস্পেস একটি একাউন্ট গ্রহণ করে এবং এর নিজস্ব ডিরেক্টরি ও স্বাক্ষর পরিচয় থাকে। সামঞ্জস্যতার জন্য প্রধান ওয়ার্কস্পেস রুটে থাকে; অতিরিক্ত ওয়ার্কস্পেস profiles/<id>/ এ থাকে। একটি বেয়ারার টোকেন পুরো ইনস্টলেশন নিয়ন্ত্রণ করে; ওয়ার্কস্পেসগুলো আলাদা অনুমোদন টেন্যান্ট নয়। প্রক্রিয়া লক ডিরেক্টরিগুলোকে সুরক্ষিত রাখে; ডাটাবেস লক ইভেন্ট প্রবেশকে সিরিয়াল করে। প্রতিটি এপেন্ড FULL সিঙ্ক্রোনাস মোডে SQLite WAL-এ সিঙ্ক্রোনিকভাবে কমিট করে। ইভেন্ট আপডেট/ডিলিট ট্রিগার সাধারণ অ্যাপ্লিকেশন সম্পাদনা প্রতিরোধ করে; ফাইলসিস্টেম প্রশাসকরা ট্রাস্ট সীমানার মধ্যেই থাকে।

API অনুমোদন একটি বহনকারী টোকেন। লগইন অপারেশনগুলো সিরিয়ালাইজড এবং সময়-সীমাবদ্ধ। অ্যাকাউন্ট আপলোডগুলো একটি নিবেদিত 12 MiB এনকোড-বডি সীমা এবং 8 MiB ডিকোড-ফাইল সীমা ব্যবহার করে; সাধারণ API অনুরোধগুলো 16 KiB সীমা বজায় রাখে। রূপান্তর একটি কর্মী থ্রেডে চলে, আপলোডগুলো মেমরিতে রাখে, এবং যাচাইকৃত ব্রাউজারে স্বাভাবিকীকৃত ইনপুট ফেরত দেয়। QR লগইনের জন্য প্রতিটি ওয়ার্কস্পেসে একটি প্রার্থী, স্বল্পস্থায়ী শনাক্তকারী, অপেক্ষমাণ টাস্ক এবং স্পষ্ট বাতিলকরণ থাকে। শুধুমাত্র গৃহীত অনুমোদনই সক্রিয় ক্লায়েন্ট হয়। Telegram FloodWait একটি Retry-After মানের সাথে ফেরত আসে; API ত্রুটিতে ক্রেডেনশিয়াল এবং কাঁচা RPC ত্রুটির বার্তাগুলো প্রকাশ করা হয় না। এক্সপোর্টগুলো অ্যাসিঙ্ক ইভেন্ট লুপের বাইরে চলে এবং প্রতিটি ওয়ার্কস্পেস অনুযায়ী সিরিয়ালাইজ করা হয়। এগুলো একটি স্থিতিশীল রিড স্ন্যাপশট স্ট্রিম করে, এবং চলমান WAL লেখার সাথে সহাবস্থান করতে পারে। ওয়ার্কস্পেস কালেক্টররা প্রসেস/ইভেন্ট লুপ শেয়ার করে।

বর্তমান ইতিহাসের স্ন্যাপশট এবং লাইভ আপডেট একসঙ্গে থাকতে পারে। উভয়ই পৃথক পর্যবেক্ষণ, যেগুলো উৎস অনুযায়ী লেবেল করা হয়েছে; ডুপ্লিকেটগুলো নীরবে একত্রিত করা হয় না। অনুপস্থিত আইডি, মনগড়া মুছে ফেলা টেক্সট, জোরপূর্বক সদস্য তালিকাভুক্তি, বা স্বয়ংক্রিয় গ্রুপ যোগ করার ভিত্তিতে কোনো অনুমান প্রয়োগ করা হয়নি।

অপারেটর-সংক্রান্ত ব্যাখ্যার জন্য দেখুন [সংগ্রহ কীভাবে কাজ করে](https://phishdestroy.github.io/TgWitness/bn/docs/reference/collection/) এবং [অ্যাকাউন্ট ও সেশন ফরম্যাটসমূহ](https://phishdestroy.github.io/TgWitness/bn/docs/reference/accounts/)।

নেটওয়ার্ক কনফিগারেশন এনক্রিপ্টেড ভল্টে সংরক্ষিত থাকে। একটি রুট প্রয়োগ করলে পুরনো ক্লায়েন্ট বন্ধ হয়ে যায় এবং অসম্পূর্ণ লগইন বাতিল হয়ে যায়; পরবর্তী সংযোগগুলো সরাসরি কোনো ফ্যালব্যাক ছাড়াই সেই রুট ব্যবহার করে। একটি নতুন বাহ্যিক-কী ইনস্টলেশন প্রতিটি ওয়ার্কস্পেসের ফারনেট কী HKDF-SHA256 ব্যবহার করে একটি মাস্টার কী ফাইল এবং সংরক্ষিত র‍্যান্ডম সল্ট থেকে তৈরি করে। এটি গোপনীয়তাকে ডেটা ডিরেক্টরি থেকে আলাদাভাবে সুরক্ষিত রাখে, প্লেনটেক্সট জার্নাল/মিডিয়া বিষয়বস্তু নয়।

স্থানীয় ডেমো এন্ট্রি আলাদাভাবে তৈরি করা একটি প্রক্রিয়া সক্ষমতা ব্যবহার করে, কখনোই কনফিগার করা প্যানেল টোকেন ব্যবহার করে না। ইস্যু এবং গ্রহণ করার জন্য স্পষ্ট ডেমো মোড, অতিরিক্ত ওয়ার্কস্পেস বা অনুমোদিত সেশনবিহীন একটি সিন্থেটিক রুট, লুপব্যাক পিয়ার/হোস্ট, কোনো প্রক্সি ফরওয়ার্ডিং হেডার এবং কোনো ক্রস-অরিজিন ব্রাউজার অনুরোধ ছাড়া প্রয়োজন। লাইভ API-গুলো বেয়ারার প্রমাণীকরণ বজায় রাখে এবং ডেমো মোডে সংগ্রহ পরিবর্তনের অনুরোধ প্রত্যাখ্যান করে।
