From a16fc0333745aa7d608a93a3db0f4d4fe5debff1 Mon Sep 17 00:00:00 2001 From: cage Date: Sat, 10 Feb 2024 14:36:01 +0100 Subject: [PATCH] - added a dummy gemini server for debugging purposes. --- src/command-line.lisp | 10 ++++++++-- src/gemini/package.lisp | 11 +++++++++++ src/gui/server/public-api-gemini-stream.lisp | 3 +-- src/main.lisp | 2 ++ src/package.lisp | 1 + src/x509.lisp | 10 ++++++---- tinmop.asd | 1 + 7 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/command-line.lisp b/src/command-line.lisp index 24fc978..da17cc2 100644 --- a/src/command-line.lisp +++ b/src/command-line.lisp @@ -92,7 +92,10 @@ (:name :print-lisp-dependencies :description (_ "Download lisp libraries (useful for packaging only).") :short #\X - :long "lisp-dependencies-uris"))) + :long "lisp-dependencies-uris") + (:name :start-dummy-server + :description (_ "Start a dummy sever, just useful for debugging.") + :long "start-dummy-server"))) (defparameter *start-folder* nil) @@ -122,6 +125,8 @@ (defparameter *rpc-client-mode* nil) +(defparameter *start-dummy-server* nil) + (defun exit-on-error (e) (format *error-output* "~a~%" e) (os-utils:exit-program 1)) @@ -158,4 +163,5 @@ (set-option-variable options :check-follows-requests *check-follow-requests*) (set-option-variable options :gemini-full-screen-mode *gemini-full-screen-mode*) (set-option-variable options :notify-mentions *notify-mentions*) - (set-option-variable options :print-lisp-dependencies *print-lisp-dependencies*)))) + (set-option-variable options :print-lisp-dependencies *print-lisp-dependencies*) + (set-option-variable options :start-dummy-server *start-dummy-server*)))) diff --git a/src/gemini/package.lisp b/src/gemini/package.lisp index 1607e10..58959d2 100644 --- a/src/gemini/package.lisp +++ b/src/gemini/package.lisp @@ -201,6 +201,17 @@ :build-redirect-iri :slurp-gemini-url)) +(defpackage :gemini-dummy-server + (:use + :cl + :text-utils + :misc + :gemini-constants + :gemini-client) + (:local-nicknames (:a :alexandria)) + (:export + :start)) + (defpackage :gemini-subscription (:use :cl diff --git a/src/gui/server/public-api-gemini-stream.lisp b/src/gui/server/public-api-gemini-stream.lisp index c786015..20c7ec0 100644 --- a/src/gui/server/public-api-gemini-stream.lisp +++ b/src/gui/server/public-api-gemini-stream.lisp @@ -251,8 +251,7 @@ actual-iri :cached t)) (progn - (debug-gemini-gui "caching *not* found for ~a" - actual-iri) + (debug-gemini-gui "caching *not* found for ~a" actual-iri) (%gemini-request actual-iri :certificate-key certificate-key :certificate certificate diff --git a/src/main.lisp b/src/main.lisp index 925fd6f..c91cbf1 100644 --- a/src/main.lisp +++ b/src/main.lisp @@ -260,6 +260,8 @@ etc.) happened" (res:init) (command-line:manage-opts) (cond + (command-line:*start-dummy-server* + (gemini-dummy-server:start)) (command-line:*rpc-server-mode* (db-utils:with-ready-database (:connect nil) (rpc-server-init))) diff --git a/src/package.lisp b/src/package.lisp index 8fe8301..53702c9 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -1561,6 +1561,7 @@ :*update-timeline-climb-message-tree* :*gemini-full-screen-mode* :*print-lisp-dependencies* + :*start-dummy-server* :*rpc-server-mode* :*rpc-client-mode* :manage-opts)) diff --git a/src/x509.lisp b/src/x509.lisp index c02faa5..6b29192 100644 --- a/src/x509.lisp +++ b/src/x509.lisp @@ -58,9 +58,11 @@ (cl+ssl:x509-free ,cert)))) (defmethod certificate-fingerprint ((object cl+ssl::ssl-stream) &key (hash-algorithm :sha256)) - (let* ((cert (cl+ssl:ssl-stream-x509-certificate object))) - (decode-fingerprint cert hash-algorithm))) + (let ((cert (cl+ssl:ssl-stream-x509-certificate object))) + (when (not (cffi:null-pointer-p cert)) + (decode-fingerprint cert hash-algorithm)))) (defmethod certificate-fingerprint ((object string) &key (hash-algorithm :sha256)) - (let* ((cert (cl+ssl:decode-certificate-from-file (pem->der object) :format :der))) - (decode-fingerprint cert hash-algorithm))) + (let ((cert (cl+ssl:decode-certificate-from-file (pem->der object) :format :der))) + (when (not (cffi:null-pointer-p cert)) + (decode-fingerprint cert hash-algorithm)))) diff --git a/tinmop.asd b/tinmop.asd index 7f7bfa3..315cd0c 100644 --- a/tinmop.asd +++ b/tinmop.asd @@ -99,6 +99,7 @@ (:file "gemini-constants") (:file "gemini-parser") (:file "client") + (:file "dummy-server") (:file "titan") (:file "subscription"))) (:module kami