منصوبے کے بارے میں
CloudPath ایک سیلف ہوسٹڈ IoT کنٹرول پلیٹ فارم ہے جسے مقامی طور پر یا پبلک نیٹ ورک پر تعینات کیا جا سکتا ہے۔ اس کا مقصد "ڈیوائس کنکشن، اسٹیٹس کی نگرانی، اور ریموٹ کنٹرول" کو ایک عام کنٹرول پلین بنانا ہے، نہ کہ کسی مخصوص ڈویلپمنٹ بورڈ کے لیے مخصوص سافٹ ویئر۔ یہ پروجیکٹ MIT لائسنس کے تحت اوپن سورس ہے اور تین اہم حصوں پر مشتمل ہے: ایک سنگل بائنری سینٹرل سروس cloudpath-server، ہر کمپیوٹر یا سائٹ پر چلنے والا گیٹ وے cloudpath-edge، اور پلگ ان Registry کنٹرول پلین کے لیے کمانڈ لائن ٹول cloudpath۔ تکنیکی طور پر، بیک اینڈ Go میں اور فرنٹ اینڈ React میں لکھا گیا ہے، WebUI کو سرور سائیڈ میں ایمبیڈ کیا گیا ہے، اور ڈیٹا بیس کے لیے SQLite کے WAL موڈ کا استعمال کیا گیا ہے، جس کی وجہ سے اسے بغیر CGO کے Linux یا arm64 پر کراس کمپائل کیا جا سکتا ہے۔
اتھارٹی کی تقسیم
سینٹرل سروس مطلوبہ حالت (desired state)، ٹیننٹ اور آڈٹ کی واحد اتھارٹی ہے، جو RBAC، ٹوکنز، ریٹ لمیٹنگ، ریٹینشن پیریڈ، پلگ ان ڈائریکٹری اور آپریشنز کی ترسیل اور وصولی کا ذمہ دار ہے۔ گیٹ وے آبزرویشن اسٹیٹ (observation state) کی واحد اتھارٹی ہے، جو آخری کامیاب applied اسنیپ شاٹ کو محفوظ رکھتا ہے اور ڈیوائس کی نگرانی، ری ٹرائی میکانزم اور آف لائن ایونٹس کی بفرنگ کا ذمہ دار ہے۔ نیٹ ورک منقطع ہونے پر بھی یہ کام جاری رکھتا ہے اور دوبارہ منسلک ہونے پر صرف حتمی اسنیپ شاٹ کو لاگو کرتا ہے، درمیانی اثرات کو دوبارہ نہیں چلاتا۔ ڈیوائس کی شناخت ٹیننٹ، گیٹ وے اور ڈیوائس کے ٹرپلیٹ سے طے ہوتی ہے۔ اکاؤنٹ سیشن کے دوران، گیٹ وے سے سرور اور پھر براؤزر تک کا ریئل ٹائم لنک WebSocket کے ذریعے چلتا ہے، جبکہ REST کا استعمال ہسٹری کی انکوائری اور مینجمنٹ آپریشنز کے لیے کیا جاتا ہے۔
پلگ ان سسٹم
پروجیکٹ میں تین قسم کے پلگ انز ہیں: Driver ڈیفالٹ طور پر گیٹ وے سائیڈ پر چلتے ہیں اور ڈیوائس کی دریافت، کنکشن، پروٹوکول پارسنگ اور ایکشنز کے ذمہ دار ہوتے ہیں۔ Application سینٹرل سروس سائیڈ پر چلتے ہیں اور بزنس آبجیکٹس، رولز، ٹاسک اور ڈومین API سنبھالتے ہیں۔ Connector کا مقصد گیٹ وے یا سینٹرل سروس پر چلنا ہے تاکہ MQTT اور Webhook جیسے نوٹیفیکیشنز اور ڈیٹا ایکسپورٹ فراہم کیے جا سکیں (یہ فی الحال ہدف کی حالت میں ہے)۔ کور سسٹم کسی مخصوص ہارڈ ویئر کے لیے کوڈ نہیں لکھتا؛ ہر نئی ڈیوائس ایک Driver پلگ ان کے برابر ہے۔ ریفرنس ڈرائیور stcb اور مختلف ایپلی کیشن پلگ انز الگ الگ ریپوزٹریز میں جاری کیے گئے ہیں۔ پلگ ان انسٹال کرنے سے پہلے Manifest، ہم آہنگی، ریلیز اثاثوں اور checksums کی تصدیق کی جاتی ہے۔
تیزی سے آغاز
Go، Node، pnpm اور اختیاری طور پر task انسٹال کرنے کے بعد، task setup کے ذریعے ڈیپینڈنسز حاصل کی جا سکتی ہیں اور task build سے دو بائنریز تیار کی جا سکتی ہیں۔ سرور ڈیفالٹ طور پر 127.0.0.1:8080 پر لسن کرتا ہے اور /healthz ہیلتھ چیک فراہم کرتا ہے۔ ہارڈ ویئر کے بغیر، بلٹ ان ڈیمو اڈاپٹر کے ذریعے ڈیوائس آن لائن ہونے اور آپریشنز کی تصدیق کی جا سکتی ہے۔ حقیقی سیریل ڈیوائسز کے لیے، متعلقہ Driver پلگ ان انسٹال کریں اور edge.yaml میں plugin_host کو فعال کریں۔ ایڈمنسٹریٹر اکاؤنٹ کی پہلی بار انسٹالیشن کے بعد، سروس اکاؤنٹ موڈ میں داخل ہو جاتی ہے، جہاں ہیلتھ چیک اور اسٹیک ریسورسز کے علاوہ تمام انٹرفیسز کے لیے کریڈنشلز ضروری ہوتے ہیں۔
مینجمنٹ کنسول
لاگ ان ہونے کے بعد، صارف اوور ویو، ڈیوائس لسٹ، ڈیوائس ڈیٹیلز، رننگ ریکارڈز (ایونٹس)، ایپلی کیشنز، پلگ انز، گیٹ وے لسٹ اور سیٹنگز تک رسائی حاصل کر سکتا ہے۔ ایڈمنسٹریٹر کے لیے ممبرز، پرمیشنز اور ایکسیس ٹوکنز کے صفحات الگ سے موجود ہیں۔ ڈیوائس ڈیٹیلز پیج پر آپریشن پینل اڈاپٹر کے سفید فہرست (whitelist) کے مطابق بٹنز تیار کرتا ہے۔ آپریشنز کی حالت pending، sent، ok، failed، یا timeout ہو سکتی ہے۔ ایونٹس اور حتمی آپریشنز ڈیفالٹ طور پر 30 دن تک محفوظ رہتے ہیں۔
سیکیورٹی ڈیزائن
README ایکسپوزر ایریا کو تین سطحوں میں تقسیم کرتا ہے: L0 (سنگل مشین)، L1 (انٹرنل نیٹ ورک یا ریورس پراکسی)، اور L2 (پبلک نیٹ ورک)۔ کریڈنشلز کے دو موڈز ہیں: شیئرڈ سروس ٹوکن اور اکاؤنٹ موڈ (جو سیشن کوکیز، admin/operator/viewer رولز اور cp_ پری فکس والے ٹیننٹ ٹوکنز فراہم کرتا ہے)۔ ٹوکنز کے سادہ متن (plain text) صرف تخلیق کے وقت ایک بار دکھائے جاتے ہیں، ڈیٹا بیس میں صرف SHA-256 اور شارٹ پری فکس محفوظ ہوتے ہیں۔ Secrets کو secret://name ہینڈل کی شکل میں استعمال کیا جاتا ہے، اور سادہ متن صرف ٹارگٹ گیٹ وے پر مقامی طور پر فراہم کنندہ (provider) کے ذریعے حل کیا جاتا ہے۔ اس کے علاوہ، آپریشن وائٹ لسٹ، پیرامیٹر لمبائی کی حد، ریکویسٹ باڈی کی حد، WebSocket ریڈ لیمٹ اور SPA پاتھ ٹراورسل پروٹیکشن جیسے حفاظتی اقدامات موجود ہیں۔
تعیناتی اور ملٹی گیٹ وے ایکسیس
پبلک نیٹ ورک پر تعیناتی کے لیے، systemd یونٹس کا استعمال کرتے ہوئے سروس کو ایک مخصوص غیر root اکاؤنٹ کے ساتھ چلانے کی سفارش کی گئی ہے، اور خفیہ معلومات کو 0600 پرمیشن والی انوائرمنٹ فائل میں رکھا جاتا ہے۔ nginx کو HTTPS اور WSS فراہم کرنے کے لیے ریورس پراکسی کے طور پر استعمال کیا جاتا ہے۔ ایک ہی سرور سے متعدد کمپیوٹرز کو جوڑنا ایک عام طریقہ ہے: ایڈمنسٹریٹر ہر کمپیوٹر کے لیے edge scope کا ٹیننٹ ٹوکن بناتا ہے اور WSS اینڈ پوائنٹ اور edge_id فراہم کرتا ہے۔ گیٹ وے میں ایکسپوننشل بیک آف (exponential backoff) ری کنکشن کی سہولت موجود ہے، اور آف لائن ایونٹس ایک محدود بفر میں محفوظ ہوتے ہیں جو دوبارہ منسلک ہونے پر پلے بیک ہو جاتے ہیں۔
ٹیسٹنگ اور ریلیز
ٹیسٹنگ میں Go یونٹ ٹیسٹ، ریس ڈیٹیکشن، فرنٹ اینڈ ٹائپ چیکنگ اور پلگ ان ٹیمپلیٹ فلو شامل ہیں۔ ریلیز ورژن ٹیگ کے ذریعے چھ مختلف پلیٹ فارمز کے لیے بائنریز اور ایک متحد checksums فائل تیار کرتی ہے۔ ریپوزٹری میں پبلک باؤنڈری آڈٹ اور Markdown لنک چیکنگ کے اسکرپٹس بھی موجود ہیں۔
موجودہ حدود
README موجودہ حالت اور ہدف کے درمیان واضح فرق کرتا ہے: Connector اور نوٹیفیکیشن رن ٹائم، MQTT اور Modbus ایکسیس، ریموٹ OTA، ٹائم سیریز ایگریگیشن، سینٹرل کی مینجمنٹ، اور ملٹی سرور فیچر ابھی تک نافذ نہیں ہوئے ہیں۔ ٹیننٹ ٹوکن سیشنز صرف REST کے لیے ہیں، براؤزر ریئل ٹائم چینل کے لیے نہیں۔ ایک ہی بیرونی ڈرائیور کے ذریعے متعدد حقیقی بورڈز کو چلانے اور ان کے پلگ ان/ان پلگ ایونٹس کی مکمل E2E تصدیق ابھی باقی ہے۔ پروجیکٹ کا اصول ہے کہ "جو صلاحیت ابھی تک حاصل نہیں ہوئی، اسے موجودہ حالت میں نہیں لکھا جائے گا۔"
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.