अंग्रेज़ीफ्रेंचस्पेनिश

Ad


ऑनवर्क्स फ़ेविकॉन

हैसरल - क्लाउड में ऑनलाइन

उबंटू ऑनलाइन, फेडोरा ऑनलाइन, विंडोज ऑनलाइन एमुलेटर या मैक ओएस ऑनलाइन एमुलेटर पर ऑनवर्क्स मुफ्त होस्टिंग प्रदाता में हैसरल चलाएं

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

कार्यक्रम:

नाम


haserl - एम्बेडेड वातावरण के लिए एक सीजीआई स्क्रिप्टिंग प्रोग्राम

SYNOPSIS


#!/usr/bin/haserl [--खोल=पाथस्पेक] [--अपलोड-dir=दिरस्पेक] [--अपलोड-हैंडलर=हैंडलर]
[--अपलोड-सीमा=सीमा] [--सभी स्वीकृत] [--स्वीकार-कोई नहीं] [--चुपचाप] [--डीबग]

[ पाठ ] [ <% शेल स्क्रिप्ट %> ] [ पाठ ] ...

वर्णन


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

यह एक छोटे सीजीआई इंजन में तीन विशेषताओं को जोड़ता है:

यह POST और GET अनुरोधों को पार्स करता है, फॉर्म-तत्वों को नाम = मान जोड़े के रूप में रखता है
CGI स्क्रिप्ट के उपयोग के लिए वातावरण। ये कुछ-कुछ वैसा ही है ungi आवरण।

यह एक शेल खोलता है, और सभी टेक्स्ट को प्रिंट करने योग्य स्टेटमेंट में अनुवादित करता है। सभी पाठ
<% ... %> के भीतर निर्माणों को शब्दशः शेल में भेज दिया जाता है। ये कुछ हद तक है
लिखना पसंद है PHP स्क्रिप्ट।

इसे स्क्रिप्ट के स्वामी को इसकी अनुमतियाँ छोड़ने के लिए वैकल्पिक रूप से स्थापित किया जा सकता है,
इसे कुछ सुरक्षा सुविधाएँ दे रहा हूँ suexec or cgiwrapper.

विकल्प सारांश


यह कमांड-लाइन विकल्पों का सारांश है। कृपया देखें विकल्प के तहत अनुभाग
संपूर्ण विवरण के लिए लंबा विकल्प नाम।

-ए-सब स्वीकार करो
-n --स्वीकार-कोई नहीं
-डी --डीबग
-एस, --शैल
-एस, --चुप
-यू, --अपलोड-डीआईआर
-यू, --अपलोड-सीमा
-एच, --अपलोड-हैंडलर

विकल्प


--सभी स्वीकार करो
प्रोग्राम सामान्यतः POST डेटा तभी स्वीकार करता है जब REQUEST_METHOD POST हो
URL डेटा पर डेटा केवल तभी स्वीकार करता है जब REQUEST_METHOD GET हो। इस विकल्प
REQUEST_METHOD की परवाह किए बिना POST और URL डेटा दोनों को स्वीकार करने की अनुमति देता है।
जब यह विकल्प सेट किया जाता है, तो REQUEST_METHOD को प्राथमिकता दी जाती है (उदाहरण के लिए यदि विधि
POST है, FORM_variables COOKIE डेटा, GET डेटा और POST डेटा से लिए गए हैं
वह आदेश. यदि विधि GET है, तो FORM_variables COOKIE डेटा, POST से लिए जाते हैं
डेटा, और डेटा प्राप्त करें।) डिफ़ॉल्ट सभी इनपुट विधियों को स्वीकार नहीं करना है - बस
कुकी डेटा और REQUEST_METHOD.

--स्वीकार-कोई नहीं
यदि दिया गया है, तो प्रसंस्करण से पहले haserl मानक इनपुट को http सामग्री के रूप में पार्स नहीं करेगा
लिपि। यदि किसी हेसरल स्क्रिप्ट को किसी अन्य हैसरल स्क्रिप्ट से कॉल किया जाता है तो यह उपयोगी है।

- दाढ़
स्क्रिप्ट को निष्पादित करने के बजाय, उस स्क्रिप्ट का प्रिंट आउट लें जिसे निष्पादित किया जाएगा। अगर
पर्यावरण चर 'REQUEST_METHOD' सेट किया गया है, डेटा इसके साथ भेजा जाता है
सादा/पाठ्य सामग्री प्रकार. अन्यथा, शेल स्क्रिप्ट शब्दशः मुद्रित होती है।

