lynx-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lynx-dev] Gemini Support?


From: Travis Siegel
Subject: Re: [Lynx-dev] Gemini Support?
Date: Tue, 29 Sep 2020 11:11:29 -0400
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.2.2

Doesn't the https protocol already handle client certificates? Or does lynx not verify the certificates?

On 9/29/2020 6:52 AM, Bela Lubkin wrote:
Visiblink wrote:

I browse a number of gopher sites, but a lot of the people who were once
there are now using the gemini protocol (see
https://gemini.circumlunar.space/ for information).

Is there any possibility that gemini support might be added to lynx in
the future? One of the best features of lynx is that it allows users to
access gopher and the web in the same client. It would be great to add
gemini as well.
FWIW, I looked at the various Gemini browser implementations offered.
The one that seemed internally simplest, most likely to be amenable to
bludgeoning into a set of C code to implement the protocol, was the Rust
implementation 'Asuka' (git.sr.ht/~julienxx/asuka).  (Checking out the
very oldest commit in its git history provides a 14-line simple raw
gemini-protocol content grabber...)

Furthermore, it looks like the protocol can be summarized as:

1. parse 'gemini://host.dom/path/to/thing.ext' as:
    - save 'host.dom' as 'host'
    - save entire URL as 'url'
    - invoke 'gemini' procotol handler
2. open TLS(1.2 or higher,pref 1.3+) connection to '$host:1965'
    (providing client certificate if available)
3. send '$url\r\n'  (e.g. 'gemini://host.dom/path/to/thing.ext\r\n')
4. read content
5. close connection
6. first line of $content is status (see spec)
7. for success status, rest of $content is text or binary, per MIME type
    given in $status
8. MIME type 'text/gemini' specs a trivial text formatting language

Full spec is at https://gemini.circumlunar.space/docs/specification.html

Aside from wire protocol handling, Lynx would need to know how to manage
a client certificate, and be able to display text/gemini.  That could be
done with standard mime.types & mailcap, with an external text/gemini
decoding program, if one exists.  But text/gemini is trivial and can
probably be implemented with a few lines of regexp substitutions to
mangle text/gemini to (very simple) text/html.  Possibly the trickiest
bit would be preventing apparent HTML tags & entities in the text/gemini
source from being parsed as HTML tags & entities...

Bela<
_______________________________________________
Lynx-dev mailing list
Lynx-dev@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lynx-dev



reply via email to

[Prev in Thread] Current Thread [Next in Thread]