PDA

View Full Version : Mega aiuto Apache e XML


mariodm
18-02-2004, 10:32
Ciao Ragazzi,

Aiutooooo...

Credo che alcuni di voi siano esperti di Xml...
Per me oggi è il secondo giorno..

e mi dispiace chiederlo, ma ho a disposizione pochissimo tempo..

Dovrei realizzare un modulo per Apache che riceva in ingresso un url del tipo http://...../?parametro1=xxx&parametro2=yyy

e dia in uscita un file XML con gli stessi parametri...
la cosa è un po' sporca, ma serve per avere una base su cui partire..

So che può sembrare strano, ma è solo l'avvio per poi fare successivamente una cosa pulita...

Va benissimo se per caso avete qualche modulo già pronto che faccia qualcosa di simile (o meglio ancora proprio quello..)

Grazie
Mariodm

cionci
18-02-2004, 10:33
Con PHP ?

mariodm
18-02-2004, 10:45
E' indifferente...

Va bene uguale credo...

Apache gira sotto Unix, ma non ci sono problemi, no ?

Col php è più semplice ?

Ciao
Mario

mariodm
18-02-2004, 10:47
Data l'urgenza addirittura...

andrebbe bene un uscita txt formattata col simil-xml..

l'importante e che l'uscita sia dinamica, cioe' dipendente dall'ingresso...

Consigli ? moduli, materiali ?

Sapete se all'intenro di apache già c'e' un modulo così semplice ?

Mariodm

cionci
18-02-2004, 10:48
Il php ha un motore per la generazione di documenti XML...

Il server su cui dovrà girare lo configuri te ? Perchè c'è la 5 beta di PHP che fra le maggiori novità ha proprio un motore XML strepitoso...

mariodm
18-02-2004, 10:52
beh il server apache già c'e'..

ma il supporto al php è agiornabile a parte ?

solo che le mie conoscenze di php sono quasi nulle..

Puoi darmi una mano ...

l' out deve essere semplicissimo.. anche con un unico parametro di uscita..

l'ostacolo grosso per me è iniziare a capire come usare apache in modo diverso da come ho fatto finora... cioe' solo con l'uso di pagine statiche... :(

Grazie

Mariodm

cionci
18-02-2004, 11:02
Vai nella sottosezione corsi e faq e c'è un corso (alla 3a lezione) di PHP ;)

Il supporto PHP è aggiornabile a parte (basta seguire le istruzioni su come fare con Linux)...

Ecco comunque questo link che ti insegna anche ad installarlo:

http://www.risorse.net/php/index.php

Riguardo a php 5 beta...siamo all'ultima beta...

mariodm
18-02-2004, 11:03
Scusa Cionci,

Credi si trovi un giro un modulo C per apache che faccia quel semplice lavoro ?

Mi conviene aprire una nuova discussione ?

grazie
Mariodm

mariodm
18-02-2004, 11:04
Te lo dico,

perchè ho idea che manchi il supporto al PHP e che non sia installabile nel tempo richiesto..

io sono da remoto con telnet sulla macchina unix.

Mariodm

mariodm
18-02-2004, 11:08
Purtroppo il tempo è pochissimo..

e la cosa deve funzionare anche se di sicuro non programmata in modo pulito..

Poi si modificherà o si rifarà da zero se necessario..

Per chi ama la programmazione potrebbe essere una porcata, lo so.. ma questo serve.

Thanks
Mariodm

mariodm
18-02-2004, 11:19
Qui c'e' la mia ignoranza di base...

i parametri verso apache sono passabili solo attraverso il PHP ?

I moduli in C di apache non hanno qualche funzionalità ?

ciao
Mariodm

cionci
18-02-2004, 11:20
Spiegami un po' meglio cosa vuoi fare... Con Apache puoi anche eseguire script bash... Se ti bastasse questo...

mariodm
18-02-2004, 11:34
ah si ?

col bash un po' me la cavo..

Allora dovrei passare dei parametri da url come ho scritto su e ottenere un output txt o xml del tipo...

<MAR>
<attributes>
<attr name="ipAddr">
<value>192.x.x.x</value>

eccetera...

Dov'e' l'ip ad esempio l'ho passato io ad apache con la mia richiesta...

http://...../?ipAddr=192.x.x.x&parametro2=yyy

emh,... un po' più chiaro ?

Grazie
Mariodm

cionci
18-02-2004, 11:38
PEr recuperare l'ip lo devi rpendere con getenv e la variabile d'ambiente è REMOTE_ADDR...

cionci
18-02-2004, 11:40
http://www.icosaedro.it/apache/cgi-bash.html

mariodm
18-02-2004, 11:52
Grazie ma...

L'ip lo conosco gia'.. e anche gli altri parametri..

Per ora l'unica cosa è il passaggio di parametri verso apache..
e un output formattato xml o txt.

Più che altro un modulo apache semplice esistente...

Semplice ma complesso perchè apache sono unix mi è nuovo e anche sotto windows l'ho usato in maniera semplicistica...

Ciao
Mariodm

cionci
18-02-2004, 11:59
Ma non hai detto che conosci bash ? Quello sopra è un CGI realizzato in bash...

mariodm
18-02-2004, 12:05
Si..

scusa, rispondevo al primo tuo messaggio..

quello senza link..

Ora lo guardo subito..

Grazie
Mariodm

mariodm
18-02-2004, 12:11
utile grazie...

Ora devo scoprire se il supporto all'esecuzione dei cgi e' attivo..

Credi che si trovi in giro un sorgente c per la conversione

txt -> xml o url -> xml ?

ciao
Mariodm

cionci
18-02-2004, 13:16
Ma un file XML è già un file di testo...

mariodm
18-02-2004, 13:27
Si scusa... oer txt intendevo qualcosa senza formattazione...


Purtroppo credevo di aver risolto tutto, ma ho un grosso problema..

Non posso usare cgi..
Devo usare un modulo scritto in C di apache o svilupparne uno ad-hoc..

Conosco il c++, ma fare in pochissimo tempo qualcosa che interopera con apache la vedo dura..

Hai qualche consiglio ?
conosci qualche genio isponibile ?

O link che mi hai passato sono utilissimi.

Grazie
Mariodm

cionci
18-02-2004, 13:32
Non è proprio facile fare una cosa del genere...come mai non puoi usare CGI ?

mariodm
18-02-2004, 13:46
Perchè la procedura deve girare su una macchina che fa anche altre cose....

cmq la cosa in se è facile, no ?

Mi basterebbe identificare qualche modulo apache che fa qualcosa di simile e modificarlo, no ?

Hai qualche idea ?

apache è 1.3 !

Ciao
Mariodm

cionci
18-02-2004, 14:25
Ok...ma apache ti permette di eseguire i CGI fatti con gli script bash a gratis... Basta avere il permesso di esecuzione... Non capisco cosa non ti permetta di usarli...

Di moduli del genere non credo che ne esistano...

mariodm
18-02-2004, 14:35
Secondo te l'efficenza maggiore come si ottiene?

Con un modulo integrato in C,
oppure un cgi-bash o ancora uno script perl (anche il supporto al perl e' integrato, no ?)

Pensa ad un carico molto elevato verso il server..


Ciao
Mariodm

cionci
18-02-2004, 15:02
Ovviamente con un modulo integrato in C, ma sicuramente non è la strada più semplice ;)
Il supporto Perl credo che tu lo abbia tramite un mod_perl...

mariodm
18-02-2004, 15:34
Preferiscono la strada più complicata....

alto traffico...

Suggerimenti ?

Ciao

Mariodm

cionci
18-02-2004, 15:47
Nessuno...non ho mai fatto un modulo per Apache...

L'unico che ti posso dare è di seguire questi link: http://www.codefaktor.de/misc/apachelinks.html#apache1

mariodm
18-02-2004, 16:24
Grazie dei links....

Purtroppo c'e' un casino di materiale..
è completissimo...

Ma addirittura devo vedere le API in C.

Devo beccare in giro qualche modulo semplice che fa qualcosa simile..

Avessi tempo mi leggerei tutto il book al link.ù


Grazie per l'aiuto.

Ciao
Mario

mariodm
19-02-2004, 11:13
ciao Ragazzi,

Ho trovato un esempio...

come recuperereste i parametri dalla puntatore request_rec ?

idee per il successivo invio ?

#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
/* file: mod_hello.c */
/* here's the content handler */
static int hello_handler(request_rec *r) {
const char* hostname;
r->content_type = "text/html";
ap_send_http_header(r);
hostname = ap_get_remote_host(r->connection,r->per_dir_config,REMOTE_NAME);
ap_rputs("<HTML>\n" ,r);
ap_rputs("<HEAD>\n" ,r);
ap_rputs("<TITLE>Hello There</TITLE>\n" ,r);
ap_rputs("</HEAD>\n" ,r);
ap_rputs("<BODY>\n" ,r);
ap_rprintf(r,"<H1>Hello %s</H1>\n" ,hostname);
ap_rputs("Who would take this book seriously if the first example didn't\n",r); ap_rputs("say \"hello world\"?\n" ,r);
ap_rputs("</BODY>\n" ,r);
ap_rputs("</HTML>\n" ,r);
return OK;
}
/* Make the name of the content handler known to Apache */
static handler_rec hello_handlers[] =
{
{"hello-handler", hello_handler},
{NULL}
};
/* Tell Apache what phases of the transaction we handle */
module MODULE_VAR_EXPORT hello_module =
{
STANDARD_MODULE_STUFF,
NULL, /* module initializer */
NULL, /* per-directory config creator */
NULL, /* dir config merger */
NULL, /* server config creator */
NULL, /* server config merger */
NULL, /* command table */
hello_handlers, /* [9] content handlers */
NULL, /* [2] URI-to-filename translation */
NULL, /* [5] check/validate user_id */
NULL, /* [6] check user_id is valid *here* */
NULL, /* [4] check access by host address */
NULL, /* [7] MIME type checker/setter */
NULL, /* [8] fixups */
NULL, /* [10] logger */
NULL, /* [3] header parser */
NULL, /* process initialization */
NULL, /* process exit/cleanup */
NULL /* [1] post read_request handling */
};


Ciao
Mariodm

cionci
19-02-2004, 11:33
Originariamente inviato da mariodm
come recuperereste i parametri dalla puntatore request_rec ?

Devi guardare nella documentazione...altirmenti è impsosbile conoscere come è fatto...