منصوبے کے بارے میں

Domain Check ایک مستند ڈومین دستیابی چیکر ہے جو براہ راست رجسٹری RDAP سرورز سے استفسار کرتا ہے، اور RDAP کو WHOIS کے ICANN کے مقرر کردہ جانشین کے طور پر پیش کرتا ہے۔ README ان دونوں کا موازنہ کرتا ہے: RDAP سٹرکچرڈ JSON کے ساتھ HTTPS استعمال کرتا ہے، جبکہ WHOIS پلین ٹیکسٹ TCP پورٹ 43 استعمال کرتا ہے، .dev اور .app کی سپورٹ نہیں رکھتا، اور ایسی رجسٹری مخصوص تحریر واپس کرتا ہے جس کی پارسنگ مشکل ہوتی ہے۔ پروجیکٹ کے مطابق، ان کے ٹیسٹ میں whois نے ایک رجسٹرڈ ڈومین کو دستیاب بتایا، جبکہ RDAP تمام ٹیسٹ کیسز میں درست تھا، اور اس نے درستگی کے موازنے پر ایک تحقیقی دستاویز کا لنک بھی دیا ہے۔ انٹرفیسز: پروجیکٹ اسے استعمال کرنے کے تین طریقے فراہم کرتا ہے۔ ایک ویب UI ہے جو بغیر سائن اپ کے فارم فراہم کرتا ہے۔ ایک REST API /api/v1/ کے تحت موجود ہے جو سنگل ڈومین چیک، ملٹی-TLD چیک (جس میں کومہ سے الگ tlds پیرامیٹر پاس کیا جاتا ہے)، ایک بلک POST اینڈ پوائنٹ (جو 64 KB باڈی لیمٹ کے ساتھ 50 ڈومینز تک قبول کرتا ہے)، اور ایک ہیلتھ اینڈ پوائنٹ کی سپورٹ کرتا ہے۔ API کے جوابات JSON میں ہوتے ہیں اور ڈومین، دستیابی، TLD، چیک ٹائم اسٹیمپ، ڈیٹا سورس، کیش اسٹیٹس اور دورانیہ بتاتے ہیں؛ رجسٹرڈ ڈومینز کے لیے ان میں رجسٹرار، تخلیق اور میعاد ختم ہونے کی تاریخیں، نیم سرورز اور اسٹیٹس کوڈز بھی شامل ہوتے ہیں۔ ایک CLI 'check' اور 'bulk' سب کمانڈز، ملٹی-TLD چیکنگ، JSON یا CSV آؤٹ پٹ، بلک رنز کے لیے پروگریس انڈیکیٹر، قابل ترتیب کنکرنسی، اور دستاویزی ایگزٹ کوڈز فراہم کرتا ہے: 0 جب تمام چیک کیے گئے ڈومینز دستیاب ہوں، 1 جب کم از کم ایک لیا گیا ہو، اور 2 غلطی کی صورت میں۔ Domain Watch: ایک اختیاری فیچر جسے enable-watch فلیگ کے ذریعے فعال کیا جاتا ہے، واچڈ ڈومینز کی پولنگ کرتا ہے اور جب کوئی ڈومین رجسٹرڈ سے دستیاب میں تبدیل ہوتا ہے تو ویب ہک بھیجتا ہے۔ واچ رجسٹر کرنے پر ایک id، ویب ہک URL اور ایک HMAC سیکرٹ ملتا ہے؛ ترسیل میں ایک X-DomainCheck-Signature ہیڈر شامل ہوتا ہے جس میں sha256-پریفکسڈ سگنیچر ہوتا ہے جسے وصول کنندہ سیکرٹ کے ذریعے ویریفائی کرتا ہے۔ واچز سنگل فائر ہوتی ہیں، 90 دنوں کے بعد ختم ہو جاتی ہیں، 24 گھنٹوں میں فی IP 10 تک محدود ہیں جن کا ڈیفالٹ پولنگ وقفہ 15 منٹ ہے، اور ان میں SSRF پروٹیکشن، پرائیویٹ-IP بلاکنگ اور DNS ری بائنڈنگ کی روک تھام شامل بتائی گئی ہے۔ صرف ڈومین اور ویب ہک URL محفوظ کیے جاتے ہیں۔ ریٹ لمٹس فی IP نافذ ہیں: ویب UI کے لیے فی منٹ 10 درخواستیں، سنگل چیک API کے لیے 60 اور بلک کے لیے 5، حد سے زیادہ درخواستوں پر 429 اور Retry-After ہیڈر واپس آتا ہے۔ سیلف ہوسٹنگ اور کنفیگریشن: Domain Check ایک سنگل Go بائنری ہے جس کی کوئی رن ٹائم ڈیپینڈینسی نہیں ہے، یا ایک Docker امیج ہے؛ سورس سے بلڈ کرنے کے لیے Go 1.26 یا اس سے نیا ورژن درکار ہے۔ ٹیمپلیٹس اور اسٹیٹک اثاثے بائنری میں ایمبیڈڈ ہیں۔ سیٹنگز کو فلیگز، DOMCHECK_ انوائرمنٹ ویری ایبلز، یا YAML کنفیگ فائل کے طور پر دیا جا سکتا ہے، جس میں ترجیح فلیگز، پھر انوائرمنٹ ویری ایبلز، پھر کنفیگ فائل اور پھر ڈیفالٹس کو دی جاتی ہے۔ دستاویزی پیرامیٹرز میں لسن ایڈریس، LRU کیش سائز اور دستیاب اور رجسٹرڈ نتائج کے لیے الگ الگ کیش TTLs، IANA RDAP بوٹ اسٹریپ ریفریش وقفہ، X-Forwarded-For کی trust-proxy ہینڈلنگ، CORS اوریجنز، ایک Prometheus میٹرکس اینڈ پوائنٹ، لاگ فارمیٹ اور لیول، اور واچ ڈیٹا بیس پاتھ، پول وقفہ، زیادہ سے زیادہ TTL اور فی IP واچ لیمٹ شامل ہیں۔ Caddy اور nginx کے لیے ریورس پراکسی مثالیں دی گئی ہیں۔ آرکیٹیکچر: کوڈ کو ایک کمانڈ انٹری پوائنٹ اور انٹرنل پیکیجز میں تقسیم کیا گیا ہے جن میں چیک انجن (RDAP کلائنٹ، WHOIS فال بیک، DNS پری فلٹر، IANA بوٹ اسٹریپ لوڈر، LRU کیش، SSRF گارڈ، فی رجسٹری ریٹ لمٹینگ)، لیئرڈ کنفیگ، IDN-to-punycode اور publicsuffix TLD ایکسٹریکشن کے ساتھ ڈومین ویلیڈیشن، HTTP سرور اور ہینڈلرز، اور CLI شامل ہیں۔ README درخواست کے بہاؤ کو ویلیڈیشن، کیش لک اپ، واضح طور پر رجسٹرڈ ناموں کو شارٹ سرکٹ کرنے کے لیے DNS پری فلٹر، فی رجسٹری ریٹ لمٹینگ، RDAP استفسار، پارسنگ، کیشڈ اسٹوریج اور JSON جواب کے طور پر بیان کرتا ہے۔ ڈیفالٹ کیش TTLs دستیاب نتائج کے لیے 5 منٹ، رجسٹرڈ نتائج کے لیے 1 گھنٹہ اور غلطیوں کے لیے 30 سیکنڈ بتائے گئے ہیں۔ سیکیورٹی اور مینٹیننس: README میں SSRF پروٹیکشن، سیکیورٹی ہیڈرز (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy)، ایک نان رُوٹ Docker صارف اور بغیر کسی اینالیٹکس، کوکیز یا ڈیٹا ریٹینشن کے زیرو ٹریکنگ کا ذکر ہے۔ ڈویلپمنٹ میں go test، فز ٹیسٹنگ اور golangci-lint استعمال ہوتا ہے، اور ریپوزٹری میں جارحانہ خودکار git گربج کلیکشن سیٹنگز کا ذکر ہے۔ پروجیکٹ MIT لائسنس کے تحت ہے اور اسے سیلف ہوسٹڈ git انسٹنس کے ریڈ-اونلی GitHub مرر کے طور پر بیان کیا گیا ہے، جس کے آخر میں ایک مرر ٹیسٹ نوٹ موجود ہے۔