--शेल=पाथस्पेक
उपयोग करने के लिए एक वैकल्पिक बैश-जैसे शेल निर्दिष्ट करें। डिफ़ॉल्ट रूप से "/ बिन / श"

शेल पैरामीटर्स को शामिल करने के लिए --shell= का उपयोग न करें/ बिन / श प्रारूप। इसके बजाय, का उपयोग करें
"=" के बिना वैकल्पिक प्रारूप, जैसा --शेल में है "/ बिन / बैश --norc"। सुनिश्चित करें
किसी विशेष वर्ण की सुरक्षा के लिए विकल्प स्ट्रिंग को उद्धृत करें।

यदि लुआ पुस्तकालयों के साथ संकलित किया जाता है, तो एकीकृत का उपयोग करने के लिए स्ट्रिंग "लुआ" का उपयोग किया जाता है
लुआ वी.एम. यह स्ट्रिंग केस संवेदी है. उदाहरण: --शेल=चंद्रमा

एक विकल्प "लुआक" है। इसके कारण हैसरल और लुआ पार्सर अक्षम हो जाते हैं,
और स्क्रिप्ट को पूर्व संकलित लुआ खंड माना जाता है। देखना एलयूएसी अधिक जानकारी के लिए नीचे
जानकारी.

--चुप
हेसरल सामान्यतः त्रुटि स्थितियों पर एक सूचनात्मक संदेश प्रिंट करता है। यह
त्रुटि संदेश को दबा देता है, ताकि हैसरल के उपयोग का विज्ञापन न हो।

--अपलोड-dir=दिरस्पेक
डिफ़ॉल्ट रूप से "/ Tmp". इसमें सभी अपलोड की गई फ़ाइलें अस्थायी फ़ाइल नाम के साथ बनाई जाती हैं
डायरेक्टरी HASERL_xxx_पथ इसमें अस्थायी फ़ाइल का नाम शामिल है. FORM_xxx_नाम
इसमें क्लाइंट द्वारा निर्दिष्ट फ़ाइल का मूल नाम शामिल है।

--अपलोड-हैंडलर=पाथस्पेक
जब निर्दिष्ट किया जाता है, तो फ़ाइल अपलोड को लिखने के बजाय इस हैंडलर द्वारा नियंत्रित किया जाता है
अस्थायी फ़ाइलें। पूर्ण पाथस्पेक दिया जाना चाहिए (PATH खोजा नहीं गया है), और
अपलोड-हैंडलर को एक कमांड-लाइन पैरामीटर दिया गया है: FIFO का नाम
जिस पर अपलोड फाइल भेजी जाएगी। इसके अलावा, हैंडलर को 3 प्राप्त हो सकते हैं
पर्यावरण चर: सामग्री प्रकार, फ़ाइल का नाम, तथा नाम. ये MIME को दर्शाते हैं
सामग्री के लिए सामग्री-स्वभाव शीर्षलेख। हेसरल प्रत्येक के लिए हैंडलर को फोर्क करेगा
फ़ाइल अपलोड की गई है, और अपलोड फ़ाइल की सामग्री निर्दिष्ट FIFO को भेज दी जाएगी।
हेसरल तब तक ब्लॉक रहेगा जब तक हैंडलर समाप्त नहीं हो जाता। यह तरीका विशेषज्ञों के लिए है
केवल.

--अपलोड-सीमा=सीमा
माइम-एन्कोडेड फ़ाइल को अधिकतम तक की अनुमति दें सीमा KB अपलोड किया जाना है. डिफ़ॉल्ट है 0KB (नहीं
अपलोड की अनुमति है)। ध्यान दें कि माइम-एन्कोडिंग डेटा के आकार में 33% जोड़ता है।

अवलोकन OF संचालन


सामान्य तौर पर, वेब सर्वर कई पर्यावरण चर सेट करता है, और फिर उपयोग करता है कांटा or
सीजीआई स्क्रिप्ट चलाने की दूसरी विधि। यदि स्क्रिप्ट का उपयोग करता है haserl दुभाषिया,
निम्नलिखित होता है:

If haserl suid रूट स्थापित किया गया है, फिर uid/gid को स्क्रिप्ट के स्वामी पर सेट किया गया है।

पर्यावरण को स्कैन किया जाता है HTTP_कुकी, जो संभवतः वेब द्वारा सेट किया गया है
सर्वर. यदि यह मौजूद है, तो पार्स की गई सामग्री को स्थानीय वातावरण में रखा जाता है।

पर्यावरण को स्कैन किया जाता है REQUEST_METHOD, जिसे वेब सर्वर द्वारा सेट किया गया था।
अनुरोध विधि के आधार पर, मानक इनपुट को पढ़ा और पार्स किया जाता है। पार्स किया गया
सामग्री को स्थानीय परिवेश में रखा गया है।

स्क्रिप्ट को टोकन किया गया है, पार्स किया गया है haserl कच्चे पाठ से कोड ब्लॉक। कच्चा पाठ है
"इको" स्टेटमेंट में परिवर्तित किया जाता है, और फिर सभी टोकन उप-शेल में भेज दिए जाते हैं।

haserl कांटे और एक उप-खोल (आमतौर पर)। / बिन / श) शुरू हो गया।

सभी टोकन अनुगामी के साथ उप-शेल के एसटीडीआईएन पर भेजे जाते हैं निकास आदेश।

जब उप-कोश समाप्त हो जाता है, तो haserl दुभाषिया अंतिम सफाई करता है और
फिर समाप्त हो जाता है.

ग्राहक साइड इनपुट


RSI haserl दुभाषिया HTTP_COOKIE पर्यावरण चर के माध्यम से भेजे गए डेटा को डीकोड करेगा, और
क्लाइंट से GET या POST विधि, और उन्हें पर्यावरण चर के रूप में संग्रहीत करें जो कर सकते हैं
haserl द्वारा एक्सेस किया जा सकता है। वेरिएबल का नाम स्रोत में दिए गए नाम के अनुरूप है,
सिवाय इसके कि एक उपसर्ग ( FORM_) जोड़ा गया है। उदाहरण के लिए, यदि ग्राहक "foo=bar" भेजता है,
पर्यावरण चर है FORM_foo=बार.

HTTP_COOKIE विधि के लिए, चर को उपसर्ग के साथ भी संग्रहीत किया जाता है ( कुकी_) जोड़ा गया.
उदाहरण के लिए, यदि HTTP_COOKIE में "foo=bar" शामिल है, तो पर्यावरण चर है
कुकी_फू=बार.

GET विधि के लिए, %xx फॉर्म में भेजे गए डेटा को वर्णों में अनुवादित किया जाता है
प्रतिनिधित्व करते हैं, और चर भी उपसर्ग के साथ संग्रहीत होते हैं ( GET_) जोड़ा गया. उदाहरण के लिए, यदि
QUERY_STRING में "foo=bar" शामिल है, पर्यावरण चर है GET_foo=बार.

POST विधि के लिए, चर को उपसर्ग के साथ भी संग्रहीत किया जाता है ( पोस्ट_) जोड़ा गया. के लिए
उदाहरण के लिए, यदि पोस्ट स्ट्रीम में "foo=bar" शामिल है, तो पर्यावरण चर है POST_foo=बार.

इसके अलावा, POST विधि के लिए, यदि डेटा का उपयोग करके भेजा जाता है बहुखण्डीय / फार्म-डेटा एन्कोडिंग,
डेटा स्वचालित रूप से डिकोड हो जाता है। इसका उपयोग आम तौर पर तब किया जाता है जब फ़ाइलें किसी वेब से अपलोड की जाती हैं
ग्राहक उपयोग कर रहा है .

ध्यान दें जब कोई फ़ाइल वेब सर्वर पर अपलोड की जाती है, तो उसे संग्रहीत किया जाता है अपलोड-dir
निर्देशिका. FORM_variable_name= अपलोड की गई फ़ाइल का नाम शामिल है (जैसा कि)
ग्राहक द्वारा निर्दिष्ट.) HASERL_variable_path= इसमें फ़ाइल का नाम शामिल है
अपलोड-dir जो अपलोड की गई सामग्री को रखता है। दुर्भावनापूर्ण ग्राहकों को रोकने के लिए
भरना अपलोड-dir आपके वेब सर्वर पर, फ़ाइल अपलोड की अनुमति केवल तभी होती है जब
--अपलोड-सीमा विकल्प का उपयोग यह निर्दिष्ट करने के लिए किया जाता है कि कितनी बड़ी फ़ाइल अपलोड की जा सकती है। हसर्ल
स्क्रिप्ट समाप्त होने पर अस्थायी फ़ाइल स्वचालित रूप से हटा दी जाती है। रखने के लिए
फ़ाइल, इसे स्थानांतरित करें या स्क्रिप्ट में कहीं इसका नाम बदलें।

ध्यान दें कि फ़ाइल नाम संग्रहीत है HASERL_परिवर्तनशील_पथ ऐसा इसलिए है क्योंकि FORM_,
GET_, और POST_ वेरिएबल क्लाइंट द्वारा संशोधित किए जा सकते हैं, और एक दुर्भावनापूर्ण क्लाइंट ऐसा कर सकता है
नाम के साथ दूसरा वेरिएबल सेट करें परिवर्तनशील_पथ=/ Etc / पासवर्ड. पहले के संस्करण
पाथस्पेक को संग्रहीत नहीं किया HASERL नाम स्थान। सेवा मेरे बनाए रखना पिछड़ा
संकलनीयता, la नाम of la अस्थायी पट्टिका is भी संग्रहित in फार्म_वैरिएबल = और
पोस्ट_वैरिएबल =। इस is माना असुरक्षित और चाहिए नहीं be उपयोग किया गया।

यदि क्लाइंट डेटा भेजता है के छात्रों फिर, POST और GET विधियों द्वारा haserl केवल पार्स करेगा
डेटा जो इससे मेल खाता है REQUEST_METHOD वेब सर्वर द्वारा वैरिएबल सेट, जब तक कि
सभी स्वीकृत विकल्प सेट कर दिया गया है. उदाहरण के लिए, एक फॉर्म जिसे POST विधि के माध्यम से बुलाया जाता है, लेकिन इसमें a
some.cgi?foo=bar&otherdata=something के URI में POST डेटा पार्स किया जाएगा, और foo
और अन्य आंकड़ा चरों को नजरअंदाज कर दिया जाता है।

यदि वेब सर्वर परिभाषित करता है HTTP_कुकी पर्यावरण चर, कुकी डेटा को पार्स किया जाता है।
कुकी डेटा पार्स किया गया है से पहले डेटा प्राप्त करें या पोस्ट करें, इसलिए दो चर की स्थिति में
समान नाम, GET या POST डेटा कुकी जानकारी को अधिलेखित कर देता है।

जब एक ही वेरिएबल के कई उदाहरण विभिन्न स्रोतों से भेजे जाते हैं, तो
FORM_variable को उस क्रम के अनुसार सेट किया जाएगा जिसमें वेरिएबल संसाधित किए जाते हैं।
HTTP_COOKIE को हमेशा पहले संसाधित किया जाता है, उसके बाद REQUEST_METHOD को। यदि स्वीकार-सब कुछ
विकल्प सेट किया गया है, फिर HTTP_COOKIE को पहले संसाधित किया जाता है, उसके बाद विधि को नहीं
REQUEST_METHOD द्वारा निर्दिष्ट, उसके बाद REQUEST_METHOD द्वारा। का अंतिम उदाहरण
वेरिएबल का उपयोग FORM_variable सेट करने के लिए किया जाएगा। ध्यान दें कि चर भी अलग-अलग हैं
COOKIE_variable, GET_variable और POST_variable के रूप में बनाता है। यह के उपयोग की अनुमति देता है
प्रत्येक स्रोत से ओवरलैपिंग नाम।

जब एक ही स्रोत से एक ही चर के कई उदाहरण भेजे जाते हैं, तो केवल अंतिम
एक को बचा लिया गया है. सभी प्रतियाँ रखने के लिए (उदाहरण के लिए, बहु-चयन के लिए), अंत में "[]" जोड़ें
परिवर्तनीय नाम का. सभी परिणाम नई पंक्तियों द्वारा अलग करके लौटा दिए जाएंगे। उदाहरण के लिए,
होस्ट=हनोक&होस्ट=एस्तेर&होस्ट=जोशुआ का परिणाम "FORM_host=जोशुआ" है।
होस्ट[]=हनोक&होस्ट[]एस्तेर&होस्ट[]=जोशुआ का परिणाम "FORM_host=हनोक\nएस्थर\nजोशुआ"

भाषा


निम्नलिखित भाषा संरचनाओं द्वारा मान्यता प्राप्त है haserl.

भागो
<% [शेल स्क्रिप्ट] %>

