#gopher

57b731e9@nerdpol.ch

MinusBrowser 2.26 is Published

Minus is like Gopher, but even simpler. MinusBrowser also browses Gophersapce.

  • When you bookmark the results of a Gopher search service search, that link now works properly. This fixes a bug in previous versions.
  • MinusBrowser now reads man pages. Typing Control-m now displays the man page (if any) for the text you enter or select.
  • Control-m is no longer a substitute for the "Add to menu" button because Control-m is now used to look for man pages.
  • A new man: URL scheme now exists to support looking for man pages. You can create links to man: URLs.
  • When you click on a file:// link to a file that is not a text file, you now have the option of opening it with the default software for its file type. This will not work if the file is executable software or is likely to contain executable software (e.g., .docm and .xlsmfiles).

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

[minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/](minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/)
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

57b731e9@nerdpol.ch

MinusBrowser 2.25.1 is Published

Minus is like Gopher, but even simpler. MinusBrowser also browses Gophersapce.

  • This version fixes a mistake in the documentation (in the Home page).

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

[minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/](minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/)
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

harryhaller@diasp.eu

avatar @pascal macaigne - original post

THE GOPHER REVIVAL IS UPON US

A maxim for anyone writing a web page in the mid 1990s was that it was good practice to bring the whole thing (including graphics) in at around 30 kB in size. It was a time when the protocol still had some pretence of efficient information delivery, when information was self-published, before huge corporations brought everything under their umbrellas.

Recently, this idea of the small web has been experiencing something of a quiet comeback.
...
Read on : https://hackaday.com/2023/12/29/the-gopher-revival-is-upon-us/

#gopher #gemini #http #ftp #freenet #browser #web #www

57b731e9@nerdpol.ch

MinusBrowser 2.11.2 is Published

Minus is an alternative to, but not a replacement for, HTTP and Gopher.

  • MinusBrowser's copy of Tor now uses OpenSSL 1.1.1u.

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

[minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/](minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/)
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

57b731e9@nerdpol.ch

MinusBrowser 2.7 is Published

Minus is an alternative to, but not a replacement for, HTTP and Gopher.

The following changes were made.

  • If I2P is running, MinusBrowser can now read files from .i2p domains using HTTP or HTTPS.
  • A new "Add file" button has been added to the server window. This adds files to your library that already exist.
  • Error checking in the functions that add files to your library has been improved.

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

57b731e9@nerdpol.ch

MinusBrowser 2.6 is Published

Minus is an alternative to, but not a replacement for, HTTP and Gopher.

  • You can now edit a page by holding down the Control key while you click a file:// link to it.
  • You can now remove a page from your library by holding down the Control key while you right-click a file:// link to it.
  • Your initial index.minus file is created immediately after clicking the Start Server button the first time. This fixes a bug in previous versions.
  • The server now checks the file name extension of the file name you enter after you click the New page button to make sure it is .minus, .txt, .text, or .asc. This fixes a bug in previous versions.

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

57b731e9@nerdpol.ch

MinusBrowser 2.5.2 is Published

Minus is an alternative to, but not a replacement for, HTTP and Gopher.

  • When using Tails, MinusBrowser now correctly determines whether the computer is connected to a network.
  • New Gopher links have been added to the "Known Minus Libraries and Selected Gopher Holes" page.
  • MinusBrowser now, finally, correctly finds text with hyphens (-).
  • MinusBrowser now tolerates spaces in URLs. Spaces are not allowed in minus:// URLs, but they are allowed in file://, gopher://, http://, and https:// URLs.

To update to this new version, if you already have MinusBrowser 2.1 or later, just follow the instructions on your browser’s home page. You will not need to use a web browser to update.

To get MinusBrowser if you do not already have it, download this file from Codeberg.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xzf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it. If you have a version of MinusBrowser earlier than 2.1, unpack the .tar.gz file into the same directory as your present MinusBrowser folder.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

You can download MinusBrowser from a terminal window with this command. This will work only if Tor Browser is running because it borrows Tor Browser’s SOCKS5 proxy. (Both Tor Browser and MinusBrowser contain their own copy of Tor.)

curl --socks5-hostname 127.0.0.1:9150 -O gopher://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion:1990/9/MinusBrowser.tar.gz

This works because all Minus URLs can be translated into Gopher URLs.

minus://something.onion/gopher://something.onion:1990/9/

For more information:

minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/
https://codeberg.org/giXzkGsc/Minus-Protocol

#internet #protocol #tcp #hypertext #http #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser #server #minus-server

57b731e9@nerdpol.ch

MinusBrowser 1.2 is Published

Minus is an alternative to, but not a replacement for, HTTP and Gemini.

  • Tor now starts automatically. The option to keep Tor running after the browser window is closed still exists.
  • Tor is now used for all connections, not just connections to .onion domains.
  • Gopher is now supported, but not as fully as with a dedicated Gopher client. Gopher menus are presented as if they were Minus pages. You can click on Gopher links just as you do with Minus links. Search is also supported.
  • Various annoying bugs are fixed. This includes bugs related to selected text.

The new version is available on Codeberg as a .tar.gz file.

https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

There is no need to install MinusBrowser. Just download the .tar.gz file to your home folder and unpack it with

tar -xf MinusBrowser.tar.gz

or use your favorite GUI software to unpack it.

If you have an earlier version, unpack the .tar.gz file into the same directory as your present MinusBrowser folder. I plan to make future versions of MinusBrowser able to update themselves similarly to the way EasyGPG updates itself.

To follow the progress of the Minus Protocol Project, click on #minus-protocol or look at https://nerdpol.ch/tags/minus-protocol

#internet #protocol #tcp #hypertext #http #gemini #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser

57b731e9@nerdpol.ch

MinusBrowser 1.0 is Published

MinusBrowser is a browser for the Minus protocol written in Tcl/Tk that also requires curl.

The Software

I have developed a Minus server and a Minus browser for Linux distros. I am putting the Minus browser on Codeberg first. I will put a server there later.

My browser is written in Tcl/Tk, and it also requires curl. Like the Tor Browser, MinusBrowser includes its own copy of Tor. The protocol specification allows for the use of TLS, but MinusBrowser does not support it -- at least, not yet. My present Minus servers run as Tor Onion Services, and I have no plan to create clearnet servers in the future. However, MinusBrowser will also read from libraries on local networks.

There is no need to install the browser. Just download the .tar.gz archive and unpack it. The ReadMeFirst.txt file explains how to launch it on various distros.

MinusBrowser includes a list of known public Minus libraries. So far, I know of only my two libraries: the one for this project and the one for my EasyGPG project.

The Files

MinusBrowser
https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/MinusBrowser.tar.gz

Minus Protocol Specification
https://codeberg.org/giXzkGsc/Minus-Protocol/raw/branch/main/minus-specification.md

What is Minus?

The Minus protocol is an alternative to Gopher, HTTP, and Gemini. It was inspired by Gopher. Gopher Plus was intended to add features to Gopher, but I wanted to subtract features. I wanted a Gopher Minus. I shortened this to Minus.

Minus is Gopher with only type 9 files. (This will make sense to you if you have ever implemented a Gopher server or client.)

As with Gopher and Gemini, a Minus client sends only one line of text that specifies the file to download. The server then sends back the requested file or a message in UTF-8 text explaining why the file was not sent. Notice that there is nothing at all like request and response headers.

The files served can be of any type, but only .minus, .txt, .text, and .asc files will be displayed by the client. Other types are saved to mass storage.

Minus files are UTF-8 text. There is no markup language apart from using # characters to indicate headers, and the back-tick (`) to delimit code snippets and similar text. Every character in the file is shown to the user.

The only hypertext feature is that all minus:// URLs, alone on a line, are automatically clickable links.

Minus defines its own MIME type, like HTTP's text/html. This is text/minus, and the file name suffix is .minus.

Minus URLs are of the form minus://domain.tld/something.minus. There is no optional authority component, nor are there any optional query or fragment components. The browser sends the part of the URL after the TLD to the server to specify the desired file.

The Minus equivalent of the HTTP web site and Gopher gopher hole is the Minus library.

The Future of this Project

As mentioned above, I will put my Minus server on Codeberg. I want to build a GUI for it soon, but I will probably upload it before that is finished.

I am thinking about several improvements to the browser. One is to enable the MinusBrowser to read pages aloud. This would be done by recording sound files with espeak and playing them with VLC or Audacious. I am also thinking about limited support for Gopher. This would translate Gopher menus into Minus pages and allow display of files that appear in Gopher menus as type 0. I definitely plan to make MinusBrowser able to update itself using Codeberg or using the Minus Library for this project.

