readme.org: init
This commit is contained in:
parent
0bbd8b261b
commit
0f587b3464
|
@ -0,0 +1,49 @@
|
|||
#+title: Gemenon.jl -- A Gemini Server
|
||||
|
||||
* What is it
|
||||
|
||||
Gemenon.jl is a server for the [[https://gemini.circumlunar.space/][gemini]] protocol.
|
||||
|
||||
It's written in [[https://julialang.org/][Julia]].
|
||||
|
||||
* How to use
|
||||
|
||||
The usage is quite simple and similar to [[https://github.com/JuliaWeb/HTTP.jl][HTTP.jl]]
|
||||
|
||||
First, import the library
|
||||
#+begin_src julia
|
||||
using Gemenon
|
||||
#+end_src
|
||||
|
||||
Then, setup the SSL config
|
||||
#+begin_src julia
|
||||
ctx = Gemenon.OpenSSL.SSLContext()
|
||||
Gemenon.OpenSSL.ca_chain!(ctx, "./cert.crt", "./key.key")
|
||||
|
||||
Gemenon.OpenSSL.set_options!(ctx, Gemenon.OpenSSL.SSL_OP_NO_SSLv3)
|
||||
|
||||
verify_callback(preverify_ok, x509_ctx)::Cint = 1
|
||||
|
||||
const accept_all = @cfunction(verify_callback, Cint, (Cint, Ptr{Cvoid}))
|
||||
|
||||
Gemenon.OpenSSL.set_verify_mode(ctx, Gemenon.OpenSSL.VERIFY_PEER, accept_all)
|
||||
#+end_src
|
||||
|
||||
You are ready to listen for connections! You can do this with a do block
|
||||
|
||||
#+begin_src julia
|
||||
Gemenon.listen(ctx, verbose = true) do conn::Connection, request::Request
|
||||
cert = Gemenon.OpenSSL.get_peer_certificate(conn.client)
|
||||
if cert != C_NULL
|
||||
@info "This client is providing a certificate"
|
||||
end
|
||||
write(conn,
|
||||
Response(Status("20", "text/gemini"),
|
||||
"""
|
||||
# Welcome to Gemenon!
|
||||
|
||||
You can discuss about this on
|
||||
=> gemini://nixo.xyz/b/gemenon The Gemenon-Powered Board
|
||||
"""))
|
||||
end
|
||||
#+end_src
|
Loading…
Reference in New Issue