From fdce456bc75dfd79d52a201400070cb2f60bf837 Mon Sep 17 00:00:00 2001 From: Bernaldo Mihasi Date: Sun, 21 Aug 2022 21:47:14 +0200 Subject: [PATCH] Update 'Page 2: Setup Configurations' --- Page-2%3A-Setup-Configurations.md | 209 ++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 Page-2%3A-Setup-Configurations.md diff --git a/Page-2%3A-Setup-Configurations.md b/Page-2%3A-Setup-Configurations.md new file mode 100644 index 0000000..25ece88 --- /dev/null +++ b/Page-2%3A-Setup-Configurations.md @@ -0,0 +1,209 @@ +# Page 2: Setup Configurations +## A. Database: +The only configuration that is used is in **/dmp-db-scema/Docker/dmp-db.env** + +Inside the file it contains configuration for the admin users (database, app), database name and admin passwords. + +The values are: +``` +ADMIN_USER: Admin username (app) + +ADMIN_PASSWORD: Admin password (app) + +POSTGRES_DB: database name + +POSTGRES_USER: Admin username (database) + +POSTGRES_PASSWORD: Admin password (database) +``` +*NOTE: The passwords are ONLY placeholders and MUST be changed* +## B. Backend +### 1. App configuration +The app configurations are in the **/dmp-backend/web/src/main/resources/config** folder. + +Inside the folder there are 4 **.properties** files: +* **application.properties**: Main configuration file (loads before any other) +* **application-devel.properties**: Devel Profile (Internal development) configuration +* application-staging.properties: Staging Profile (testing build) configuration +* application-production.properties: Production Profile (main build) configuration + +Inside the files you will find the following properties: + +*Properties with bold are the minimun that have to be configured so as the app works properly* + +| | application-devel.properties | application.properties | +| -------- | -------- | -------- | +| dmp.domain | the domain name of the server | +| **database.url** | the url that is used to connect to database (JDBC based) | +| **database.username** | database admin username | +| **database.password** | database admin password | +| pdf.converter.url | the url of the PDF converter service | +| server.port | | the network port the application is listening to | +| server.tomcat.max-threads | | the maximum number of request processing threads to be created | +| server.tomcat.max-connections | | the maximum number of connections that the server accepts | +| spring.profiles.active | | the active profile of the app (devel, staging, production) | +| elasticsearch.host | | the host url of the elastic server | +| elasticsearch.port | | the host port of the elastic server | +| elasticsearch.username | | the elastic server admin username | +| elasticsearch.password | | the elastic server admin password | +| elasticsearch.index | | the index which will be used if exists or created | +| elasticsearch.usingssl | | whether SSL is used to communicate with the elastic server | +| elasticsearch.certPath | | the path of the certification used in SSL | +| elasticsearch.certKey | | the key of the certification used in SSL | +| configuration.externalUrls | | path to the externalUrls xml file | +| configuration.rda | | path to RDACommonStandards.txt | +| configuration.h2020template | | path to H2020 export dmp template (.docx) | +| configuration.h2020datasettemplate | | path to H2020 export dataset template (.docx) | +| configuration.configurable_login_providers | | path to ConfigurableLoginProviders.json | +| configuration.doi_funder | | path to DOI_Funder.json | +| autouser.root.* | | setup an auto login user (email, username, password) | +| facebook.login.clientId | | Facebook API client Id | +| facebook.login.clientSecret | | Facebook API client Secret | +| facebook.login.namespace | | Facebook API namespace | +| **google.login.clientId** | | Google API client Id | +| linkedin.login.clientId | | LinkedIn API client Id | +| linkedin.login.clientSecret | | LinkedIn API client Secret | +| linkedin.login.redirect_uri | | LinkedIn API redirect uri | +| linkedin.login.user_info_url | | LinkedIn API user info url | +| linkedin.login.user_email | | LinkedIn API user email | +| linkedin.login.access_token_url | | LinkedIn API access token url | +| twitter.login.clientId | | Twitter API client Id | +| twitter.login.clientSecret | | Twitter API client Secret | +| twitter.login.redirect_uri | | Twitter API redirect uri | +| b2access.externallogin.user_info_url | | B2 Access API user info url | +| b2access.externallogin.access_token_url | |B2 Access API access token url | +| b2access.externallogin.redirect_uri | | B2 Access API redirect uri | +| b2access.externallogin.clientid | | B2 Access API client Id | +| b2access.externallogin.clientSecret | | B2 Access API client Secret | +| database.driver-class-name | | database class name | +| database.lock-fail-interval | | time before the editor lock to be automatially dleleted (in milliseconds) | +| database.driver-class-name | | database class name | +| **userguide.path** | | path to the user manual directory e.g /user-guide | +| notification.rateInterval | | time before to retry to send the notifications (in milliseconds) | +| notification.maxRetries | | number of maximum retries before it stop sending the notifications | +| notification.modified.subject | | default email subject for edited DMP/Dataset notification | +| notification.publish.subject | | default email subject for published DMP notification | +| notification.finalised.subject | | default email subject for finalised DMP notification | +| notification.modifiedFinalised.subject | | default email subject for modified and finalised DMP notification | +| logging.config | | path to the logback configuration file | +| **temp.temp** | | path to internal temp folder | +| **file.storage** | | path to internal final folder | +| **language.path** | path to the language files e.g /dmp-frontend/src/assets/i18n/ | | + +### 2. External Urls + +The externalUrls are used in order to retrieve data from external sources (funders, grants, organizations etc) + +The files are in /dmp-backend/externalUrls folder. + +There are 3 files: +``` +ExternalUrls.xml: Default externalUrl configuration + +ExternalUrlsStaging.xml: externalUrls configuration for the Staging Profile + +ExternalUrlsProduction.xml: externalUrls configuration for the Production Profile +``` +Inside these files there are: +``` +registries: The Dataset external reference for registries + +grants: The DMP grants + +projects: The DMP projects + +funders: The DMP funders + +repositories: The Dataset external reference for repositories + +services: The Dataset external reference for services + +researchers: The DMP researchers + +organisations: The DMP organizations + +datasets: The Dataset external reference for datasets +``` +Inside each one there are: + +**urls**: list of urls from where the data will be retrieved + +**fetchMode**: How the data will be fetched. Available values are: +``` +FIRST: Load ONLY the first urls configuration + +ALL: Load ALL the urls configurations +``` +On each urls there are urlConfigs from which each one is having: +``` +key: Configuration key (lowercase) + +Label: Configuration Name + +type: type of the data source (usually External) + +url: The url template that will be used for retrieving the data + +funderQuery: (OpenAIRE only) The Funder search query + +firstPage: The default page that is used if none is specified + +contenttype: The content Type to be returned by the source + +data: the data returned + +paginationpath: The path where pagination data are from the response +``` +Inside **data** there are different fields based on the content type: + +**JSON**: + +``` +path: the json path where the data are + +fields: the name of the fields to be read and where to be mapped. example : 'myid' it will map myid to the id value +``` +**XML**: +``` +parse-class: The classpath to be used for parsing the xml document + +parse-field: The xml field that is used as a root for parsing + +merge-fields: The fields that will be merged together (with space character) + +merge-field-name: The name of the merged field +``` +## B. Frontend +The only configuration that is used is the **/dmp-frontend/webapp/config/config.json** + +Inside the file there are those properties: +``` +production: Enable or Disable Production default configuration + +Server: The url to the Backend service + +App: The url to the Frontend service + +defaultCulture: The default culture + +LoginProviders which has: + +enabled: An array of the loginproviders to be used. Available values: + +1: Google +2: Facebook +3: Twitter +4: LinkedIn +6: B2Access +7: ORCID +8: OpenAIRE +9: Configurable LoginProvider +10: Zenodo + +lockInteval: After how much time it will send an editor lock request to the backend (in milliseconds) + +guideAssets: path to the folder that contains the user Manual assets (images etc) + +allowOrganizationCreator: Allow the user to create custom organizations when creating or updating DMPs +``` +The minimun property that has to be configured is **loginProviders.googleConfiguration.clientId** which stores the Google API client Id \ No newline at end of file