I am also thinking about using gpg to display PGP messages and verify their signatures. This would require that the browser also import PGP keys.

Minus Protocol Project on Codeberg
https://codeberg.org/giXzkGsc/Minus-Protocol

Minus library for the Minus protocol project
minus://mvxpelpxu2f7kzotb2s2t6fkmggvrd7qdg2wjs6waiyf2nbhkawux4yd.onion/

Minus library for EasyGPG
minus://7hinc6ucgvwbcjjoe44lhzzxyjptb3da6tzl33oe7ezl2qgwlrkfe6yd.onion/

#internet #protocol #tcp #hypertext #http #gemini #gopher #minus #minus-protocol #browser #minusbrowser #minus-browser

57b731e9@nerdpol.ch

Latest Version 2022-07-05

Minus Protocol Specification

The Name of the Minus Protocol

The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher.

Minus Transactions

Server: listens for TCP connections on port 1990
Client: opens a TCP connection to the server on port 1990
Server: accepts the TCP connection
Client: sends a file specifier that specifies the file to be downloaded
Server: sends the specified file or a UTF-8 text message explaining why the specified file was not sent
Server: closes the TCP connection

The client may close the TCP connection before the entire file is received. The server must tolerate this.

The specifier is one line of text which can contain only the characters inside the following quotation marks.

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."

The specifier may be just /, but, otherwise, it should not end with /. The specifier should also not contain //, .., ./, or /..

If the specifier is / or zero-length, the specifier will default to index.minus. This is similar to index.html in HTTP.

The error message mentioned above should be UTF-8 text with \n at the end of lines, and not \r\n.

There must be no other communication between the server and client. Notice that no information about the client is sent to the server.

Avoiding Information Exfiltration

Exfiltration of information from the client is prevented by only allowing the transaction above, but indirectly exfiltrating information from the server is still possible.

This could happen if all the files served are kept in one directory, and the specifier is combined with the path name of this one directory to form the path name of the file served. This is obviously insecure, yet many file servers are designed this way. Such servers have to use various strategies to mitigate the insecurity created by this design.

A better design uses an index that contains an entry for each file that can be served. Each entry relates a specifier to the path name of the file it specifies. With this design, only files listed in the index can be served, and the specifier need not contain any part of the path name of the file.

Transport Security

Minus is insecure unless TLS is used or the server is run as a Tor Onion Service. Running as a Tor Onion Service is preferred because it makes everything easier. No registration of a domain name is necessary, no TLS certificate is required, and both server and client are easier to implement without TLS.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

Minus URL Format

Here is an example of a Minus URL.

minus://vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion/index.minus

(There is not a server at this domain. This is just an example.)

This has three parts: the protocol (or scheme) minus://, the host (an FQDN or an IP address) vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion, and /index.minus (the specifier sent by the client to the server). See the section above for the complete list of characters allowed in a specifier.

Minus URLs must be the only thing on the line they appear in.

Minus URLs in .minus documents should be selectable links that open the specified document. In a GUI client, these should be clickable.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

The .minus File Type

Files with the .minus filename extension should be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should.

Lines in .minus files should end with \n and not \r\n.

Minus URLs must be the only thing on the line they appear in.

The client should recognize Minus URLs in the text of .minus files and make them easily selectable. Selecting them should download the specified file. If the file downloaded is a .minus file, it should be displayed. If it is a .txt, .text, or .asc file, it should also be displayed, but without necessarily making URLs in the text selectable. All other files should be downloaded and saved to mass storage. The file names of files saved to mass storage will be the part of the specifier after the last /. Clients should check that the downloaded file is not actually an error message sent by the server instead of the specified file.

Minus does not allow for embedding other files in a .minus file such that they are displayed in the same window as the text. No URLs in the text should ever be automatically downloaded.

Display of Text in .minus Files

How the text of .minus files is displayed should be controlled by the client and its user. However, the text of the .minus file may indicate, with markings, what functions parts of the text play in the document.

For example, the text could indicate what lines of the document are headings and subheadings. This could be done by beginning the line with a # or more than one #, followed by a space. The client and its user could decide how headings should be displayed. Similarly, the ` could indicate the beginning and end of a code snippet, and the client could display these snippets differently from the rest of the text.

It is also acceptable for the client not to display marked text or markings differently from the rest of the text.

