Merge pull request #2039 from penpot/niwinz-hotfix-exporter-uri-param

🐛 Remove unused setting on exporter
This commit is contained in:
Alejandro 2022-06-27 08:44:39 +02:00 committed by GitHub
commit f2862b6c16
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 60 additions and 66 deletions

View file

@ -1,34 +1,48 @@
# Should be set to the public domain where penpot is going to be served.
## Should be set to the public domain where penpot is going to be served.
##
## NOTE: If you are going to serve it under different domain than
## 'localhost' without HTTPS, consider setting the
## `disable-secure-session-cookies' flag on the 'PENPOT_FLAGS'
## setting.
PENPOT_PUBLIC_URI=http://localhost:9001
PENPOT_TENANT=pro
# Temporal workaround because of bad builtin default
## Feature flags.
PENPOT_FLAGS="enable-registration enable-login"
## Temporal workaround because of bad builtin default
PENPOT_HTTP_SERVER_HOST=0.0.0.0
# Standard database connection parameters (only postgresql is supported):
## Standard database connection parameters (only postgresql is supported):
PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
PENPOT_DATABASE_USERNAME=penpot
PENPOT_DATABASE_PASSWORD=penpot
# Redis is used for the websockets notifications.
## Redis is used for the websockets notifications.
PENPOT_REDIS_URI=redis://penpot-redis/0
# By default, files uploaded by users are stored in local filesystem. But it
# can be configured to store in AWS S3 or completely in de the database.
# Storing in the database makes the backups more easy but will make access to
# media less performant.
## By default, files uploaded by users are stored in local
## filesystem. But it can be configured to store in AWS S3.
PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
# Telemetry. When enabled, a periodical process will send anonymous data about
# this instance. Telemetry data will enable us to learn on how the application
# is used, based on real scenarios. If you want to help us, please leave it
# enabled.
## Telemetry. When enabled, a periodical process will send anonymous
## data about this instance. Telemetry data will enable us to learn on
## how the application is used, based on real scenarios. If you want
## to help us, please leave it enabled.
PENPOT_TELEMETRY_ENABLED=true
# Email sending configuration. By default, emails are printed in the console,
# but for production usage is recommended to setup a real SMTP provider. Emails
# are used to confirm user registrations.
## Email sending configuration. By default, emails are printed in the
## console, but for production usage is recommended to setup a real
## SMTP provider. Emails are used to confirm user registrations.
PENPOT_SMTP_ENABLED=false
PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
@ -39,34 +53,40 @@ PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
# PENPOT_SMTP_TLS=true
# PENPOT_SMTP_SSL=false
# Feature flags. Right now they are only affect frontend, but in
# future release they will affect to both backend and frontend.
PENPOT_FLAGS="enable-registration"
## Comma separated list of allowed domains to register. Empty to allow
## all.
# Comma separated list of allowed domains to register. Empty to allow all.
# PENPOT_REGISTRATION_DOMAIN_WHITELIST=""
## Authentication providers
# Google
## Google
# PENPOT_GOOGLE_CLIENT_ID=
# PENPOT_GOOGLE_CLIENT_SECRET=
# GitHub
## GitHub
# PENPOT_GITHUB_CLIENT_ID=
# PENPOT_GITHUB_CLIENT_SECRET=
# GitLab
## GitLab
# PENPOT_GITLAB_BASE_URI=https://gitlab.com
# PENPOT_GITLAB_CLIENT_ID=
# PENPOT_GITLAB_CLIENT_SECRET=
# OpenID Connect (since 1.5.0)
## OpenID Connect (since 1.5.0)
# PENPOT_OIDC_BASE_URI=
# PENPOT_OIDC_CLIENT_ID=
# PENPOT_OIDC_CLIENT_SECRET=
# LDAP
## LDAP
##
## NOTE: to enable ldap, you will need to put 'enable-login-with-ldap'
## on the 'PENPOT_FLAGS' environment variable.
# PENPOT_LDAP_HOST=ldap
# PENPOT_LDAP_PORT=10389
# PENPOT_LDAP_SSL=false
@ -78,7 +98,3 @@ PENPOT_FLAGS="enable-registration"
# PENPOT_LDAP_ATTRS_EMAIL=mail
# PENPOT_LDAP_ATTRS_FULLNAME=cn
# PENPOT_LDAP_ATTRS_PHOTO=jpegPhoto
# PENPOT_LOGIN_WITH_LDAP=true
# Exporter
PENPOT_DOMAIN_WHITE_LIST=localhost:9001

View file

