10
\$\begingroup\$

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 https://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.

\$\endgroup\$
3
  • \$\begingroup\$ Does the server have to be reusable? Or can it be a one-shot proxy? \$\endgroup\$
    – Nemo157
    Commented Mar 13, 2011 at 21:29
  • \$\begingroup\$ @Nemo: what do you mean reusable? (but I suppose the answer is "yes it can be a one-shot") \$\endgroup\$
    – Eelvex
    Commented Mar 13, 2011 at 21:41
  • \$\begingroup\$ @Nemo: yes, it is ok if the server exits after a well handled request. \$\endgroup\$
    – Eelvex
    Commented Mar 13, 2011 at 21:59

1 Answer 1

5
\$\begingroup\$

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"
\$\endgroup\$
3
  • \$\begingroup\$ 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? \$\endgroup\$ Commented Mar 13, 2011 at 21:58
  • \$\begingroup\$ @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. \$\endgroup\$
    – Nemo157
    Commented Mar 13, 2011 at 22:05
  • \$\begingroup\$ Yes, curl should be silenced (updated rules to clarify). \$\endgroup\$
    – Eelvex
    Commented Mar 13, 2011 at 22:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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