CGI shell script kérdések

Adva van egy pár soros html fájl (564 byte) - működik, azt csinálja amit akarok. Most ezt akartam CGI scriptnek "átfaragni". Beszúrtam az elejére a #!/bin/sh -t majd az összes sor elé echo és aposztrofk közé zártam (úgy tudom így a bash nem fogja értelmezni, csak kidobja az stdout -ra). Futtathatóvá tettem, és bevágtam a cgi-bin könyvtárba. Működik, DE van benne egy kép, valahogy így:


  <img src="webcam.jpg" width="640" height"480" ALT="unhappy">

Ezt a képet (ami ott van) nem teszi ki. Lefuttattam a scriptet, és a kimenetét elküldtem fájlba - bájtról, bájtra azonos a kiinduló html fájlal, amivel a kép gond nélkül megjelenik. CGI -ként miért nem, vagy hogy kellene ezt csinálnom?

(Most nézem Firefox -al a "webcam.jpg, mint link jelenik meg, ha rá katt akkor olyan jelenik meg hogy 500 - Internal Server Error)

Hozzászólások

Vagy így:


echo '<img src="webcam.jpg" width="640" alt="unhappy">'

vagy ha " (aposztróf) közé rakod akkor \" -el kell védeni a többit.

--
falura elmegy, városban meg úgy sem nézik...

Lehet hogy zavarok vannak, ez ' az aposztróf, ez " az idézőjel. Mint mondom azzal tisztában vagyok hogy az aposztróf meggátolja a shell -t, hogy értelmezze a továbbiakat, az idézőjel akkor kell ha mondjuk it-ott változók is vannak a sorban, amiket értelmezni kell. Ha időzőjeleket használok akkor mindenütt ahol literálisan akarom használni az idézőjelet, ott azt escape szekvenciaként kell beírni \".
Ez világos és tiszta. Számos egészen bonyolult shell scriptet írtam már de nem CGI -t. Ha ezt az egészet jól értelmezem akkor az stdout -ra kimenő cuccot közvetlenül kapja a httpd és a szokásos módon kezeli mint a html lapokat, de ezek szerint mégsem?

* Én egy indián vagyok. Minden indián hazudik.

a jpeg-et is cgi-kent probalja meg futtatni vmi eliras miatt...? es ez ugye nehezen megy es emiatt jon az 500-as hiba...?

ezt en ertem. de. a webcam.jpeg az feltetelezem egy statikus szerveroldali kep. ugyanabban a konyvtarban van, mint amiben maga futtathato (cgi) file? csak mert mezei webszerver (pl apache) konfigban szokas teljes konyvtarakra megadni a cgi-jogot, es ha ez igy kvazi-alapertelmezetten van beallitva _es_ a webcam.jpeg ugyanabban a konyvtarban van mint az akarmi.sh amig a szerver elindit, akkor az ugy ugye nem az igazi...

Ezt is megpróbáltam. Ugyanazt a képet beraktam a /var/www és a /var/www/cgi-bin könyvtárba is. Még a cgi-shell scriptnek átadott környezeti változókat is ki írattam (egy fájlba a /tmp könyvtárba) a "DOCUMENT_ROOT a /var/www.
A http szerver nem az apache, a lighttpd nevű kis minimalista szerverrel próbálkozom.

* Én egy indián vagyok. Minden indián hazudik.

oke, akkor ma'r csak azt kell megnezni hogy a lighttpd-ben hogyan van beallitva a cgi-k engedelyezese. adott konyvtarra, minden? az url-ben hogy jelenik meg a cgi? pl

akar.mi/cgi-bin/xyz.sh

aminek a kimeneteben ott van a hivatkozas a

akar.mi/webcam.jpeg

-re? ha kulon konyvtarban van a cgi szkript es a webcam.jpeg, akkor vigyazni kell arra is hogy az img src=...-ben az src ne csak sima "webcam.jpeg" legyen hanem (a fenti peldanal maradva) "/webcam.jpeg", vagy barmi. mertha ugye az src-ben nincs egy szem / karakter sem, akkor ugyanabban a konyvtarban fogja keresni. hatehat:
- a cgi szkriptedet a /var/www/cgi-bin-be teszed, _e's_
- a szkriped a webem a http://akar.mi/cgi-bin/xyz.sh cimen latszik, _e's_
- a webcam-kep az a /var/www/ konyvtarban van _e's_
- a cgi-futtatas _csak_ a /var/www/cgi-bin/-re van engedelyezve _e's_
- az xyz.sh altal legyarott szkript az a src="/webcam.jpeg" neven hivatkozik a kepre
akkor... akkor menni fog, szerintem :]

(persze meg lehet ezt fejelni/bonyolitani, meg erdemes is, ez igy nem tul kulturalt hierarchia. de legalabb eletkepes)

A

Bemásolnád a script-et ide?
Tuti valami elírás van a dologban vagy rossz httpd config.

Persze, ha tudnám hogyan - ha bemásolom ez lesz :(

Na, talán így: http://pastebin.com/eZ9BGNNE

Egyébként van itt a kezeim között egy apache is, az arra panaszkodik, hogy rossz a header :(
(Eddig azt hittem csak a böngészők viselkednek változatosan, de már látom, tévedtem a szerverek is)

A legfurscább, hogy össze-vissza keresgélek a neten, de egyetlen cgi scriptet sem találtam ami képet használ. Lehet hogy ezt így nem lehet összerakni?

* Én egy indián vagyok. Minden indián hazudik.

dehogynem. csak altalaban nem a ke'p beszurasa szuk keresztmetszet. foleg kvazi-statikus kepeknel ;) (ugy az igazan sze'p, hogy a kepeket is cgi vagy valami mas dinamikus handler generalja le...)

szerk: megnezted a fentebbi kis listat amit irtam? annak minden tekintetben megfelel amit csinalsz? vagy ha nem (ami nem baj), akkor miben te'r el?

Furcsa szerzet a lighttpd. A saját felhasználói könyvtáramból belinkelt CGI scriptet (/www/cgi-bin) simán lefuttatja. Ha a scriptbe elhelyezem a kamerakép (webcam.jpg) készítését, akkor azt csak a /tmp -be tudom rakni (Debian a httpd mint www-data fut) de nem tudom mit kell megadni az
"

* Én egy indián vagyok. Minden indián hazudik.

Hazudós vagyok :(
A CGI scriptbe beteszem a kamerakép snapshotot:
fswebcam ... /tmp/webcam.jpg (az opciókat most nem sorolom)
Ha a scriptet mint www-data futtatom akkor működik - létrejön a /tmp/webcam.jpg.
Ha böngészőből próbálom, akkor nem jön létre :(
Arra sem tudok rájönni, hogy tudnám a hibakonzolt megnézni?

* Én egy indián vagyok. Minden indián hazudik.

Jó! Hülyülök :( Elfelejtettem az '&' jelet a pipe átirányításban.
Most már látom mire panaszkodik. Nem fér hozzá a /dev/video0 -hoz.
Fura, mint www-data, konzolról (su www-data) már nem jelentkezik ez a hiba, mivel felvettem a "video" csoportba a www-data -t.
Lehet hogy újra kell indítani az egész verklit?

IGEN, az újraindítás megoldotta - gondolom nem vette a lapot, hogy "most már" hozzáfér a /dev/video0 -hoz.
Azt azonban még mindig nem vágom, hogy ha "#su www-data" shell -ből látom a /tmp/webcam.jpg -t azt miért nem tudom a scriptből a szervernek megadni.

Próbáltam úgy hogy ../../tmp/webcam.jpg de semmi :(

* Én egy indián vagyok. Minden indián hazudik.

Hát ez nagyon, szép :( Számította, rá hogy nem lesz olyan egyszerű, de ez nagyon zavaros.
Van egy szép kamera képem bal felső sarok, jobb oldalt jó ok helyem, ide szeretnék bevarázsolni néhány gombot, ami kit majd a CGI scriptből érzékelnék, hogy megnyomták. Már az elhelyezésével nem tudom mit kellene tenni? A a kép mellé, jobb alsó sarokba bevágja a button.ico -t. Ráadásul ahogy olvasgatom a HTML kód doksit, ez a BUTTON nem is a BUTTON, hanem ezt egy "FORM ACTION" -ba kéne ágyazni?
Most akkor mit is kellene használnom, és hogy tudom pozicionálni? Lehet hogy előbb a képet kéne valamibe beágyaznom?

* Én egy indián vagyok. Minden indián hazudik.

Tudom ajánlani a http://www.w3schools.com/ - önfejlesztő oldalt.
Ebből sokat tanultam anno.

Régesrégen, mikor még a tehenet is barnának ismerte a világ
a < table > tag-ot használták és táblázatba szervezték a honlap kinézetét.
Eltelt sok idő, már a tehén is lila lett a köztudatban :), és már css-t használunk a honlapelemek stílusának meghatározásához.

Kivétel, ha röviden szeretnénk hogy jobbra tartva lebegjen egy link :

< div style="float:right;display:block;margin:10px 3px;" > < a href="#" > button 1 < /a > < /div >

A CGI-nek nincs sok dolga, mindössze annyi,hogy ugyanazt a html-t kell előállítania, amit akár egy szövegszerkesztővel is meg lehet csinálni. Ami plusz van benne, hogy ki kell tolnia a content-type-ot, illetve megkapja a a http get/post adatait. Az előbbit a QUERY_STRING változóban, az utóbbit meg az stdin-ről tudja beolvasni.

Illetve kap még egy rakat változót, amik esetleg hasznosak lehetnek.

Ha ilyesmire adja az ember a fejét, akkor igencsak érdemes a template-k használatán elmélkedni, még ha csak egy egyszerű, sed-es megoldáson is, nagyban könnyíti a html kód írását-olvasását.

Találtam egy jó kis példát:


form name="input" action="html_form_action.asp" method="get"
Username: input type="text" name="user" 
input type="submit" value="Submit" 
/form

1. Ha nincs ott a "Username: [input ... akkor nem híja meg a "html_form_action.asp", ha rákatt a gombra. Nekem nem kell csak az, hogy katt gomb és hívjon meg mondjuk egy CGI állományt (ott elintézhetem amit kell).

2. Az "action" fájl gondolom lehet CGI?

Súgjatok.

UI: A záró nyitó relációs jeleket direkt hagytam le - nem jelennek meg a postban, hiába teszem [_code_][_/code_] közé :( Ma valahogy semmi sem úgy sikerül ahogy szeretném.

* Én egy indián vagyok. Minden indián hazudik.

Gondolom azért, mert üres a form. Bár attól még kéne neki.
Először is, azért, hogy "...katt gomb és hívjon meg mondjuk egy CGI állományt" nem kell form meg gomb, elég egy link is. Ha mégis kell gomb, akkor csak maga a gomb is elég Legalábbis azt hiszem :D

http://www.javascriptkit.com/howto/buttonr2.shtml

Ilyenkor a JS kezeli az eventet, nem a borzer küldi el az adott linkre.

Ha mégis kell form meg minden, akkor van olyan input type, hogy hidden, azt tedd bele valamivel és remek lesz.

Itt egy működő példa, ez egy login form, rém egyszerű:

http://pastebin.com/RK0UsHYN

Hát ez sem egészen jön be :(
Ha táblázatot csinálok, az egyik adatmezőben a képpel a másikban a szöveg/link akkor az a képhez kéest függőlegesen középen jelenik meg, talán így:


 -------
 |     |
 | kép | a másik adatmező első sora
 |     |
 -------

Biztos van rá megoldás (úgy három honlapból 2,5 ilyen) csak én vagyok hozzá buta. Nem tudtok valami egyszerű, gyorsan elsajátítható wysiwig honlap szerkesztőt (free) javasolni?
(Már egy sima linkel is beérem, nem kell "button" de ennyire anti-esztétikus nem maradhat)

* Én egy indián vagyok. Minden indián hazudik.

http://www.tferi.hu/konyv5/html/htmllang0.html

vagy google.

http://lmgtfy.com/?q=honlap+szerkeszt%C3%B5

Második találat: http://www.sulinet.hu/tart/ncikk/Rad/0/29416/index.html

Mondjuk nekem a vi (notepad) ami bejött. Mondjuk ha ott van az a 2.5 honlap, miért nem nézed meg a forrását?

Kicsit túllihegtem a dolgot :) Debian iceape compozer - 5 perc alatt sikerült (na persze miután itt voltak olyan kedvesek és megsúgtátok hogy kell egy táblázat) megfelelő helyre tenni a linket.
Lehet hogy ez majd egyszer gomb lesz, de most már nem fogom azzal kínozni magam, hogy én majd csak úgy megtanulom a HTML kódolást. (Valószínűleg a morze ABC is könnyebben menne mivel a betűk száma korlátozott, míg a HTML kódokból kihozható variációk sora a végtelen felé tendál).

Viszont, az első linket NAGYON köszönöm!
(Az asszony itt rágja a fülem, mert szerkesztgeti a (más által készített) honlapját - www.legjobblagzi.hu) - és én tőlem kérdezi, hogy tud beszúrni egy képet, egy php -ban készült honlapba - sík ideg lettem. Persze ehhez is kevés lesz a html tudomány. De addig is nyugtom lesz :)

* Én egy indián vagyok. Minden indián hazudik.

Ez nagyon jól hangzik! Csak azt nem értem pontosan mi az, hogy "copy & paste a html, php, js fájlba"? Ez most wysiwyg?
Ha mondjuk van egy "komplett" php -s honlapom, belépek, szerkesztem és aztán ...
Tudom ezt úgy kezelni, hogy nem kell tudnom php -t? Most ne gondolj valami rafinált SQL LDAP és egyéb szépségek, csak mondjuk egy kép beillesztése, vagy egy menü bővítése, és hasonló "nagyívű" módosítások elvégzése.

* Én egy indián vagyok. Minden indián hazudik.

Nem éppen wysiwyg.
Html + css + js hibajavításra és elemzésre van kitalálva,de ha kissé már értesz html-ül akkor realtime tudsz módosítani a honlap megjelenésén. Ha összeált a kép akkor megnézed mit szekesztettél a pl. a css részben és átírod fájljaidat.

Tehát nem editor, nem tudodja elmenteni a módosításokat, de a konzolon pl. bele tudsz azonnal piszkálni az oldalon futó javascriptbe.

Jó pofa! De itt még nem tartok "röptében a legyet ..."
Amivel több órát küzdöttem (hogy egy button/link valamit a kép mellé, illesszem) azt miután iceape compozerrel megcsináltam ck. 5 perc alatt a kapott kódot szerintem még órákig analizálgathatnám mire megérteném pontosan hogy is működik :(

* Én egy indián vagyok. Minden indián hazudik.

Működget. Busybox, frissített (nyers erőszak 3 sec), CGI sima shell script belül elindítja az mpg123 - lejátssza - és azon a semmin marad ami a CGI -be beletettem :( Hogy lehet innen visszakapaszkodni?
Eddig a javascript backlink -et próbáltam de vagy nem működik.

MEGOLDÁSOM:


[META HTTP-EQUIV="Refresh" CONTENT"1; URL=/index.html"]

ennyi :)

SZERK. Ez a

dolog nem működik a fórumon :(

* Én egy indián vagyok. Minden indián hazudik.

Működnek a shell cgi scriptek. Szépen kiteszem egy kamera képét (egyedi shotok), az a megadott időnként frissül (akár 1 másodpercenként) és tudok bizonyos, egyéb vezérléseket elvégezni.
Viszont, most PTZ kamera került oda, és a flowplayerrel lehet megnézni a kamera képét, ffserver+ffmpeg háttérrel - nagyon dögös :)
Viszont a PTZ vezérlések mint cgo script, minden alkalommal frissítik a lapot - ez még jól is jött az egyedi shotok esetében, de most kimondottan zavaró. Hogy lehetne úgy meghívni egy CGI scriptet, hogy a lap ne frissüljön? Csak hajtsa végre a háttérben működő shell parancsot?

* Én egy indián vagyok. Minden indián hazudik.

Tudod ha már van egy wysywig HTML editor, akkor ez nem tűnik akkora nagy dolognak.
Persze, megoldottam szövegszerkesztőből.
Kár hogy az mc editora x -en nagyon nehezen olvasható :( Nem tudom kinek kellenek ezek a pasztel színek.
Egyébként, a composer által "újraformázott" kód sokkal zavarosabb.

* Én egy indián vagyok. Minden indián hazudik.

Ehhez már elegánsabb egy kis javascriptet belevinni a játékba,
pl.
berántjuk a jquery js lib-et.


< script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" >< /script >

Majd egy elem ID-jébe betöltjük a cgi tartalmat.


< script type="text/javascript" >
$("#cel-ID").load("/cgi-bin/valami.cgi");
< /script >

Ezt loop-olhatjuk minden 1000. msec-re is.


< script type="text/javascript" >
setInterval(function(){ 
    $("#cel-ID").load("/cgi-bin/valami.cgi");
}, 1000 );
< /script >

Remélem nem írtam el. :)

Érdekesen hangzik - a java scriptek szemmel láthatólag működnek még ebben az eléggé fapados felállásban is. Viszont amivel nem tudok mit kezdeni, az a "berántjuk a jquery.js lib-et"
Ezt a libet, valahol le lehet tölteni, bevágni a public_html gyökerébe, és hogy kell "berántani" - tényleg nagyon zöldfülű vagyok ezekben.

* Én egy indián vagyok. Minden indián hazudik.

Figyelj arra, hogy a java script nem egyenlő a javascript-el (ECMAscript).
A jquery egy relatíve kis méretű cross browser javascript framework, azért ajánlom hogy ezt használd mert nagyon könnyen megtanulható.
Ha az internet kapcsolat mindig rendelkezésre áll a html file betöltésekor, akkor érdemes a google-nál hostolt elérést betenni a src attribute-ba, ha nem akkor letöltöd a minimalizált fájlt és azt tölteted be
pl. a public_html-ből src="./jquery.min.js"

Ha ez megvan, utánna már végtelenféleképp csavarhatod a történetet, javaslom nézd meg a demo-kat.

http://jquery.com/ -- core desktop framework
http://jqueryui.com/ -- user interface effects framework
http://jquerymobile.com/ -- mobilokra fejlesztett framework

Gondom támadt. Van egy három frames "multiframe" lap. Minden frame egy-egy shell cgi script. Az egyik scriptben érzékelek/figyelek egy állapot változást, amire frissteni kéne az egész multiframe lapot.
Tudtok erre korrekt, működő megoldást?

* Én egy indián vagyok. Minden indián hazudik.

János bácsi és a sétarepülés ... no erre nem számítottam.
Mindenféle egyszerű kis vezérlő scriptet összeraktam, de most - utolsó pillanatban - kitalálták, hogy email -t akarnak küldeni. Király.
Tudtok valami egyszerű email küldő scriptet, feladó/címzett/tárgy/tartalom és elküld/mégsem.
Találtam egy ilyet: http://www.boutell.com/email/
Nem tűnt nagyon kunsztosnak, bár csak egy címre lehet küldeni, viszont mire nagy nehezen beillesztettem addigra, nem tudom miért mindenféle hülyeséggel elhajt, az sem értem igazán miért?

* Én egy indián vagyok. Minden indián hazudik.

Sajnos igen, mivel a WEB szerver a busybox httpd appletje, az pedig nem tud php -t. A perl inkább csak elmegy - ha gyorsít a dolgon - de a legszebb egy shell script lenne. Most éppen az mgetty FAX-mail scriptjét nézegetem (valamikor ezt értettem is). De kezd felsejleni az is, hogy a cél rendszeren nincs semmilyen smtp szerver (Debian default exim4), viszont van sendmail ... no várjunk csak. Ez az átka ha több gépen egyszerre dolgozunk + a távoli célgép. A heli célrendszeren nincs is sendmail. Klassz.

* Én egy indián vagyok. Minden indián hazudik.

Kezd valami derengeni!
Ökör szabály: ha egy parancsot akarsz CGI vagy shell script -ből végrehajtani - próbáld ki!
Persze hogy nem tudott mit kezdeni a script a levéllel semmit, hiszen nincs sendmail ami neki kellene. Viszont van "busybox sendmail" még, akár ssl is tudna küldeni :)
Először kikisérletezem, hogy simán shellből hogy tudok ezzel emailt küldeni - ez sem tűnik egyszerűnek.

* Én egy indián vagyok. Minden indián hazudik.

A busybox sendmail applet használatának problémáján majdnem túlestem. Azzal próbálkozom, hogy küldjek egy előre meghatározott címre, egy előre meghatározott címről levelet. Persze, úgy szép az élet ha zajlik, azért van FORM is előtte, méghozza POST metódus. Mikor a kis cgi scriptemmel próbálon kiolvasni (read valahova), ezt kapom vissza:


name=A+felad%C3%B3+neve&content=A+felad%C3%B3+%C3%BCzenete.%0D%0A

a formba azt írtam:
(name) A feladó neve
(content) A feladó üzenete

Mind a form -os html, mind a kiolvasó (talán egyszer küldő) script utf8. Mi a sz'r ez, és mit kell ezzel csinálni?
Mondjuk a "+" jeleket ki kell cserélni szóközre, ez nem tűnik lehetetlennek, de mi van ezekkel a %hex(?) kódokkal, ez most valami mime?
Valahogy nem hiszem, hogy ezt oda lehet adni a busybox sendmail -nek.

szerk:
Az első kétségbeesésen túl jutottam. Szóval ez az izé az "url encoding" nagyon örülök, de tényleg nincs hozzá shell/konzol dekóder? Létezik az hogy ezt a sed -el kell kezelni (ilyet már találtam)? Most akkor írnom kell egy ilyen progit? (nekem lehet hogy gyorsabb lesz ezt C -ben megírni)

szerk:
Ez már több a soknál :(
Megtaláltam az ENCTYPE taget és beállítottam "text/plain" -re - örül. Mikor épp kezdtem azon morfondírozni, hogy ezt miért nem súgta senki, akkor kiderült, hogy most ez a nyavakás valamiért nem utf8 -ban adja vissza hanem mint iso8859-2 (legalábbis a "ó" szerint), ráadásul a txt doboz tartalmát nem látom :( Miért ilyen keserves ez az egyszerűnek tűnő feladat?

szerk:
Teljes a zavar :( Kipróbáltam a levélküldő shell scriptemet (busybox sendmail applet) és elküldtem a tradicionális "Űrvíztűrő ütvefúrógép" üzenetet - url kódolva és sima szövegben. Az url kódolt maradt amilyen volt, a semmilyen kódolt (utf8 konzol locale en_us) - hát az még szörnyűbb. Most akkor hogy lehet elküldeni egy magyar ékezetes karakterekkel megtűzdelt szöveget, konzol/cgi shell scriptből?

* Én egy indián vagyok. Minden indián hazudik.

Hát figy, próbálok udvarias maradni, de kb. 10 másodpercbe tellett beírni a google-ba, hogy "decode http url" és átkotorászni a válaszokat.

Újabb pár másodperc árán (decode http url bash) találtam olyan megoldást, amihez csak sh kell semmi más: http://blogs.gnome.org/shaunm/2009/12/05/urlencode-and-urldecode-in-sh/ Nem próbáltam ki, de szemre működhet. A bash kívánság szerint helyettesíthető perl, sed, php vagy bármivel, de egy embed rendszeren azok nem feltétlen vannak.

OK! Egyáltalán nem kell udvariasnak maradnod.
Nekem első pillantásra nem volt világos hogy hívják ezt dolgot. A scriptek, a html cuccok mindegyike az encrypt tag defaultját használja, ami az url kódolás. Ehhez meg kellett néznem a form tag leírását - fel sem merült bennem, hogy itt kell keresgélni. Te már precízen az url decode -t kerested. Gratula.
Azonban, url kódolva vagy "plain" text formában rossz eredményeket kapok az email -ben. Ha sima angol szöveget küldök persze OK.
Még valami, életemben először faragok a html/cgi és még mindig nagyon utálom. A kód 90% -a a formázásról szól, de a végeredmény használható.

* Én egy indián vagyok. Minden indián hazudik.

Az tuti hogy valami el van kódolva, de mi és hova?
A házi szerverkém exim4-courier imap-apache2-squirrelmail és fetchmail kombó, mindez iso8859-2 kódolással. Ami viszont nekem megjelent az nem tudom mi de dugig volt "?" -el. Ha hagytam url encode -ban akkor azt is kaptam :( Viszont, mintha ott is lenne valami a szöveg kódolásáról ... na majd holnap jól megnézem.

* Én egy indián vagyok. Minden indián hazudik.

Oke, akkor most leulsz, es elolvasod a HTTP protokollt, meg a HTML formokrol szolo tutorialok felet legalabb. Mert innentol mar ugy erzem, teljes a fogalomzavar.

Kicsit segitek: ez az URL encoding azt csinalja, hogy lekodolja az idiota UTF karaktereket valami olyan formara, ami egeszen biztosan mindenutt at tud menni (gy.k.: 7 biten abrazolhato).
HTML formon encoding type-t nem allitunk, text/plain-re foleg nem allitunk, nagyon jo ez az URL encoding. AWK-val, vagy Sed-del relative konnyen parsolhato, perl-hez meg a platformba beepitett modul is van a CGI-khez.

A legutolso kerdesedre valaszolva: ugy, hogy nem piszkalunk egy jol mukodo rendszert, hanem megprobaljuk azt megerteni, es igazodni hozza. A HTTP protokollt es a formokat nem 12 eves hulyegyerekek talaltak ki, es lehet, hogy mara mar egy picit elavult, de azert meg mindig jol mukodo technologiakrol van szo.

Egyebkent meg orulj neki, hogy nem Base64-et kell dekodolnod.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Szeretem amikor ledorongolnak :(
A 7 bit versus 8 bit valószínűleg még az aszinkron soros kommunikáció hagyatéka.
Az URL encoding dekódolása sem lehetetlen, de első pillantásra elég megrázó volt számomra, még mindig fontolgatok egy kis C progit erre, de lehet, ha a WEB -en található cuccok között találok valami megfelelőt akkor maradok annál (perl és php most nem használható).
Amúgy, az utf-8 karakter kódolás problémájára rájöttem, az email
Content-Type "text/html; characterset=utf8"
sokat javított a helyzeten.
A Base64 -et nem biztos hogy megúszom, mert elvileg képet is kellene ehhez csatolnom, úgyhogy lesz ez multipart és MINE kitudja?
Megint lesz alkalmam butaságokat kérdezni és kioktatós "irgum-burgum még ezt sem tudod" típusú segítséget kapni. Mindenesetre ezt is köszönöm.

OFF:
Eddigi pályafutásom során, mindig sikerült kibekkelnem, hogy saját protokollokat írjak, majdnem először alkalmazok kész dolgokat, és mindig gyenge voltam mások gondolatmenetébe beleélnem magam - pl. másnak a kódját értelmezni.
Állítólag Düren Matt -ot megkérdezték ki a kedvenc írója, mire azt válaszolta "Miért, mások is írnak?" - kicsit megértem.

* Én egy indián vagyok. Minden indián hazudik.

Nem csak a soros protokoll hagyateka, tippem szerint ez megkonnyiti a bitsorrendek kozti valtast is, illetoleg tomorithetove teszi az adatfolyamot (bajtonkent egy bitet lesporolva).

Ami pedig a sajat protokollokat illeti: ez nem feltetlen jo taktika. Lehet, hogy te erted a sajat gondolatmenetedet, de nem biztos, hogy masok is. Foleg, ha a dokumentalas es a dokumentacio olvasas nem az eros oldalad. Megirsz egy protokollt, majd munkat valtasz, a kovetkezo fejleszto meg a fejet fogja, hogy egy halom kodon/dokumentacion at kell magat ragnia, ahelyett, hogy szabvanyos megoldasokat hasznalna.
Egy kicsit visszadobom a labdat: "Miert, a regenyt nem csak olvasni lehet?"

Hidd el, a szabvanyos dolgok nem az ordogtol valok. Sok ezer ember hasznalja, nap mint nap, ha valami nagyon nagy koncepcionalis baj lenne veluk, egeszen biztosan kiderult volna, es mar reg a sullyesztoben lennenek. A sajat es masok eletet konnyited meg, ha elkezdesz szabvanyos megoldasokat hasznalni. Panikolas es nyafogas helyett le kell ulni, el kell olvasni a vonatkozo RFC-t, el kell olvasni a hozza kapcsolodo dokumentumokat, es megerteni a dolgokat. Ez egyszeruen csak elhatarozas kerdese. Lehet, hogy ezzel egy fel-egy nappal tovabb tart a fejlesztes, de hosszu tavon behozza az arat.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

No igen. Emlékszel még a CP/M -re? Ez volt az első op rendszer ami a kezembe került. Szó nem volt a hálózatokról. A wfw 3.11 még épp csak kóstolgatta a TCP/IP -t. Európában még az OSI modellt akarták erőltetni ...
Amikor én kezdtem, az un. szabványos protokollok nem vagy csak nagyon korlátozottan léteztek - ne felejtsd el a COCOM -ot.
A vevő pedig nem azt várja, hogy szabványos legyen, hanem hogy működjön. Sőt volt hogy az volt az elvárás, hogy ne legyen szabványos.
Most kezdik kapizsgálni, hogy valami rendet kellene teremteni, de még csak addig jutottak, hogy a mobil telefonok töltője legyen univerzális :)
Ha néhány ezer kilométerrel nyugatabbra tevékenykedtem volna ebben a szakmában, most az én protokolljaimat szidhatnátok.

* Én egy indián vagyok. Minden indián hazudik.

Bar valoban nem erdekli az ugyfelet, hosszu tavon erdekelni fogja, hogy mennyivel hosszabbodik meg egy hiba kijavitasa pusztan azert, mert egyeni protokollokat hasznal az alkalmazas.

Arrol nem beszelve, hogy a CP/M-es idok mar igencsak elmultak. Elismerem, azokban az idokben tenyleg volt ertelme, de manapsag mar nincs. Ezzel kapcsolatban ajanlom a NIH szindroma oldalat.
--

Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal 

Végül is nem bírtam ki. Nem épp tökéletes, de nekem most megteszi.


/*******************************************************************************
 * urlde.c
 * Commandline URL deocde - fast and dirty
 * by tovis 2011
*******************************************************************************/
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

//******************************************************************************
int			main(int c,char *argv[])
{
  int		ichr = 0;
  char		shex[3];
  //... code ...
  do
  {
    ichr = getchar();
    switch ( ichr )
    {
    case '+':
      ichr = ' ';
      break;
    case '%':
      ichr = getchar();
      if ( ichr != '%' )
      {
        memset(shex,0,sizeof(shex));
        shex[0] = (char)ichr;
        shex[1] = (char)getchar();
        if ( !isxdigit(shex[0]) || !isxdigit(shex[1]) )
          ichr = '?';
        else
        {
          ichr  = 0;
          ichr  = ( shex[0] > 0x39 ) ? (shex[0] - 0x37 ) : (shex[0] - 0x30 );
          ichr  = ichr << 4;
          ichr += ( shex[1] > 0x39 ) ? (shex[1] - 0x37 ) : (shex[1] - 0x30 );
          if ( ichr == '\n' )
          {
            putchar(ichr);
            ichr = 0;
            continue;
          }
        }
      }
      break;
    default:
      break;
    }
    putchar(ichr);
  } while ( ichr != '\n' );
  exit ( 0 );
} //end main

/*******************************************************************************
 * end urlde.c
*******************************************************************************/ 

A fordítással nem vacakoltam sokat "make urlde" aztán "strip urlde"
A használata egyszerű:
echo "url encoded string" | urlde

A kód használatáért semmilyen felelősséget nem vállalok.

* Én egy indián vagyok. Minden indián hazudik.