# gopher-to-gemini
       
       gopher-to-gemini is a reverse proxy written in Go that allows you
       to serve your Gemini capsule over Gopher as well.
       
       ## What is Gemini?
       
       I've realised that if you're viewing this page over Gopher you
       might not know what Gemini is (yet). Gemini is a protocol that's
       vaguely similar to Gopher, but has TLS and a different menu
       format. See the Gemini protocol's page for more information:
       
 (TXT) gopher://geminiprotocol.net/0/docs/faq.txt
       
       The Gemini protocol is unrelated to Google's "Gemini" AI and
       predates it.
       
       ## Try it out
       
       This page is natively in Gemini and is available on Gopher using
       the proxy, click the link below to try it (if you aren't already
       on Gopher).
       
 (DIR) Try it
       
       Gemtext documents get translated into Gophertext on-the-fly.
       Assumptions are made about file types based on their extensions
       where possible to try and make using it less painful, so it may
       not be compatible with sites that do their own thing. Emojis are
       removed from the start of links because some Gopher clients don't
       work properly with UTF-8.
       
       Here are some example links to demonstrate its Gemtext conversion
       (if you are connected with Gopher):
       
 (PNG) PNG image
 (IMG) JPG image
 (TXT) Text document
 (DIR) Input (no special configuration)
 (QRY) Input (configured in `GOPHER_PROXY_INPUT_PATH_REGEX`)
       
       > This is an example of a blockquote in Gemtext. The quote is all
       > on one line, but will be wrapped.
       
       ## Options
       
       You can add the following prefixes to URL paths to change the
       behaviour of the Gemtext translation:
       
       * `/_raw`: Returns the raw content, does not translate into
         Gemtext. Any other options are ignored.
       * `/_wrap=<chars>`: Changes how many characters text gets wrapped
         at, useful for mobile devices.
       * `/_encoding=<encoding>`: Output encoding. Supports `utf-8`
         (default), `latin-1`, and `ascii`.
       
 (DIR) Example with _wrap=40
 (TXT) View the source of this page
       
       ## Source code
       
 (HTM) Git repository
       
       ## Usage
       
       It is configured with environment variables because I didn't feel
       like doing anything nicer.
       
       Example configuration:
       
       GOPHER_PROXY_BIND_PROTO=tcp
       GOPHER_PROXY_BIND_ADDR=:7070
       GOPHER_PROXY_PUBLIC_ADDR=mysite.example.com:7070
       GOPHER_PROXY_TARGET=gemini://mysite.example.com
       
       There's also an optional `GOPHER_PROXY_INPUT_PATH_REGEX` variable,
       any links that match this regex that would otherwise become menu
       links (type `1`) get converted to input links (type `7`) if they
       don't already have a query string. Can be used to skip showing a
       "Gemini server has requested input" page. Example:
       
       GOPHER_PROXY_INPUT_PATH_REGEX=^/search$
       
 (DIR) Homepage