<% %> टैग से जुड़ी कोई भी चीज़ निष्पादन के लिए उप-शेल में भेजी जाती है। टेक्स्ट
शब्दशः भेजा जाता है.

शामिल
<%पाथस्पेक में %>

इस स्क्रिप्ट में एक अन्य फ़ाइल शब्दशः शामिल करें। फ़ाइल को तब शामिल किया जाता है जब स्क्रिप्ट
प्रारंभ में पार्स किया गया है।

ईवल
<%= अभिव्यक्ति %>

शेल एक्सप्रेशन प्रिंट करें. "इको एक्सपीआर" के लिए सिंटैक्टिक शुगर।

कैसे
<%# टिप्पणी %>

टिप्पणी ब्लॉक. टिप्पणी ब्लॉक में कुछ भी पार्स नहीं किया गया है। टिप्पणियाँ नेस्टेड की जा सकती हैं
और इसमें अन्य हेसरल तत्व शामिल हो सकते हैं।

उदाहरण


चेतावनी
उपयोग करने का तरीका बताने के लिए नीचे दिए गए उदाहरण सरलीकृत किए गए हैं haserl. आपको होना चाहिए
उपयोग करने से पहले बुनियादी वेब स्क्रिप्टिंग सुरक्षा से परिचित हों haserl (या कोई स्क्रिप्टिंग
भाषा) एक उत्पादन परिवेश में।

सरल आदेश
#!/usr/local/bin/haserl
सामग्री-प्रकार: पाठ/सादा

<%# यह एक नमूना "env" स्क्रिप्ट %> है
<% env %>

के परिणाम प्रिंट करता है env माइम-प्रकार के "टेक्स्ट/प्लेन" दस्तावेज़ के रूप में कमांड। यह है
la haserl सामान्य का संस्करण प्रिंटेंव सी.जी.आई.

पाश साथ में गतिशील उत्पादन
#!/usr/local/bin/haserl
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल




<% लाल नीले पीले सियान में एक के लिए; %> करें
"><% प्रतिध्वनि -n "$a" %>
<% हो गया %>




की HTML तालिका के साथ, क्लाइंट को माइम-प्रकार का "टेक्स्ट/html" दस्तावेज़ भेजता है
पृष्ठभूमि रंग के साथ लेबल किए गए तत्व।

उपयोग खोल परिभाषित कार्य करता है.
#!/usr/local/bin/haserl
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल

<% # उपयोगकर्ता फ़ंक्शन को परिभाषित करें
तालिका_तत्व() {
प्रतिध्वनि" $1 "
}
%>



<% लाल नीले पीले सियान में एक के लिए; %> करें
<% तालिका_तत्व $a %>
<% हो गया %>




ऊपर जैसा ही है, लेकिन एम्बेडेड HTML के बजाय शेल फ़ंक्शन का उपयोग करता है।

स्वयं संदर्भित सीजीआई साथ में a प्रपत्र
#!/usr/local/bin/haserl
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल


नमूना प्रपत्र
" method="GET">
<% # FORM_textfield का कुछ बुनियादी सत्यापन करें
# सामान्य वेब हमलों को रोकने के लिए
FORM_textfield=$( echo "$FORM_textfield" | sed "s/[^A-Za-z0-9 ]//g")
%>
<इनपुट प्रकार=टेक्स्ट नाम=टेक्स्टफ़ील्ड
वैल्यू='<% इको -एन '$FORM_textfield' | tr az AZ %>' cols=20>




एक फॉर्म प्रिंट करता है. यदि क्लाइंट फॉर्म में टेक्स्ट दर्ज करता है, तो सीजीआई पुनः लोड (परिभाषित) किया जाता है
by $SCRIPT_NAME) और वेब हमलों को रोकने के लिए टेक्स्टफील्ड को साफ किया जाता है, फिर
उपयोगकर्ता द्वारा दर्ज किए गए पाठ के साथ प्रपत्र पुनः प्रदर्शित होता है। पाठ अपरकेस है.

अपलोड हो रहा है a पट्टिका
#!/usr/स्थानीय/बिन/haserl --upload-limit=4096 --upload-dir=/ Tmp
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल


" method=POST enctype="multipart/form-data" >



<% यदि परीक्षण -n "$HASERL_uploadfile_path"; फिर %>