Minus Compared to Gopher, Gemini, and HTTP

Gemini is meant to be less complex and easier to implement than HTTP, but more complex than Gopher. Minus, on the other hand, is meant to be less complex and easier to implement than all of these others, including Gopher.

This simplicity is essential if the Internet is to, once again, become human-friendly.

HTTPS 1.1 and HTML5 are so complex that no single person can implement a server or a client that supports the entire HTTPS 1.1 and HTML5 standards. In fact it requires a large team of people to do so. It is, therefore, not surprising that there are very few clients or servers not based on some other client or server.

Because complexity is the enemy of security, this software is also insecure.

Perhaps the worst problem with HTTPS 1.1 and HTML5 is the way, by design, that they spy on users of HTTPS 1.1 clients. In Minus, the only information communicated by the client to the server is the specifier that specifies the file to be downloaded. This is very different from HTTPS 1.1. Even worse, HTTPS 1.1 allows the server to download and store information onto the client machine that is not explicitly requested by the user.

When I implemented my own Gopher server, I found that even Gopher has complexity I do not need or want. This is why I am doing this.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol

57b731e9@nerdpol.ch

This adds a note about error messages suggested by @prplcdclnw@diasp.eu , and a note about / in specifiers.

Third Release Version

Minus Protocol Specification

The Name of the Minus Protocol

The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher.

Minus Transactions

Server: listens for TCP connections on port 1990
Client: opens a TCP connection to the server on port 1990
Server: accepts the TCP connection
Client: sends a file specifier that specifies the file to be downloaded
Server: sends the requested file or a UTF-8 text message explaining why the specified file was not sent
Server: closes the TCP connection

The specifier is one line of text which can contain only the characters inside the following quotation marks.

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."

The specifier may be just /, but, otherwise, it should not end with /. The specifier should also not contain //.

If the specifier is / or zero-length, the specifier will default to index.minus. This is similar to index.html in HTTP.

The error message mentioned above should be UTF-8 text with \n at the end of lines, and not \r\n.

There must be no other communication between the server and client. Notice that no information about the client is sent to the server.

Avoiding Information Exfiltration

Exfiltration of information from the client is prevented by only allowing the transaction above, but indirectly exfiltrating information from the server is still possible.

This could happen if all the files served are kept in one directory, and the specifier is combined with the path name of this one directory to form the path name of the file served. This is obviously insecure, yet many file servers are designed this way. Such servers have to use various strategies to mitigate the insecurity created by this design.

A better design uses an index that contains entries for each file that can be served. Each entry relates a specifier to the path name of the file it specifies. With this design, only files listed in the index can be served, and the specifier need not contain any part of the path name of the file.

Transport Security

Minus is insecure unless TLS is used or the server is run as a Tor Onion Service. Running as a Tor Onion Service is preferred because it makes everything easier. No registration of a domain name is necessary, no TLS certificate is required, and both server and client are easier to implement without TLS.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

Minus URL Format

Here is an example of a Minus URL.

minus://vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion/index.minus

(There is not a server at this domain. This is just an example.)

This has three parts: the protocol (or scheme) minus://, the host (an FQDN or an IP address) vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion, and /index.minus (the specifier sent by the client to the server). See the section above for the complete list of characters allowed in a specifier.

Minus URLs must be the only thing on the line they appear in.

Minus URLs in .minus documents should be selectable links that open the specified document. In a GUI client, these should be clickable.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

The .minus File Type

Files with the .minus filename extension should be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should.

Lines in .minus files should end with \n and not \r\n.

Minus URLs must be the only thing on the line they appear in.

The client should recognize Minus URLs in the text of .minus files and make them easily selectable. Selecting them should download the specified file. If the file downloaded is a .minus file, it should be displayed. If it is a .txt, .text, or .asc file, it should also be displayed, but without necessarily making URLs in the text selectable. All other files should be downloaded and saved to mass storage. The file names of files saved to mass storage will be the part of the specifier after the last /. Clients should check that the downloaded file is not actually an error message sent by the server instead of the specified file.

Minus does not allow for embedding other files in a .minus file such that they are displayed in the same window as the text. No URLs in the text should ever be automatically downloaded.

Display of Text in .minus Files

How the text of .minus files is displayed should be controlled by the client and its user. However, the text of the .minus file may indicate, with markings, what functions parts of the text play in the document.

