Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project HTTPQ:// :: Integrating The Citadel Protocol with the web browser #168

Open
tbraun96 opened this issue Apr 15, 2023 · 2 comments
Open
Labels
help wanted Extra attention is needed

Comments

@tbraun96
Copy link
Contributor

tbraun96 commented Apr 15, 2023

Both client and server NetKernel implementations will need consumers of the forwarded data for rendering and processing.

[client-side] We can use TCP/TLS for establishing a connection w/handshake via: https://docs.rs/hyper/latest/hyper/client/conn/index.html.

[server-side] We can use TCP/TLS listeners for starting a server: https://docs.rs/hyper/latest/hyper/server/conn/index.html

TODO: more speccing required

@tbraun96 tbraun96 added the help wanted Extra attention is needed label Apr 15, 2023
@tbraun96
Copy link
Contributor Author

tbraun96 commented Apr 15, 2023

Even simpler: since the traits in the hyper links above expect an AsyncRead and AsyncWrite handle, we can pass the ClientToServerChannel to the builder when creating the HTTP client/server. We don't need to even add a new underlying protocol. That way, HTTP will be over the Citadel Protocol, as desired, giving us HTTPX, similar to how HTTPS is just HTTP over TLS.

@tbraun96
Copy link
Contributor Author

tbraun96 commented May 1, 2023

As of #169 , we have proven HTTP works over The Citadel Protocol.

Next, we will want to create an ExternelServiceCommunicator that allows communication to some TCP/TLS socket. This will allow people to reverse proxy from the public-facing application (0.0.0.0 or ::) to an internal 127.0.0.1 http/s service. This can also allow communication to a remote http server.

Once that is complete, we will need to integrate with an existing open-source browser (e.g., chromium).

When clients type in httpq://website.com, the custom source code will need a custom handler for httpq. The handler would need to map httpq to the default port, and using DNS, map the domain to an address. From there, the typical connection process can be called. We should also keep in mind that different login techniques may be used (e.g., passwordless and credentialed auth). By default, we should assume passwordless mode to make the httpq browsing experience identical to the normal browsing experience. However, if the client wishes to have a credentialed connection, this should be specifiable in some manner. Maybe, httpq://username@website.com. Entering this could trigger a password prompt.

@tbraun96 tbraun96 changed the title Project HTTPX:// :: Integrating The Citadel Protocol with the web browser Project HTTPQ:// :: Integrating The Citadel Protocol with the web browser May 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

1 participant