Crea un proxy semplice


9

Crea il server proxy più corto.

Specifiche di input / output

Cliente:

  • Input: un numero di porta (intero a 32 bit) (,) o (spazio) un url (vedi casi di test)
  • Output: sorgente html dell'URL

Server:

  • Input: porta da ascoltare (intero a 32 bit)
  • Output: REC quando l'input viene ricevuto dal client, OK al termine dell'invio dell'origine HTML al client.

Regole

  • È possibile creare un programma completo o funzioni in una lingua interpretata .
  • L'input viene preso tramite stdin o fornito come argomento .
  • Il codice deve funzionare solo per i casi di test indicati (più è facoltativo, meno non è valido).
  • L'output del client deve essere lo stesso di quello che ottieni quando "visualizzi l'origine" da un browser.
  • Il server può uscire dopo ogni richiesta gestita (cioè non deve essere persistente / demone)
  • ( modifica ) Qualsiasi altro input / output oltre a quanto specificato, è vietato.

Casi di test (input client)

  1. N 1 https://stackoverflow.com/
  2. N 2 http://it.wikipedia.org/wiki/Proxy_server
  3. N 3 http://stackexchange.com/search?q=code+golf

dove N i sono numeri interi casuali tra 1 e 2048.


Il server deve essere riutilizzabile? O può essere un proxy one-shot?
Nemo157,

@Nemo: cosa vuoi dire riutilizzabile? (ma suppongo che la risposta sia "sì, può essere un colpo solo")
Eelvex

@Nemo: sì, va bene se il server esce dopo una richiesta ben gestita.
Eelvex,

Risposte:


4

ZSH - 57 + 42 caratteri

Server:

s=$(nc -l $1)
echo REC
curl -s $s|nc 127.0.0.1 $1
echo OK

Cliente:

echo $2|nc 127.0.0.1 $1
echo "$(nc -l $1)"

Uso:

sudo zsh server.zsh 123

sudo zsh client.zsh 123 http://stackoverflow.com/
sudo zsh client.zsh 123 http://en.wikipedia.org/wiki/Proxy_server
sudo zsh client.zsh 123 "http://stackexchange.com/search?q=code+golf"

È passato un po 'di tempo dall'ultima volta che ho usato zsh, ma non riesci a liberarti di tutte le virgolette (necessarie per bash) quando uso quella shell?
PleaseStand,

@idealmachine: quelli sulla seconda riga del client che ritengo necessari, stavo solo riprendendo il piè di pagina dalla ricerca StackExchange. Gli altri, non ne sono sicuro, sembrano funzionare senza di essi. Non faccio molto scripting in zsh.
Nemo157,

Sì, il ricciolo dovrebbe essere messo a tacere (regole aggiornate per chiarire).
Eelvex,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.