For example, the text could indicate what lines of the document are headings and subheadings. This could be done by beginning the line with a # or more than one #, followed by a space. The client and its user could decide how headings should be displayed. Similarly, the ` could indicate the beginning and end of a code snippet, and the client could display these snippets differently from the rest of the text.

It is also acceptable for the client not to display marked text or markings differently from the rest of the text.

Minus Compared to Gopher, Gemini, and HTTP

Gemini is meant to be less complex and easier to implement than HTTP, but more complex than Gopher. Minus, on the other hand, is meant to be less complex and easier to implement than all of these others, including Gopher.

This simplicity is essential if the Internet is to, once again, become human-friendly.

HTTPS 1.1 and HTML5 are so complex that no single person can implement a server or a client that supports the entire HTTPS 1.1 and HTML5 standards. In fact it requires a large team of people to do so. It is, therefore, not surprising that there are very few clients or servers not based on some other client or server.

Because complexity is the enemy of security, this software is also insecure.

Perhaps the worst problem with HTTP 1.1 and HTML5 is the way, by design, that they spy on users of HTTPS 1.1 clients. In Minus, the only information communicated by the client to the server is the specifier that specifies the file to be downloaded. This is very different from HTTPS 1.1. Even worse, HTTPS 1.1 allows the server to download and store information on the client machine that is not explicitly requested by the user.

When I implemented my own Gopher server, I found that even Gopher has complexity I do not need or want. This is why I am doing this.

This document is 1157 words long. The official Gopher specification is 5395 words long. The official HTTP 1.1 specification is 61904 words long.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol

57b731e9@nerdpol.ch

Second Release Version (See the first comment below.)

Minus Protocol Specification

The Name of the Minus Protocol

The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher.

Minus Transactions

Server: listens for TCP connections on port 1990
Client: opens a TCP connection to the server on port 1990
Server: accepts the TCP connection
Client: sends a file specifier that specifies the file to be downloaded
Server: sends the requested file or a UTF-8 text message explaining why the specified file was not sent
Server: closes the TCP connection

The specifier is one line of text which can contain only the characters inside the following quotation marks.

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."

If the specifier is / or zero-length, the specifier will default to index.minus. This is similar to index.html in HTTP.

The error message mentioned above should be UTF-8 text with \n at the end of lines, and not \r\n.

There must be no other communication between the server and client. Notice that no information about the client is sent to the server.

Avoiding Information Exfiltration

Exfiltration of information from the client is prevented by only allowing the transaction above, but indirectly exfiltrating information from the server is still possible.

This could happen if all the files served are kept in one directory, and the specifier is combined with the path name of this one directory to form the path name of the file served. This is obviously insecure, yet many file servers are designed this way. Such servers have to use various strategies to mitigate the insecurity created by this design.

A better design uses an index that contains entries for each file that can be served. Each entry relates a specifier to the path name of the file it specifies. With this design, only files listed in the index can be served, and the specifier need not contain any part of the path name of the file.

Transport Security

Minus is insecure unless TLS is used or the server is run as a Tor Onion Service. Running as a Tor Onion Service is preferred because it makes everything easier. No registration of a domain name is necessary, no TLS certificate is required, and both server and client are easier to implement without TLS.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

Minus URL Format

Here is an example of a Minus URL.

minus://vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion/index.minus

(There is not a server at this domain. This is just an example.)

This has three parts: the protocol (or scheme) minus://, the host (an FQDN or an IP address) vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion, and /index.minus (the specifier sent by the client to the server). See the section above for the complete list of characters allowed in a specifier.

Minus URLs must be the only thing on the line they appear in.

Minus URLs in .minus documents should be selectable links that open the specified document. In a GUI client, these should be clickable.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

The .minus File Type

Files with the .minus filename extension should be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should.

Lines in .minus files should end with \n and not \r\n.

Minus URLs must be the only thing on the line they appear in.

The client should recognize Minus URLs in the text of .minus files and make them easily selectable. Selecting them should download the specified file. If the file downloaded is a .minus file, it should be displayed. If it is a .txt, .text, or .asc file, it should also be displayed, but without necessarily making URLs in the text selectable. All other files should be downloaded and saved to mass storage. The file names of files saved to mass storage will be the part of the specifier after the last /.

Minus does not allow for embedding other files in a .minus file such that they are displayed in the same window as the text. No URLs in the text should ever be automatically downloaded.

