पर्सनल एक्सटेंशन

Personal Extension कोड का एक छोटा टुकड़ा है, जो Marinara में कोई बटन, पैनल या हेल्पर जोड़ता है। Professor Mari आपके लिए एक्सटेंशन लिख सकती है, और वह कभी चलेगा या नहीं, यह आप तय करते हैं। इस गाइड में एक्सटेंशन जाँचने, चालू करने, एक्सपोर्ट करने और रिकवर करने के बारे में बताया गया है। अपना एक्सटेंशन लिखने के लिए अपनी Personal Extensions लिखना देखें।

कौन सा एक्सटेंशन क्या है

नामयह क्या है
Personal Extensionऐसा एक्सटेंशन जो Professor Mari ने आपके लिए लिखा है। यह Settings → Addons (सेटिंग्स → ऐडऑन) में ड्राफ़्ट के रूप में दिखता है।
External Extensionकिसी और से मिला एक्सटेंशन, या आपका खुद लिखा एक्सटेंशन। इसके लिए थर्ड-पार्टी इंपोर्ट की इजाज़त देना में बताए गए अतिरिक्त कदम ज़रूरी हैं।
Browser Extensionआपके ब्राउज़र के अंदर सैंडबॉक्स में चलता है। डिफ़ॉल्ट रूप से सुरक्षित।
Server Extensionउस कंप्यूटर पर चलता है जिस पर Marinara चलता है, ऑपरेटिंग सिस्टम के सैंडबॉक्स में। इसके लिए सपोर्टेड प्लैटफ़ॉर्म चाहिए।
Full page accessएक परमिशन, जो सैंडबॉक्स हटा देती है। सिर्फ़ उस कोड के लिए, जिस पर आपको पूरा भरोसा हो।

किसी का शेयर किया एक्सटेंशन इंस्टॉल करना

शुरू करने से पहले: थर्ड-पार्टी इंपोर्ट की इजाज़त देना में बताए गए दोनों कदम पूरे करें। उनके बिना इंपोर्ट बटन छिपे रहते हैं।

  1. Settings → Addons खोलें। External Extensions (बाहरी एक्सटेंशन) में .zip, .json, .css या .js फ़ाइल के लिए Import Extension File (एक्सटेंशन फ़ाइल इंपोर्ट करें) चुनें, या फ़ोल्डर के लिए Import Extension Folder (एक्सटेंशन फ़ोल्डर इंपोर्ट करें) चुनें।
  2. नया ड्राफ़्ट खोलें। यह बंद रहता है और अपना कोड और एक हैश दिखाता है। हैश यानी ठीक उसी कोड का एक छोटा फ़िंगरप्रिंट (Marinara इसके लिए SHA-256 इस्तेमाल करता है)।
  3. कोड और Requested access (माँगी गई पहुँच) की लिस्ट पढ़ें।
  4. Review and Run (रिव्यू करें और चलाएँ) तभी चुनें, जब आप ठीक उसी वर्ज़न को स्वीकार करते हों। इसके बाद एक्सटेंशन चालू दिखता है।

अगर यह काम नहीं किया: इंपोर्ट बटन न दिखें, तो दोनों में से कोई एक कदम पूरा नहीं हुआ है। .env बदलने के बाद Marinara रीस्टार्ट करना न भूलें।

Professor Mari का बनाया एक्सटेंशन जाँचना

शुरू करने से पहले: Professor Mari से एक एक्सटेंशन बनाने को कहें। वह कोड सेव कर सकती है, पर उसे न मंज़ूरी दे सकती है और न चालू कर सकती है। इस सेक्शन में कोई New Draft बटन नहीं है और कोई इंपोर्ट कंट्रोल भी नहीं है।

  1. Settings → Addons → Personal Extensions (सेटिंग्स → ऐडऑन → पर्सनल एक्सटेंशन) खोलें। कोई ड्राफ़्ट न हो, तो वहाँ यह लिखा होता है: "Ask Professor Mari to create an extension for you. Nothing runs until you enable it and approve the exact code hash."
  2. ड्राफ़्ट खोलें और कोड पढ़ें। हैश और Requested access की लिस्ट जाँचें।
  3. Review and Run तभी चुनें, जब आप ठीक उसी वर्ज़न को स्वीकार करते हों।

