Skip to content

Commit

Permalink
cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
awb99 committed Jan 8, 2025
1 parent 6d9a213 commit 6a99771
Show file tree
Hide file tree
Showing 6 changed files with 47 additions and 85 deletions.
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@
/classes/
/target/
/checkouts/
.lein-deps-sum
.lein-repl-history
.lein-plugins/
.lein-failures
.nrepl-port
.cpcache/
/test/creds.edn
Expand Down
40 changes: 5 additions & 35 deletions demo/deps.edn
Original file line number Diff line number Diff line change
@@ -1,43 +1,13 @@
{:paths ["src" "resources"]
:deps {org.clojure/clojure {:mvn/version "1.11.1"}
; ring middleware
ring/ring-core {:mvn/version "1.13.0"} ; https://github.com/ring-clojure/ring
metosin/muuntaja {:mvn/version "0.6.10"} ; 30x faster than ring-middleware-format
ring-cors/ring-cors {:mvn/version "0.1.13"}
bk/ring-gzip {:mvn/version "0.3.0"} ; from oz
ring/ring-devel {:mvn/version "1.13.0"} ; reload middleware - same version as rig/core
bidi/bidi {:mvn/version "2.1.6"}
ring/ring-defaults {:mvn/version "0.5.0"
:exclusions [javax.servlet/servlet-api]}
prone/prone {:mvn/version "2021-04-23"} ; exception middleware
ring/ring-json {:mvn/version "0.5.1"}
; https
;org.shredzone.acme4j/acme4j-client {:mvn/version "2.7"}
;org.shredzone.acme4j/acme4j-utils {:mvn/version "2.7"}
;org.bouncycastle/bcprov-jdk15on {:mvn/version "1.69"}
;org.bouncycastle/bcpkix-fips {:mvn/version "1.0.3"}
;simplevalue/letsencrypt {:git/url "https://github.com/SimpleValue/sv.letsencrypt.git"
; :sha "8b1a85846acaaa37a58b054f2372d8fde0663b75"}
; webserver
;info.sunng/ring-jetty9-adapter {:mvn/version "0.15.2"} ; uses jetty 10.0.2,
;info.sunng/ring-jetty9-adapter {:mvn/version "0.36.0"} ; jetty 12, but could not get it to work with sente.
ring/ring-jetty-adapter {:mvn/version "1.13.0"} ; jetty 11

hiccup/hiccup {:mvn/version "1.0.5"} ; server side templating
; modular
org.pinkgorilla/webserver {:local/root ".." :deps/manifest :deps}

}

org.pinkgorilla/webserver {:local/root ".." :deps/manifest :deps}}

:aliases
{

:redirect {:exec-fn demo.core/start}

{:proxy {:exec-fn modular.webserver.https.proxy/start-proxy
:exec-args {:letsencrypt {:domain "test.crbclean.com"
:email "webadmin@crbclean.com"}
:https {}}}

:renew {:exec-fn demo.core/renew}
:convert {:exec-fn demo.core/convert}

:webserver {:exec-fn demo.https/run-webserver}

Expand Down
26 changes: 0 additions & 26 deletions demo/src/demo/core.clj

This file was deleted.

3 changes: 3 additions & 0 deletions script/trigger-get.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

curl http://localhost/.well-known/trigger/certificate-get
3 changes: 3 additions & 0 deletions script/trigger-import.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/sh

curl http://localhost/.well-known/trigger/certificate-import
56 changes: 36 additions & 20 deletions src/modular/webserver/https/proxy.clj
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
[taoensso.timbre :as timbre :refer [info error]]
[ring.util.response :as response]
[reitit.ring :as ring]
[modular.webserver.server.jetty :refer [run-jetty-server]]))
[ring.adapter.jetty :refer [run-jetty]]
[modular.webserver.https.letsencrypt :refer [renew-cert convert-cert]]
))

(defn redirect-handler [{:keys [port]
:or {port 8080}}]
(defn redirect-handler [port]
(fn [{:keys [uri server-name scheme query-string] :as req}]
(info"redirecting request: " uri)
(let [redirect-url (str scheme "://" server-name ":" port uri (when query-string (str "?" query-string)))]
Expand All @@ -21,23 +22,38 @@
(info "letsencrypt challenge on uri: " uri)
(rh req))))
(defn handler [letsencrypt-dir]
(ring/ring-handler
(ring/router
[["/ping" (fn [req] (info "ping!") {:status 200, :body "pong"})]
["/.well-known/acme-challenge/*" (static-file-handler letsencrypt-dir)]
["*" (redirect-handler 443)]]
{:conflicts (constantly nil)})
(ring/create-default-handler)))
(defn certificate-get-handler [{:keys [letsencrypt https] :as config}]
(fn [_req]
(info "certificate-get started..")
(renew-cert letsencrypt)
(response/response {:body "certificate-get started!"})))
(defn start-redirect
"http server on port 80 that redirects all traffic to 443, except
/ping which will show pong (useful for debugging) and
/.well-known/acme-challenge (which is serves static files for certbot)"
[{:keys [path]
:or {path ".letsencrypt"}}]
(let [dir (str path "/public")]
(info "redirecting http(80) -> https (443), letsencrypt public: " dir)
(run-jetty-server (handler dir) {:port 80})))
(defn certificate-import-handler [{:keys [letsencrypt https] :as config}]
(fn [_req]
(info "certificate-convert started..")
(convert-cert letsencrypt https)
(response/response {:body "certificate-import started!"})))
(defn start-proxy
"http server on port 80 that redirects all traffic to 443, except
/.well-known/acme-challenge (which is serves static files for certbot) and
/.well-known/ping which will show pong (useful for debugging)"
[{:keys [letsencrypt https]
:as config}]
(let [{:keys [path]
:or {path ".letsencrypt"}} letsencrypt
public-dir (str path "/public")
handler (ring/ring-handler
(ring/router
[["/.well-known/ping" (fn [req] (info "ping!") {:status 200, :body "pong"})]
["/.well-known/acme-challenge/*" (static-file-handler public-dir)]
["/.well-known/trigger/certificate-get" (certificate-get-handler config)]
["/.well-known/trigger/certificate-import" (certificate-import-handler config)]
["*" (redirect-handler 443)]]
{:conflicts (constantly nil)})
(ring/create-default-handler))]
(info "redirecting http(80) -> https (443), letsencrypt public: " public-dir)
(run-jetty handler {:port 80})))

0 comments on commit 6a99771

Please sign in to comment.