प्रयोगों में डेटा
मान एक रन में होकर गुज़रते हैं: कोई पैरामीटर लक्ष्य चुनता है, किसी एक रिस्पॉन्स का कोई फ़ील्ड अगली रिक्वेस्ट का हेडर बन जाता है, कोई जनरेट की गई id किसी कमांड में जाती है और किसी जाँच में वापस आती है। यह पेज बताता है कि ये मान कहाँ से आते हैं और कोई फ़ील्ड उन्हें कैसे इस्तेमाल करता है।
| स्रोत | ऐसे लिखा जाता है | कहाँ सेट होता है |
|---|---|---|
| पैरामीटर | {{api}} या {{params.api}} | पैरामीटर पैनल, कोई प्रोफ़ाइल, इसके साथ चलाएँ… |
| चर | {{token}} या {{vars.token}} | रन के दौरान कोई नोड: मान निकालें, कोई प्रतीक्षा, जवाब की प्रतीक्षा करता कोई भेजना |
| सीक्रेट | {{secret.API_TOKEN}} | कंप्यूटर का क्रेडेंशियल स्टोर, या सर्वर का एनवायरनमेंट और फ़ाइलें |
| अंतर्निहित मान | {{run.seed}}, {{now.iso}}, {{counter}} | रन ख़ुद |
| जनरेटर | {{uuid}}, {{random_int(1, 100)}} | रन के सीड से निकाले जाते हैं |
पैरामीटर
पैरामीटर एक नामित टेक्स्ट मान है जिसे कोई भी टेम्पलेट वाला फ़ील्ड इस्तेमाल कर सकता है। लक्ष्य पैरामीटरों में रखें, ताकि पता बदलने पर एक ही जगह संपादन करना पड़े, हर नोड में नहीं।
पैरामीटर जोड़ना
- एडिटर के टूलबार में पैरामीटर (
{ }) दबाएँ। - डिफ़ॉल्ट टैब पर पैरामीटर जोड़ें दबाएँ।
- नाम और मान टाइप करें, जैसे
apiऔरhttp://127.0.0.1:8080। - किसी नोड के फ़ील्ड में
{{api}}/loginलिखें।
पैनल में हर बदलाव प्रयोग का एक संपादन है: वह उसी के साथ सहेजा जाता है और किसी भी और बदलाव की तरह Ctrl+Z से वापस लिया जाता है।
नियम
| नियम | सीमा |
|---|---|
| नाम | किसी अक्षर या _ से शुरू होता है, फिर अक्षर, अंक और _ |
| आरक्षित नाम | vars, params, secret, run, node, now, uuid, counter, random_int, random_float, pick |
| प्रति प्रयोग पैरामीटर | 64 |
| एक मान का आकार | 64 KiB |
| नाम | अनूठे; किसी चर का नाम किसी पैरामीटर का नहीं हो सकता |
मान सादा टेक्स्ट होता है और जैसा लिखा है वैसा ही डाला जाता है: किसी मान के भीतर का {{…}} हल नहीं किया जाता। जब कोई फ़ील्ड किसी पैरामीटर का कोई हिस्सा माँगता है ({{config.ports[0]}}), तो मान को JSON के रूप में पढ़ा जाता है; जो मान JSON नहीं है, उसके कोई हिस्से नहीं होते।
जिस पैरामीटर का नाम अवैध हो, आरक्षित हो या दो बार लिया गया हो, वह प्रयोग को सहेजने से नहीं रोकता, ताकि आप टाइप करते रह सकें; जब तक नाम ठीक न हो, प्रयोग चलता नहीं।
प्रोफ़ाइल
प्रोफ़ाइल पैरामीटर मानों का एक नामित समूह है — Laptop, Stage, Venue — ताकि लक्ष्य बदलना हर नोड के संपादन के बजाय एक चुनाव बन जाए। प्रोफ़ाइल कुछ पैरामीटर बदलती है; बाकी अपने डिफ़ॉल्ट पर रहते हैं।
प्रोफ़ाइल बनाना
- पैरामीटर खोलें और प्रोफ़ाइल दबाएँ। एक नया टैब खुलता है।
- उसे प्रोफ़ाइल का नाम में नया नाम दें।
- जिन पैरामीटरों को प्रोफ़ाइल बदलती है, हर एक का मान टाइप करें। ख़ाली फ़ील्ड डिफ़ॉल्ट रखता है, जो फ़ील्ड में धुँधले रूप में दिखता है; डिफ़ॉल्ट मान उपयोग करें (↺) किसी मान को ख़ाली कर देता है।
- उसके साथ चलाने के लिए रन के लिए उपयोग करें दबाएँ। सक्रिय प्रोफ़ाइल का टैब ● उपयोग में रखता है। डिफ़ॉल्ट टैब पर रन के लिए उपयोग करें डिफ़ॉल्ट पर लौटा देता है।
जब किसी प्रयोग में प्रोफ़ाइल हो जाती हैं, तो टूलबार में एक प्रोफ़ाइल सूची उनके बीच बदलती है। सक्रिय प्रोफ़ाइल रन, प्रीव्यू और अभी भेजें द्वारा इस्तेमाल की जाती है, और वह प्रयोग में सहेजी जाती है, इसलिए निर्यात की गई फ़ाइल उन्हीं लक्ष्यों के साथ खुलती है। प्रोफ़ाइल हटाएँ स्क्रीन पर मौजूद प्रोफ़ाइल हटा देता है।
| नियम | सीमा |
|---|---|
| प्रति प्रयोग प्रोफ़ाइलें | 32 |
| नाम | 1–64 अक्षर, अनूठा (सिरों की जगहें नहीं गिनी जातीं) |
| मान | केवल मौजूद पैरामीटर; अधिकतम 64 |
किसी पैरामीटर का नाम बदलने या उसे हटाने से वह एक साथ हर प्रोफ़ाइल में बदल जाता है।
रन कौन-सा मान इस्तेमाल करता है
बाद वाला जीतता है:
- पैरामीटर का डिफ़ॉल्ट, डिफ़ॉल्ट टैब पर;
- सक्रिय प्रोफ़ाइल का मान, अगर वह कोई सेट करती है;
- इस रन के लिए इसके साथ चलाएँ… में टाइप किया गया मान — देखें दूसरे मानों के साथ चलाना।
इसके साथ चलाएँ… केवल वे पैरामीटर सेट कर सकता है जो प्रयोग में हैं। रन रिपोर्ट प्रोफ़ाइल, रन के लिए टाइप किए गए मान और उसके इस्तेमाल किए हर मान को दर्ज करती है।
वे प्रोफ़ाइलें जो चलेंगी नहीं
हर बार प्रयोग जाँचे जाने पर बाकी प्रोफ़ाइलें और डिफ़ॉल्ट भी जाँचे जाते हैं। जो विफल होगी — जैसे, कोई URL जो http:// या https:// नहीं है — वह टैबों में और टूलबार की सूची में ⚠ रखती है, और उसका टूलटिप वजह बताता है। यह उस प्रोफ़ाइल के साथ चलने वाले रनों को नहीं रोकती जो इस्तेमाल में है।
टेम्पलेट
{{ }} के भीतर का टेक्स्ट एक व्यंजक है; किसी फ़ील्ड में बाकी सब कुछ जैसा लिखा है वैसा ही रहता है।
{{api}}/users/{{user.id}}?trace={{uuid}}
Bearer {{secret.API_TOKEN}}- ब्रेसिज़ के भीतर की जगहें मायने नहीं रखतीं:
{{ token }}वही है जो{{token}}है। \{{एक शाब्दिक{{लिखता है।- अकेला
}}सादा टेक्स्ट है। - मान जैसा है वैसा ही, बिना उद्धरणों के, डाला जाता है। किसी JSON बॉडी में उद्धरण ख़ुद लिखें:
"id": "{{uuid}}"।
नाम
| व्यंजक | मान |
|---|---|
{{name}} | चर name, अगर इस पथ पर कोई सेट है, वरना पैरामीटर name |
{{vars.name}} | केवल चर |
{{params.name}} | केवल पैरामीटर |
{{secret.NAME}} | सहेजा गया सीक्रेट NAME — देखें सीक्रेट |
{{name.field}} | किसी JSON मान का कोई फ़ील्ड |
{{name[0]}} | किसी JSON सरणी का कोई तत्व |
{{name["a b"]}}, {{name['a b']}} | वह फ़ील्ड जिसके नाम में दूसरे अक्षर हैं |
. के बाद का फ़ील्ड नाम अक्षर, अंक, _ और - रख सकता है। कदम जुड़ते जाते हैं: {{reply.args[0]}}, {{order.items[2].sku}}।
मान कैसे लिखे जाते हैं
| मान | ऐसे लिखा जाता है |
|---|---|
| टेक्स्ट | वह टेक्स्ट |
| संख्या | उसका सबसे छोटा रूप: 42, 0.5 |
true, false | true, false |
null | null |
| ऑब्जेक्ट, सरणी | सघन JSON: ["x","y"] |
अंतर्निहित मान
| व्यंजक | मान |
|---|---|
{{run.id}} | रन का जॉब नंबर; प्रीव्यू में और अभी भेजें में 0 |
{{run.seed}} | इस रन का सीड |
{{node.id}} | चल रहे नोड की id |
{{now}} | वर्तमान समय, Unix मिलीसेकंड |
{{now.iso}} | UTC में वर्तमान समय, मिलीसेकंड के साथ ISO 8601: 2026-09-30T12:34:56.789Z |
{{counter}} | इस रन में यह नोड कितनी बार चला, यह बार मिलाकर, 1 से |
{{counter}} प्रति नोड गिनता है: किसी Loop की बॉडी में यह पुनरावृत्ति का नंबर है, किसी दोहराव वाले नोड में भेजे जाने का नंबर। run, node और now में केवल सूचीबद्ध फ़ील्ड होते हैं; और कुछ भी एक त्रुटि है।
जनरेटर
| व्यंजक | मान |
|---|---|
{{uuid}} या {{uuid()}} | एक संस्करण 4 UUID |
{{random_int(min, max)}} | min से max तक एक पूर्ण संख्या, दोनों मिलाकर; पूर्ण-संख्या आर्ग्युमेंट, min ≤ max |
{{random_float(min, max)}} | min से max तक, उसे छोड़कर, एक संख्या, 3 दशमलवों के साथ; min < max |
{{random_float(min, max, digits)}} | वही, digits दशमलवों के साथ, 0–9 |
{{pick(a, b, c)}} | आर्ग्युमेंट में से एक, कम से कम एक |
आर्ग्युमेंट अल्पविरामों से अलग होते हैं। उद्धरणों में वाला ("dark blue" या 'a, b') अपने उद्धरण के अलावा कुछ भी रख सकता है; बिना उद्धरणों वाला अक्षर, अंक और _ - . : / + रख सकता है। ख़ाली आर्ग्युमेंट एक त्रुटि है।
हर जनरेटर रन के सीड से निकालता है। नोड के एक निष्पादन के मान केवल सीड, नोड की id और नोड कितनी बार चला, पर निर्भर करते हैं, इसलिए समानांतर शाखाएँ एक-दूसरे के मान कभी नहीं बदलतीं, और उसी सीड वाला रन वही मान फिर से जनरेट करता है। एक नोड के भीतर निकाले गए मान उसके फ़ील्डों के क्रम का पालन करते हैं। {{now}} और {{run.id}} दोहराए नहीं जा सकते। देखें सीड।
सुझाव
किसी टेम्पलेट वाले फ़ील्ड में {{ टाइप करने पर, या Ctrl+Space दबाने पर, चार समूहों में एक सूची खुलती है: पैरामीटर उनके मानों के साथ, वैरिएबल इस नोड से ऊपर सेट किए गए चर, उन्हें सेट करने वाले नोड के साथ (जवाब के फ़ील्ड भी, जैसे reply.args[0]), सीक्रेट और जनरेटर। ↑ और ↓ चुनते हैं, Enter या Tab डालता है, Esc सूची बंद करता है और फ़ील्ड रख लेता है।
अज्ञात नाम त्रुटियाँ हैं
जिस नाम का कोई मान न हो, वह कभी ख़ाली टेक्स्ट नहीं बनता। किसी रन से पहले, किसी फ़ील्ड द्वारा इस्तेमाल हर नाम या तो कोई पैरामीटर होना चाहिए, या वैध सीक्रेट नाम, या नोड तक जाने वाले हर पथ पर सेट किया गया चर। एडिटर नोड और फ़ील्ड की ओर इशारा करता है:
| समस्या | रन से पहले | रन के दौरान |
|---|---|---|
| कोई नाम जिसे कोई सेट नहीं करता | name.unknown | — |
| केवल कुछ पथों पर सेट किया गया चर | name.not_on_every_path | — |
पैरामीटर x के बिना {{params.x}} | param.unknown | — |
| वह फ़ील्ड जो किसी मान में नहीं है | — | template.no_field |
बंद न हुआ {{, ख़ाली {{}}, ख़राब आर्ग्युमेंट | template.*, स्थान के साथ | — |
इन कोडों के टेक्स्ट त्रुटियाँ में हैं।
कौन-से फ़ील्ड टेम्पलेट लेते हैं
| नोड | टेम्पलेट वाले फ़ील्ड |
|---|---|
| HTTP रिक्वेस्ट | URL, हेडर के नाम और मान, बॉडी, Basic और Digest के उपयोगकर्ता नाम और पासवर्ड, Bearer टोकन |
| OSC संदेश | लक्ष्य, पता, टेक्स्ट आर्ग्युमेंट; जवाब के साथ: उसका पता पैटर्न और नियम के मान |
| UDP डेटाग्राम | लक्ष्य, पेलोड; जवाब के साथ: उसका पैटर्न |
| TCP संदेश | होस्ट, पेलोड |
| MQTT पब्लिश | ब्रोकर होस्ट, टॉपिक, पेलोड |
| लॉग मार्कर | संदेश |
| रिस्पॉन्स टेक्स्ट | अपेक्षित टेक्स्ट |
| रिस्पॉन्स हेडर | हेडर का नाम, अपेक्षित टेक्स्ट |
| मान जाँचें, मान पर शाखा, किसी लूप की निकास शर्त | मान, अपेक्षित मान |
| OSC की प्रतीक्षा | पता पैटर्न, नियम के मान |
| UDP की प्रतीक्षा, WebSocket की प्रतीक्षा | पैटर्न |
| MQTT की प्रतीक्षा | ब्रोकर और टॉपिक (केवल पैरामीटर), पैटर्न |
| HTTP रिक्वेस्ट की प्रतीक्षा | पाथ पैटर्न, शर्तें |
| नेटवर्क बाधा | सुनना और लक्ष्य (केवल पैरामीटर) |
| WebSocket कनेक्ट | URL, हेडर के नाम और मान |
| WebSocket भेजें | पेलोड |
| WebSocket बंद करें | कारण |
संख्याएँ — पोर्ट, टाइमआउट, विलंब, स्टेटस, टाइप किए OSC अंक — और प्रतीक्षाओं के सुनने के पते शाब्दिक होते हैं। एक एमुलेटर अपने जवाब जो आया ({{request.…}}) और पैरामीटरों के साथ बनाता है; देखें फ़ॉल्ट।
केवल पैरामीटर। कुछ फ़ील्ड पहले चरण से पहले खुलते हैं, जब कोई चर अभी मौजूद नहीं होता: किसी MQTT की प्रतीक्षा का ब्रोकर और टॉपिक, किसी नेटवर्क बाधा का सुनना और लक्ष्य। ये टेक्स्ट और पैरामीटर लेते हैं, और कुछ नहीं (node.params_only)।
शाब्दिक की तरह जाँचे जाते हैं। जो फ़ील्ड केवल पैरामीटर इस्तेमाल करता है, वह रन से पहले हल होता है और उस टेक्स्ट के रूप में जाँचा जाता है जो रन भेजेगा: URL http:// या https:// होना चाहिए, OSC लक्ष्य IP:port या host:port, हेडर का नाम वैध। चरों या जनरेटरों वाला फ़ील्ड चलते समय जाँचा जाता है।
प्रीव्यू
जब चुने गए नोड में कोई टेम्पलेट हो, तो उसके गुण बताते हैं कि अब तक ज्ञात मानों के साथ वह क्या करेगा: भेजने के लिए भेजा जाएगा, प्रतीक्षा के लिए इसकी प्रतीक्षा होगी, तुलना के लिए तुलना होगी। इंजन इसे उसी कोड से हल करता है जो रन इस्तेमाल करता है, इसलिए प्रीव्यू रन से कभी अलग नहीं होता।
- पैरामीटर सक्रिय प्रोफ़ाइल से आते हैं।
- चर उसी से आते हैं जो एडिटर ने इस सेशन में देखा: अंतिम रन के चरण, और अभी भेजें।
- सहेजा गया सीक्रेट
••••के रूप में दिखता है। - जिस नाम का अभी कोई मान नहीं, वह जैसा लिखा है वैसा ही रहता है, और प्रीव्यू उसे सूचीबद्ध करता है। जो सीक्रेट सहेजा नहीं गया, वह अलग सूचीबद्ध होता है।
- जनरेटर प्रयोग के पिन किए गए सीड का उपयोग करते हैं, या जब कोई पिन न हो तो
0, नोड के पहले निष्पादन के रूप में। पिन किए गए सीड के साथ, प्रीव्यू वही जनरेट किए मान दिखाता है जो किसी रन में नोड का पहला निष्पादन भेजेगा।
मान निकालना
मान निकालें अपने पथ पर नवीनतम HTTP रिस्पॉन्स का एक मान पढ़ता है और उसे एक चर में लिखता है।
| फ़ील्ड | क्या |
|---|---|
| वैरिएबल | लिखा जाने वाला चर; पैरामीटरों के नामकरण नियम लागू होते हैं |
| कहाँ से लें | मान कहाँ से आता है (नीचे) |
| JSON पाथ, हेडर का नाम या पैटर्न (ग्रुप 1, यदि हो) | स्रोत के अनुसार क्या पढ़ना है |
| कहाँ से लें | पढ़ता है | मान |
|---|---|---|
| JSON फ़ील्ड | बॉडी को JSON के रूप में, किसी पथ पर | JSON मान: टेक्स्ट, संख्या, ऑब्जेक्ट, सरणी |
| हेडर | उस नाम का पहला हेडर, किसी भी केस में | टेक्स्ट |
| स्टेटस कोड | स्टेटस कोड | एक संख्या |
| पूरी बॉडी | पूरी बॉडी | टेक्स्ट |
| रेगुलर एक्सप्रेशन | बॉडी में पहला मिलान | कैप्चर ग्रुप 1, अगर पैटर्न में है, वरना पूरा मिलान |
JSON पथ। $.token, $.items[0].id, $["a b"], $['a b']['c-d']; शुरू का $. छोड़ा जा सकता है (token, items[0].id), और अकेला $ पूरी बॉडी है।
रेगुलर एक्सप्रेशन Rust के regex इंजन का सिंटैक्स इस्तेमाल करते हैं, जिसमें न look-around होता है न बैक-रेफरेंस। मिलान बॉडी में कहीं भी खोजा जाता है; जब यह मायने रखता हो तो उसे ^ और $ से बाँधें।
चरण विफल होता है, जो ग़ायब है उसका नाम लेते हुए, जब:
- इस पथ पर इससे पहले कोई HTTP रिक्वेस्ट नहीं चली (
check.no_response; एडिटर ऐसा ग्राफ़ पहले ही अस्वीकार कर देता है जहाँ ऐसा हो ही नहीं सकता,graph.needs_http); - बॉडी JSON नहीं है, या वह पथ उसमें नहीं है;
- हेडर वहाँ नहीं है, या पैटर्न मेल नहीं खाता;
- बॉडी उन 256 KiB से बड़ी है जो एक रिस्पॉन्स रखता है, किसी JSON पथ या पूरी बॉडी के लिए, और ऐसे पैटर्न के लिए जो रखे गए हिस्से में कुछ नहीं मिला (
extract.truncated)।
टाइमलाइन लिखा गया मान दिखाती है: token = abc123।
क्लिक करके निकालें
अभी भेजें किसी HTTP रिक्वेस्ट पर उसका JSON रिस्पॉन्स दिखाता है। उसमें किसी मान पर क्लिक करें: रिक्वेस्ट के बाद एक मान निकालें नोड जुड़ जाता है, उसका पथ भरा हुआ और कुंजी से लिया गया नाम, और वह मान प्रीव्यू को तुरंत ज्ञात हो जाता है।
चर
एक चर एक JSON मान रखता है। ये नोड इसे लिखते हैं:
| नोड | लिखता है | आउटपुट पर |
|---|---|---|
| मान निकालें | निकाला गया मान | उसका आउटपुट |
| OSC की प्रतीक्षा, UDP की प्रतीक्षा, MQTT की प्रतीक्षा, HTTP रिक्वेस्ट की प्रतीक्षा, WebSocket की प्रतीक्षा | जो आया, डिफ़ॉल्ट नाम reply (request HTTP के लिए) | केवल मेल खाया |
| OSC संदेश, UDP डेटाग्राम, जवाब की प्रतीक्षा करें के साथ | जवाब, डिफ़ॉल्ट नाम reply | उसका आउटपुट |
प्रतीक्षा जो लिखती है वह एक ऑब्जेक्ट होता है; बाद के फ़ील्ड उसके हिस्से पढ़ते हैं:
| प्रतीक्षा | फ़ील्ड |
|---|---|
| OSC | address, args, from, ms |
| UDP | text, hex, bytes, from, ms, और पैटर्न के साथ match |
| MQTT | topic, और UDP के फ़ील्ड |
| WebSocket | UDP के फ़ील्ड, और json जब संदेश JSON हो |
| HTTP रिक्वेस्ट | method, path, query, headers, body, json, params, from, ms |
ms शाखा की नवीनतम क्रिया से आने तक का समय है। ठीक-ठीक सामग्री नोड संदर्भ में है।
चर कहाँ ज्ञात होता है
एक चर उस आउटपुट से आगे मौजूद होता है जो उसे लिखता है, उन पथों पर जो उस आउटपुट से होकर गुज़रते हैं:
- वैकल्पिक पथों के मिलने के बाद — किसी शाखा के हाँ और नहीं फिर मिलते हैं — केवल वही ज्ञात होता है जो हर पथ ने सेट किया हो।
- शाखाएँ जोड़ें के बाद, उसमें आने वाली किसी भी शाखा ने जो सेट किया वह ज्ञात होता है: वे सब चलीं।
- किसी लूप के पूर्ण या सीमा के बाद, और उसकी निकास शर्त में, बॉडी की हर पुनरावृत्ति जो सेट करती है वह ज्ञात होता है।
- किसी प्रतीक्षा का चर उसके टाइमआउट आउटपुट के बाद ज्ञात नहीं होता।
हर समानांतर शाखा चरों की अपनी प्रति पर काम करती है। कोई Join प्रतियों को अपने आने वाले वायरों के क्रम में मिलाता है, जिस नाम को दोनों ने सेट किया उसमें बाद वाला वायर जीतता है, इसलिए परिणाम कभी इस पर निर्भर नहीं करता कि कौन-सी शाखा पहले समाप्त हुई। देखें रन कैसे चलता है।
मानों की तुलना
मान जाँचें तुलना सही न होने पर रन विफल कर देता है; मान पर शाखा हाँ या नहीं से निकलता है; एक लूप वही तुलना अपनी निकास शर्त के रूप में इस्तेमाल करता है। हर एक में एक मान, एक शर्त और एक अपेक्षित मान होता है, और दोनों टेक्स्ट टेम्पलेट होते हैं:
| मान | शर्त | अपेक्षित |
|---|---|---|
{{status}} | से कम है | 300 |
{{reply.args[0]}} | के बराबर है | {{nonce}} |
| शर्त | तब सही होता है जब |
|---|---|
| के बराबर है, के बराबर नहीं है | दोनों बराबर (बराबर नहीं) हैं — संख्याओं के रूप में जब दोनों संख्याएँ हों (200 बराबर है 200.0 के), वरना ठीक-ठीक टेक्स्ट के रूप में, केस मिलाकर |
| से कम है, से अधिक नहीं है, से अधिक है, से कम नहीं है | संख्याओं के रूप में; जो पक्ष संख्या नहीं है वह चरण को विफल कर देता है (compare.not_numbers), चुपचाप नहीं कहने के बजाय |
| को शामिल करता है | मान में अपेक्षित टेक्स्ट है, केस मिलाकर |
| regex से मेल खाता है | अपेक्षित मान का रेगुलर एक्सप्रेशन मान में कहीं भी मेल खाता है |
| खाली है, खाली नहीं है | जगहें हटाने के बाद मान ख़ाली है, या नहीं; अपेक्षित मान इस्तेमाल नहीं होता |
संख्या वह टेक्स्ट है जो जगहें हटाने के बाद संख्या के रूप में पढ़ा जाता है: 42, -1.5, 1e3। टाइमलाइन तुलना को जैसी की गई वैसी दिखाती है, 401 = 200, हर पक्ष 120 अक्षरों तक काटा हुआ।
सीक्रेट
कोई टोकन या पासवर्ड किसी फ़ील्ड में {{secret.NAME}} के रूप में जाता है। प्रयोग फ़ाइल केवल नाम रखती है; मान वहीं रहता है जहाँ वह सहेजा है और इंटरफ़ेस तक कभी नहीं पहुँचता।
सीक्रेट कहाँ रहते हैं
| Signal Lab कहाँ चलता है | स्टोर | इंटरफ़ेस से |
|---|---|---|
| Windows पर डेस्कटॉप ऐप | Windows Credential Manager, SignalLab सेवा के अंतर्गत, हर नाम के लिए एक प्रविष्टि | सेट, बदलें, हटाएँ |
| Linux पर डेस्कटॉप ऐप | कोई नहीं: जिस रन को सीक्रेट चाहिए वह secret.unsupported के साथ विफल होता है | — |
| सर्वर | एनवायरनमेंट वैरिएबल SIGNALLAB_SECRET_<NAME>, वरना उसके सीक्रेट फ़ोल्डर में <NAME> फ़ाइल, /run/secrets/signallab जब तक कुछ और सेट न हो | केवल पढ़ने योग्य |
कमांड लाइन पर signallab | सर्वर की तरह, या --secrets system के साथ Windows Credential Manager | — |
सीक्रेट अनुभाग के शीर्षक पर एक टूलटिप है जो बताता है कि आप जहाँ हैं वहाँ इनमें से कौन-सा लागू होता है: Windows स्टोर, सर्वर का एनवायरनमेंट और फ़ाइलें, या — Linux पर डेस्कटॉप ऐप में — कि कोई स्टोर नहीं है। वहाँ, secret.unsupported कहता है कि सीक्रेट Windows Credential Manager में रखे जाते हैं, जो उस सिस्टम में नहीं होता।
सीक्रेट कंप्यूटर या सर्वर का होता है, किसी एक प्रयोग का नहीं: दो प्रयोग जो {{secret.API_TOKEN}} इस्तेमाल करते हैं, वही मान इस्तेमाल करते हैं।
सर्वर पर, एनवायरनमेंट वैरिएबल फ़ाइल पर भारी पड़ता है। किसी फ़ाइल का अंत का पंक्ति-विराम मान का हिस्सा नहीं है, और ख़ाली फ़ाइल बिना सीक्रेट के बराबर है। सर्वर का फ़ोल्डर --secrets-dir या SIGNALLAB_SECRETS_DIR से सेट होता है; देखें सर्वर। कमांड लाइन के लिए, देखें signallab run।
| नियम | सीमा |
|---|---|
| नाम | किसी अक्षर या _ से शुरू होता है, फिर अक्षर, अंक और _; अधिकतम 128 अक्षर |
| मान | ख़ाली नहीं, अधिकतम 16 KiB |
सीक्रेट सेट करना
Windows पर:
- पैरामीटर खोलें। सीक्रेट अनुभाग हर वह सीक्रेट सूचीबद्ध करता है जिसे प्रयोग के फ़ील्ड इस्तेमाल करते हैं, हर एक सहेजा गया या इस कंप्यूटर पर सेट नहीं।
- नाम के बगल में सेट करें… दबाएँ, या ऐसे नाम के लिए सीक्रेट जिसे अभी कोई फ़ील्ड इस्तेमाल नहीं करता।
- मान टाइप करें — फ़ील्ड बिंदु दिखाता है — और सहेजें या Enter दबाएँ। फ़ील्ड ख़ाली हो जाता है; कोई मान को वापस नहीं पढ़ सकता।
बदलें… एक नया मान सहेजता है और हटाएँ उसे क्रेडेंशियल स्टोर से हटा देता है। इस सेशन में सहेजा गया नाम सुझावों में भी दिया जाता है।
सर्वर से जुड़े ब्राउज़र में अनुभाग केवल सर्वर पर सेट है या सर्वर पर सेट नहीं कहता है: मान वहाँ सेट करें जहाँ सर्वर चलता है, दो में से किसी एक तरीके से:
# in the server's environment
SIGNALLAB_SECRET_API_TOKEN='…'
# or as a file in its secrets folder
printf '%s' '…' > /run/secrets/signallab/API_TOKENफ़ाइल हर बार रन शुरू होने पर पढ़ी जाती है, इसलिए बदली हुई फ़ाइल अगले रन से गिनी जाती है; बदले हुए एनवायरनमेंट वैरिएबल के लिए सर्वर फिर से शुरू करना पड़ता है।
रन से पहले
रन के फ़ील्डों द्वारा इस्तेमाल किया गया हर सीक्रेट सहेजा होना चाहिए। जो ग़ायब है वह किसी भी ट्रैफ़िक से पहले, उसे इस्तेमाल करने वाले पहले नोड और फ़ील्ड पर, रन रोक देता है (secret.missing)। अभी भेजें अपने नोड के लिए वही जाँचता है।
मास्किंग
जब तक कोई रन या अभी भेजें सीक्रेट इस्तेमाल करता है, उनके मानों की हर उपस्थिति इंजन से बाहर जाने वाली हर चीज़ में •••• से बदल दी जाती है:
- चरण के टेक्स्ट, त्रुटियाँ और चरण द्वारा लिखे गए चर;
- रन रिपोर्ट;
- अभी भेजें का परिणाम, उसका दिखाया गया HTTP रिस्पॉन्स मिलाकर;
- इंस्पेक्टर के फ़्रेम, जो रन के चलने के दौरान कैप्चर हुए — किसी hex डंप में मान का हर बाइट
*बन जाता है, इसलिए ऑफ़सेट सच्चे रहते हैं।
Basic प्रमाणीकरण name:password को base64 में भेजता है; जब कोई भी हिस्सा सीक्रेट रखता हो, तो वह base64 टेक्स्ट भी मास्क हो जाता है। ट्रैफ़िक ख़ुद असली मान ले जाता है। प्रीव्यू सहेजे गए सीक्रेट को •••• के रूप में दिखाता है। किसी एमुलेटर के जवाब सीक्रेट इस्तेमाल नहीं कर सकते।
कमांड
प्रीव्यू experiment_resolve है; सीक्रेट secret_status, secret_set और secret_delete से सूचीबद्ध, सेट और हटाए जाते हैं। कोई कमांड सीक्रेट का मान नहीं लौटाता।