@ -25,15 +25,13 @@
:host "devenv"
:http-server-port 6061
:http-server-host "localhost"
:redis-uri "redis://redis/0"
:domain-white-list #{"localhost:3449"}})
:redis-uri "redis://redis/0"})
(s/def ::http-server-port ::us/integer)
(s/def ::http-server-host ::us/string)
(s/def ::public-uri ::us/uri)
(s/def ::tenant ::us/string)
(s/def ::host ::us/string)
(s/def ::domain-white-list ::us/set-of-str)
(s/def ::browser-pool-max ::us/integer)
(s/def ::browser-pool-min ::us/integer)
@ -44,8 +42,7 @@
::http-server-port
::http-server-host
::browser-pool-max
::browser-pool-min
::domain-white-list]))
::browser-pool-min]))
(defn- read-env
[prefix]

View file

@ -70,7 +70,6 @@
(defmulti command-spec :cmd)
(s/def ::id ::us/string)
(s/def ::uri ::us/uri)
(s/def ::wait ::us/boolean)
(s/def ::cmd ::us/keyword)
@ -80,24 +79,13 @@
(s/def ::params
(s/and (s/keys :req-un [::cmd]
:opt-un [::wait ::uri])
:opt-un [::wait])
(s/multi-spec command-spec :cmd)))
(defn validate-uri!
[uri]
(let [white-list (cf/get :domain-white-list #{})
default (cf/get :public-uri)]
(when-not (or (contains? white-list (u/get-domain uri))
(= (u/get-domain default) (u/get-domain uri)))
(ex/raise :type :validation
:code :domain-not-allowed
:hint "looks like the uri provided is not part of the white list"))))
(defn handler
[{:keys [:request/params] :as exchange}]
(let [{:keys [cmd uri] :as params} (us/conform ::params params)]
(let [{:keys [cmd] :as params} (us/conform ::params params)]
(l/debug :hint "process-request" :cmd cmd)
(some-> uri validate-uri!)
(case cmd
:get-resource (resources/handler exchange)
:export-shapes (export-shapes/handler exchange params)

View file

@ -29,7 +29,6 @@
(s/def ::file-id ::us/uuid)
(s/def ::page-id ::us/uuid)
(s/def ::object-id ::us/uuid)
(s/def ::uri ::us/uri)
(s/def ::export
(s/keys :req-un [::file-id ::page-id ::object-id ::name]))
@ -39,18 +38,18 @@
(s/def ::params
(s/keys :req-un [::exports]
:opt-un [::uri ::name]))
:opt-un [::name]))
(defn handler
[{:keys [:request/auth-token] :as exchange} {:keys [exports uri profile-id] :as params}]
[{:keys [:request/auth-token] :as exchange} {:keys [exports profile-id] :as params}]
;; NOTE: we need to have the `:type` prop because the exports
;; datastructure preparation uses it for creating the groups.
(let [exports (-> (map #(assoc % :type :pdf :scale 1 :suffix "") exports)
(prepare-exports auth-token uri))]
(prepare-exports auth-token))]
(handle-export exchange (assoc params :exports exports))))
(defn handle-export
[exchange {:keys [exports wait uri name profile-id] :as params}]
[exchange {:keys [exports wait name profile-id] :as params}]
(let [total (count exports)
topic (str profile-id)
resource (rsc/create :pdf (or name (-> exports first :name)))

View file

@ -34,7 +34,6 @@
(s/def ::scale ::us/number)
(s/def ::suffix ::us/string)
(s/def ::type ::us/keyword)
(s/def ::uri ::us/uri)
(s/def ::wait ::us/boolean)
(s/def ::export
@ -45,11 +44,11 @@
(s/def ::params
(s/keys :req-un [::exports ::profile-id]
:opt-un [::uri ::wait ::name]))
:opt-un [::wait ::name]))
(defn handler
[{:keys [:request/auth-token] :as exchange} {:keys [exports uri] :as params}]
(let [exports (prepare-exports exports auth-token uri)]
[{:keys [:request/auth-token] :as exchange} {:keys [exports] :as params}]
(let [exports (prepare-exports exports auth-token)]
(if (and (= 1 (count exports))
(= 1 (count (-> exports first :objects))))
(handle-single-export exchange (-> params
@ -58,7 +57,7 @@
(handle-multiple-export exchange (assoc params :exports exports)))))
(defn- handle-single-export
[exchange {:keys [export wait uri profile-id name] :as params}]
[exchange {:keys [export wait profile-id name] :as params}]
(let [topic (str profile-id)
resource (rsc/create (:type export) (or name (:name export)))
@ -98,7 +97,7 @@
(assoc exchange :response/body (dissoc resource :path)))))
(defn- handle-multiple-export
[exchange {:keys [exports wait uri profile-id name] :as params}]
[exchange {:keys [exports wait profile-id name] :as params}]
(let [resource (rsc/create :zip (or name (-> exports first :name)))
total (count exports)
topic (str profile-id)
@ -185,7 +184,7 @@
default-partition-size 50)
(defn prepare-exports
[exports token uri]
[exports token]
(letfn [(process-group [group]
(sequence (comp (partition-all default-partition-size)
(map process-partition))
@ -196,7 +195,6 @@
:page-id (:page-id part1)
:name (:name part1)
:token token
:uri uri
:type (:type part1)
:scale (:scale part1)
:objects (mapv part-entry->object part)})

View file

@ -20,7 +20,6 @@
(s/def ::file-id ::us/uuid)
(s/def ::scale ::us/number)
(s/def ::token ::us/string)
(s/def ::uri ::us/uri)
(s/def ::filename ::us/string)
(s/def ::object
@ -30,8 +29,7 @@
(s/coll-of ::object :min-count 1))
(s/def ::render-params
(s/keys :req-un [::file-id ::page-id ::scale ::token ::type ::objects]
:opt-un [::uri]))
(s/keys :req-un [::file-id ::page-id ::scale ::token ::type ::objects]))
(defn- render
[{:keys [type] :as params} on-object]

View file

@ -130,9 +130,7 @@
(defmethod query :exporter
[_ params]
(let [default {:wait false
:blob? false
:uri (str base-uri)}]
(let [default {:wait false :blob? false}]
(send-export (merge default params))))
(derive :upload-file-media-object ::multipart-upload)