~0wx.eu~ :: फ़ाइल होस्टिंग और अन्य उपयोगी उपकरण


अपलोड TinyURL HugeURL Pastebin परिचय रिपोर्ट लॉगिन
हिन्दी
English English Deutsch Deutsch Plattdüütsch Plattdüütsch Lëtzebuergesch Lëtzebuergesch Nederlands Nederlands Dansk Dansk Svenska Svenska Bokmål Bokmål Nynorsk Nynorsk Íslenska Íslenska Føroyskt Føroyskt Español Español Català Català Galego Galego Português Português Français Français Italiano Italiano Latina Latina Română Română Rumantsch Rumantsch Gaeilge Gaeilge Suomi Suomi Magyar Magyar Euskara Euskara Esperanto Esperanto 日本語 日本語 简体中文 简体中文 繁體中文(台灣) 繁體中文(台灣) 繁體中文(香港) 繁體中文(香港) 粵語 粵語 한국어 한국어 Tiếng Việt Tiếng Việt ไทย ไทย Bahasa Indonesia Bahasa Indonesia Bahasa Melayu Bahasa Melayu Ελληνικά Ελληνικά Polski Polski Čeština Čeština Українська Українська Русский Русский Türkçe Türkçe العربية العربية עברית עברית Kiswahili Kiswahili ʻŌlelo Hawaiʻi ʻŌlelo Hawaiʻi tlhIngan Hol tlhIngan Hol

0wx.eu के सभी कार्यों के लिए एक API है। आप इसका उपयोग स्क्रिप्टिंग या कंसोल-आधारित कमांड के लिए कर सकते हैं।

इस साइट के फ़ॉर्म जो कुछ करते हैं, वह सब स्क्रिप्ट के लिए। हर उत्तर JSON है, त्रुटियाँ भी, इसलिए आपको कभी अनुमान नहीं लगाना पड़ता कि बॉडी परिणाम है या स्पष्टीकरण।

अनुरोध करना

एंडपॉइंट पर फ़ॉर्म पैरामीटर या JSON बॉडी के साथ POST करें। दोनों समतुल्य हैं; जो आपके टूलिंग के लिए आसान हो उसे चुनें। action पैरामीटर तय करता है कि क्या करना है। किसी व्यक्ति द्वारा टाइप की गई हर चीज़ के लिए --data-urlencode का उपयोग करें — पेस्ट टेक्स्ट, URL, अनुवाद — क्योंकि -d मान को कच्चा भेजता है और यह पहले & पर कट जाएगा। action जैसे निश्चित मानों के लिए सादा -d ठीक है। wget में --data-urlencode बिल्कुल नहीं है, इसलिए wget के साथ या तो ऐसे मानों को स्वयं प्रतिशत-एन्कोड करें या JSON बॉडी भेजें, जिसे किसी एन्कोडिंग की आवश्यकता नहीं।

curl -X POST https://0wx.eu/api.cgi \
     -d action=paste --data-urlencode 'content=hello & world'

curl -X POST https://0wx.eu/api.cgi \
     -H 'Content-Type: application/json' \
     -d '{"action":"paste","content":"hello & world"}'

wget -qO- --header='Content-Type: application/json' \
     --post-data '{"action":"paste","content":"hello & world"}' https://0wx.eu/api.cgi
& वाले मान

फ़ॉर्म बॉडी में & पैरामीटर अलग करता है, और curl -d आपके दिए गए मान को एन्कोड नहीं करता। इसलिए क्वेरी स्ट्रिंग वाला URL अपने पहले & पर कट जाता है, और बाकी अलग पैरामीटर के रूप में पहुँचता है। --data-urlencode का उपयोग करें, या JSON भेजें। अनचाहे पैरामीटर अनदेखे करने के बजाय अस्वीकार किए जाते हैं, इसलिए यह आधा लिंक संग्रहीत करने के बजाय स्पष्ट रूप से विफल होता है।