Display of Text in .minus Files

How the text of .minus files is displayed should be controlled by the client and its user. However, the text of the .minus file may indicate, with markings, what functions parts of the text play in the document.

For example, the text could indicate what lines of the document are headings and subheadings. This could be done by beginning the line with a # or more than one #, followed by a space. The client and its user could decide how headings should be displayed. Similarly, the ` could indicate the beginning and end of a code snippet, and the client could display these snippets differently from the rest of the text.

It is also acceptable for the client not to display marked text or markings differently from the rest of the text.

Minus Compared to Gopher, Gemini, and HTTP

Gemini is meant to be less complex and easier to implement than HTTP, but more complex than Gopher. Minus, on the other hand, is meant to be less complex and easier to implement than all of these others, including Gopher.

This simplicity is essential if the Internet is to, once again, become human-friendly.

HTTPS 1.1 and HTML5 are so complex that no single person can implement a server or a client that supports the entire HTTPS 1.1 and HTML5 standards. In fact it requires a large team of people to do so. It is, therefore, not surprising that there are very few clients or servers not based on some other client or server.

Because complexity is the enemy of security, this software is also insecure.

Perhaps the worst problem with HTTP 1.1 and HTML5 is the way, by design, that they spy on users of HTTPS 1.1 clients. In Minus, the only information communicated by the client to the server is the specifier that specifies the file to be downloaded. This is very different from HTTPS 1.1. Even worse, HTTPS 1.1 allows the server to download and store information on the client machine that is not explicitly requested by the user.

When I implemented my own Gopher server, I found that even Gopher has complexity I do not need or want. This is why I am doing this.

This document is 1117 words long. The official Gopher specification is 5395 words long. The official HTTP 1.1 specification is 61904 words long.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol

57b731e9@nerdpol.ch

Minus Protocol and EasyGPG 4.55

Work on adding Minus support to EasyGPG is finished. I will wait 24 to 48 hours before I publish EasyGPG 4.55 to be certain that it is ready.

EasyGPG's Read text from the Internet will be the only way to read the EasyGPG Minus server until I (and possibly others) can produce some Minus clients.

Minus is based on Gopher. It is Gopher without the odd type codes and Gopher menus. Gopher menus are not human-readable. A Gopher client is necessary to present these menus in a human-friendly way.

Because Minus is based on Gopher, it is possible to translate Minus URLs into Gopher URLs. While you are waiting on EasyGPG 4.55, you can use EasyGPG 4.54.7 to browse the EasyGPG Minus server.

gopher://7hinc6ucgvwbcjjoe44lhzzxyjptb3da6tzl33oe7ezl2qgwlrkfe6yd.onion:1990/9/

This just replaces minus:// with gopher:// and adds :1990/9 after the TLD of the domain. This is actually the simple way that EasyGPG 4.55 supports Minus.

Of course, you must have Tor to use .onion domains. However, using EasyGPG, it is only necessary to have the Tor Browser running, and curl installed.

In the next few days I want to start development of a very simple Minus client and server that others can use. These will be implemented as BASH scripts. The CLI client will probably not make Minus URLs links, as required by the specification, so it will not yet be a complete client implementation. It will, however, handle Tor in the same user-friendly way that EasyGPG does.

I hope to make the server and client so easy to read and understand that others will produce their own better alternatives. This applies especially to Minus clients.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol #easygpg #gpg #encryption #privacy #surveillance #security #cryptography

57b731e9@nerdpol.ch

First Release Version

Minus Protocol Specification

The Name of the Minus Protocol

The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher.

Minus Transactions

Server: listens for TCP connections on port 1990
Client: opens a TCP connection to the server on port 1990
Server: accepts the TCP connection
Client: sends a file specifier that specifies the file to be downloaded
Server: sends the requested file or a UTF-8 text message explaining why the specified file was not sent
Server: closes the TCP connection

The specifier is one line of text which can contain only the characters inside the following quotation marks.

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."

If the specifier is / or zero-length, the specifier will default to index.minus. This is similar to index.html in HTTP.

The error message mentioned above should be UTF-8 text with \n at the end of lines, and not \r\n.

There must be no other communication between the server and client. Notice that no information about the client is sent to the server.

Avoiding Information Exfiltration