आपने <% echo -n $FORM_uploadfile_name %> नाम की एक फ़ाइल अपलोड की, और वह हो गई
. अस्थायी रूप से सर्वर पर के रूप में संग्रहीत किया जाता है।
फ़ाइल <% cat $HASERL_uploadfile_path | थी wc -c %> बाइट्स लंबा।
<% rm -f $HASERL_uploadfile_path %> चिंता न करें, फ़ाइल अभी हटा दी गई है
वेब सर्वर से.
<% अन्य %>
आपने अभी तक कोई फ़ाइल अपलोड नहीं की है.
<% fi %>



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

आरएफसी-2616 अनुरूपता
#!/usr/local/bin/haserl
<% इको -एन "सामग्री-प्रकार: टेक्स्ट/html\r\n\r\n" %>

...


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

वातावरण


वेब सर्वर से विरासत में मिले पर्यावरण चर के अलावा, निम्नलिखित
पर्यावरण चर हमेशा स्टार्टअप पर परिभाषित किए जाते हैं:

हेसरल्वर
haserl संस्करण - एक सूचनात्मक टैग.

सत्र आईडी
एक हेक्साडेसिमल टैग जो सीजीआई के जीवन के लिए अद्वितीय है (यह तब उत्पन्न होता है जब
सीजीआई शुरू होता है; और तब तक नहीं बदलता जब तक कोई अन्य POST या GET क्वेरी उत्पन्न न हो जाए।)

HASERL_ACCEPT_ALL
अगर --सभी स्वीकार करो झंडा स्थापित किया गया था, -1, अन्यथा 0.

HASERL_SHELL
शेल हैसरल के नाम से उप-शेल कमांड चलाना शुरू हुआ।

HASERL_UPLOAD_DIR
अपलोड की गई फ़ाइलों को संग्रहीत करने के लिए निर्देशिका haserl का उपयोग किया जाएगा।

HASERL_UPLOAD_LIMIT
केबी की संख्या जिसे क्लाइंट से सर्वर पर भेजने की अनुमति है।

इन वेरिएबल्स को स्क्रिप्ट के भीतर संशोधित या अधिलेखित किया जा सकता है, हालाँकि
"HASERL_" से प्रारंभ करना केवल सूचनात्मक है, और चल रही स्क्रिप्ट को प्रभावित नहीं करता है।

सुरक्षा विशेषताएं


सीजीआई स्क्रिप्ट प्रोग्राम करने के लिए शेल का उपयोग करने के खतरों के बारे में बहुत सारा साहित्य मौजूद है।
haserl शामिल हैं कुछ इस जोखिम को कम करने के लिए सुरक्षा।

वातावरण चर
पर्यावरण चर को पॉप्युलेट करने का कोड उप-के दायरे से बाहर है
शंख। यह पात्रों पर विश्लेषण करता है? और &, इसलिए ग्राहक के लिए ऐसा करना कठिन है
"इंजेक्शन" हमले. उदहारण के लिए, foo.cgi?a=परीक्षण;बिल्ली / Etc / पासवर्ड में परिणाम सकता है
एक वेरिएबल को मान निर्दिष्ट किया जा रहा है परीक्षण और फिर दौड़ने के परिणाम बिल्ली
/ Etc / पासवर्ड ग्राहक को भेजा जा रहा है. हसरली वेरिएबल को पूर्ण रूप से असाइन करेगा
मूल्य: परीक्षण;बिल्ली / Etc / पासवर्ड

इस "खतरनाक" वेरिएबल को शेल स्क्रिप्ट में संलग्न करके उपयोग करना सुरक्षित है
उद्धरण; हालाँकि सत्यापन सभी इनपुट फ़ील्ड पर किया जाना चाहिए।

विशेषाधिकार छोड़ने
यदि एक suid स्क्रिप्ट के रूप में स्थापित किया गया है, haserl के स्वामी के यूआईडी/जीआईडी ​​को सेट करेगा
लिपि। इसका उपयोग सीजीआई स्क्रिप्ट के एक सेट के लिए किया जा सकता है जिसमें विभिन्न हैं
विशेषाधिकार। यदि haserl बाइनरी सुइड स्थापित नहीं है, तो सीजीआई स्क्रिप्ट होगी
वेब सर्वर के यूआईडी/जीआईडी ​​के साथ चलाएं।

