خرابی کے کوڈ
یہ DAT کی سرکاری طور پر معاونت یافتہ سروس لائبریریوں کے مشترکہ خرابی کوڈ ہیں۔
ہر کوڈ کے ساتھ اثر اور دوبارہ کوشش دو قدریں لگتی ہیں، اور بعض کے ساتھ اضافی طور پر مشتبہ کا لیبل بھی لگتا ہے۔
اثر — سروس پر پڑنے والا نقصان
یہ الرٹ لگانے کا معیار ہے۔ صرف یہی دیکھا جاتا ہے کہ "کیا اس وقت سروس رک گئی ہے؟"
| اثر | مطلب | مثال |
|---|---|---|
| نازک | سروس یا کوئی خاص فعل رک جاتا ہے۔ اجرا ناممکن، ہم آہنگی کی مستقل ناکامی، ابتدائیہ کی ناکامی | اجرا کرنے والے سرور کے پاس استعمال کے قابل ایک بھی سرٹیفکیٹ نہیں |
| جزوی | کچھ درخواستیں یا چکر ناکام ہوتے ہیں مگر سروس چلتی رہتی ہے۔ عموماً خود بحال ہو جاتی ہے | CMS کا ایک چکر ناکام۔ موجودہ سرٹیفکیٹس سے کام جاری |
| بے اثر | ایک درخواست مسترد کر کے بات ختم | چھیڑ چھاڑ شدہ ٹوکن آیا۔ چھان کر نکال دینا کافی ہے |
بے اثر الرٹ کا ہدف نہیں۔ اگر ایک بار غلط ان پٹ آنے پر تمام ذمہ داروں کو دیکھنا پڑے تو الرٹ بے معنی ہو جاتا ہے۔
مشتبہ — مسلسل ہو تو تحقیق
مشتبہ لیبل والے کوڈ ایک بار آنے پر معمول کے آپریشن کا حصہ ہیں۔ کلائنٹ کسی بھی وقت غلط قدر بھیج سکتا ہے، اور اسے چھان کر نکالنا ہی لائبریری کا اصل کام ہے۔
البتہ یہ خرابیاں اگر مسلسل، یا کسی خاص ماخذ سے جھنڈ کی صورت میں آئیں تو دو میں سے ایک بات ہے۔
- کنفیگریشن کی خرابی — تعیناتی غلط ہے، یا پرانے ورژن کے کلائنٹ باقی ہیں، یا سرٹیفکیٹس میل نہیں کھاتے۔
- ہیکنگ کی کوشش — ٹوکن یا کی میں چھیڑ چھاڑ کر کے تصدیق سے گزرنے کی کوشش، یا درست قدر ڈھونڈنے کی جستجو۔
اسی لیے ان کوڈز کے گنتی کو اشاریے کے طور پر رکھنا درست ہے۔ صرف حد سے تجاوز پر اطلاع دینا کافی ہے۔
دوبارہ کوشش
| دوبارہ کوشش | مطلب |
|---|---|
| عارضی | بیک آف کے بعد دوبارہ کوشش سے حل ہو جاتا ہے |
| مستقل | دوبارہ کوشش ممنوع۔ کنفیگریشن یا ان پٹ درست کرنا ہوگا |
| حالت | خرابی نہیں بلکہ ایک اشارہ ہے |
ٹوکن
موصولہ ٹوکن سٹرنگ میں خود مسئلہ۔
DAT_TOKEN_MALFORMED نقطوں سے الگ ہونے والے حصے پانچ نہیں ہیں، یا expire خالص اعشاری عدد نہیں، یا cid خالص سولہ عددی نہیں، یا plain یا secure base64url نہیں، یا کوئی عددی فیلڈ صحیح عدد کی حد سے تجاوز کر گیا۔
arrow_forwardدرخواست مسترد کریں
DAT_TOKEN_EXPIREDexpire <= now۔ عین وقت بھی میعاد ختم شمار ہوتا ہے — یعنی expire == now ہو تو پہلے ہی ختم شدہ سمجھا جاتا ہے۔
arrow_forwardٹوکن دوبارہ جاری کرنے کی ترغیب
DAT_TOKEN_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی ٹوکن خرابی۔
arrow_forwardلاگ دیکھیں
میعاد کا خاتمہ اور صیغے کی خرابی لازماً مختلف ہیں
ردعمل بالکل الٹ ہے — میعاد کا خاتمہ عمر کا معمول کا اختتام ہے سو ٹوکن تجدید کرا دینا کافی ہے، جبکہ صیغے کی خرابی کا مطلب ہے کہ ٹوکن سرے سے ہمارا جاری کردہ ہی نہیں، لہٰذا اسے مسترد کرنا ہوگا۔
تجزیہ پہلے ساخت کو حتمی کرتا ہے، پھر قدروں کو دیکھتا ہے۔ "1.2.3" جیسی ناقص حصوں والی سٹرنگ ختم شدہ ٹوکن نہیں بلکہ سرے سے ٹوکن ہی نہیں، اس لیے وہ DAT_TOKEN_MALFORMED ہے۔
expire فیلڈ میں +100 جیسی علامت لگی ہو تو یہ بھی میعاد کا معاملہ نہیں بلکہ صیغے کی خرابی ہے۔ صرف خالص ASCII ہندسے قبول ہیں۔
سرٹیفکیٹ
سرٹیفکیٹ سٹرنگ کے صیغے کا، اور اس سرٹیفکیٹ کو اس وقت استعمال کیا جا سکتا ہے یا نہیں، اس کا مسئلہ۔
DAT_CERT_MALFORMED نقطوں سے الگ ہونے والے حصے آٹھ نہیں ہیں، یا cid، start، duration، ttl کا تجزیہ ناکام ہوا، یا کی فیلڈ base64url نہیں، یا start + duration + ttl نے u64 کی حد پار کر لی۔
arrow_forwardسرٹیفکیٹ دوبارہ تعینات کریں
DAT_CERT_EXPIREDstart + duration + ttl < now۔ مکمل طور پر ختم شدہ حالت جس میں نہ اجرا ممکن ہے نہ تصدیق۔
arrow_forwardسرٹیفکیٹ کی تجدید
DAT_CERT_NOT_YET_ISSUABLEnow < start۔ اجرا کی کھڑکی ابھی کھلی نہیں۔
arrow_forwardانتظار
DAT_CERT_ISSUANCE_ENDEDnow > start + duration ہے مگر ttl باقی ہے۔ اجرا نہیں ہو سکتا، صرف تصدیق ممکن ہے۔
arrow_forwardنیا سرٹیفکیٹ تعینات کریں
DAT_CERT_VERIFY_ONLYدستخطی نجی کی کے بغیر صرف عوامی کی رکھنے والا سرٹیفکیٹ۔ تصدیق ہو جاتی ہے مگر اجرا ناممکن ہے۔
arrow_forwardتعیناتی کی ترتیب دیکھیں
DAT_CERT_NOT_FOUND ٹوکن کے cid سے متعلقہ سرٹیفکیٹ ہمارے پاس نہیں۔ یا تو جعلی ٹوکن ہے یا غلط تعیناتی۔
arrow_forwardدرخواست مسترد کریں
DAT_CERT_NOT_SYNCED وہ cid ابھی CMS سے موصول نہیں ہوا۔ نیا سرٹیفکیٹ تعینات ہونے کے فوراً بعد تھوڑی دیر کے لیے ہوتا ہے۔
arrow_forwardہم آہنگی کے بعد دوبارہ کوشش
DAT_CERT_DUPLICATE_CID import کی جانے والی فہرست میں ایک ہی cid دو یا زیادہ بار موجود ہے۔
arrow_forwardسرور کا جواب دیکھیں
DAT_CERT_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی سرٹیفکیٹ خرابی۔
arrow_forwardلاگ دیکھیں
DAT_CERT_NOT_FOUND اور DAT_CERT_NOT_SYNCED کی ظاہری علامت ایک جیسی ہے مگر ردعمل مختلف۔ پہلا وہ cid ہے جو ہم نے کبھی جاری ہی نہیں کیا سو انتظار سے کچھ نہیں ہوتا، جبکہ دوسرا ہم آہنگی ہوتے ہی حل ہو جاتا ہے۔
DAT_CERT_NOT_FOUND ایک بار آئے تو بس چھان کر نکال دینا کافی ہے، مگر اچانک بڑھ جائے تو مطلب ہے کہ تعیناتی بگڑ گئی ہے یا جعلی ٹوکن گردش کر رہے ہیں۔
دستخط
DAT_SIG_MISMATCHدستخط کی تصدیق عدم مطابقت پر ختم ہوئی۔ HMAC کی قدر مختلف ہے یا ECDSA verify نے false دیا۔
arrow_forwardسیشن بند کریں، سیکیورٹی لاگ
DAT_SIG_MALFORMED دستخط کا حصہ خالی ہے، یا base64url نہیں، یا ECDSA کی r‖s لمبائی منحنی سے میل نہیں کھاتی، یا DER میں تبدیلی ناکام ہوئی۔
arrow_forwardدرخواست مسترد کریں
DAT_SIG_KEY_MISSINGverify-only کی سے دستخط کی کوشش کی گئی۔ یعنی رن ٹائم پر نجی کی موجود نہیں۔
arrow_forwardاجرا سرور کی ترتیب دیکھیں
DAT_SIG_BACKENDدستخط یا تصدیق کا عمل ہی نہ چل سکا۔ غلط کی قسم، آزاد شدہ ہینڈل، یا خفیہ نگاری لائبریری کی اندرونی خرابی۔
arrow_forwardکی کی قسم اور لائبریری دیکھیں
DAT_SIG_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی دستخط کی خرابی۔
arrow_forwardلاگ دیکھیں
عدم مطابقت اور بیک اینڈ کی ناکامی کو خلط ملط نہ کریں
دونوں کوڈز کے محور بالکل الٹ ہیں۔
DAT_SIG_MISMATCH— آنے والا دستخط بس میل نہیں کھاتا، سو سروس پر کوئی اثر نہیں، البتہ مسلسل ہو تو مشتبہ کا معاملہ بن جاتا ہے۔DAT_SIG_BACKEND— تصدیق کا عمل ہی نہ چل سکا، سو یہ ہماری طرف کا مسئلہ ہے، مشتبہ کا معاملہ نہیں۔
اگر غلط کی قسم یا لائبریری کے بگ کو "دستخط کی عدم مطابقت" کہہ کر رپورٹ کیا جائے تو درحقیقت ہمارے اپنے کوڈ کی خرابی حملے کے اشاریوں میں گھل مل جاتی ہے۔ اور اس کے برعکس اگر حقیقی جعل سازی بیک اینڈ خرابی میں شمار ہو جائے تو وہ مشتبہ اشاریوں سے سرے سے نکل جاتی ہے۔
خفیہ کاری
secure پے لوڈ کی خفیہ کاری اور کشائی کا مسئلہ۔
DAT_CRYPTO_TAG_MISMATCHAES-GCM کا تصدیقی ٹیگ میل نہیں کھاتا۔ یا تو secure میں چھیڑ چھاڑ ہوئی ہے یا سرٹیفکیٹ کی مختلف ہے۔
arrow_forwardسیشن بند کریں، سیکیورٹی لاگ
DAT_CRYPTO_DATA_INVALID خفیہ متن خالی نہیں مگر IV (12 بائٹ) سے چھوٹا یا برابر ہے، یا ان پٹ نفاذ کی حد (INT_MAX وغیرہ) سے تجاوز کر گیا۔
arrow_forwardدرخواست مسترد کریں
DAT_CRYPTO_BACKENDخفیہ کاری یا کشائی کا عمل نہ چل سکا۔ GCM کی سپورٹ نہ رکھنے والا پلیٹ فارم یا سیاق کی ابتدائیہ کی ناکامی۔
arrow_forwardپلیٹ فارم سپورٹ دیکھیں
DAT_CRYPTO_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی خفیہ کاری/کشائی کی خرابی۔
arrow_forwardلاگ دیکھیں
خالی secure پے لوڈ خرابی نہیں ہے۔ خالی ان پٹ خالی آؤٹ پٹ بن جاتی ہے اور کوئی کوڈ جاری نہیں ہوتا۔
دستخط کی تصدیق چھوڑ دینے والے راستے پر GCM ٹیگ ہی واحد سالمیت کی جانچ ہے۔ اسی لیے DAT_CRYPTO_TAG_MISMATCH کو کشائی کی دیگر ناکامیوں کے ساتھ ایک ہی کوڈ میں نہیں باندھا جاتا۔
کی
DAT_KEY_INVALID اعلان کردہ الگورتھم اور کی کی لمبائی میں عدم مطابقت (HMAC 32/48/64، AES 16/32)، یا منحنی سے باہر کا نقطہ، یا d ∉ [1,n-1]، یا غیر دبی ہوئی (0x04) صورت نہ ہونا، یا نجی اور عوامی کی کا آپس میں جوڑا نہ ہونا۔
arrow_forwardکی تبدیل کریں
DAT_KEY_VERIFY_ONLY_UNSUPPORTEDHMAC خاندان سے verify-only برآمد کرنے کی درخواست دی گئی۔
arrow_forwardالگورتھم تبدیل کریں
DAT_KEY_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی کی کی خرابی۔
arrow_forwardلاگ دیکھیں
دیکھنے میں ملتے جلتے مگر مختلف تین:
| کوڈ | مطلب |
|---|---|
DAT_KEY_VERIFY_ONLY_UNSUPPORTED | الگورتھم کی ساختی حد۔ HMAC متناسق کی ہے سو اس میں عوامی کی کا تصور ہی نہیں |
DAT_SIG_KEY_MISSING | رن ٹائم حالت۔ اس وقت اس کی میں نجی کی موجود نہیں |
DAT_CERT_VERIFY_ONLY | تعیناتی کی صورت۔ یہ سرٹیفکیٹ صرف تصدیق کے لیے تعینات ہوا ہے |
منیجر
سرٹیفکیٹ رکھنے اور اجرا و تصدیق میں استعمال کرنے والے آبجیکٹ کی حالت۔
DAT_MANAGER_NO_CERTIFICATEایک بھی سرٹیفکیٹ موجود نہیں۔ یا تو import سے پہلے ہے یا CMS کی پہلی ہم آہنگی ناکام ہوئی ہے۔
arrow_forwardCMS کنکشن دیکھیں
DAT_MANAGER_NO_ISSUABLE_CERTIFICATEسرٹیفکیٹ تو ہیں مگر اس وقت اجرا کے لیے قابلِ استعمال کوئی نہیں۔ سبب ساتھ بھیجا جاتا ہے۔
arrow_forwardسبب (cause) دیکھ کر فیصلہ — نیچے جدول
DAT_MANAGER_DISPOSEDپہلے سے آزاد کیا جا چکا منیجر یا سرٹیفکیٹ استعمال کیا گیا۔
arrow_forwardکالنگ کوڈ درست کریں
DAT_MANAGER_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی منیجر کی خرابی۔
arrow_forwardلاگ دیکھیں
DAT_MANAGER_NO_ISSUABLE_CERTIFICATE کا سبب (cause) چار میں سے ایک ہوتا ہے۔ ہر سبب کے لیے کرنے کا کام بالکل مختلف ہے۔
| سبب | مطلب | دوبارہ کوشش | ردعمل |
|---|---|---|---|
DAT_CERT_NOT_YET_ISSUABLE | اجرا کی کھڑکی شروع ہونے سے پہلے | عارضی | انتظار سے حل ہو جاتا ہے |
DAT_CERT_ISSUANCE_ENDED | اجرا کی کھڑکی ختم، صرف تصدیق ممکن | مستقل | نیا سرٹیفکیٹ تعینات کرنا ہوگا |
DAT_CERT_EXPIRED | موجود تمام سرٹیفکیٹس ختم شدہ | مستقل | سرٹیفکیٹ کی تجدید درکار ہے |
DAT_CERT_VERIFY_ONLY | موجود تمام سرٹیفکیٹس صرف تصدیقی | مستقل | تعیناتی کی ترتیب کی غلطی ہے |
اگر اجرا کرنے والا سرور صرف تصدیقی سرٹیفکیٹ وصول کرنے پر ترتیب دیا جائے تو DAT_CERT_VERIFY_ONLY آتا ہے۔ انتظار سے یہ کبھی حل نہیں ہوتا سو دوبارہ کوشش کا ہدف نہیں۔
کنفیگریشن
کالر کی دی گئی قدر کا مسئلہ۔ CONFIG خاندان کے سب ایسی خرابیاں ہیں جن میں کوڈ درست کرنا پڑتا ہے، اور آپریشن کے دوران آئیں تو مطلب ہے کہ تعیناتی غلط ہے۔
DAT_CONFIG_ALG_UNSUPPORTED نامعلوم الگورتھم نام۔ وائر نوٹیشن (ECDSA-P256، IV-AES256-GCM) سے بالکل مطابقت ضروری ہے۔
arrow_forwardالگورتھم کا نام دیکھیں
DAT_CONFIG_ARGUMENT_INVALID لازمی آرگیومنٹ null ہے، یا مجاز حد سے باہر (منفی وقت کی قدر، interval <= 0)، یا غیر معاون قسم (متحرک قسم والی زبانوں میں payload کو عدد یا بولین دینا)، یا دستخط کے لیے دیا گیا body خالی ہے۔
arrow_forwardکالنگ کوڈ درست کریں
DAT_CONFIG_URI_INVALIDCMS سرور کا URI معیار سے باہر ہے۔ تجزیہ ناممکن، سکیم http/https نہیں، یا اس کے ساتھ راستہ یا کوئری لگی ہوئی ہے۔
arrow_forwardURI درست کریں
DAT_CONFIG_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی کنفیگریشن خرابی۔
arrow_forwardلاگ دیکھیں
اندرونی
عمل درآمد کے ماحول اور رن ٹائم کا مسئلہ۔
DAT_INTERNAL_UNAVAILABLE خفیہ نگاری بیک اینڈ یا رن ٹائم API سرے سے موجود ہی نہیں۔ crypto.subtle کی عدم موجودگی، AES-GCM کی سپورٹ نہ رکھنے والا پلیٹ فارم، یا رن ٹائم ورژن کا کم ہونا۔
arrow_forwardتعیناتی اور پلیٹ فارم دیکھیں
DAT_INTERNAL_UNKNOWNمیموری مختص کرنے کی ناکامی، بے ترتیب عدد کی تخلیق کی ناکامی، لاک حاصل کرنے کی ناکامی، یا ایسی شاخ تک پہنچنا جو ناقابلِ رسائی ڈیزائن کی گئی تھی۔
arrow_forwardلاگ دیکھیں
DAT_INTERNAL_UNAVAILABLE تعیناتی کا ماحول درست کرنے سے حل ہو جاتا ہے، جبکہ DAT_INTERNAL_UNKNOWN عموماً رن ٹائم کی خرابی یا لائبریری کا بگ ہوتا ہے۔
CMS ہم آہنگی
اگر CMS ہم آہنگی استعمال نہ کی جائے تو یہ کوڈ نہیں آتے۔
DAT_CMS_UNREACHABLEDNS کی ناکامی، کنکشن سے انکار، TLS کی ناکامی، ٹائم آؤٹ۔ ٹائم آؤٹ الگ کوڈ نہیں بلکہ اسی میں شامل ہے — کیونکہ ردعمل ایک ہی ہے۔
arrow_forwardبیک آف کے بعد دوبارہ کوشش
DAT_CMS_UNAUTHORIZEDسرور نے 401 سے جواب دیا۔ ٹوکن موجود نہیں یا غلط ہے۔
arrow_forwardٹوکن کی ترتیب دیکھیں
DAT_CMS_FORBIDDENسرور نے 403 سے جواب دیا۔ ٹوکن درست ہے مگر اس اینڈ پوائنٹ کا اختیار نہیں۔
arrow_forwardٹوکن کا درجہ دیکھیں
DAT_CMS_ENDPOINT_NOT_FOUNDسرور نے 404 سے جواب دیا۔ URL غلط ہے۔
arrow_forwardURL کی ترتیب دیکھیں
DAT_CMS_SERVER_ERRORسرور نے 5xx سے جواب دیا۔
arrow_forwardبیک آف کے بعد دوبارہ کوشش
DAT_CMS_HTTP_STATUSاوپر شامل نہ ہونے والا غیر 2xx جواب۔
arrow_forwardسٹیٹس کوڈ دیکھیں
DAT_CMS_MALFORMEDجواب میں ورژن کی سطر نہیں، یا ورژن کی سطر خالص اعشاری عدد نہیں، یا حد سے تجاوز کر گئی۔
arrow_forwardسرور کا ورژن دیکھیں
DAT_CMS_IMPORT_FAILED جواب تو مل گیا مگر سرٹیفکیٹ لاگو نہ ہو سکے۔ سبب cause میں شامل ہوتا ہے۔
arrow_forwardcause میں CERT_* / KEY_* دیکھیں
DAT_CMS_VERSION_RESETسرور نے ہم سے پرانا ورژن واپس کیا۔ یہ مکمل دوبارہ ہم آہنگی کا حکم ہے۔
arrow_forwardخودکار طور پر سنبھال لیا جاتا ہے
DAT_CMS_NOT_SYNCEDابھی تک ایک بار بھی ہم آہنگی کامیاب نہیں ہوئی۔
arrow_forwardپہلی ہم آہنگی کا انتظار
DAT_CMS_SYNC_IN_PROGRESSپچھلی ہم آہنگی ابھی چل رہی ہے اس لیے یہ چکر چھوڑ دیا گیا۔ یہ خرابی نہیں ہے۔
DAT_CMS_NOT_SUPPORTEDCMS کی سہولت بلڈ میں شامل نہیں۔ یا تو فیچر فعال نہیں یا CURL شامل نہیں۔
arrow_forwardبلڈ آپشن دیکھیں
DAT_CMS_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی CMS خرابی۔
arrow_forwardلاگ دیکھیں
جن کوڈز میں ہم آہنگی مستقل ناکامی قرار پاتی ہے (UNAUTHORIZED، FORBIDDEN، ENDPOINT_NOT_FOUND، MALFORMED، IMPORT_FAILED) وہ سب نازک ہیں۔ دوبارہ کوشش سے حل نہیں ہوتے جبکہ سرٹیفکیٹ مسلسل ختم ہوتے رہتے ہیں، سو نظر انداز کرنے پر سروس لازماً رک جائے گی۔
اس کے برعکس UNREACHABLE اور SERVER_ERROR جزوی ہیں۔ موجودہ سرٹیفکیٹس سے کام چلتا رہتا ہے اور اگلے چکر میں خود بحال ہو جاتے ہیں — البتہ مسلسل ناکامی بالآخر انہیں نازک میں بدل دیتی ہے۔ لہٰذا مسلسل ناکامیوں کی تعداد کی بنیاد پر الرٹ لگائیں۔
ہم آہنگی کی ناکامی استثنا کے طور پر نہیں پھینکی جاتی
پہلی ہم آہنگی ناکام ہو تب بھی منیجر درست واپس ہوتا ہے — کیونکہ دیر سے ہی سہی، ہم آہنگ ہو جانا بہتر ہے۔ اس کے بجائے ناکامی ایک قابلِ استفسار حالت کے طور پر باقی رہتی ہے۔
| کلائنٹ | استفسار کا طریقہ |
|---|---|
| Rust | manager.last_error().await |
| Go | manager.LastError() |
| JavaScript | manager.lastError() |
| Python | manager.last_error() |
| Ruby | manager.last_error |
| Java/Kotlin | manager.lastError |
| C# | manager.LastError |
| C/C++ | dat_cms_manager_last_error(m) |
اگر ایک بار بھی کامیابی نہ ہوئی ہو تو DAT_CMS_NOT_SYNCED، اور سب ٹھیک ہو تو خالی ہوتا ہے۔
سرور
یہ CMS سرور کے جاری کردہ کوڈ ہیں۔ کلائنٹ انہیں بناتا نہیں، صرف وصول کرتا ہے۔
DAT_AUTH_UNAUTHORIZEDAuthorization ہیڈر موجود نہیں، یا ٹوکن کسی بھی درجے میں رجسٹرڈ نہیں۔
DAT_AUTH_FORBIDDENٹوکن رجسٹرڈ تو ہے مگر وہ درجہ نہیں جو یہ اینڈ پوائنٹ مانگتا ہے۔
DAT_AUTH_DISABLEDایک بھی ٹوکن مقرر نہ ہونے کی وجہ سے توثیق سرے سے غیر فعال ہے۔ سرٹیفکیٹ اجرا کی API تک بغیر توثیق کے کھلی ہے۔ یہ جواب میں نہیں جاتا بلکہ صرف بوٹ لاگ میں درج ہوتا ہے۔
arrow_forwardفوراً ٹوکن مقرر کریں
DAT_REQ_MALFORMEDراستے یا کوئری کے پیرامیٹر سمجھ نہیں آئے، یا آرگیومنٹ مجاز حد سے باہر ہے (منفی delay، دس سال سے زیادہ وغیرہ)۔
DAT_REQ_ALG_UNSUPPORTEDدرخواست کے راستے میں دیا گیا الگورتھم نام معلوم نہیں۔
DAT_REQ_NOT_FOUNDایسا کوئی راستہ نہیں یا میتھڈ مختلف ہے۔
DAT_REQ_TOO_LARGEدرخواست کے body کا حجم حد سے تجاوز کر گیا۔
DAT_REQ_UNKNOWNاوپر کسی زمرے میں درجہ بند نہ ہونے والی درخواست کی خرابی۔
DAT_STORE_UNAVAILABLEDB کنکشن ٹوٹنا، کنکشن پول کا ختم ہونا، لاک کا تنازع، ٹائم آؤٹ۔ یہ 503 استعمال کرنے والا واحد کوڈ ہے، جس سے کلائنٹ کو معلوم ہوتا ہے کہ "یہ انتظار سے ٹھیک ہو جائے گا"۔
arrow_forwardبیک آف کے بعد دوبارہ کوشش
DAT_STORE_UNKNOWNپڑھنے یا لکھنے کی ناکامی، ٹیبل کا نہ ہونا، سکیما کی عدم مطابقت، محفوظ شدہ سرٹیفکیٹ قطار کا خراب ہونا۔
arrow_forwardDB کی حالت دیکھیں
جواب کا لفافہ:
{
"code": "DAT_REQ_ALG_UNSUPPORTED",
"details": { "algorithm": "BOGUS-ALG" }
}سرٹیفکیٹ بناتے اور برتتے ہوئے پیدا ہونے والی خرابیوں کے لیے سرور بھی اوپر دیے گئے مشترکہ کوڈ (DAT_CERT_*، DAT_KEY_*، DAT_CONFIG_*) ہی استعمال کرتا ہے۔
سرور سے کوڈ ملنے پر
کلائنٹ سرور کے کوڈ کو اپنے CMS کوڈ میں لپیٹ لیتا ہے، اور اصل کو cause میں محفوظ رکھتا ہے۔
| موصولہ | HTTP | کلائنٹ کا جاری کردہ کوڈ |
|---|---|---|
DAT_AUTH_UNAUTHORIZED | 401 | DAT_CMS_UNAUTHORIZED |
DAT_AUTH_FORBIDDEN | 403 | DAT_CMS_FORBIDDEN |
DAT_REQ_NOT_FOUND | 404 | DAT_CMS_ENDPOINT_NOT_FOUND |
DAT_REQ_* (دیگر) | 400·405·413 | DAT_CMS_HTTP_STATUS |
DAT_STORE_UNAVAILABLE | 503 | DAT_CMS_SERVER_ERROR |
DAT_STORE_UNKNOWN | 500 | DAT_CMS_SERVER_ERROR |
| (ورژن کی تنزلی) | 200 | DAT_CMS_VERSION_RESET |
علامت سے تلاش
| علامت | کوڈ |
|---|---|
| لاگ ان کے فوراً بعد چلتا ہے پھر تھوڑی دیر میں مسترد ہونے لگتا ہے | DAT_TOKEN_EXPIRED — ٹوکن کی عمر ختم ہو گئی۔ دوبارہ جاری کرنے سے کام چل جائے گا |
| صرف کسی خاص سرور پر تصدیق ناکام | DAT_CERT_NOT_SYNCED — اس سرور کو ابھی نیا CID نہیں ملا |
| تمام سرورز پر ایک ہی ٹوکن مسترد | DAT_CERT_NOT_FOUND — یہ ایسا CID ہے جو ہم نے کبھی جاری نہیں کیا |
| اجرا کرنے والا سرور ٹوکن نہیں بنا پا رہا | DAT_MANAGER_NO_ISSUABLE_CERTIFICATE + DAT_CERT_VERIFY_ONLY — verify-only کے طور پر تعینات ہوا ہے |
| صرف بوٹ کے فوراً بعد اجرا ناکام | DAT_MANAGER_NO_CERTIFICATE — پہلی ہم آہنگی سے پہلے ہے۔ تھوڑی دیر میں حل ہو جائے گا |
| CMS ہم آہنگی مسلسل ناکام | DAT_CMS_UNAUTHORIZED — ٹوکن غلط ہے۔ دوبارہ کوشش سے بھی حل نہیں ہوگا |
| ایک بھی سرٹیفکیٹ نہیں آ رہا | DAT_CMS_ENDPOINT_NOT_FOUND — URL میں ہجے کی غلطی ہے |
| صرف کسی خاص پلیٹ فارم پر ناکامی | DAT_INTERNAL_UNAVAILABLE — خفیہ نگاری بیک اینڈ موجود نہیں |
| تصدیق کی ناکامیاں اچانک بڑھ گئیں | DAT_SIG_MISMATCH — ایک واقعہ بے ضرر ہے مگر جھنڈ کی صورت میں آئے تو جعل سازی کی کوشش ہے |
| secure کی کشائی اچانک ناکام | DAT_CRYPTO_TAG_MISMATCH — یا تو سرٹیفکیٹ میل نہیں کھاتے یا یہ چھیڑ چھاڑ کی کوشش ہے |
| CMS بوٹ لاگ میں انتباہ | DAT_AUTH_DISABLED — توثیق بند ہے۔ اجرا کی API کھلی پڑی ہے |
ضمیمہ
کوڈ کا صیغہ
DAT_<شعبہ>_<سبب>- ایک ہی سبب مختلف شعبوں میں پیدا ہو تو سبب کا نام ایک ہی رہتا ہے۔
DAT_TOKEN_MALFORMEDاورDAT_CERT_MALFORMEDمیں صرف ہدف مختلف ہے، مطلب ایک ہی ہے۔ _UNKNOWNہر شعبے کے لیے صرف فال بیک ہے۔ "نامعلوم الگورتھم" جیسے کسی اور مفہوم میں استعمال نہیں ہوتا (وہ_UNSUPPORTEDہے)۔- کوڈ کی سٹرنگ ایک عوامی معاہدہ ہے۔ پیغام آزادانہ بدلا جا سکتا ہے مگر کوڈ نہیں بدلا جاتا۔
| زمرہ | کوڈ کا سابقہ |
|---|---|
| ٹوکن | DAT_TOKEN_ |
| سرٹیفکیٹ | DAT_CERT_ |
| دستخط | DAT_SIG_ |
| خفیہ کاری | DAT_CRYPTO_ |
| کی | DAT_KEY_ |
| منیجر | DAT_MANAGER_ |
| کنفیگریشن | DAT_CONFIG_ |
| اندرونی | DAT_INTERNAL_ |
| CMS ہم آہنگی | DAT_CMS_ |
| سرور | DAT_AUTH_ · DAT_REQ_ · DAT_STORE_ |
کلائنٹ کے لحاظ سے رسائی کا طریقہ
| کلائنٹ | خرابی کی قسم | کوڈ | دوبارہ کوشش کا زمرہ | سیکیورٹی ایونٹ |
|---|---|---|---|---|
| Rust | DatError enum | err.code() | err.retry() | err.security_event() |
| Go | *dat.Error | err.Code | dat.Retry(err) | dat.SecurityEvent(err) |
| JavaScript | DatError extends Error | e.code | e.retry | e.securityEvent |
| Python | DatError(ValueError, RuntimeError) | e.code | e.retry | e.security_event |
| Ruby | Saro::Dat::Error | e.code | e.retry | e.security_event? |
| Java/Kotlin | DatException | e.code | e.retry | e.securityEvent |
| C# | DatException | e.Code | e.Retry | e.SecurityEvent |
| C/C++ | dat_error_t | dat_error_code(e) | dat_error_retry(e) | dat_error_is_security_event(e) |
| CMS سرور | JSON لفافہ | code فیلڈ | — | — |
سیکیورٹی ایونٹ صرف ان دو حالتوں میں true دیتا ہے جہاں جعل سازی یا چھیڑ چھاڑ یقینی ہو (DAT_SIG_MISMATCH، DAT_CRYPTO_TAG_MISMATCH)۔ اس دستاویز کا مشتبہ لیبل اس سے وسیع تر دائرہ رکھتا ہے (چھیڑ چھاڑ شدہ ٹوکن، کی اور درخواستیں تک)، اور فی الحال یہ محض دستاویزی درجہ بندی ہے، کلائنٹ API میں ظاہر نہیں ہوتا۔
اثر کا درجہ بھی اسی طرح دستاویزی درجہ بندی ہے۔ کیونکہ ایک ہی کوڈ کہاں پیدا ہوا اس کے لحاظ سے نقصان بدل جاتا ہے — مثلاً DAT_KEY_INVALID آنے والے ٹوکن کو چھاننے کے وقت بے اثر ہے، مگر CMS ہم آہنگی کے دوران سرٹیفکیٹ پڑھتے ہوئے پیدا ہو تو پوری ہم آہنگی ناکام کر دیتا ہے۔
ذیلی اسباب ضائع نہیں ہوتے۔ DAT_MANAGER_NO_ISSUABLE_CERTIFICATE اور DAT_CMS_IMPORT_FAILED ہر زبان کی استثنا زنجیر (cause / __cause__ / InnerException / Unwrap()) کے ذریعے سبب پہنچاتے ہیں۔
C/C++ عددی قدریں بھی برقرار رکھتی ہے
dat_error_t کی پرانی عددی قدریں ABI مطابقت کے لیے جوں کی توں رکھی گئی ہیں، مگر متنی کوڈ ہی اصل ہے۔ لائبریری اب پرانی قدریں واپس نہیں کرتی، اس لیے err == DAT_ERROR_INVALID_DAT جیسا موازنہ درست نہیں رہا۔ dat_error_code(e) سے موازنہ کریں۔
C میں استثنا زنجیر نہیں ہوتی، سو سبب الگ سے dat_manager_issuable_cause() کے ذریعے دیکھا جاتا ہے۔