Exfiltration of information from the client is prevented by only allowing the transaction above, but indirectly exfiltrating information from the server is still possible.

This could happen if all the files served are kept in one directory, and the selector is combined with the path name of this one directory to form the path name of the file served. This is obviously insecure, yet many file servers are designed this way. Such servers have to use various strategies to mitigate the insecurity created by this design.

A better design uses an index that contains entries for each file that can be served. Each entry relates a specifier to the path name of the file it specifies. With this design, only files listed in the index can be served, and the specifier need not contain any part of the path name of the file.

Transport Security

Minus is insecure unless TLS is used or the server is run as a Tor Onion Service. Running as a Tor Onion Service is preferred because it makes everything easier. No registration of a domain name is necessary, no TLS certificate is required, and both server and client are easier to implement without TLS.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

Minus URL Format

Here is an example of a Minus URL.

minus://vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion/index.minus

(There is not a server at this domain. This is just an example.)

This has three parts: the protocol (or scheme) minus://, the host (an FQDN or an IP address) vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion, and /index.minus (the specifier sent by the client to the server). See the section above for the complete list of characters allowed in a specifier.

Minus URLs must be the only thing on the line they appear in.

Minus URLs in .minus documents should be selectable links that open the specified document. In a GUI client, these should be clickable.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

The .minus File Type

Files with the .minus filename extension should be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should.

Lines in .minus files should end with \n and not \r\n.

Minus URLs must be the only thing on the line they appear in.

The client should recognize Minus URLs in the text of .minus files and make them easily selectable. Selecting them should download the specified file. If the file downloaded is a .minus file, it should be displayed. If it is a .txt, .text, or .asc file, it should also be displayed, but without necessarily making URLs in the text selectable. All other files should be downloaded and saved to mass storage. The file names of files saved to mass storage will be the part of the specifier after the last /.

Minus does not allow for embedding other files in a .minus file such that they are displayed in the same window as the text. No URLs in the text should ever be automatically downloaded.

Display of Text in .minus Files

How the text of .minus files is displayed should be controlled by the client and its user. However, the text of the .minus file may indicate, with markings, what functions parts of the text play in the document.

For example, the text could indicate what lines of the document are headings and subheadings. This could be done by beginning the line with a # or more than one #, followed by a space. The client and its user could decide how headings should be displayed. Similarly, the ` could indicate the beginning and end of a code snippet, and the client could display these snippets differently from the rest of the text.

It is also acceptable for the client not to display marked text or markings differently from the rest of the text.

Minus Compared to Gopher, Gemini, and HTTP

Gemini is meant to be less complex and easier to implement than HTTP, but more complex than Gopher. Minus, on the other hand, is meant to be less complex and easier to implement than all of these others, including Gopher.

This simplicity is essential if the Internet is to, once again, become human-friendly.

HTTPS 1.1 and HTML5 are so complex that no single person can implement a server or a client that supports the entire HTTPS 1.1 and HTML5 standards. In fact it requires a large team of people to do so. It is, therefore, not surprising that there are very few clients or servers not based on some other client or server.

Because complexity is the enemy of security, this software is also insecure.

Perhaps the worst problem with HTTP 1.1 and HTML5 is the way, by design, that they spy on users of HTTPS 1.1 clients. In Minus, the only information communicated by the client to the server is the specifier that specifies the file to be downloaded. This is very different from HTTPS 1.1. Even worse, HTTPS 1.1 allows the server to download and store information on the client machine that is not explicitly requested by the user.

When I implemented my own Gopher server, I found that even Gopher has complexity I do not need or want. This is why I am doing this.

This document is 1117 words long. The official Gopher specification is 5395 words long. The official HTTP 1.1 specification is 61904 words long.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol

57b731e9@nerdpol.ch

Fifth preliminary draft

Minus Protocol Specification

The Name of the Minus Protocol

The name Minus was inspired by Gopher Plus. Gopher Plus added features to Gopher; Minus subtracts features from Gopher.

Minus Transactions

Server: listens for TCP connections on port 1990
Client: opens a TCP connection to the server on port 1990
Server: accepts the TCP connection
Client: sends a file specifier that specifies the file to be downloaded
Server: sends the requested file or a UTF-8 text message explaining why the specified file was not sent
Server: closes the TCP connection

The specifier is one line of text which can contain only the characters inside the following quotation marks.

"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_/."