अस्वीकार आदेश line पैरामीटर दी on la यूआरएल
यदि यूआरएल में अनएन्कोडेड "=" नहीं है, तो सीजीआई स्पेक विकल्प बताता है
प्रोग्राम में कमांड-लाइन पैरामीटर के रूप में उपयोग किया जाना है। उदाहरण के लिए, के अनुसार
सीजीआई स्पेक के लिए: http://192.168.0.1/test.cgi?--अपलोड-सीमा%3डी2000&फू%3डीबार
"Foo=bar" सेट करने के अलावा अपलोड-सीमा को 2000KB पर सेट करना चाहिए। बचने के लिए
अपने स्वयं के अपलोड सक्षम करने वाले ग्राहकों के विरुद्ध, haserl किसी भी कमांड-लाइन विकल्प को अस्वीकार करता है
argv से परे[2]। यदि # के रूप में लागू किया जाता है! स्क्रिप्ट, दुभाषिया argv[0] है, सभी
# में सूचीबद्ध कमांड-लाइन विकल्प! लाइन को argv[1], और में संयोजित किया गया है
स्क्रिप्ट का नाम argv[2] है।

LUA


यदि lua समर्थन के साथ संकलित किया गया है, --शेल=लुआ इसके बजाय lua को स्क्रिप्ट भाषा के रूप में सक्षम करेगा
बैश शेल का. पर्यावरण चर (SCRIPT_NAME, SERVER_NAME, आदि) रखे गए हैं
ENV तालिका, और प्रपत्र चर को FORM तालिका में रखा गया है। उदाहरण के लिए,
उपरोक्त स्व-संदर्भित फॉर्म को इस प्रकार लिखा जा सकता है:

#!/usr/local/bin/haserl --shell=lua
सामग्री-प्रकार: टेक्स्ट/एचटीएमएल


नमूना प्रपत्र
"विधि='प्राप्त करें'>
<% # FORM_textfield का कुछ बुनियादी सत्यापन करें
# सामान्य वेब हमलों को रोकने के लिए
FORM.textfield=string.gsub(FORM.textfield, "[^%a%d]", "")
%>
<इनपुट प्रकार=टेक्स्ट नाम=टेक्स्टफ़ील्ड
वैल्यू = "<% io.write (string.upper(FORM.textfield)) %>" cols=20>




<%= ऑपरेटर के लिए वाक्यात्मक चीनी है io.लिखो (स्ट्रिंग( ... )) तो, उदाहरण के लिए,
मान = उपरोक्त पंक्ति लिखी जा सकती है: मान='<%= string.upper (FORM.textfield) %>" कोल्स=20>

haserl lua स्क्रिप्ट फ़ंक्शन का उपयोग कर सकते हैं Haserl.loadfile (फ़ाइल का नाम) किसी लक्ष्य को संसाधित करने के लिए
हेसरल (लुआ) स्क्रिप्ट के रूप में स्क्रिप्ट। फ़ंक्शन एक प्रकार का "फ़ंक्शन" लौटाता है।

उदाहरण के लिए,

बार.एलएसपी
<% io.write ("हैलो वर्ल्ड") %>

आपका संदेश <%= gvar %> है

-- शामिल फ़ाइल का अंत --

foo.haserl
#!/usr/local/bin/haserl --shell=lua
<% m = haserl.loadfile("bar.lsp")
gvar = "m() के रूप में चलाएँ"
म()

gvar = "एक चरण में लोड करें और चलाएं"
haserl.loadfile("bar.lsp")()
%>

रनिंग foo उत्पादन करेंगे:

नमस्ते विश्व
आपका संदेश m() के रूप में चलाएँ है
-- शामिल फ़ाइल का अंत --
नमस्ते विश्व
आपका संदेश एक चरण में लोड करें और चलाएँ है
-- शामिल फ़ाइल का अंत --

यह फ़ंक्शन नेस्टेड हैसरल सर्वर पेज - पेज स्निपेट्स को संभव बनाता है
जो कि haserl टोकननाइज़र द्वारा संसाधित किए जाते हैं।

एलयूएसी


RSI लुआसी "शेल" एक पूर्व संकलित लुआ खंड है, इसलिए स्क्रिप्ट का इंटरैक्टिव संपादन और परीक्षण
संभव नहीं है। हालाँकि, haserl को केवल luac समर्थन के साथ संकलित किया जा सकता है, और यह अनुमति देता है
छोटे मेमोरी परिवेश में भी lua समर्थन। ऊपर सूचीबद्ध सभी haserl lua विशेषताएं हैं
अभी भी उपलब्ध। (यदि luac ही haserl में निर्मित एकमात्र शेल है, तो haserl.loadfile है
अक्षम, क्योंकि हैसर्ल पार्सर संकलित नहीं है।)

