From a2d1b75d664a6b88e833823dd751d23892b425fa Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Sat, 15 May 2021 09:11:16 -0400 Subject: [PATCH] experiment with TLS Signed-off-by: Christine Dodrill --- gemini.moon | 29 ++++++++++++++++++++++++++++- mipha.moon | 4 ++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/gemini.moon b/gemini.moon index a38748e..021359e 100644 --- a/gemini.moon +++ b/gemini.moon @@ -1,5 +1,31 @@ +context = require "openssl.ssl.context" cqueues = require "cqueues" +pkey = require "openssl.pkey" url = require "net.url" +x509 = require "openssl.x509" + +make_tls_context = (cert, key) -> + fin, err = io.open cert + if err != nil + return nil, err + cert, err = x509.new fin\read "*a" + if err != nil + return nil, err + fin\close! + + fin, err = io.open key + if err != nil + return nil, err + pkey, err = pkey.new fin\read "*a" + if err != nil + return nil, err + fin\close! + + ctx = context.new "TLS", true + ctx\setCertificate cert + ctx\setPrivateKey pkey + + ctx class Server new: (hdlr) => @@ -30,5 +56,6 @@ class Server \close! { - :Server + :Server, + :make_tls_context } diff --git a/mipha.moon b/mipha.moon index 0f6b303..97144cc 100644 --- a/mipha.moon +++ b/mipha.moon @@ -1,6 +1,6 @@ cqueues = require "cqueues" -socket = require "cqueues.socket" ln = require "ln" +socket = require "cqueues.socket" gemini = require "gemini" @@ -16,10 +16,10 @@ class FileServer fname = "./public" .. ctx.path ln.log ctx, :fname fin, err = io.open fname .. "/index.gmi" - ln.err err, ctx if err != nil fin, err = io.open fname if err != nil + ln.err err, ctx conn\write "51 not found: " .. ctx.path .. "\r\n" conn\write "20 text/gemini\r\n"