Skip to content

Implement secure gopher protocol.#6208

Closed
parazyd wants to merge 3 commits into
curl:masterfrom
parazyd:secure-gopher
Closed

Implement secure gopher protocol.#6208
parazyd wants to merge 3 commits into
curl:masterfrom
parazyd:secure-gopher

Conversation

@parazyd

@parazyd parazyd commented Nov 15, 2020

Copy link
Copy Markdown
Contributor

This commit introduces a "gophers" handler inside the gopher protocol if
USE_SSL is defined. This protocol is no different than the usual gopher
prococol, with the added TLS encapsulation upon connecting. The protocol
has been adopted in the gopher community, and many people have enabled
TLS in their gopher daemons like geomyidae(8), and clients, like clic(1)
and hurl(1).

I have not implemented test units for this protocol because my knowledge
of Perl is sub-par. However, for someone more knowledgeable it might be
fairly trivial, because the same test that tests the plain gopher
protocol can be used for "gophers" just by adding a TLS listener.

Signed-off-by: parazyd parazyd@dyne.org

@parazyd

parazyd commented Nov 15, 2020

Copy link
Copy Markdown
Contributor Author

As for manual testing, it can be tested with servers that support TLS:

curl gophers://parazyd.org

@cvengler

Copy link
Copy Markdown
Contributor

Sorry, I disagree. So far there is no specification for it.
In March this year I brought up a discussion at the Gopher-ML about a specification (https://lists.debian.org/gopher-project/2020/03/msg00005.html)
As long as there isn't anything to agree on this shouldn't be merged in my opinion.

@cvengler

Copy link
Copy Markdown
Contributor

Ping @sebdeckers, maybe interesting for you?

Comment thread lib/gopher.c Outdated
@sebdeckers

Copy link
Copy Markdown

TIMTOWTDI 🤷🏼‍♂️ Been a few months since I looked into that discussion. Has anyone begun the IETF legwork to discuss/propose a Gopher with TLS spec? I've seen a bunch of approaches with pros/cons.

@cvengler

Copy link
Copy Markdown
Contributor

I would prefer to not do the discussion here, but as far as I know there hasn't been any progress made mostly due to backwards compatibility issues

@parazyd

parazyd commented Nov 15, 2020

Copy link
Copy Markdown
Contributor Author

I would prefer to not do the discussion here, but as far as I know there hasn't been any progress made mostly due to backwards compatibility issues

There are no compatibility issues with my patch and proposal. Daemons like geomyidae already implement this specific proposal.

This commit introduces a "gophers" handler inside the gopher protocol if
USE_SSL is defined. This protocol is no different than the usual gopher
prococol, with the added TLS encapsulation upon connecting. The protocol
has been adopted in the gopher community, and many people have enabled
TLS in their gopher daemons like geomyidae(8), and clients, like clic(1)
and hurl(1).

I have not implemented test units for this protocol because my knowledge
of Perl is sub-par. However, for someone more knowledgeable it might be
fairly trivial, because the same test that tests the plain gopher
protocol can be used for "gophers" just by adding a TLS listener.

Signed-off-by: parazyd <parazyd@dyne.org>
@bagder

bagder commented Nov 15, 2020

Copy link
Copy Markdown
Member

Sorry, I disagree. So far there is no specification for it.
In March this year I brought up a discussion at the Gopher-ML about a specification (https://lists.debian.org/gopher-project/2020/03/msg00005.html)
As long as there isn't anything to agree on this shouldn't be merged in my opinion.

I disagree. For me, even without a URL spec - if there is an adopted URL syntax already with both consumers and providers, that fact puts the code and suggestion in different angle.

@parazyd do you perhaps even already have this TLS version of the URI format documented somewhere for reference?

@parazyd

parazyd commented Nov 15, 2020

Copy link
Copy Markdown
Contributor Author

@bagder bagder added the feature-window A merge of this requires an open feature window label Nov 16, 2020
@bagder

bagder commented Nov 16, 2020

Copy link
Copy Markdown
Member

I volunteer to extend the test suite for gophers.

@parazyd

parazyd commented Nov 16, 2020

Copy link
Copy Markdown
Contributor Author

@bagder If it makes sense, could you push to this branch and then we can make it a more complete merge request?

@bagder

bagder commented Nov 16, 2020

Copy link
Copy Markdown
Member

Yes, once I have something to show!

@bagder

bagder commented Nov 16, 2020

Copy link
Copy Markdown
Member

One commit that adds support for 'gophers' to the test suite. The second one provides an initial test case: that's test 1200 just updated to do gophers instead.

@bagder

bagder commented Nov 28, 2020

Copy link
Copy Markdown
Member

related: you should consider registering the gophers URI scheme at https://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml

@bagder

bagder commented Dec 14, 2020

Copy link
Copy Markdown
Member

coming back to this: now we have a docs/URL-SYNTAX.md document that should be extended to also mention this scheme.

Anything else that needs to be done before we merge?

@parazyd

parazyd commented Dec 14, 2020

Copy link
Copy Markdown
Contributor Author

I think we're all set if that is added :)

@bagder bagder removed the feature-window A merge of this requires an open feature window label Dec 15, 2020
@bagder

bagder commented Dec 15, 2020

Copy link
Copy Markdown
Member

Thanks!

@bagder bagder closed this in a1f06f3 Dec 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Development

Successfully merging this pull request may close these issues.

5 participants