en-US/about_PSGopher.help.txt
TOPIC
about_PSGopher SHORT DESCRIPTION A PowerShell module to download resources via Gopher. LONG DESCRIPTION The PSGopher module allows you to connect to Gopher and Gopher+ servers and download resources and attributes. It has one cmdlet, Invoke-GopherRequest (alias: igr). EXAMPLES Example 1: Viewing Contents This example connects to Floodgap's Gopher server and return the content. PS C:\> $response = Invoke-GopherRequest gopher://floodgap.com PS C:\> $response.Content Welcome to Floodgap Systems' official gopher server. Floodgap has served the gopher community since 1999 (formerly gopher.ptloma.edu). […] Example 2: Viewing Metadata The -Info parameter will retrieve attributes about a resource, if the server supports Gopher+. PS C:\> igr -Info gopher://example.com/article.txt INFO : 0article.txt /article.txt example.com 70 + ADMIN : { Admin: John Doe <jdoe@example.com>, Mod-Date: Sun Nov 28 15:24:21 2021 <20211128152421> } VIEWS : text/plain: <11k> ABSTRACT : This article exists for documentation purposes. Example 3: Downloading Files You can download files with the `-OutFile` parameter. PS C:\> Invoke-GopherRequest 'gopher://example.org/pic.gif' -OutFile pic.gif Example 4: Viewing Links The `Links` property of a successful Gopher request contains all of a page's links. PS C:\> (igr gopher://floodgap.com).Links | Select -First 1 href : gopher://gopher.floodgap.com/gopher/proxy Type : 0 Description : Does this gopher menu look correct? Resource : /gopher/proxy Server : gopher.floodgap.com Port : 70 UrlLink : False Example 5: Sending Input The `InputObject` parameter (or pipeline input) can be used to send a query string to a Gopher server. PS C:\> igr gopher://gopher.floodgap.com/7/v2/vs -InputObject 'search terms' Pipeline input is also supported: Read-Host -Prompt 'Search for' | igr 'gopher://gopher.floodgap.com/7/v2/vs' Due to how the PowerShell runtime handles [System.Uri] objects with non-HTTP and non-HTTPS schemes, it is strongly recommended that you use -InputObject when creating URIs with query strings. This cmdlet will do the URL-encoding for you when using this parameter. However, if you're bold, you can build a URL by hand for the -Uri parameter. TROUBLESHOOTING NOTE There are a few bugs and missing features in this version: Gopher+ Directory Listings Are Plain Text Gopher+ directory listings aren't fully supported by this version. While you can fetch any attributes with the -Info parameter and get them as an object, doing this on a menu/Gophermap or directory will return plain text. This may be updated in a future release. Using SSL/TLS, Where Supported There is an unofficial specification for wrapping Gopher connections in TLS. This cmdlet supports that in two ways: 1. The -TrySSL parameter will connect with opportunistic encryption. First, Invoke-GopherRequest will attempt to connect to the server securely. If it fails, it will fall back to a regular non-secured connection. 2. The -UseSSL parameter will connect with mandatory encryption. Should the server fail to negotiate a TLS session, Invoke-GopherRequest will abort. Supplying a URL with a scheme of gophers, sgopher, or gopher+tls is the same as using the -UseSSL parameter. Note that Gopher predates SSL and TLS. What enthusiasts call "SecureGopher" did not exist back in Gopher's heyday; it's a recent invention, and there is no official standard. Thus, few servers support secure connections. The TLS implementation used only supports encryption. Unlike Web browsers, there is no certificate presented and no server authentication is performed (not even TOFU like in Gemini -- there's nothing to check). While it will encrypt your traffic, you should expect no privacy or security otherwise. SEE ALSO - `Invoke-WebRequest`, which this cmdlet is modeled after. - RFC 1436, "The Internet Gopher Protocol". https://tools.ietf.org/html/rfc1436 - RFC 4266, "The Gopher URI Scheme". https://tools.ietf.org/html/rfc4266 - Gopher+. http://gopherinfo.somnolescent.net/documentation/gopherplus.html KEYWORDS - Gopher - Gopher+ - GopherPlus - SecureGopher - SecureGopher+ - SecureGopherPlus - RFC1436 - small web - WWW alternatives |