फ़ीचर स्पॉटलाइट: फ़ाइल-आधारित नियम प्रतिस्थापन¶
यह दस्तावेज़ बताता है कि संवेदनशील मान (पासवर्ड, एपीआई कुंजी, टोकन) कैसे रखें
FUZZY_MAP_pre / FUZZY_MAP स्रोत कोड और Git इतिहास को लोड करके बाहर निकालें
हार्डकोडिंग के बजाय रनटाइम पर एक अलग फ़ाइल से प्रतिस्थापन टेक्स्ट।
यह लाइवस्ट्रीम या स्क्रीन शेयर के दौरान विशेष रूप से उपयोगी है, जहां मानचित्र स्रोत कोड स्वयं दृश्यमान हो सकता है, लेकिन संदर्भित फ़ाइल नहीं है।
1. संकल्पना¶
आम तौर पर, किसी नियम का प्रतिस्थापन फ़ील्ड शाब्दिक आउटपुट टेक्स्ट होता है:
CODE_ब्लॉक_0
फ़ाइल-आधारित प्रतिस्थापन सक्षम होने पर, एक प्रतिस्थापन मान जो a से शुरू होता है
कॉन्फ़िगर किए गए उपसर्ग (डिफ़ॉल्ट रूप से - या .) को इसके बजाय फ़ाइल नाम के रूप में माना जाता है।
ऑरा प्लगइन की अपनी निर्देशिका के सापेक्ष उस फ़ाइल नाम को हल करता है, उसे पढ़ता है
सामग्री, और उस सामग्री को प्रतिस्थापन पाठ के रूप में उपयोग करता है।
CODE_ब्लॉक_1
यदि api_key.txt प्लगइन के FUZZY_MAP_pre.py के बगल में मौजूद है, तो यह (छीन लिया गया)
सामग्री का उपयोग प्रतिस्थापन के रूप में किया जाता है। यदि फ़ाइल मौजूद नहीं है, तो शाब्दिक
इसके बजाय स्ट्रिंग -api_key.txt लौटा दी जाती है (विफल-सुरक्षित: कोई आकस्मिक रिसाव नहीं
प्रयोग करने योग्य पाठ के रूप में “फ़ाइल नहीं मिली”, और कोई क्रैश नहीं)।
2. सेटिंग्स¶
config/settings.py (या स्थानीय के लिए config/settings_local.py) में कॉन्फ़िगर किया गया
ओवरराइड):
सेटिंग |
प्रकार |
डिफ़ॉल्ट |
विवरण |
|---|---|---|---|
|
|
‘सच’ |
संपूर्ण सुविधा के लिए मास्टर स्विच. यदि ‘गलत’ है, तो ‘प्रतिस्थापन’ का प्रयोग हमेशा शाब्दिक रूप से किया जाता है। |
|
|
|
फ़ाइल लुकअप को ट्रिगर करने के लिए |
|
|
‘झूठा’ |
यदि |
|
|
जैसे |
इनमें से किसी से शुरू होने वाले हल किए गए निरपेक्ष पथ हमेशा अस्वीकार कर दिए जाते हैं, चाहे |
3. पथ संकल्प¶
फ़ाइल का समाधान इस प्रकार किया गया है:
प्लगइन का
source_path(मैप लोडर द्वारा स्वचालित रूप से रिकॉर्ड किया गया) हैSL5NET_AURA_PROJECT_ROOTके विरुद्ध शामिल हुए (SL5NET_AURA_PROJECT_ROOTसे पढ़ें) पर्यावरण चर) प्लगइन की निर्देशिका प्राप्त करने के लिए।प्रतिस्थापनमान उस निर्देशिका से जुड़ जाता है।जब तक
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALTrueनहीं है, हल किया गया पथ प्लगइन की निर्देशिका के अंदर रहना चाहिए, अन्यथा लुकअप अस्वीकार कर दिया जाएगा।उपरोक्त के बावजूद, कोई भी हल किया गया पथ प्रवेश से शुरू होता है
FILE4REPLACEMENT_DENY_PREFIXESहमेशा अस्वीकार कर दिया जाता है।यदि फ़ाइल मौजूद है, तो उसकी छीनी गई सामग्री वापस कर दी जाती है। अन्यथा मूल
प्रतिस्थापनस्ट्रिंग अपरिवर्तित लौटा दी गई है।
4. सुरक्षा नोट¶
यदि आप समझते हैं तो केवल
FILE4REPLACEMENT_ALLOW_PATH_TRAVERSALसक्षम करें निहितार्थ: यह किसी भी उपयोगकर्ता कोFUZZY_MAP_preफ़ाइल को संपादित करने की अनुमति देता है (उदा. एक ऑनलाइन मानचित्र संपादक के माध्यम से) मनमानी फ़ाइलों को पढ़ने के लिए जो ऑरा प्रक्रिया कर सकती है पहुंच, और उनकी सामग्री लाइव आउटपुट टेक्स्ट के रूप में सामने आती है।FILE4REPLACEMENT_DENY_PREFIXESइसके विरुद्ध आधारभूत सुरक्षा प्रदान करता है पथ ट्रैवर्सल की अनुमति होने पर भी सामान्य सिस्टम निर्देशिकाएँ, लेकिन यह है यह इस बात को प्रतिबंधित करने का विकल्प नहीं है कि सबसे पहले मानचित्र फ़ाइलों को कौन संपादित कर सकता है।संदर्भित फ़ाइलें डिस्क पर सादा पाठ हैं। अपने OS की फ़ाइल के साथ संयोजित करें यदि सामग्री संवेदनशील है तो अनुमतियाँ।
5. उदाहरण¶
कार्यशील उदाहरण प्लगइन के लिए config/maps/plugins/TEST_FILE4REPLACEMENT/ देखें,
और एक परीक्षण स्क्रिप्ट के लिए टूल्स/टेस्ट/TEST_FILE4REPLACEMENT.sh जो अभ्यास करती है
इन-डायरेक्टरी लुकअप और प्लगइन डायरेक्टरी के बाहर लुकअप दोनों।
CODE_ब्लॉक_2
फिर वांछित प्रतिस्थापन पाठ के साथ इस फ़ाइल के आगे .Zebra.txt बनाएं
इसे ट्रिगर करने के लिए कहें (या कंसोल के माध्यम से टाइप करें) s Zebra।