If the specifier is / or zero-length, the specifier will default to index.minus. This is similar to index.html in HTTP.

The error message mentioned above should be UTF-8 text with \n at the end of lines, and not \r\n.

There must be no other communication between the server and client. Notice that no information about the client is sent to the server.

Avoiding Information Exfiltration

Exfiltration of information from the client is prevented by only allowing the transaction above, but indirectly exfiltrating information from the server is still possible.

This could happen if all the files served are kept in one directory, and the selector is combined with the path name of this one directory to form the path name of the file served. This is obviously insecure, yet many file servers are designed this way. Such servers have to use various strategies to mitigate the insecurity created by this design.

A better design uses an index that contains entries for each file that can be served. Each entry relates a specifier to the path name of the file it specifies. With this design, only files listed in the index can be served, and the specifier need not contain any part of the path name of the file.

Transport Security

Minus is insecure unless TLS is used or the server is run as a Tor Onion Service. Running as a Tor Onion Service is preferred because it makes everything easier. No registration of a domain name is necessary, no TLS certificate is required, and both server and client are easier to implement without TLS.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

Minus URL Format

Here is an example of a Minus URL.

minus://vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion/index.minus

(There is not a server at this domain. This is just an example.)

This has three parts: the protocol (or scheme) minus://, the host (an FQDN or an IP address) vdvfh9y003nvebcctyc67mnpl1fuvfayoh2qzyo9ksyj3m1so5idkyef.onion, and /index.minus (the specifier sent by the client to the server). See the section above for the complete list of characters allowed in a specifier.

Minus URLs must be the only thing on the line they appear in.

Minus URLs in .minus documents should be selectable links that open the specified document. In a GUI client, these should be clickable.

If TLS is used, the scheme in the URL should be minuss:// instead of minus://.

The .minus File Type

Files with the .minus filename extension should be UTF-8 text files. The server should not limit the line length of lines in these files (as in Gopher). However, the client should.

Lines in .minus files should end with \n and not \r\n.

Minus URLs must be the only thing on the line they appear in.

The client should recognize URLs in the text of .minus files and make them easily selectable. Selecting them should download the specified file. If the file downloaded is a .minus file, it should be displayed. If it is a .txt, .text, or .asc file, it should also be displayed, but without necessarily making URLs in the text selectable. All other files should be downloaded and saved to mass storage. The file names of files saved to mass storage will be the part of the specifier after the last /.

Minus does not allow for embedding other files in a .minus file such that they are displayed in the same window as the text. No URLs in the text should ever be automatically downloaded.

Display of Text in .minus Files

How the text of .minus files is displayed should be controlled by the client and its user. However, the text of the .minus file may indicate, with markings, what functions parts of the text play in the document.

For example, the text could indicate what lines of the document are headings and subheadings. This could be done by beginning the line with a # or more than one #, followed by a space. The client and its user could decide how headings should be displayed. Similarly, the ` could indicate the beginning and end of a code snippet, and the client could display these snippets differently from the rest of the text.

It is also acceptable for the client not to display marked text or markings differently from the rest of the text.

Minus Compared to Gopher, Gemini, and HTTP

Gemini is meant to be less complex and easier to implement than HTTP, but more complex than Gopher. Minus, on the other hand, is meant to be less complex and easier to implement than all of these others, including Gopher.

This simplicity is essential if the Internet is to, once again, become human-friendly.

HTTPS 1.1 and HTML5 are so complex that no single person can implement a server or a client that supports the entire HTTPS 1.1 and HTML5 standards. In fact it requires a large team of people to do so. It is, therefore, not surprising that there are very few clients or servers not based on some other client or server.

Because complexity is the enemy of security, this software is also insecure.

Perhaps the worst problem with HTTP 1.1 and HTML5 is the way, by design, that they spy on users of HTTPS 1.1 clients. In Minus, the only information communicated by the client to the server is the specifier that specifies the file to be downloaded. This is very different from HTTPS 1.1. Even worse, HTTPS 1.1 allows the server to download and store information on the client machine that is not explicitly requested by the user.

When I implemented my own Gopher server, I found that even Gopher has complexity I do not need or want. This is why I am doing this.

This document is 1116 words long. The official Gopher specification is 5395 words long. The official HTTP 1.1 specification is 61904 words long.

#internet #protocol #tcp #file-server #hypertext #http #gemini #gopher #minus #minus-protocol