Guest User

Untitled

a guest
Jun 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. require 'gserver'
  4. require 'socket'
  5.  
  6. class ProxyServer < GServer
  7. def initialize(port, remote_port, remote_host)
  8. @remote_port = remote_port
  9. @remote_host = remote_host
  10.  
  11. super(port, GServer::DEFAULT_HOST, Float::MAX, $stderr, true)
  12. end
  13.  
  14. def starting
  15. log("Proxy server starting on #{@host} (#{@port}).")
  16. end
  17.  
  18. def stopping
  19. log("Proxy server shutting down.")
  20. end
  21.  
  22. def connecting(client)
  23. client_hostname = client.peeraddr[2] || client.peeraddr[3]
  24. log("Client connected (#{client_hostname}).")
  25. end
  26.  
  27. def disconnecting(client_port)
  28. log("Client disconnected (#{client_port}).")
  29. @remote_socket.close
  30. end
  31.  
  32. def serve(socket)
  33. until socket.eof? do
  34. message = socket.gets
  35. puts "[Client] #{message}"
  36.  
  37. @remote_socket = TCPSocket.new(@remote_host, @remote_port)
  38. @remote_socket.puts message
  39.  
  40. response = @remote_socket.gets
  41. puts "[Server] #{response}"
  42.  
  43. socket.puts response
  44. end
  45. end
  46. end
  47.  
  48. server = ProxyServer.new(2097, 8080, 'localhost')
  49. server.start(-1)
  50. server.join
Add Comment
Please, Sign In to add comment