proxy gopher over http.
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 toexample.org
and returns the gopher responses as HTTP responsesLinks 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 linksTries 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.
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 to70
--css-path
: 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 gopher-proxy 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.--title
: Sets the first part of the HTML title-tag, defaults togopher-proxy
.
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.