Network Working Group H. Hamilton Internet-Draft HLIRCnet Intended status: Informational March 2021 Interprotocol Gopher Types Abstract This document specifies new gopher types that allow interprotocol linking, where a client can either implement the protocol, or hand it off to a user-specified client on the system. 1. Introduction RFC 1436 defined the following non-gopher "types": 2 CCSO phonebook 8 Telnet session T tn3270 (EBCDIC telnet) session Users of gopher have also created a 'h' type, that can serve HTML text, or provide HTTP uris like so: h%09URL:%09%09 Hamilton, HLIRCnet [Page 1] Internet Draft March 2021 2. List of New Types N Netcat/plaintext TCP r IRC protocol (RFC 1459) R IRC protocol (RFC 1459) with TLS f NAME/FINGER protocol (RFC 742) S SSH protocol (RFC 4251, forward) H HTTP protocol (RFC 1945, forward) P HTTP protocol (RFC 1945, forward) with TLS e SMTP protocol (RFC 3461) use TLS if possible G GEMINI protocol [0] F IPFS protocol [1] j GIT protocol [2] [0]: gopher://gemini.circumlunar.space:70/0/docs/specification.txt [1]: https://docs.ipfs.io/ [2]: https://git-scm.com/docs/git-daemon 3. Link structure Within this RFC, the gopher link structure is defined like so: %09%09%09 Where %09 corresponds to the tabulation character found in ASCII and UTF-8. 3.1 Netcat/TCP ('N' type) is inputted as the first line sent to the server, the user is then given control of input to the server. If empty, give the user control of all input. hostname that is connected to. port that is connected to. 3.2 IRC ('r' and 'R' types) corresponds to a channel on an IRC server. It must contain the symbol the channel is prefixed by, usually a sharp ('#'), or ampersand ('&'). hostname that is connected to. port that is connected by. if the type is 'R', use TLS when connecting to the server. Hamilton, HLIRCnet [Page 2] Internet Draft March 2021 3.3 NAME/FINGER ('f' type) corresponds to the 'user' on a server, it may be left empty to request the 'default report'. hostname that is connected to. port that is connected by. 3.4 SSH ('S' type) specifies the user the client should attempt to log in as. If left empty, three (3) different methods of determining the user should be attempted by the client: 1. the "username" of the user running the client is used as the SSH user. 2. a default user may be specified in the gopher client, or ssh client, configuration. 3. a user may be specified for each server in the gopher client, or ssh client, configuration. hostname that is connected to. port that is connected by. 3.5 HTTP ('H' and 'P' types) specifies the path requested from the server. hostname that is connected to. port that is connected by. if the type is 'P', use TLS wen connecting to the server. 3.6 SMTP ('e' type) specifies the content of the E-mail address up until the at symbol ('@') used as the receiving address. content that follows the at symbol ('@') in the recieving address. this section MUST be ignored. 3.7 GEMINI ('G' type) gemini path hostname that is connected to. port that is connected by. Hamilton, HLIRCnet [Page 3] Internet Draft March 2021 3.8 GIT ('j' type) The naming on this particular type was decided by finding the next unused character in alphabetical order from 'g'. name of repository hostname that is connected to. port that is connected by. 3.9 IPFS ('F' type) IPFS' structure is unique compared to the rest of the protocols in this document, therefore it is given a new set of 'variables' below: F%09%09%09 the hash assigned to an IPFS file or directory the path to a file inside of an IPFS directory, leave empty if the link points to a file. since IPFS is a protocol focused primarily on real-time file retreival, it makes sense for the file to be read by the gopher client - therefore, the usual type that would point to the given file is written here. Example: '0' plain-text file '9' binary file Other interprotocol types *cannot* be used here and must generate an error. 4. Origin The proposed types were first implemented in the version of the 'cgo' gopher client maintained by the author. Its source code can be found here: git://hhvn.uk/cgo 5. Author's Address Hayden Hamilton Alias: hhvn Email: hayden+standards@hhvn.uk Hamilton, HLIRCnet [Page 4]