experiment with TLS
Signed-off-by: Christine Dodrill <me@christine.website>
This commit is contained in:
parent
873fe3f7d9
commit
a2d1b75d66
29
gemini.moon
29
gemini.moon
|
@ -1,5 +1,31 @@
|
||||||
|
context = require "openssl.ssl.context"
|
||||||
cqueues = require "cqueues"
|
cqueues = require "cqueues"
|
||||||
|
pkey = require "openssl.pkey"
|
||||||
url = require "net.url"
|
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
|
class Server
|
||||||
new: (hdlr) =>
|
new: (hdlr) =>
|
||||||
|
@ -30,5 +56,6 @@ class Server
|
||||||
\close!
|
\close!
|
||||||
|
|
||||||
{
|
{
|
||||||
:Server
|
:Server,
|
||||||
|
:make_tls_context
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
cqueues = require "cqueues"
|
cqueues = require "cqueues"
|
||||||
socket = require "cqueues.socket"
|
|
||||||
ln = require "ln"
|
ln = require "ln"
|
||||||
|
socket = require "cqueues.socket"
|
||||||
|
|
||||||
gemini = require "gemini"
|
gemini = require "gemini"
|
||||||
|
|
||||||
|
@ -16,10 +16,10 @@ class FileServer
|
||||||
fname = "./public" .. ctx.path
|
fname = "./public" .. ctx.path
|
||||||
ln.log ctx, :fname
|
ln.log ctx, :fname
|
||||||
fin, err = io.open fname .. "/index.gmi"
|
fin, err = io.open fname .. "/index.gmi"
|
||||||
ln.err err, ctx
|
|
||||||
if err != nil
|
if err != nil
|
||||||
fin, err = io.open fname
|
fin, err = io.open fname
|
||||||
if err != nil
|
if err != nil
|
||||||
|
ln.err err, ctx
|
||||||
conn\write "51 not found: " .. ctx.path .. "\r\n"
|
conn\write "51 not found: " .. ctx.path .. "\r\n"
|
||||||
|
|
||||||
conn\write "20 text/gemini\r\n"
|
conn\write "20 text/gemini\r\n"
|
||||||
|
|
Loading…
Reference in New Issue