psi-prod / mehari Goto Github PK
View Code? Open in Web Editor NEWA cross-platform library for building Gemini servers
Home Page: https://docs.heyplzlookat.me/mehari/
License: GNU Lesser General Public License v3.0
A cross-platform library for building Gemini servers
Home Page: https://docs.heyplzlookat.me/mehari/
License: GNU Lesser General Public License v3.0
Replace mirage-clock-unix
by mirage-clock-eio
when it becomes available.
Inspired by https://aantron.github.io/dream/#logging.
gemini
Currently, server only respond to request containing one of its own hostnames. So proxying is not allowed.
According to specification:
In particular, the authority component is allowed and required, but its userinfo subcomponent is NOT allowed. The host subcomponent is required. The port subcomponent is optional, with a default value of 1965. The path, query and fragment components are allowed and have no special meanings beyond those defined by the generic syntax. An empty path is equivalent to a path consisting only of "/". Spaces in paths should be encoded as %20, not as +.
is a UTF-8 encoded absolute URL, including a scheme, of maximum length 1024 bytes. The request MUST NOT begin with a U+FEFF byte order mark.
Remove zed as dependence and use a less hacky solution.
Add support for .gmi file mime inference in Mehari.from_filename
.
This exception is introduced in eio 0.7 which is not yet available on opam.
Mehari/mehari-eio/server_impl.ml
Line 105 in a7ac1da
Performance of Mehari.Gemtext.of_string
can be improved. Currently, the parser uses regex which is not very efficient.
Replace it by Seq for crossplatform
To prevent Mirage OS runtime compatibility in the future.
[...]
TLSv1 Client Hello
TCP 1965 → 53946 [ACK] Seq=1 Ack=518 Win=407744 Len=0 TSval=777244924 TSecr=3541461376
// no server hello!!!!
TCP 1965 → 53946 [FIN, ACK] Seq=1 Ack=518 Win=407744 Len=0 TSval=777244925 TSecr=3541461376
TCP 53946 → 1965 [ACK] Seq=518 Ack=2 Win=408256 Len=0 TSval=3541461377 TSecr=777244925
TCP 53946 → 1965 [FIN, ACK] Seq=518 Ack=2 Win=408256 Len=0 TSval=3541461377 TSecr=777244925
TCP 1965 → 53946 [ACK] Seq=2 Ack=519 Win=407744 Len=0 TSval=777244925 TSecr=3541461377
Gemtext.quote "text1\ntext2\ntext3" |> Gemtext.to_string
returns
>text1
text2
text3
flush
labeled is simply ignored by function which writes on socket.
Maybe redesign delayed stream body, inspired by https://aantron.github.io/dream/#type-stream.
As a shortcut for Mehari.uri req |> Uri.path
.
Mehari_*.load_cert
)Waiting for ocaml-multicore/eio#330
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.