Take the 2-minute tour ×
Programming Puzzles & Code Golf Stack Exchange is a question and answer site for programming puzzle enthusiasts and code golfers. It's 100% free, no registration required.

Make the shortest proxy server.

Input/Output Specifications

Client:

  • Input: a port number (32-bit integer) (,) or (space) a url (see test cases)
  • Output: html source of the url

Server:

  • Input: port to listen to (32-bit integer)
  • Output: REC when input is received from the client, OK when finished sending the html source to the client.

Rules

  • You may make either a complete program or functions in an interpreted language.
  • Input is taken through stdin or given as a arguments.
  • Your code has to work for the given test cases only (more is optional, less is invalid).
  • The client output has to be the same as with what you get when you "view source" from a browser.
  • The server may exit after each handled request (i.e does not have to be persistent/daemon)
  • (edit) Any other input/output than what specified, is forbidden.

Test cases (client inputs)

  1. N1 http://stackoverflow.com/
  2. N2 http://en.wikipedia.org/wiki/Proxy_server
  3. N3 http://stackexchange.com/search?q=code+golf

where Ni are random integers between 1 and 2048.

share|improve this question
    
Does the server have to be reusable? Or can it be a one-shot proxy? –  Nemo157 Mar 13 '11 at 21:29
    
@Nemo: what do you mean reusable? (but I suppose the answer is "yes it can be a one-shot") –  Eelvex Mar 13 '11 at 21:41
    
@Nemo: yes, it is ok if the server exits after a well handled request. –  Eelvex Mar 13 '11 at 21:59

1 Answer 1

up vote 3 down vote accepted

ZSH - 57 + 42 characters

Server:

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

Client:

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

Usage:

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"
share|improve this answer
    
It's been a while since I last used zsh, but can't you get rid of all the quotes (necessary for bash) when using that shell? –  PleaseStand Mar 13 '11 at 21:58
    
@idealmachine: The ones on the second line of the client I think are necessary, I was only getting the footer back from the StackExchange search. The other ones, I'm not sure about, seems to work without them though. I don't really do much scripting in zsh. –  Nemo157 Mar 13 '11 at 22:05
    
Yes, curl should be silenced (updated rules to clarify). –  Eelvex Mar 13 '11 at 22:31

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.