mirror of
https://github.com/penpot/penpot.git
synced 2025-05-20 04:36:16 +02:00
✨ Move dbg error http entrypoint handler to debug ns.
This commit is contained in:
parent
758ffbf217
commit
bf66b81702
6 changed files with 39 additions and 50 deletions
|
@ -92,15 +92,13 @@
|
||||||
(s/def ::assets map?)
|
(s/def ::assets map?)
|
||||||
(s/def ::feedback fn?)
|
(s/def ::feedback fn?)
|
||||||
(s/def ::ws fn?)
|
(s/def ::ws fn?)
|
||||||
(s/def ::error-report-handler fn?)
|
|
||||||
(s/def ::audit-http-handler fn?)
|
(s/def ::audit-http-handler fn?)
|
||||||
(s/def ::debug map?)
|
(s/def ::debug map?)
|
||||||
|
|
||||||
(defmethod ig/pre-init-spec ::router [_]
|
(defmethod ig/pre-init-spec ::router [_]
|
||||||
(s/keys :req-un [::rpc ::session ::mtx/metrics ::ws
|
(s/keys :req-un [::rpc ::session ::mtx/metrics ::ws
|
||||||
::oauth ::storage ::assets ::feedback
|
::oauth ::storage ::assets ::feedback
|
||||||
::error-report-handler ::debug
|
::debug ::audit-http-handler]))
|
||||||
::audit-http-handler]))
|
|
||||||
|
|
||||||
(defmethod ig/init-key ::router
|
(defmethod ig/init-key ::router
|
||||||
[_ {:keys [ws session rpc oauth metrics assets feedback debug] :as cfg}]
|
[_ {:keys [ws session rpc oauth metrics assets feedback debug] :as cfg}]
|
||||||
|
@ -120,7 +118,8 @@
|
||||||
[middleware/errors errors/handle]
|
[middleware/errors errors/handle]
|
||||||
[middleware/cookies]
|
[middleware/cookies]
|
||||||
[(:middleware session)]]}
|
[(:middleware session)]]}
|
||||||
["/error-by-id/:id" {:get (:error-report-handler cfg)}]
|
["/error-by-id/:id" {:get (:retrieve-error debug)}]
|
||||||
|
["/error/:id" {:get (:retrieve-error debug)}]
|
||||||
["/file/data/:id" {:get (:retrieve-file-data debug)}]
|
["/file/data/:id" {:get (:retrieve-file-data debug)}]
|
||||||
["/file/changes/:id" {:get (:retrieve-file-changes debug)}]]
|
["/file/changes/:id" {:get (:retrieve-file-changes debug)}]]
|
||||||
|
|
||||||
|
|
|
@ -100,7 +100,41 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn retrieve-error
|
||||||
|
[{:keys [pool]} request]
|
||||||
|
(letfn [(parse-id [request]
|
||||||
|
(let [id (get-in request [:path-params :id])
|
||||||
|
id (us/uuid-conformer id)]
|
||||||
|
(when (uuid? id)
|
||||||
|
id)))
|
||||||
|
(retrieve-report [id]
|
||||||
|
(ex/ignoring
|
||||||
|
(when-let [{:keys [content] :as row} (db/get-by-id pool :server-error-report id)]
|
||||||
|
(assoc row :content (db/decode-transit-pgobject content)))))
|
||||||
|
|
||||||
|
(render-template [{:keys [content] :as report}]
|
||||||
|
(some-> (io/resource "error-report.tmpl")
|
||||||
|
(tmpl/render content)))]
|
||||||
|
|
||||||
|
(when-not (authorized? pool request)
|
||||||
|
(ex/raise :type :authentication
|
||||||
|
:code :only-admins-allowed))
|
||||||
|
|
||||||
|
(let [result (some-> (parse-id request)
|
||||||
|
(retrieve-report)
|
||||||
|
(render-template))]
|
||||||
|
(if result
|
||||||
|
{:status 200
|
||||||
|
:headers {"content-type" "text/html; charset=utf-8"
|
||||||
|
"x-robots-tag" "noindex"}
|
||||||
|
:body result}
|
||||||
|
{:status 404
|
||||||
|
:body "not found"}))))
|
||||||
|
|
||||||
|
;; TODO: error list table
|
||||||
|
|
||||||
(defmethod ig/init-key ::handlers
|
(defmethod ig/init-key ::handlers
|
||||||
[_ {:keys [pool] :as cfg}]
|
[_ {:keys [pool] :as cfg}]
|
||||||
{:retrieve-file-data (partial retrieve-file-data cfg)
|
{:retrieve-file-data (partial retrieve-file-data cfg)
|
||||||
:retrieve-file-changes (partial retrieve-file-changes cfg)})
|
:retrieve-file-changes (partial retrieve-file-changes cfg)
|
||||||
|
:retrieve-error (partial retrieve-error cfg)})
|
||||||
|
|
|
@ -14,10 +14,8 @@
|
||||||
[app.config :as cf]
|
[app.config :as cf]
|
||||||
[app.db :as db]
|
[app.db :as db]
|
||||||
[app.util.async :as aa]
|
[app.util.async :as aa]
|
||||||
[app.util.template :as tmpl]
|
|
||||||
[app.worker :as wrk]
|
[app.worker :as wrk]
|
||||||
[clojure.core.async :as a]
|
[clojure.core.async :as a]
|
||||||
[clojure.java.io :as io]
|
|
||||||
[clojure.spec.alpha :as s]
|
[clojure.spec.alpha :as s]
|
||||||
[cuerdas.core :as str]
|
[cuerdas.core :as str]
|
||||||
[integrant.core :as ig]))
|
[integrant.core :as ig]))
|
||||||
|
@ -92,39 +90,3 @@
|
||||||
(defmethod ig/halt-key! ::reporter
|
(defmethod ig/halt-key! ::reporter
|
||||||
[_ output]
|
[_ output]
|
||||||
(a/close! output))
|
(a/close! output))
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; Http Handler
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
(defmethod ig/pre-init-spec ::handler [_]
|
|
||||||
(s/keys :req-un [::db/pool]))
|
|
||||||
|
|
||||||
(defmethod ig/init-key ::handler
|
|
||||||
[_ {:keys [pool] :as cfg}]
|
|
||||||
(letfn [(parse-id [request]
|
|
||||||
(let [id (get-in request [:path-params :id])
|
|
||||||
id (us/uuid-conformer id)]
|
|
||||||
(when (uuid? id)
|
|
||||||
id)))
|
|
||||||
(retrieve-report [id]
|
|
||||||
(ex/ignoring
|
|
||||||
(when-let [{:keys [content] :as row} (db/get-by-id pool :server-error-report id)]
|
|
||||||
(assoc row :content (db/decode-transit-pgobject content)))))
|
|
||||||
|
|
||||||
(render-template [{:keys [content] :as report}]
|
|
||||||
(some-> (io/resource "error-report.tmpl")
|
|
||||||
(tmpl/render content)))]
|
|
||||||
|
|
||||||
|
|
||||||
(fn [request]
|
|
||||||
(let [result (some-> (parse-id request)
|
|
||||||
(retrieve-report)
|
|
||||||
(render-template))]
|
|
||||||
(if result
|
|
||||||
{:status 200
|
|
||||||
:headers {"content-type" "text/html; charset=utf-8"
|
|
||||||
"x-robots-tag" "noindex"}
|
|
||||||
:body result}
|
|
||||||
{:status 404
|
|
||||||
:body "not found"})))))
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
[cfg {:keys [host id public-uri] :as event}]
|
[cfg {:keys [host id public-uri] :as event}]
|
||||||
(try
|
(try
|
||||||
(let [uri (:uri cfg)
|
(let [uri (:uri cfg)
|
||||||
text (str "Exception on (host: " host ", url: " public-uri "/dbg/error-by-id/" id ")\n"
|
text (str "Exception on (host: " host ", url: " public-uri "/dbg/error/" id ")\n"
|
||||||
(when-let [pid (:profile-id event)]
|
(when-let [pid (:profile-id event)]
|
||||||
(str "- profile-id: #uuid-" pid "\n")))
|
(str "- profile-id: #uuid-" pid "\n")))
|
||||||
rsp (http/send! {:uri uri
|
rsp (http/send! {:uri uri
|
||||||
|
|
|
@ -90,7 +90,6 @@
|
||||||
:storage (ig/ref :app.storage/storage)
|
:storage (ig/ref :app.storage/storage)
|
||||||
:tokens (ig/ref :app.tokens/tokens)
|
:tokens (ig/ref :app.tokens/tokens)
|
||||||
:audit-http-handler (ig/ref :app.loggers.audit/http-handler)
|
:audit-http-handler (ig/ref :app.loggers.audit/http-handler)
|
||||||
:error-report-handler (ig/ref :app.loggers.database/handler)
|
|
||||||
:rpc (ig/ref :app.rpc/rpc)}
|
:rpc (ig/ref :app.rpc/rpc)}
|
||||||
|
|
||||||
:app.http.debug/handlers
|
:app.http.debug/handlers
|
||||||
|
@ -292,9 +291,6 @@
|
||||||
:pool (ig/ref :app.db/pool)
|
:pool (ig/ref :app.db/pool)
|
||||||
:executor (ig/ref :app.worker/executor)}
|
:executor (ig/ref :app.worker/executor)}
|
||||||
|
|
||||||
:app.loggers.database/handler
|
|
||||||
{:pool (ig/ref :app.db/pool)}
|
|
||||||
|
|
||||||
:app.loggers.sentry/reporter
|
:app.loggers.sentry/reporter
|
||||||
{:dsn (cf/get :sentry-dsn)
|
{:dsn (cf/get :sentry-dsn)
|
||||||
:trace-sample-rate (cf/get :sentry-trace-sample-rate 1.0)
|
:trace-sample-rate (cf/get :sentry-trace-sample-rate 1.0)
|
||||||
|
|
|
@ -281,8 +281,6 @@
|
||||||
(defn- take-snapshot?
|
(defn- take-snapshot?
|
||||||
"Defines the rule when file `data` snapshot should be saved."
|
"Defines the rule when file `data` snapshot should be saved."
|
||||||
[{:keys [revn modified-at] :as file}]
|
[{:keys [revn modified-at] :as file}]
|
||||||
;; The snapshot will be saved every 20 changes or if the last
|
|
||||||
;; modification is older than 3 hour.
|
|
||||||
(let [freq (or (cf/get :file-change-snapshot-every) 20)
|
(let [freq (or (cf/get :file-change-snapshot-every) 20)
|
||||||
timeout (or (cf/get :file-change-snapshot-timeout)
|
timeout (or (cf/get :file-change-snapshot-timeout)
|
||||||
(dt/duration {:hours 1}))]
|
(dt/duration {:hours 1}))]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue