Gemini julia server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nixo db423191d9 fixup 2 years ago
src fixup 2 years ago
test tests: add more tests 2 years ago
Manifest.toml Working version with some test 2 years ago
Project.toml Working version with some test 2 years ago fix broken example (missing server mode) 2 years ago

Gemenon.jl – A Gemini Server

What is it

Gemenon.jl is a server for the gemini protocol.

It's written in Julia.

How to use

The usage is quite simple and similar to HTTP.jl

First, import the library

using Gemenon

Then, setup the SSL config

  const verify_callback(preverify_ok, x509_ctx)::Cint = 1

  function init_ssl_context()
      ctx = Gemenon.OpenSSL.SSLContext(mode = Gemenon.OpenSSL.ServerMode)
      Gemenon.OpenSSL.ca_chain!(ctx, "./cert.crt", "./key.key")

      Gemenon.OpenSSL.set_options!(ctx, Gemenon.OpenSSL.SSL_OP_NO_SSLv3)

      accept_all = @cfunction(verify_callback, Cint, (Cint, Ptr{Cvoid}))

      Gemenon.OpenSSL.set_verify_mode(ctx, Gemenon.OpenSSL.VERIFY_PEER, accept_all)

You are ready to listen for connections! You can do this like in Mux.jl

  @app test = (
      req -> document(req.conn, """
  # Welcome to Gemenon!

  You can discuss about this on
  => gemini:// The Gemenon-Powered Anonymous Board

  serve(test, init_ssl_context, Gemenon.Sockets.ip"", 1965)