यहां एक तुच्छ स्क्रिप्ट का उदाहरण दिया गया है, जिसे luac cgi स्क्रिप्ट में परिवर्तित किया गया है:

फ़ाइल test.lua को देखते हुए:
प्रिंट करें ("सामग्री-प्रकार: text/plain0)
प्रिंट करें ("इस रन के लिए आपका यूयूआईडी है: " .. ENV.SESSIONID)

इसे luac के साथ संकलित किया जा सकता है:
luac -o test.luac -s test.lua

और फिर इसमें haserl हेडर जोड़ा गया:
इको '#!/usr/bin/haserl --shell=luac' | बिल्ली - test.luac >luac.cgi

वैकल्पिक रूप से, मानक लुआ शेल का उपयोग करके एक संपूर्ण वेबसाइट विकसित करना संभव है,
और उसके बाद haserl ने स्वयं luac कंपाइलर के लिए स्क्रिप्ट को एक भाग के रूप में प्रीप्रोसेस किया
निर्माण प्रक्रिया. ऐसा करने के लिए, --shell=lua का उपयोग करें, और वेबसाइट विकसित करें। जब निर्माण के लिए तैयार हो
रनटाइम वातावरण, अपनी लुआ स्क्रिप्ट में --डीबग लाइन जोड़ें, और उन्हें आउटपुट चलाएं
.lua स्रोत फ़ाइलों के परिणाम। उदाहरण के लिए:

haserl स्क्रिप्ट test.cgi को देखते हुए:
#!/usr/bin/haserl --shell=lua --debug
सामग्री-प्रकार: पाठ/सादा

इस रन के लिए आपका UUID <%= ENV.SESSIONID %> है

प्रीकंपाइल करें, संकलित करें, और हैसरल लूक हेडर जोड़ें:
./test.cgi > test.lua
luac -s -o test.luac test.lua
इको '#!/usr/bin/haserl --shell=luac' | बिल्ली - test.luac >luac.cgi

onworks.net सेवाओं का उपयोग करके ऑनलाइन haserl का उपयोग करें


फ्री सर्वर और वर्कस्टेशन

विंडोज और लाइनेक्स एप डाउनलोड करें

लिनक्स कमांड

  • 1
    abidiff
    abidiff
    एबिडिफ - ईएलएफ फाइलों के एबीआई की तुलना करें
    एबिडीफ एप्लिकेशन बाइनरी की तुलना करता है
    दो साझा पुस्तकालयों के इंटरफेस (एबीआई)।
    ईएलएफ प्रारूप में। यह एक अर्थपूर्ण उत्सर्जन करता है
    रिपोर्ट...
    एबिडीफ चलाएं
  • 2
    आबिदव
    आबिदव
    abidw - ELF के ABI को क्रमबद्ध करें
    फ़ाइल abidw ईएलएफ में एक साझा पुस्तकालय पढ़ता है
    प्रारूप और एक एक्सएमएल प्रतिनिधित्व का उत्सर्जन करता है
    इसके ABI से मानक आउटपुट तक।
    उत्सर्जित ...
    अबीद चलाओ
  • 3
    copac2xml
    copac2xml
    बिबुटिल्स - ग्रंथ सूची रूपांतरण
    उपयोगिताओं ...
    Copac2xml चलाएँ
  • 4
    कॉप्ट
    कॉप्ट
    कॉप्ट - पीपहोल अनुकूलक SYSNOPIS:
    कॉप्ट फ़ाइल.. विवरण: कॉप्ट एक है
    सामान्य प्रयोजन पीपहोल अनुकूलक। यह
    अपने मानक इनपुट से कोड पढ़ता है और
    एक लिखता है...
    कॉप चलाओ
  • 5
    इकट्ठा_stx_शीर्षक
    इकट्ठा_stx_शीर्षक
    इकट्ठा_stx_शीर्षक - शीर्षक इकट्ठा करें
    Stx दस्तावेज़ों से घोषणाएँ ...
    इकट्ठा_stx_titles चलाएँ
  • 6
    गैटलिंग-बेंच
    गैटलिंग-बेंच
    बेंच - http बेंचमार्क ...
    गैटलिंग-बेंच चलाएं
  • अधिक "

Ad