প্রকল্প সম্পর্কে
Domain Check হলো একটি অথরিটেটিভ ডোমেইন অ্যাভেইলেবিলিটি চেকার যা সরাসরি রেজিস্ট্রি RDAP সার্ভার কুয়েরি করে। RDAP-কে WHOIS-এর ICANN-ম্যান্ডেটেড উত্তরসূরি হিসেবে উপস্থাপন করা হয়েছে। README-তে এই দুটির তুলনা করা হয়েছে: RDAP স্ট্রাকচারড JSON সহ HTTPS ব্যবহার করে, যেখানে WHOIS প্লেইনটেক্সট TCP পোর্ট ৪৩ ব্যবহার করে, .dev এবং .app সাপোর্ট করে না এবং রেজিস্ট্রি-নির্দিষ্ট টেক্সট রিটার্ন করে যা পার্স করা কঠিন। প্রজেক্টটি উল্লেখ করেছে যে তাদের পরীক্ষায় whois একটি রেজিস্টার্ড ডোমেইনকে অ্যাভেইলেবল হিসেবে রিপোর্ট করেছে, যেখানে RDAP সব টেস্ট কেসে সঠিক ছিল এবং এর সাথে একটি অ্যাকুরেসি তুলনা সংক্রান্ত রিসার্চ ডকুমেন্টের লিঙ্ক দেওয়া হয়েছে।
ইন্টারফেস: প্রজেক্টটি কুয়েরি করার জন্য তিনটি উপায় অফার করে। একটি ওয়েব UI যা সাইন-আপ ছাড়াই ফর্ম প্রদান করে। একটি REST API যা /api/v1/ এর অধীনে থাকে এবং সিঙ্গেল-ডোমেইন চেক, কমা-সেপারেটেড tlds প্যারামিটারের মাধ্যমে মাল্টি-TLD চেক, সর্বোচ্চ ৫০টি ডোমেইন সহ একটি বাল্ক POST এন্ডপয়েন্ট (৬৪ KB বডি লিমিট) এবং একটি হেলথ এন্ডপয়েন্ট সাপোর্ট করে। API রেসপন্সগুলো JSON ফরম্যাটে থাকে এবং ডোমেইন, অ্যাভেইলেবিলিটি, TLD, চেক টাইমস্ট্যাম্প, ডেটা সোর্স, ক্যাশ স্ট্যাটাস এবং ডিউরেশন রিপোর্ট করে; রেজিস্টার্ড ডোমেইনের ক্ষেত্রে এতে রেজিস্ট্রার, ক্রিয়েশন এবং এক্সপায়ারি ডেট, নেমসার্ভার এবং স্ট্যাটাস কোড অন্তর্ভুক্ত থাকে। একটি CLI যা check এবং bulk সাবকমান্ড, মাল্টি-TLD চেকিং, JSON বা CSV আউটপুট, বাল্ক রানের জন্য প্রগ্রেস ইন্ডিকেটর, কনফিগারযোগ্য কনকারেন্সি এবং ডকুমেন্ট করা এক্সিট কোড প্রদান করে: সব চেক করা ডোমেইন অ্যাভেইলেবল হলে ০, অন্তত একটি টেকেন হলে ১, এবং এরর হলে ২।
ডোমেইন ওয়াচ: enable-watch ফ্ল্যাগ দ্বারা সক্রিয় একটি ঐচ্ছিক ফিচার যা ওয়াচ করা ডোমেইনগুলো পোল করে এবং কোনো ডোমেইন রেজিস্টার্ড থেকে অ্যাভেইলেবল হলে একটি ওয়েবহুক পাঠায়। একটি ওয়াচ রেজিস্টার করলে একটি id, ওয়েবহুক URL এবং একটি HMAC সিক্রেট রিটার্ন করে; ডেলিভারিতে একটি X-DomainCheck-Signature হেডার থাকে যাতে sha256-প্রিফিক্সড সিগনেচার থাকে যা রিসিভাররা সিক্রেটের মাধ্যমে যাচাই করে। ওয়াচগুলো সিঙ্গেল-ফায়ার, ৯০ দিন পর এক্সপায়ার হয়, প্রতি ২৪ ঘণ্টায় প্রতি আইপি-তে ১০টির সীমাবদ্ধতা থাকে এবং ডিফল্ট পোলিং ইন্টারভ্যাল ১৫ মিনিট। এতে SSRF সুরক্ষা, প্রাইভেট-আইপি ব্লকিং এবং DNS রিবাইন্ডিং প্রতিরোধ ব্যবস্থা রয়েছে। শুধুমাত্র ডোমেইন এবং ওয়েবহুক URL সংরক্ষণ করা হয়।
আইপি প্রতি রেট লিমিট কার্যকর করা হয়েছে: ওয়েব UI-এর জন্য প্রতি মিনিটে ১০টি রিকোয়েস্ট, সিঙ্গেল-চেক API-এর জন্য ৬০টি এবং বাল্কের জন্য ৫টি; লিমিটের বেশি রিকোয়েস্ট করলে ৪২৯ এবং একটি Retry-After হেডার রিটার্ন করে।
সেলফ-হোস্টিং এবং কনফিগারেশন: Domain Check একটি সিঙ্গেল Go বাইনারি যার কোনো রানটাইম ডিপেন্ডেন্সি নেই, অথবা একটি Docker ইমেজ; সোর্স থেকে বিল্ড করতে Go ১.২৬ বা তার নতুন ভার্সন প্রয়োজন। টেমপ্লেট এবং স্ট্যাটিক অ্যাসেট বাইনারিতে এমবেডেড থাকে। সেটিংস ফ্ল্যাগ, DOMCHECK_ এনভায়রনমেন্ট ভেরিয়েবল বা একটি YAML কনফিগ ফাইলের মাধ্যমে দেওয়া যেতে পারে, যেখানে অগ্রাধিকারের ক্রম হলো: ফ্ল্যাগ > এনভায়রনমেন্ট ভেরিয়েবল > কনফিগ ফাইল > ডিফল্ট। ডকুমেন্ট করা প্যারামিটারগুলোর মধ্যে রয়েছে লিসেন অ্যাড্রেস, LRU ক্যাশ সাইজ এবং অ্যাভেইলেবল ও রেজিস্টার্ড রেজাল্টের জন্য আলাদা ক্যাশ TTL, IANA RDAP বুটস্ট্র্যাপ রিফ্রেশ ইন্টারভ্যাল, X-Forwarded-For-এর ট্রাস্ট-প্রক্সি হ্যান্ডলিং, CORS অরিজিন, একটি Prometheus মেট্রিক্স এন্ডপয়েন্ট, লগ ফরম্যাট এবং লেভেল, এবং ওয়াচ ডেটাবেস পাথ, পোল ইন্টারভ্যাল, সর্বোচ্চ TTL এবং প্রতি আইপি ওয়াচ লিমিট। Caddy এবং nginx-এর জন্য রিভার্স প্রক্সি উদাহরণ দেওয়া হয়েছে।
আর্কিটেকচার: কোডটি একটি কমান্ড এন্ট্রি পয়েন্ট এবং ইন্টারনাল প্যাকেজগুলোতে বিভক্ত, যার মধ্যে রয়েছে চেক ইঞ্জিন (RDAP ক্লায়েন্ট, WHOIS ফলব্যাক, DNS প্রি-ফিল্টার, IANA বুটস্ট্র্যাপ লোডার, LRU ক্যাশ, SSRF গার্ড, প্রতি-রেজিস্ট্রি রেট লিমিটিং), লেয়ারড কনফিগ, IDN-to-punycode এবং publicsuffix TLD এক্সট্রাকশন সহ ডোমেইন ভ্যালিডেশন, HTTP সার্ভার ও হ্যান্ডলার এবং CLI। README-তে রিকোয়েস্ট ফ্লো হিসেবে ভ্যালিডেশন, ক্যাশ লুকআপ, স্পষ্টভাবে রেজিস্টার্ড নামগুলো শর্ট-সার্কিট করতে DNS প্রি-ফিল্টার, প্রতি-রেজিস্ট্রি রেট লিমিটিং, RDAP কুয়েরি, পার্সিং, ক্যাশড স্টোরেজ এবং JSON রেসপন্স বর্ণনা করা হয়েছে। ডিফল্ট ক্যাশ TTL হিসেবে অ্যাভেইলেবল রেজাল্টের জন্য ৫ মিনিট, রেজিস্টার্ড রেজাল্টের জন্য ১ ঘণ্টা এবং এররের জন্য ৩০ সেকেন্ড তালিকাভুক্ত করা হয়েছে।
নিরাপত্তা এবং রক্ষণাবেক্ষণ: README-তে SSRF সুরক্ষা, সিকিউরিটি হেডার (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy), একটি নন-রুট Docker ইউজার এবং কোনো অ্যানালিটিক্স, কুকিজ বা ডেটা রিটেনশন ছাড়া জিরো ট্র্যাকিংয়ের কথা উল্লেখ করা হয়েছে। ডেভেলপমেন্টে go test, ফাজ টেস্টিং এবং golangci-lint ব্যবহৃত হয় এবং রিপোজিটরিতে অ্যাগ্রেসিভ অটোমেটিক git গারবেজ কালেকশন সেটিংস নোট করা হয়েছে। প্রজেক্টটি MIT লাইসেন্সপ্রাপ্ত এবং এটি একটি সেলফ-হোস্টেড git ইনস্ট্যান্সের রিড-অনলি GitHub মিরর হিসেবে বর্ণিত।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.