Skip to content
Snippets Groups Projects
Unverified Commit db0793ae authored by Cam Saul's avatar Cam Saul Committed by GitHub
Browse files

Move webserver-related namespaces -> metabase.server.* (#14279)

parent 1f6d5fa3
No related branches found
No related tags found
No related merge requests found
Showing
with 48 additions and 98 deletions
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
(p/def-map-type '(2 nil nil (:defn))) (p/def-map-type '(2 nil nil (:defn)))
(p.types/defrecord+ '(2 nil nil (:defn))) (p.types/defrecord+ '(2 nil nil (:defn)))
(tools.macro/macrolet '(1 (:defn)))))) (tools.macro/macrolet '(1 (:defn))))))
;; if you're using clj-refactor (highly recommended!), prefer prefix notation when cleaning the ns form ;; if you're using clj-refactor (highly recommended!)
(cljr-favor-prefix-notation . nil) (cljr-favor-prefix-notation . nil)
;; prefer keeping source width about ~118, GitHub seems to cut off stuff at either 119 or 120 and ;; prefer keeping source width about ~118, GitHub seems to cut off stuff at either 119 or 120 and
;; it's nicer to look at code in GH when you don't have to scroll back and forth ;; it's nicer to look at code in GH when you don't have to scroll back and forth
......
...@@ -4,13 +4,14 @@ ...@@ -4,13 +4,14 @@
[honeysql.core :as hsql] [honeysql.core :as hsql]
[metabase.api.common :as api-common] [metabase.api.common :as api-common]
[metabase.core :as mbc] [metabase.core :as mbc]
[metabase.core.initialization-status :as init-status]
[metabase.db :as mdb] [metabase.db :as mdb]
[metabase.driver :as driver] [metabase.driver :as driver]
[metabase.driver.sql-jdbc.execute :as sql-jdbc.execute] [metabase.driver.sql-jdbc.execute :as sql-jdbc.execute]
[metabase.handler :as handler] [metabase.plugins :as plugins]
[metabase.plugins :as pluguns]
[metabase.query-processor.timezone :as qp.timezone] [metabase.query-processor.timezone :as qp.timezone]
[metabase.server :as server] [metabase.server :as server]
[metabase.server.handler :as handler]
[metabase.test :as mt] [metabase.test :as mt]
[metabase.test.data.impl :as data.impl] [metabase.test.data.impl :as data.impl]
[metabase.util :as u])) [metabase.util :as u]))
...@@ -27,10 +28,10 @@ ...@@ -27,10 +28,10 @@
[] []
(when-not @initialized? (when-not @initialized?
(init!)) (init!))
(metabase.server/start-web-server! #'metabase.handler/app) (server/start-web-server! #'handler/app)
(metabase.db/setup-db!) (mdb/setup-db!)
(metabase.plugins/load-plugins!) (plugins/load-plugins!)
(metabase.core.initialization-status/set-complete!)) (init-status/set-complete!))
(defn stop! (defn stop!
[] []
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
[metabase-enterprise.sandbox.api.gtap :as gtap] [metabase-enterprise.sandbox.api.gtap :as gtap]
[metabase-enterprise.sandbox.api.table :as table] [metabase-enterprise.sandbox.api.table :as table]
[metabase-enterprise.sandbox.api.user :as user] [metabase-enterprise.sandbox.api.user :as user]
[metabase.middleware.auth :as middleware.auth])) [metabase.server.middleware.auth :as middleware.auth]))
;; this is copied from `metabase.api.routes` because if we require that above we will destroy startup times for `lein ;; this is copied from `metabase.api.routes` because if we require that above we will destroy startup times for `lein
;; ring server` ;; ring server`
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
(compojure/context (compojure/context
"/mt" "/mt"
[] []
(compojure/routes (compojure/routes
(compojure/context "/gtap" [] (+auth gtap/routes)) (compojure/context "/gtap" [] (+auth gtap/routes))
(compojure/context "/user" [] (+auth user/routes)))) (compojure/context "/user" [] (+auth user/routes))))
......
...@@ -6,12 +6,12 @@ ...@@ -6,12 +6,12 @@
[clojure.walk :as walk] [clojure.walk :as walk]
[medley.core :as m] [medley.core :as m]
[metabase.mbql.normalize :as normalize] [metabase.mbql.normalize :as normalize]
[metabase.middleware.session :as session]
[metabase.models.card :as card :refer [Card]] [metabase.models.card :as card :refer [Card]]
[metabase.models.interface :as i] [metabase.models.interface :as i]
[metabase.models.table :as table] [metabase.models.table :as table]
[metabase.plugins.classloader :as classloader] [metabase.plugins.classloader :as classloader]
[metabase.query-processor.error-type :as qp.error-type] [metabase.query-processor.error-type :as qp.error-type]
[metabase.server.middleware.session :as session]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :refer [tru]] [metabase.util.i18n :refer [tru]]
[metabase.util.schema :as su] [metabase.util.schema :as su]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
(:require [compojure.core :as compojure] (:require [compojure.core :as compojure]
[metabase-enterprise.sso.api.sso :as sso])) [metabase-enterprise.sso.api.sso :as sso]))
;; This needs to be installed in the `metabase.routes/routes` -- not `metabase.api.routes/routes` !!! ;; This needs to be installed in the `metabase.server.routes/routes` -- not `metabase.api.routes/routes` !!!
(compojure/defroutes ^{:doc "Ring routes for auth (SAML) API endpoints."} routes (compojure/defroutes ^{:doc "Ring routes for auth (SAML) API endpoints."} routes
(compojure/context (compojure/context
"/auth" "/auth"
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
[metabase.api.common :as api] [metabase.api.common :as api]
[metabase.api.session :as session] [metabase.api.session :as session]
[metabase.integrations.common :as integrations.common] [metabase.integrations.common :as integrations.common]
[metabase.middleware.session :as mw.session] [metabase.server.middleware.session :as mw.session]
[metabase.util.i18n :refer [tru]] [metabase.util.i18n :refer [tru]]
[ring.util.response :as resp]) [ring.util.response :as resp])
(:import java.net.URLEncoder)) (:import java.net.URLEncoder))
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
[metabase.api.common :as api] [metabase.api.common :as api]
[metabase.api.session :as session] [metabase.api.session :as session]
[metabase.integrations.common :as integrations.common] [metabase.integrations.common :as integrations.common]
[metabase.middleware.session :as mw.session]
[metabase.public-settings :as public-settings] [metabase.public-settings :as public-settings]
[metabase.server.middleware.session :as mw.session]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :refer [trs tru]] [metabase.util.i18n :refer [trs tru]]
[ring.util.codec :as codec] [ring.util.codec :as codec]
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
(:require [expectations :refer :all] (:require [expectations :refer :all]
[metabase-enterprise.sandbox.models.group-table-access-policy :refer [GroupTableAccessPolicy]] [metabase-enterprise.sandbox.models.group-table-access-policy :refer [GroupTableAccessPolicy]]
[metabase.http-client :as http] [metabase.http-client :as http]
[metabase.middleware.util :as middleware.u]
[metabase.models.card :refer [Card]] [metabase.models.card :refer [Card]]
[metabase.models.permissions-group :refer [PermissionsGroup]] [metabase.models.permissions-group :refer [PermissionsGroup]]
[metabase.models.table :refer [Table]] [metabase.models.table :refer [Table]]
[metabase.public-settings.metastore :as metastore] [metabase.public-settings.metastore :as metastore]
[metabase.server.middleware.util :as middleware.u]
[metabase.test.data.users :refer :all] [metabase.test.data.users :refer :all]
[metabase.test.util :as tu] [metabase.test.util :as tu]
[toucan.util.test :as tt])) [toucan.util.test :as tt]))
......
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
[metabase-enterprise.sso.integrations.sso-settings :as sso-settings] [metabase-enterprise.sso.integrations.sso-settings :as sso-settings]
[metabase.config :as config] [metabase.config :as config]
[metabase.http-client :as http] [metabase.http-client :as http]
[metabase.middleware.session :as mw.session]
[metabase.models.permissions-group :as group :refer [PermissionsGroup]] [metabase.models.permissions-group :as group :refer [PermissionsGroup]]
[metabase.models.permissions-group-membership :refer [PermissionsGroupMembership]] [metabase.models.permissions-group-membership :refer [PermissionsGroupMembership]]
[metabase.models.user :refer [User]] [metabase.models.user :refer [User]]
[metabase.public-settings :as public-settings] [metabase.public-settings :as public-settings]
[metabase.public-settings.metastore-test :as metastore-test] [metabase.public-settings.metastore-test :as metastore-test]
[metabase.server.middleware.session :as mw.session]
[metabase.test :as mt] [metabase.test :as mt]
[metabase.test.fixtures :as fixtures] [metabase.test.fixtures :as fixtures]
[metabase.test.util :as tu] [metabase.test.util :as tu]
......
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
"run-ee" ["with-profile" "+run,+ee" "run"] "run-ee" ["with-profile" "+run,+ee" "run"]
"run-with-repl" ["with-profile" "+run-with-repl" "repl"] "run-with-repl" ["with-profile" "+run-with-repl" "repl"]
"run-with-repl-ee" ["with-profile" "+run-with-repl,+ee" "repl"] "run-with-repl-ee" ["with-profile" "+run-with-repl,+ee" "repl"]
"ring" ["with-profile" "+ring" "ring"] ;; "ring" ["with-profile" "+ring" "ring"]
"ring-ee" ["with-profile" "+ring,+ee" "ring"] ;; "ring-ee" ["with-profile" "+ring,+ee" "ring"]
"test" ["with-profile" "+test" "test"] "test" ["with-profile" "+test" "test"]
"test-ee" ["with-profile" "+test,+ee" "test"] "test-ee" ["with-profile" "+test,+ee" "test"]
"bikeshed" ["with-profile" "+bikeshed" "bikeshed" "bikeshed" ["with-profile" "+bikeshed" "bikeshed"
...@@ -274,24 +274,25 @@ ...@@ -274,24 +274,25 @@
(metabase.core/-main)) (metabase.core/-main))
:timeout 60000}}] :timeout 60000}}]
;; DISABLED FOR NOW SINCE IT'S BROKEN -- SEE #12181
;; start the dev HTTP server with 'lein ring server' ;; start the dev HTTP server with 'lein ring server'
:ring ;; :ring
[:exclude-tests ;; [:exclude-tests
:include-all-drivers ;; :include-all-drivers
{:dependencies ;; {:dependencies
;; used internally by lein ring to track namespace changes. Newer version contains fix by yours truly with 1000x ;; ;; used internally by lein ring to track namespace changes. Newer version contains fix by yours truly with 1000x
;; faster launch time ;; ;; faster launch time
[[ns-tracker "0.4.0"]] ;; [[ns-tracker "0.4.0"]]
:plugins ;; :plugins
[[lein-ring "0.12.5" :exclusions [org.clojure/clojure]]] ;; [[lein-ring "0.12.5" :exclusions [org.clojure/clojure]]]
:ring ;; :ring
{:handler metabase.handler/app ;; {:handler metabase.server.handler/app
:init metabase.core/init! ;; :init metabase.core/init!
:async? true ;; :async? true
:destroy metabase.core/destroy ;; :destroy metabase.core/destroy
:reload-paths ["src"]}}] ;; :reload-paths ["src"]}}]
:with-include-drivers-middleware :with-include-drivers-middleware
{:plugins {:plugins
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
{{{localizationJSON}}} {{{localizationJSON}}}
</script> </script>
<!-- If you modify this script, make sure you update the whitelisted Content-Security-Policy hash in metabase.middleware.security --> <!-- If you modify this script, make sure you update the whitelisted Content-Security-Policy hash in metabase.server.middleware.security -->
<script type="text/javascript">{{{bootstrapJS}}}</script> <script type="text/javascript">{{{bootstrapJS}}}</script>
</head> </head>
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
{{/enableGoogleAuth}} {{/enableGoogleAuth}}
<!-- Google Analytics --> <!-- Google Analytics -->
<!-- If you modify this script, make sure you update the whitelisted Content-Security-Policy hash in metabase.middleware.security --> <!-- If you modify this script, make sure you update the whitelisted Content-Security-Policy hash in metabase.server.middleware.security -->
{{#enableAnonTracking}} {{#enableAnonTracking}}
<script type="text/javascript">{{{googleAnalyticsJS}}}</script> <script type="text/javascript">{{{googleAnalyticsJS}}}</script>
{{/enableAnonTracking}} {{/enableAnonTracking}}
......
...@@ -39,9 +39,9 @@ ...@@ -39,9 +39,9 @@
[metabase.api.user :as user] [metabase.api.user :as user]
[metabase.api.util :as util] [metabase.api.util :as util]
[metabase.config :as config] [metabase.config :as config]
[metabase.middleware.auth :as middleware.auth]
[metabase.middleware.exceptions :as middleware.exceptions]
[metabase.plugins.classloader :as classloader] [metabase.plugins.classloader :as classloader]
[metabase.server.middleware.auth :as middleware.auth]
[metabase.server.middleware.exceptions :as middleware.exceptions]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :refer [deferred-tru]])) [metabase.util.i18n :refer [deferred-tru]]))
......
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
[metabase.email.messages :as email] [metabase.email.messages :as email]
[metabase.events :as events] [metabase.events :as events]
[metabase.integrations.ldap :as ldap] [metabase.integrations.ldap :as ldap]
[metabase.middleware.session :as mw.session]
[metabase.models.session :refer [Session]] [metabase.models.session :refer [Session]]
[metabase.models.setting :as setting :refer [defsetting]] [metabase.models.setting :as setting :refer [defsetting]]
[metabase.models.user :as user :refer [User]] [metabase.models.user :as user :refer [User]]
[metabase.public-settings :as public-settings] [metabase.public-settings :as public-settings]
[metabase.server.middleware.session :as mw.session]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :as ui18n :refer [deferred-tru trs tru]] [metabase.util.i18n :as ui18n :refer [deferred-tru trs tru]]
[metabase.util.password :as pass] [metabase.util.password :as pass]
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
[metabase.email :as email] [metabase.email :as email]
[metabase.events :as events] [metabase.events :as events]
[metabase.integrations.slack :as slack] [metabase.integrations.slack :as slack]
[metabase.middleware.session :as mw.session]
[metabase.models.card :refer [Card]] [metabase.models.card :refer [Card]]
[metabase.models.collection :refer [Collection]] [metabase.models.collection :refer [Collection]]
[metabase.models.dashboard :refer [Dashboard]] [metabase.models.dashboard :refer [Dashboard]]
...@@ -19,6 +18,7 @@ ...@@ -19,6 +18,7 @@
[metabase.models.table :refer [Table]] [metabase.models.table :refer [Table]]
[metabase.models.user :as user :refer [User]] [metabase.models.user :as user :refer [User]]
[metabase.public-settings :as public-settings] [metabase.public-settings :as public-settings]
[metabase.server.middleware.session :as mw.session]
[metabase.setup :as setup] [metabase.setup :as setup]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :as i18n :refer [tru]] [metabase.util.i18n :as i18n :refer [tru]]
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
[clojure.java.io :as io] [clojure.java.io :as io]
[clojure.tools.logging :as log] [clojure.tools.logging :as log]
[compojure.response :refer [Sendable]] [compojure.response :refer [Sendable]]
[metabase.middleware.exceptions :as mw.exceptions] [metabase.server.middleware.exceptions :as mw.exceptions]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :as ui18n :refer [trs]] [metabase.util.i18n :as ui18n :refer [trs]]
[ring.core.protocols :as ring.protocols] [ring.core.protocols :as ring.protocols]
......
...@@ -7,13 +7,13 @@ ...@@ -7,13 +7,13 @@
[metabase.core.initialization-status :as init-status] [metabase.core.initialization-status :as init-status]
[metabase.db :as mdb] [metabase.db :as mdb]
[metabase.events :as events] [metabase.events :as events]
[metabase.handler :as handler]
[metabase.metabot :as metabot] [metabase.metabot :as metabot]
[metabase.models.user :refer [User]] [metabase.models.user :refer [User]]
[metabase.plugins :as plugins] [metabase.plugins :as plugins]
[metabase.plugins.classloader :as classloader] [metabase.plugins.classloader :as classloader]
[metabase.sample-data :as sample-data] [metabase.sample-data :as sample-data]
[metabase.server :as server] [metabase.server :as server]
[metabase.server.handler :as handler]
[metabase.setup :as setup] [metabase.setup :as setup]
[metabase.task :as task] [metabase.task :as task]
[metabase.troubleshooting :as troubleshooting] [metabase.troubleshooting :as troubleshooting]
......
(ns metabase.handler
"Top-level Metabase Ring handler."
(:require [metabase.config :as config]
[metabase.middleware.auth :as mw.auth]
[metabase.middleware.exceptions :as mw.exceptions]
[metabase.middleware.json :as mw.json]
[metabase.middleware.log :as mw.log]
[metabase.middleware.misc :as mw.misc]
[metabase.middleware.security :as mw.security]
[metabase.middleware.session :as mw.session]
[metabase.middleware.ssl :as mw.ssl]
[metabase.plugins.classloader :as classloader]
[metabase.routes :as routes]
[ring.middleware.cookies :refer [wrap-cookies]]
[ring.middleware.gzip :refer [wrap-gzip]]
[ring.middleware.keyword-params :refer [wrap-keyword-params]]
[ring.middleware.params :refer [wrap-params]]))
;; required here because this namespace is not actually used anywhere but we need it to be loaded because it adds
;; impls for handling `core.async` channels as web server responses
(classloader/require 'metabase.async.api-response)
(def app
"The primary entry point to the Ring HTTP server."
(->
;; in production, dereference routes now because they will not change at runtime, so we don't need to waste time
;; dereferencing the var on every request. For dev & test, use the var instead so it can be tweaked without having
;; to restart the web server
(if config/is-prod?
routes/routes
#'routes/routes)
;; ▼▼▼ POST-PROCESSING ▼▼▼ happens from TOP-TO-BOTTOM
mw.exceptions/catch-uncaught-exceptions ; catch any Exceptions that weren't passed to `raise`
mw.exceptions/catch-api-exceptions ; catch exceptions and return them in our expected format
mw.log/log-api-call
mw.security/add-security-headers ; Add HTTP headers to API responses to prevent them from being cached
mw.json/wrap-json-body ; extracts json POST body and makes it avaliable on request
mw.json/wrap-streamed-json-response ; middleware to automatically serialize suitable objects as JSON in responses
wrap-keyword-params ; converts string keys in :params to keyword keys
wrap-params ; parses GET and POST params as :query-params/:form-params and both as :params
mw.misc/maybe-set-site-url ; set the value of `site-url` if it hasn't been set yet
mw.session/bind-current-user ; Binds *current-user* and *current-user-id* if :metabase-user-id is non-nil
mw.session/wrap-current-user-info ; looks for :metabase-session-id and sets :metabase-user-id and other info if Session ID is valid
mw.session/wrap-session-id ; looks for a Metabase Session ID and assoc as :metabase-session-id
mw.auth/wrap-api-key ; looks for a Metabase API Key on the request and assocs as :metabase-api-key
wrap-cookies ; Parses cookies in the request map and assocs as :cookies
mw.misc/add-content-type ; Adds a Content-Type header for any response that doesn't already have one
mw.misc/disable-streaming-buffering ; Add header to streaming (async) responses so ngnix doesn't buffer keepalive bytes
wrap-gzip ; GZIP response if client can handle it
mw.misc/bind-request ; bind `metabase.middleware.misc/*request*` for the duration of the request
mw.ssl/redirect-to-https-middleware)) ; Redirect to HTTPS if configured to do so
;; ▲▲▲ PRE-PROCESSING ▲▲▲ happens from BOTTOM-TO-TOP
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
[metabase.api.common :as api :refer [*current-user-id*]] [metabase.api.common :as api :refer [*current-user-id*]]
[metabase.mbql.normalize :as normalize] [metabase.mbql.normalize :as normalize]
[metabase.mbql.util :as mbql.u] [metabase.mbql.util :as mbql.u]
[metabase.middleware.session :as session]
[metabase.models.collection :as collection] [metabase.models.collection :as collection]
[metabase.models.dependency :as dependency] [metabase.models.dependency :as dependency]
[metabase.models.field-values :as field-values] [metabase.models.field-values :as field-values]
...@@ -19,6 +18,7 @@ ...@@ -19,6 +18,7 @@
[metabase.plugins.classloader :as classloader] [metabase.plugins.classloader :as classloader]
[metabase.public-settings :as public-settings] [metabase.public-settings :as public-settings]
[metabase.query-processor.util :as qputil] [metabase.query-processor.util :as qputil]
[metabase.server.middleware.session :as session]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :as ui18n :refer [tru]] [metabase.util.i18n :as ui18n :refer [tru]]
[toucan.db :as db] [toucan.db :as db]
......
(ns metabase.models.session (ns metabase.models.session
(:require [buddy.core.codecs :as codecs] (:require [buddy.core.codecs :as codecs]
[buddy.core.nonce :as nonce] [buddy.core.nonce :as nonce]
[metabase.middleware.misc :as mw.misc] [metabase.server.middleware.misc :as mw.misc]
[metabase.middleware.util :as mw.util] [metabase.server.middleware.util :as mw.util]
[metabase.util :as u] [metabase.util :as u]
[schema.core :as s] [schema.core :as s]
[toucan.models :as models])) [toucan.models :as models]))
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
[metabase.email :as email] [metabase.email :as email]
[metabase.email.messages :as messages] [metabase.email.messages :as messages]
[metabase.integrations.slack :as slack] [metabase.integrations.slack :as slack]
[metabase.middleware.session :as session]
[metabase.models.card :refer [Card]] [metabase.models.card :refer [Card]]
[metabase.models.dashboard :refer [Dashboard]] [metabase.models.dashboard :refer [Dashboard]]
[metabase.models.dashboard-card :refer [DashboardCard]] [metabase.models.dashboard-card :refer [DashboardCard]]
...@@ -13,6 +12,7 @@ ...@@ -13,6 +12,7 @@
[metabase.pulse.render :as render] [metabase.pulse.render :as render]
[metabase.query-processor :as qp] [metabase.query-processor :as qp]
[metabase.query-processor.timezone :as qp.timezone] [metabase.query-processor.timezone :as qp.timezone]
[metabase.server.middleware.session :as session]
[metabase.util :as u] [metabase.util :as u]
[metabase.util.i18n :refer [deferred-tru trs tru]] [metabase.util.i18n :refer [deferred-tru trs tru]]
[metabase.util.ui-logic :as ui] [metabase.util.ui-logic :as ui]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment