Salve a tutti , ho letto molto ma non sono riuscito a risovere il
problema
Vi descrivo il problema spero che non vi annoiate
Sto facendo un applicativo web per effettuare query su un file xml,
dato che il file xml è 20M, REXML era molto lento nella fase di
costruzione del DOM, per ovviare a questo problema ho creato una
servelet con WEBrick, che risponde su una porta alle richieste della
query, in questo modo il processo server ha sempre in memoria delle
liste costruite su dom, per cui la risposta è veloce.
Tutto funziona se compongo la richiesta sul browser scrivendo un
apposito url
http://…//…//search?word=key
dove key è la parola cercata
Ora una pagina .rhtml , che una form e in si connette via http al
server con un url tipo il precedente
<% unless query == “”
require ‘net/http’
@uri=URI.parse(“http://143.225.229.89:8001/search?word=#{query}”)
res = Net::HTTP.get_response(@uri)
print res.body
print $SAFE
end %>
query è la stringa ottenuta dalla form , tutto questo NON FUNZIONA
nel senso che apache nel log mi da questa eccezione:
[Sat Nov 03 13:54:17 2007] [error] mod_ruby:
/usr/lib/ruby/1.8/net/http.rb:562:in initialize': Insecure operation - initialize (SecurityError) [Sat Nov 03 13:54:17 2007] [error] mod_ruby: from /usr/lib/ruby/1.8/net/http.rb:562:in
connect’
[Sat Nov 03 13:54:17 2007] [error] mod_ruby: from
/usr/lib/ruby/1.8/timeout.rb:48:in timeout' [Sat Nov 03 13:54:17 2007] [error] mod_ruby: from /usr/lib/ruby/1.8/timeout.rb:76:in
timeout’
[Sat Nov 03 13:54:17 2007] [error] mod_ruby: from
/usr/lib/ruby/1.8/net/http.rb:562:in connect' [Sat Nov 03 13:54:17 2007] [error] mod_ruby: from /usr/lib/ruby/1.8/net/http.rb:555:in
do_start’
[Sat Nov 03 13:54:17 2007] [error] mod_ruby: from
/usr/lib/ruby/1.8/net/http.rb:544:in `start’
il bello è che se metto invece di #{query} nella composizione dell uri
un stringa fissa funziona…
Quindi il problema è che non mi fa connettere mediante una stringa di
ingresso, penso per problemi di sicurezza…
Premetto che è il mio prima programma ruby sono tre giorni che lo
vedo…
Ho letto che esiste in Ruby il concetto di $SAFE. allora visto che in
irb il codice funzione ed ha settato la variabile $SAFE a 0, ho provato
a fare lo stesso in apache modificando http.conf in questo modo:
Handle files under /eruby as eRuby files
<Location /eruby>
RubySafeLevel 0
SetHandler ruby-object
RubyHandler Apache::ERubyRun.instance
ErrorDocument 500 /ruby/server_error.rb
Execute files under /ruby as Ruby scripts
<Location /ruby>
SetHandler ruby-object
RubyHandler Apache::RubyRun.instance
RubySafeLevel 0
Options +ExecCGI
ErrorDocument 500 /ruby/server_error.rb
Pensando che mettendo RubySafeLevel 0 doveva andare…
Invece NON va e se faccio il print nel file .rhtml della variabile $SAFE
mi esce 1
Non voglio arrendermi…ma non so cosa fare di più …
vi ringrazio tutti
antonio