हर ड्राफ़्ट शुरुआत में बंद रहता है। कोड में कोई भी बदलाव, परमिशन में बदलाव या वापस लाया गया रिविज़न एक्सटेंशन को बंद कर देता है, और फिर नई मंज़ूरी चाहिए होती है।

Warning: सैंडबॉक्स कोड के काम सीमित करता है, पर कोड को भरोसेमंद नहीं बनाता। नुकसान पहुँचाने वाला एक्सटेंशन फिर भी तब तक प्रोसेसर का समय बर्बाद कर सकता है, जब तक कोई वॉचडॉग (बेकाबू कोड को रोकने वाला टाइमर) उसे बंद न कर दे। वह अपना स्टोरेज सीमा तक भर सकता है, या लॉग के ज़रिए आपको गुमराह कर सकता है। फ़ुल पेज एक्सटेंशन जान-बूझकर सैंडबॉक्स छोड़ देते हैं। चालू करने से पहले कोड पढ़ें, और थर्ड-पार्टी कोड की हर लाइन जाँचें।

अगर यह काम नहीं किया: Professor Mari के बदलाव और कोई भी वापस लाया गया रिविज़न ड्राफ़्ट को फिर से बंद कर देते हैं। उसे दोबारा जाँचें और पक्का करें कि डायलॉग विंडो में दिख रहा हैश वही है जो आपने पढ़ा था।

एक्सटेंशन क्या कर सकता है

Browser Extension आपके ब्राउज़र के अंदर एक सैंडबॉक्स (बाकी सब से अलग किया हुआ घेरा) में चलता है। यह Marinara के पेज, कुकीज़, ब्राउज़र स्टोरेज या नेटवर्क तक नहीं पहुँच सकता। यह ये काम कर सकता है:

पूरी लिस्ट अपनी Personal Extensions लिखना में है।

Server Extension ऑपरेटिंग सिस्टम के सैंडबॉक्स के अंदर एक अलग Node प्रोसेस (सर्वर कंप्यूटर पर चलने वाला एक प्रोग्राम) में चलता है। यह Marinara की फ़ाइलों, आपकी फ़ाइलों, सर्वर के सीक्रेट, नेटवर्क, चाइल्ड प्रोसेस, वर्कर या नेटिव ऐडऑन तक नहीं पहुँच सकता।

प्लैटफ़ॉर्म सपोर्ट

Browser Extensions को सैंडबॉक्स ब्राउज़र खुद देता है, इसलिए ये हर जगह चलते हैं। Server Extensions के लिए ऑपरेटिंग सिस्टम का सपोर्टेड सैंडबॉक्स चाहिए। जहाँ ऐसा कोई सैंडबॉक्स नहीं है, वहाँ ये बंद रहते हैं, और Marinara इन्हें सैंडबॉक्स के बिना कभी नहीं चलाता।

प्लैटफ़ॉर्मServer Extensions
macOSSeatbelt से सैंडबॉक्स में, जो macOS का सैंडबॉक्स है
Linux (Bubblewrap के साथ)Bubblewrap से सैंडबॉक्स में, जो Linux का एक सैंडबॉक्स टूल है
Linux (bwrap के बिना)बंद: bwrap इंस्टॉल करें
Docker (डिफ़ॉल्ट)बंद: कंटेनर की अनुमतियाँ
Windowsबंद: Browser Extension इस्तेमाल करें
Androidबंद: Browser Extension इस्तेमाल करें

Browser Extensions हर प्लैटफ़ॉर्म पर सैंडबॉक्स में चलते हैं। फ़ुल पेज External Extensions कहीं भी सैंडबॉक्स में नहीं चलते, और उन पर आपको हमेशा साफ़ तौर पर भरोसा जताना पड़ता है।

आधिकारिक Docker इमेज में Bubblewrap मौजूद है, लेकिन उसका डिफ़ॉल्ट कंटेनर वे नेस्टेड नेमस्पेस और माउंट नहीं बना सकता जिनकी Bubblewrap को ज़रूरत होती है। Marinara रनटाइम पर सैंडबॉक्स की जाँच करता है, और कंटेनर इसकी इजाज़त न दे तो Server Extensions बंद रखता है। Docker की अनुमतियाँ ओवरराइड करने के तरीके और सुरक्षा पर उसके असर के लिए समस्या-समाधान देखें।

Windows और Android पर कोई सपोर्टेड प्रोसेस सैंडबॉक्स नहीं है, इसलिए वहाँ Server Extensions उपलब्ध नहीं हैं। Browser Extension इस्तेमाल करें, या Marinara सर्वर को macOS पर या bwrap वाले Linux पर चलाएँ।