# wrong -- the value is cut at the &
curl -X POST https://0wx.eu/api.cgi \
     -d action=tinyurl -d 'url=https://example.com/?a=1&b=2'

# right
curl -X POST https://0wx.eu/api.cgi \
     -d action=tinyurl --data-urlencode 'url=https://example.com/?a=1&b=2'

# also right -- JSON needs no escaping
curl -X POST https://0wx.eu/api.cgi -H 'Content-Type: application/json' \
     -d '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}'

# wget has no --data-urlencode, so percent-encode it yourself...
wget -qO- --post-data 'action=tinyurl&url=https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2' https://0wx.eu/api.cgi

# ...or send JSON, which needs no encoding at all
wget -qO- --header='Content-Type: application/json' \
     --post-data '{"action":"tinyurl","url":"https://example.com/?a=1&b=2"}' https://0wx.eu/api.cgi
प्रमाणीकरण

वैकल्पिक। कुंजी के बिना अनुरोध गुमनाम होता है और ठीक एक गुमनाम आगंतुक की तरह व्यवहार करता है — परिणाम किसी भी स्थिति में सार्वजनिक है, अंतर केवल यह है कि यह आपकी फ़ाइल सूची में आता है या नहीं। अपने खाता पृष्ठ पर एक कुंजी बनाएँ और इसे bearer टोकन के रूप में भेजें; इसे apikey पैरामीटर के रूप में देना भी काम करता है, लेकिन क्वेरी स्ट्रिंग में कुंजी सर्वर लॉग और ब्राउज़र इतिहास में पहुँच जाती है।

