yWeb HTTP-POST möglich?

Das Original Benutzerinterface Neutrino-SD incl. zapit, sectionsd, yWeb etc...
PaulFaul
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Sonntag 12. März 2006, 13:58

yWeb HTTP-POST möglich?

Beitrag von PaulFaul »

Hi,

erstmal ein dickes Dankeschön an yjogol für's yWeb :)

Ich möchte Dateien im yWeb bearbeiten (Textarea), welche u.U. zu groß für einen HTTP-GET-Request sein können.

Bsp. Y_PauleConf_Ext.yhtm (HTTP-GET):

Code: Alles auswählen

<form name="f" action="/y/cgi">
<textarea name="mconf" cols="60" rows="20" title="myconf.conf" style="width:100%; background:white; font:'Courier New',medium monospace; color:#436976;">{=if-file-exists:/var/tuxbox/config/myconf.conf~{=include:/var/tuxbox/config/myconf.conf=}=}</textarea>
<br/>
<input type="hidden" name="tmpl" value="Y_PauleConf_Ext.yhtm"/>
<input type="hidden" name="execute" value="include-block:Y_Blocks.txt;p_myconf_save_settings;nix"/>
<input type="button" value="Speichern ..." title="submit and save file" onclick="do_submit()"/>
</form>
Bsp. Y_Blocks.txt:

Code: Alles auswählen

# ------- Paule Conf
start-block~p_myconf_save_settings
{=file-action:/var/tuxbox/config/myconf.conf;add;{=mconf=}=}
end-block~p_myconf_save_settings
Ist der Inhalt "zu groß", so wird der Vorgang abgebrochen (Verbindung unterbrochen) - getestet mit FF und IE.
Ansonsten funktioniert es einwandfrei und die Datei wird aktualisiert.

Werden die Daten als HTTP-POST (method="post") übertragen, passiert nichts.

Mache ich was falsch, gibts eine andere Lösung oder funktioniert nur HTTP-GET?

Vielen Dank für alle Tipps...


Gruß
Paule
yjogol
Developer
Beiträge: 809
Registriert: Montag 4. Juli 2005, 18:45

Beitrag von yjogol »

Hi,
schön dass du dich damit beschäftigst.

bei Verwendung von POST gibt es zwei "Probleme".
1) Die URL muß anders gebaut werden:
<form name="f" accept-charset="UTF-8" action="/y/cgi?execute=include-block:Y_Blocks.txt;timer_save_settings;nix" method="POST">

Das input-Feld "execute" kann dann raus.

2) Allerdings bekommst du dann einen URI-kodierten String. Das ist natürlich nicht richtig. Da muß ich noch einen decode-Befehl einbauen und ordentlich testen.

Ich maile dir mail einen neuen Webserver mit dem scheint es zu gehen.
- Mit "killall nhttpd" alten webserver stoppen
- den Neuen nach /var/bin kopieren.
- starten /var/bin/nhttpd
- für debugmeldungen nhttpd -lx wobei x=1..9 erstmal mit 2 anfangen

Wenn du eine eigene extention schreibst, dann nimm lieber eine Datei "meine_blocks.txt" oder so.

EDIT: habe es eben mit einer 2000 Zeilen Text erfolgreich probiert.
Gruß
yjogol
PaulFaul
Neugieriger
Neugieriger
Beiträge: 16
Registriert: Sonntag 12. März 2006, 13:58

Beitrag von PaulFaul »

Hi yjogol,

klappt prima, vielen Dank!


Dann hätte ich noch eine Frage:
Kann man aus einem Block (_Blocks.txt) auch ein Script aufrufen?
Das wäre genial ;)

Ach ja, eine "meine_Blocks.txt" macht natürlich Sinn, Merci ;)

So, nun wird gescripted bis der Arzt kommt....:D
yjogol
Developer
Beiträge: 809
Registriert: Montag 4. Juli 2005, 18:45

Beitrag von yjogol »

Also der yParser kann solche Befehle:

Code: Alles auswählen

//-----------------------------------------------------------------------------
// ycgi : cmd executing
//	script:<scriptname without .sh>
//	include:<filename>
//	func:<funcname> (funcname to be implemented in CyParser::YWeb_cgi_func)
//	ini-get:<filename>;<varname>[;<default>][~open|cache]
//	ini-set:<filename>;<varname>;<value>[~open|save|cache]
//	if-empty:<value>~<then>~<else>
//	if-equal:<left_value>~<right_value>~<then>~<else> (left_value == right_value?)
//	if-not-equal:<left_value>~<right_value>~<then>~<else> (left_val!e == right_value?)
//	if-file-exists:<filename>~<then>~<else>
//	include-block:<filename>;<block-name>[;<default-text>]
//	var-get:<varname>
//	var-set:<varname>=<varvalue>
//	global-var-get:<varname>
//	global-var-set:<varname>=<varvalue>
//-----------------------------------------------------------------------------
Du mußt bei Skript-Aufrufen prüfen, ob der Pfad für deine Zwecke richtig ist. Ein
echo `pwd`
zeigt dir, wie der lokale Pfad aussieht.

Zum Scripten, kannst du deine Dateien am besten in /var/httpd und Skripte in /var/httpd/scripts ablegen und unter Extensions->Einstellungen anmelden.
FAQ: http://www.yjogol.de/extentions/index.html
Gruß
yjogol
yjogol
Developer
Beiträge: 809
Registriert: Montag 4. Juli 2005, 18:45

Beitrag von yjogol »

Ich habe mal einen Extra-Thread für yWeb_programmierung gestartet.
http://forum.tuxbox-cvs.sourceforge.net ... highlight=
Bitte dort weiter machen.
FAQ zu YWeb unter http://www.yjogol.de