थर्ड-पार्टी इंपोर्ट की इजाज़त देना

थर्ड-पार्टी इंपोर्ट डिफ़ॉल्ट रूप से लॉक और छिपे रहते हैं, क्योंकि वे दूसरे लोगों का लिखा कोड चलाते हैं। इन्हें दो कदम खोलते हैं:

  1. जिस कंप्यूटर पर Marinara चलता है, वहाँ .env फ़ाइल में ENABLE_EXTERNAL_EXTENSIONS=true सेट करें, फिर Marinara रीस्टार्ट करें। सर्वर कॉन्फ़िगरेशन रेफ़रेंस देखें।
  2. Settings → Advanced → Danger Zone (सेटिंग्स → एडवांस्ड → डेंजर ज़ोन) खोलें, डेटा मिटाने वाले कंट्रोल से नीचे स्क्रॉल करें, चेतावनी पढ़ें और Allow third-party extension imports (थर्ड-पार्टी एक्सटेंशन इंपोर्ट की इजाज़त दें) चालू करें।

इसके बाद Settings → Addons में फ़ाइल और फ़ोल्डर इंपोर्ट करने के कंट्रोल के साथ External Extensions दिखता है। सपोर्टेड फ़ॉर्मैट:

इंपोर्ट के साथ मंज़ूरी कभी नहीं आती, और इंपोर्ट खुद को चालू नहीं कर सकते। ज़्यादातर Browser Extensions को सुरक्षित सैंडबॉक्स में ही रहना चाहिए। Full page access (पूरे पेज की पहुँच) वाला पैकेज अलग है:

पुराने, प्रोफ़ाइल से इंपोर्ट हुए, हाथ से रखे गए और अनजान स्रोत वाले रिकॉर्ड भी बाहरी माने जाते हैं। ये छिपे रहते हैं, इन्हें मंज़ूरी नहीं दी जा सकती, और दोनों कदम पूरे होने तक ये नहीं चलते।

इनमें से कोई भी कदम बंद करने पर सारे इंपोर्ट किए गए एक्सटेंशन बंद हो जाते हैं। उसे दोबारा चालू करने पर वे फिर से नहीं चलते। कोई फ़ुल पेज एक्सटेंशन अपने पीछे बदलाव छोड़ गया हो, तो पेज रीलोड करें।

अगर यह काम नहीं किया: इंपोर्ट कंट्रोल न दिखें, तो जाँचें कि दोनों कदम पूरे हो गए हैं, और आप सर्वर वाले कंप्यूटर पर हैं या आपने Settings → Advanced → Admin Access (सेटिंग्स → एडवांस्ड → एडमिन एक्सेस) में एडमिन सीक्रेट सेव कर दिया है।

एक्सपोर्ट, रिविज़न और रिकवरी

पोर्टेबल पैकेज डाउनलोड करने के लिए एक्सटेंशन की एक्सपोर्ट कार्रवाई इस्तेमाल करें। एक्सपोर्ट किए और वापस लाए गए पैकेज बंद ही रहते हैं। कोई रिविज़न वापस लाने पर भी वह बंद ड्राफ़्ट बन जाता है।

Settings → Addons → Extension revision history (सेटिंग्स → ऐडऑन → एक्सटेंशन रिविज़न हिस्ट्री) तय करता है कि हर Personal Extension और External Extension के कोड के कितने पिछले वर्ज़न रखे जाएँ। डिफ़ॉल्ट 10 है। 0 से 10 तक चुनें, जहाँ 0 हिस्ट्री बंद कर देता है। सीमा कम करने पर पुराने रिविज़न हमेशा के लिए हटाने से पहले पुष्टि माँगी जाती है। मौजूदा कोड, मंज़ूरियाँ, चालू होने की हालत और सेव किया गया एक्सटेंशन डेटा बना रहता है। Professor Mari के ज़रिए किए गए बदलाव भी इसी सीमा का पालन करते हैं।

एक्सटेंशन गड़बड़ करे तो Disable (बंद करें) चुनें। इंटरफ़ेस उपलब्ध न हो, तो Marinara बंद करें और installed_extensions के मेल खाते रिकॉर्ड की enabled वैल्यू "false" कर दें। approvedHash हाथ से कभी सेट न करें।

मिलती-जुलती गाइड