Servidor HTTP simples que enviará o mesmo arquivo para todas as solicitações?

2

Eu preciso depurar um aplicativo XML-RPC, que envia respostas XML por HTTP. Eu tenho uma amostra de resposta XML (ou seja, dados do servidor, enviado para o cliente que não está funcionando), gostaria de depurar meu aplicativo. Idealmente, gostaria de um servidor HTTP simples que servisse um arquivo em resposta a todas as solicitações. Alguém solicita / ? Envie-lhes este arquivo. Alguém faz uma postagem para /server/page.php com um determinado cookie? Basta enviar este arquivo para eles. Eu não me importo com multithreading ou segurança. Só precisarei usar isso por algumas horas para depurar. Eu tenho raiz na máquina.

i.e. Eu espero que haja algo tão fácil de usar como este:

simple_http_server -p 12445 -f my_test_file

Estou ciente do módulo SimpleHTTPServer do python, mas não sei como fazer isso funcionar nesse caso.

    
por Rory 19.03.2010 / 11:04

3 respostas

4

Se você tem inetd instalado, basta criar um script como (eu cometi um erro, o script não é necessário)

    #! / bin / bash
    gato $ 1

adicione a linha ao inetd.conf

http stream  tcp   nowait root  /bin/cat cat /some/other/dir/file.txt

Com o Python, apenas estenda a classe BaseHTTPServer.BaseHTTPRequestHandler e defina um método do_GET e, em seguida, execute conforme descrito no documentação , por exemplo

import BaseHTTPServer
class HTTPHandlerOne(BaseHTTPServer.BaseHTTPRequestHandler):
  def do_GET(self): self.wfile.write("test\r\n")

def run(server_class=BaseHTTPServer.HTTPServer,
        handler_class=BaseHTTPServer.BaseHTTPRequestHandler):
    server_address = ('', 8000)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()

run(handler_class=HTTPHandlerOne)
    
por 19.03.2010 / 11:51
1

Você poderia adicionar uma regra mod_rewrite a um vhost apache que reescreveria todas as solicitações para o arquivo que você deseja exibir.

<VirtualHost *:80>
ServerName onefilevhost.local

RewriteEngine On
RewriteRule ^/(.*)? http://onefilevhost.local/serve/this/file.txt
</VirtualHost>
    
por 19.03.2010 / 12:02
0

Você pode fazer isso com Sinatra bem fácil. Instale o sinatra fazendo gem install sinatra e crie um arquivo test_page.rb como este:

require 'sinatra'

get '/*' do
  File.read('/server/page.php')
end

Se você não tiver $RUBYOPT=rubygems no seu shell, adicione require 'rubygems' no começo.

Você pode executá-lo com ruby test_page.rb . Ele irá escutar na porta 4567 por padrão.

    
por 19.03.2010 / 14:59