curl -X POST https://0wx.eu/api.cgi \
     -H 'Authorization: Bearer YOUR_KEY' \
     -d action=whoami

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=whoami' https://0wx.eu/api.cgi
क्रियाएँ
actionपैरामीटरविवरण
whoamiपुष्टि करता है कि कुंजी काम करती है और वर्तमान सीमाएँ बताता है। इसकी कोई लागत नहीं; इसे पहले कॉल करें।
ipआपका पता, उसका PTR, जिस देश, राज्य और शहर में इसकी भू-स्थिति है, निर्देशांक, और आपके भेजे गए user agent की रिपोर्ट करता है। किसी कुंजी की आवश्यकता नहीं और कुंजी के साथ या बिना समान उत्तर देता है। जानबूझकर वेब पृष्ठ से संकीर्ण: कोई WHOIS, कोई DNS ज़ोन और कोई ब्लॉकलिस्ट लुकअप नहीं, इसलिए इसे कॉल करने में सर्वर को स्थानीय डेटाबेस पढ़ने के अलावा कुछ खर्च नहीं होता।
uploadfile (दोहराने योग्य), resize, lifetime, gallery या g *एक या अधिक फ़ाइलें अपलोड करता है। multipart/form-data होना चाहिए। किसी गैलरी का नाम देने से वे सीधे उसमें चली जाती हैं और उसकी id लौटाई जाती है।
tinyurlurl, lifetimeकिसी URL को छोटा करता है।
hugeurlurl, lifetimeकिसी URL को जानबूझकर, बेतुके ढंग से लंबा करता है।
pastecontent, lifetimeटेक्स्ट का एक ब्लॉक संग्रहीत करता है और उसका लिंक लौटाता है।
translatecontent, to, fromटेक्स्ट का अनुवाद करता है। to और from langs क्रिया से मिले कोड हैं — ध्यान दें कि ये हमेशा देश कोड नहीं होते: डेनिश da है, dk नहीं। from छोड़ा जा सकता है या auto दिया जा सकता है, जो बैकएंड से भाषा पहचानने को कहता है; इसे देने से छोटे टेक्स्ट पर बेहतर परिणाम मिलता है।
langstranslate द्वारा स्वीकृत भाषाएँ supported_langs के रूप में सूचीबद्ध करता है: प्रति भाषा एक ऑब्जेक्ट, कोड से नाम, उसी क्रम में जिसमें साइट उन्हें प्रस्तुत करती है। API कुंजी की आवश्यकता नहीं।
dyndnskey, ip, formatएक डायनामिक DNS नाम अपडेट करता है। एकमात्र क्रिया जिसे API कुंजी नहीं चाहिए: इसे राउटर कॉल करता है, जिसके पास URL के लिए एक फ़ील्ड है और हेडर भेजने का कोई तरीका नहीं। key आपके खाते में दिखाई गई प्रति-नाम अपडेट कुंजी है, आपकी API कुंजी नहीं। ip छोड़ें तो जिस पते से आप कॉल कर रहे हैं वह उपयोग होता है। उत्तर वास्तविक dyndns2 शब्द है — good, nochg, badauth, abuse या dnserr — सादे टेक्स्ट के रूप में, क्योंकि राउटर यही पार्स करते हैं; सामान्य JSON के लिए format=json जोड़ें।
listfiles *page, gआपकी फ़ाइलें उस सब के साथ सूचीबद्ध करता है जो जानकारी पैनल दिखाता है, साथ में थंबनेल और सीधा लिंक। g इसे एक गैलरी तक सीमित करता है, या किसी भी गैलरी में न होने वाली फ़ाइलों के लिए none
listpastes *pageआपके पेस्ट सूचीबद्ध करता है, हर एक की पूरी बॉडी के बजाय 200-अक्षरों का पूर्वावलोकन।
listurls *pageआपके छोटे और विशाल URL सूचीबद्ध करता है, उस पते के साथ जिसकी ओर हर एक इंगित करता है।
otl *shareआपकी किसी फ़ाइल का एक-बार वाला लिंक बनाता है। हर कॉल एक नया बनाता है, इसलिए एक ही फ़ाइल दो लोगों को देने पर दो लिंक मिलते हैं।
listotl *pageआपके सक्रिय एक-बार वाले लिंक, हर एक जिस फ़ाइल की ओर इंगित करता है, और वह फ़ाइल तब से समाप्त हुई है या नहीं, सूचीबद्ध करता है।
listgalleries *आपकी गैलरियाँ उनकी id, नाम, फ़ाइल संख्या और प्रकाशन स्थिति के साथ सूचीबद्ध करता है।
gallery *g, publishकिसी गैलरी की प्रकाशन स्थिति बताता है, और publish देने पर उसे बदलता है।
move *share (दोहराने योग्य), gallery या gफ़ाइलों को किसी गैलरी में ले जाता है, नाम से (नई होने पर बनाई जाती है) या id से। दोनों छोड़ने पर वे मुख्य सूची में वापस चली जाती हैं।
delete *share (दोहराने योग्य), g, otl, withfilesफ़ाइलें, पेस्ट, छोटे URL, गैलरी, एक-बार वाले लिंक, या इनका कोई भी मिश्रण हटाता है। एक share का मिलान पहले आपकी फ़ाइलों से और फिर आपके पेस्ट और लिंक से किया जाता है, इसलिए कॉलर को उन्हें प्रकार के अनुसार छाँटना नहीं पड़ता। एक-बार वाले लिंक अलग से otl में जाते हैं: लिंक हटाने को उस फ़ाइल को हटाने से भ्रमित नहीं होना चाहिए जिसकी ओर वह इंगित करता है।

* इन क्रियाओं के लिए API कुंजी चाहिए। ये एक खाते का अपना डेटा पढ़ती या बदलती हैं, इसलिए इनका कोई गुमनाम रूप नहीं है।

एक साथ कई

share और g दोहराया गया फ़ील्ड, JSON ऐरे या कॉमा से अलग की गई सूची स्वीकार करते हैं — जो आपके टूलिंग के लिए सबसे आसान हो। डुप्लिकेट अनदेखे किए जाते हैं।

curl -X POST https://0wx.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=move -d share=Ab3xK9pQ -d share=Zz7yT2mN --data-urlencode 'gallery=Holiday 2026'

curl -X POST https://0wx.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=delete -d 'share=Ab3xK9pQ,Zz7yT2mN'

curl -X POST https://0wx.eu/api.cgi -H 'Content-Type: application/json' \
     -H 'Authorization: Bearer YOUR_KEY' \
     -d '{"action":"move","share":["Ab3xK9pQ","Zz7yT2mN"],"g":7}'

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=delete&share=Ab3xK9pQ,Zz7yT2mN' https://0wx.eu/api.cgi
गैलरियाँ

जहाँ भी गैलरी का नाम दिया जाता है — upload पर या move पर — उसे इन्हीं दो तरीकों से दिया जाता है: मौजूदा id के लिए g, या नाम के लिए gallery, जो नया होने पर बनाया जाता है। यदि दोनों भेजे जाएँ, तो g जीतता है। उत्तर में गैलरी id होती है। ध्यान दें कि गैलरी हटाने से केवल गैलरी हटती है, उसकी फ़ाइलें मुख्य सूची में रह जाती हैं — वेब फ़ॉर्म के विपरीत, जो पूछकर उन्हें हटा देता है। उन्हें भी हटाने के लिए withfiles=true दें: अपने समूहों को व्यवस्थित करने वाली स्क्रिप्ट को गलती से अपलोड नहीं खोने चाहिए।

curl -X POST https://0wx.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -F action=upload -F file=@photo.jpg --form-string 'gallery=Holiday 2026'

curl -X POST https://0wx.eu/api.cgi -H 'Authorization: Bearer YOUR_KEY' \
     -d action=gallery -d g=7 -d publish=true

wget -qO- --header='Authorization: Bearer YOUR_KEY' \
     --post-data 'action=gallery&g=7&publish=true' https://0wx.eu/api.cgi
फ़ाइलें अपलोड करना

अपलोड JSON बॉडी का उपयोग नहीं कर सकते, क्योंकि फ़ाइल को multipart के रूप में भेजना होता है। एक साथ कई भेजने के लिए file भाग को दोहराएँ। हर फ़ाइल की अलग रिपोर्ट होती है: उत्तर में स्वीकृत फ़ाइलों की files सूची और अस्वीकृत फ़ाइलों की rejected सूची होती है, इसलिए आंशिक सफलता भी सफलता है।

curl -X POST https://0wx.eu/api.cgi \
     -H 'Authorization: Bearer YOUR_KEY' \
     -F action=upload \
     -F file=@photo.jpg \
     -F file=@notes.txt \
     -F lifetime=7d

इसका कोई wget रूप नहीं है। wget multipart/form-data बॉडी नहीं बना सकता — इसमें curl के -F का कोई समकक्ष नहीं है — और अपलोड multipart होने चाहिए। curl का उपयोग करें, या बॉडी और बाउंड्री स्वयं बनाएँ और इसे --post-file से भेजें।

अवधि

हर उस क्रिया पर वैकल्पिक जो कुछ संग्रहीत करती है। केवल सेकंड, या m, h या d के बाद वाली संख्या स्वीकार करता है — वही रूप जो वेब फ़ॉर्म लेते हैं। आइटम को अनिश्चित काल तक रखने के लिए इसे छोड़ें या 0 दें।

उत्तर

हर उत्तर ok फ़ील्ड वाला एक JSON ऑब्जेक्ट है। सफलता पर इसमें परिणाम होता है; विफलता पर इसमें एक स्थिर error कोड और एक मानव-पठनीय message होता है। कोड पर शाखा करें, संदेश लॉग करें।

{"ok":true,"type":"paste","share":"Ab3xK9pQ",
 "url":"https://0wx.eu/p/Ab3xK9pQ","bytes":11}

{"ok":false,"error":"url_too_long",
 "message":"URL exceeds the maximum length."}
ऑडियो टैग

जहाँ फ़ाइल में ये होते हैं, listfiles उसकी प्रविष्टि में file_tags जोड़ता है: कलाकार, शीर्षक और एल्बम, जो फ़ाइल अपलोड होने पर ID3, Vorbis टिप्पणियों या MP4 atoms से पढ़े गए थे। जब बताने को कुछ न हो, जो अधिकांश फ़ाइलों का हाल है, तो कुंजी null नहीं बल्कि अनुपस्थित होती है, इसलिए इसे पढ़ने से पहले जाँचें। अलग-अलग फ़ील्ड भी गायब हो सकते हैं — किसी फ़ाइल में शीर्षक हो सकता है और एल्बम नहीं। फ़ाइल के मेटाडेटा से और कुछ उजागर नहीं किया जाता: iTunes खरीद में खरीदार का नाम और Apple ID दर्ज होते हैं, और उन्हें जानबूझकर कभी नहीं पढ़ा जाता।

{"ok":true,"type":"files","total":2,"page":1,"pages":1,"files":[
  {"share":"Ab3xK9pQ","name":"autobahn.mp3","mime":"audio/mpeg",
   "bytes":8123456,"url":"https://0wx.eu/i/Ab3xK9pQ",
   "file_tags":{"artist":"Kraftwerk","title":"Autobahn","album":"Autobahn"}},
  {"share":"Zz7yT2mN","name":"photo.jpg","mime":"image/jpeg",
   "bytes":204800,"url":"https://0wx.eu/i/Zz7yT2mN"}
]}
त्रुटि कोड
errorHTTPविवरण
unknown_action400ऐसी कोई क्रिया नहीं है।
bad_json400बॉडी मान्य JSON नहीं थी, या किसी फ़ील्ड में नेस्टेड संरचना थी।
unexpected_parameter400एक ऐसा पैरामीटर आया जो यह क्रिया नहीं लेती — आमतौर पर किसी मान में एक बिना एन्कोड किया &। संदेश में पैरामीटरों के नाम हैं।
bad_key401कुंजी पहचानी नहीं गई। गलत कुंजी को चुपचाप गुमनाम मानने के बजाय अस्वीकार किया जाता है।
bad_url400URL विकृत है, या http(s), ftp या gopher के अलावा किसी स्कीम का उपयोग करता है।
bad_lifetime400अवधि न तो संख्या थी और न ही m, h या d के बाद वाली संख्या।
no_content400संग्रहीत करने के लिए कुछ नहीं भेजा गया।
url_too_long413URL सीमा से लंबा है।
paste_too_long413टेक्स्ट पेस्ट सीमा से बड़ा है। सीमाएँ UTF-8 बाइट में मापी जाती हैं, इसलिए गैर-लैटिन टेक्स्ट अपने अक्षरों की संख्या से अधिक गिना जाता है।
too_many_files413एक कॉल में स्वीकार्य से अधिक फ़ाइलें।
no_usable_files415हर फ़ाइल अस्वीकार कर दी गई। कारण के लिए rejected सूची देखें।
backend_unavailable502अनुवाद बैकएंड ने उत्तर नहीं दिया।
internal500कुछ अप्रत्याशित रूप से विफल हुआ। इसे लॉग कर लिया गया है।
सीमाएँ

वर्तमान मान हार्डकोड करने के बजाय पढ़ने के लिए whoami कॉल करें — वे सर्वर ऑपरेटर द्वारा सेट किए जाते हैं और बदल सकते हैं। आकार UTF-8 बाइट में हैं।

एक शेल क्लाइंट

0wx.sh ऊपर बताए गए सब कुछ को समेटता है। यह सादा POSIX शेल है और इसे curl के अलावा कुछ नहीं चाहिए, और यह चलाने से पहले पढ़ने लायक छोटा है — जो उस स्क्रिप्ट के साथ करना सही है जिसके पास आपकी API कुंजी होगी। --key देने के बजाय कुंजी को OWX_KEY में रखें, और यह आपके शेल इतिहास से बाहर रहती है।

wget https://0wx.eu/clients/0wx.sh
chmod +x 0wx.sh
export OWX_KEY=YOUR_KEY
./0wx.sh help
./0wx.sh paste --content 'hello & world'
एक Python क्लाइंट

0wx.py शेल क्लाइंट जैसा ही करता है, लेकिन उत्तर को पार्स करके फ़ील्ड का अर्थ छापता है, न कि आपको कच्चा JSON थमाता है — कच्चा रूप वापस चाहिए तो --json जोड़ें। केवल मानक लाइब्रेरी: कोई requests नहीं, इंस्टॉल करने को कुछ नहीं। यदि आप अपना क्लाइंट लिख रहे हैं, तो इसके send() और report() फ़ंक्शन पढ़ने लायक हिस्से हैं: ये मिलकर दिखाते हैं कि अनुरोध कैसे बनाएँ, विफल अनुरोध से संदेश कैसे निकालें, और उत्तरों में क्या होता है।

wget https://0wx.eu/clients/0wx.py
chmod +x 0wx.py
export OWX_KEY=YOUR_KEY
./0wx.py listfiles
./0wx.py listfiles --json | jq '.files[].url'
एक Perl क्लाइंट

0wx.pl Python वाले जैसा ही करता है और वही आउटपुट छापता है। केवल कोर मॉड्यूल — HTTP::Tiny और JSON::PP Perl 5.14 से Perl के साथ आते हैं, इसलिए इंस्टॉल करने को कुछ नहीं। यदि आप अपना क्लाइंट लिख रहे हैं तो Python क्लाइंट के साथ पढ़ने लायक: दोनों भाषाएँ टूटे अनुरोध पर अलग तरह से विफल होती हैं, और दोनों स्क्रिप्ट बताती हैं कि कहाँ।

wget https://0wx.eu/clients/0wx.pl
chmod +x 0wx.pl
export OWX_KEY=YOUR_KEY
./0wx.pl listfiles
एक PowerShell क्लाइंट

0wx.ps1 Windows के लिए Python क्लाइंट का समकक्ष है: वही कमांड, वही आउटपुट, और यह आपको कच्चा JSON थमाने के बजाय उत्तर को पार्स करता है — उसके लिए --json जोड़ें। यह मशीन पर पहले से मौजूद Windows PowerShell के लिए लिखा गया है, इसलिए इंस्टॉल करने को कुछ नहीं, और यह PowerShell 7 पर बिना बदलाव चलता है। जिस विंडो से आप इसे चलाते हैं उसमें आपको Set-ExecutionPolicy -Scope Process Bypass की ज़रूरत पड़ सकती है, जो Windows का यह पूछना है कि क्या आप वाकई डाउनलोड की गई स्क्रिप्ट चलाना चाहते थे — एक उचित प्रश्न, और फ़ाइल पहले पढ़ने लायक छोटी है।

$env:OWX_KEY = 'YOUR_KEY'
.\0wx.ps1 listfiles
.\0wx.ps1 paste --content 'hello & world'
.\0wx.ps1 upload --file .\holiday.jpg --gallery 'Holiday 2026'
आपके ब्राउज़र में एक विंडो

0wx.html डेस्कटॉप क्लाइंट जैसा ही टैब सेट है, तीन फ़ाइलों के रूप में — एक पृष्ठ, एक स्टाइलशीट और एक स्क्रिप्ट — बिना इंस्टॉल, बिना फ्रेमवर्क, और इस साइट के अलावा कहीं से कुछ लोड किए बिना। एक के बजाय तीन इसलिए क्योंकि साइट की Content-Security-Policy इनलाइन स्क्रिप्ट और स्टाइल की अनुमति नहीं देती, जो बनाए रखने लायक है। इस पर फ़ाइलें छोड़ी जा सकती हैं। इसे सहेजकर अपनी डिस्क से खोलने के बजाय यहीं से खोलना होगा: API कोई cross-origin हेडर नहीं भेजता, इसलिए स्थानीय प्रति का हर अनुरोध आपके ब्राउज़र द्वारा निकलने से पहले ही अस्वीकार कर दिया जाएगा। जब तक आप इसे याद रखने का बॉक्स टिक न करें, कुंजी मेमोरी में रखी जाती है।

https://0wx.eu/clients/0wx.html
Windows पर एक विंडो

0wx-gui.ps1 डेस्कटॉप क्लाइंट जैसा ही टैब सेट है, WinForms से बनाया गया — जिसका अर्थ है इंस्टॉल करने को बिल्कुल कुछ नहीं, क्योंकि यह पहले से Windows का हिस्सा है। इसे 0wx.ps1 के साथ एक ही फ़ोल्डर में रखें: विंडो दूसरी प्रति रखने के बजाय उस फ़ाइल की अनुरोध प्रोसेसिंग उधार लेती है, इसलिए दोनों चाहिए। Windows अपनी न लिखी स्क्रिप्ट चलाने से पहले पूछेगा, जो उचित प्रश्न है; दोनों फ़ाइलें उत्तर देने से पहले पढ़ने लायक छोटी हैं।

powershell -ExecutionPolicy Bypass -File .\0wx-gui.ps1
GTK के साथ Linux पर एक विंडो

0wx-gtk.pl एक छोटी GTK विंडो है जिसमें अपलोड, पेस्ट, छोटा करने और अपनी फ़ाइलें ब्राउज़ करने के टैब हैं — सूची के रूप में या थंबनेल गैलरी के रूप में, गैलरी के अनुसार फ़िल्टर किए। यह यहाँ एकमात्र क्लाइंट है जिसे कुछ इंस्टॉल करने की ज़रूरत है — Perl के GTK3 बाइंडिंग — जो ऊपर की Windows विंडो के साथ तुलना में जानने लायक है, क्योंकि उसे बिल्कुल कुछ नहीं चाहिए। बाकी सब जो यह उपयोग करता है Perl के साथ आता है। कुंजी केवल मेमोरी में रखी जाती है: विंडो बंद करने पर यह भूल जाती है, और OWX_KEY सेट करने पर स्टार्टअप पर भर जाती है। यह आपको जो भी दिखाए, सर्वर का कच्चा उत्तर “Server reply” के नीचे एक क्लिक दूर है।

apt install libgtk3-perl        # or: dnf install perl-Gtk3
wget https://0wx.eu/clients/0wx-gtk.pl
chmod +x 0wx-gtk.pl
OWX_KEY=YOUR_KEY ./0wx-gtk.pl
एक Android ऐप

0wx-android.apk फ़ोन से वही करता है जो अन्य क्लाइंट करते हैं: अपलोड, पेस्ट, छोटा करना, अनुवाद, और अपनी फ़ाइलें सूची या गैलरी के रूप में ब्राउज़ करना। किसी अन्य ऐप से इसमें फ़ाइल साझा करने पर वह अपलोड हो जाती है, और टेक्स्ट साझा करने पर वह पेस्ट के रूप में संग्रहीत होता है। यह किसी ऐप स्टोर पर नहीं है, इसलिए आपका डिवाइस इसे इंस्टॉल करने की अनुमति माँगेगा — जो सामान्य रूप से गंभीरता से लेने योग्य प्रश्न है, और यही कारण है कि पूरा स्रोत यहाँ भी है: फ़ाइल पर भरोसा करने के बजाय इसे Android Studio में खोलकर स्वयं बनाएँ। बनाने के लिए JDK 21 चाहिए; अंदर BUILDING.md बताता है क्यों।

https://0wx.eu/clients/0wx-android.apk        # install it
https://0wx.eu/clients/0wx-android.zip        # build it yourself
टिप्पणियाँ

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


(p) 2018 0wx.eu -/- Linux और GNU द्वारा संचालित। Live free or die! (root@0wx.eu)