gopher-proxy: proxy gopher over http

[ gpl, network, program ] [ Propose Tags ]

gopher-proxy allows to proxy gopher over HTTP, which is mainly useful for HTTP-ifying a specific gopher space.

A simple invocation looks like this:

gopher-proxy --host example.org --http-port 8080

In this particular example gopher-proxy does the following things:

  • Takes HTTP requests on 127.0.0.1:8080 (to be used by a proxying web server, like nginx), converts those to gopher requests to example.org and returns the gopher responses as HTTP responses

  • Links menu items pointing to external servers to gopher:// URLs (this ensures that only one gopher server is proxied) and recognizes URL links which are converted to normal HTML links

  • Tries to guess the correct mime-type for every gopher-served file (as it is not included in the response) and wraps text files in a HTML container.

  • And generally works hard to offer the best HTTP equivalent of a given gopher space :)

To learn about the other parameters for tweaking the behavior of gopher-proxy see the readme.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.1.3
Change log ChangeLog.md
Dependencies attoparsec, base (>=4.9 && <4.10), bytestring, directory, errors, http-types, lucid, mime-types, network, optparse-applicative, text, wai, warp [details]
License GPL-3.0-only
Author sternenseemann
Maintainer git@lukasepple.de
Category Network
Home page https://github.com/sternenseemann/gopher-proxy
Bug tracker https://github.com/sternenseemann/gopher-proxy/issues
Source repo head: git clone git://github.com/sternenseemann/gopher-proxy.git
Uploaded by sternenseemann at 2017-01-06T13:13:46Z
Distributions LTSHaskell:0.1.1.3, NixOS:0.1.1.3, Stackage:0.1.1.3
Reverse Dependencies 1 direct, 0 indirect [details]
Executables gopher-proxy
Downloads 4064 total (26 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2017-01-06 [all 3 reports]

Readme for gopher-proxy-0.1.1.0

[back to package description]

gopher-proxy

gopher-proxy is a tiny wai application running on top of warp. It acts as a gopher-over-http proxy for a specific server, e. g. to http-ify a gopher space.

Usage

Example usage:

gopher-proxy --host foo.org --http-port 8080

In this particular example, gopher-proxy would proxy the foo.org gopher server and bind its http service on 127.0.0.1:8080 (to be proxied to by another web server like nginx).

These are all optional flags which allow to change default behavior:

  • --port: The port of the gopher server, defaults to 70
  • --css-url: Use some specific css file instead of the default one.
  • --css-url: The http path of the css file, defaults to /gopher-proxy.css (should be changed, if your gopher server has a file with the same name
  • --base-url: The path of the directory which will appear as root directory of gopher-proxy to the user, defaults to /. Should be changed if you configured your proxying web server to expose gopher-proxy as, say /gopher-space/.
  • --listen-public: If this flag is set, gopher-proxy will accept connections on its public IP address(es).
  • --default-mime-type: Mime type to use if spacecookie can't guess it, defaults to "application/octet-stream"
  • --timeout: connection timeout in milliseconds, defaults to 10 seconds.
  • --server-name: The server name of the server to proxy, defaults to the host name. This value is used to detect wether a menu item is pointing to another gopher server than the proxied one. This is particularly useful, if you use e. g. 127.0.0.1 instead of the public host name.

Things to keep in mind

  • Your gopher server must send UTF-8-encoded gopher responses
  • gopher-proxy might misinterpret certain content, because of the context-sensitive nature of gopher
  • gopher-proxy does not support Gopher+

Roadmap

  • Add Logging