branch develop updated (dd8c68c -> 6a95d6a)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from dd8c68c [WIN] Le serveur ne démarre pas sous Windows en raison d'une erreur POSIX (Fixes #8549) new 6a95d6a Amélioration de la documentation et du démarrage de l'application web The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 6a95d6a45f468778fcaf8733f9f16601280c59a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 22 11:30:35 2016 +0200 Amélioration de la documentation et du démarrage de l'application web Summary of changes: .../ObserveWebApplicationConfiguration.java | 100 +++++++-------------- .../src/main/resources/defaultDatabases.yml | 16 ++++ .../src/main/resources/defaultUsers.yml | 13 +++ .../web/ObserveWebApplicationListener.java | 9 +- src/site/rst/administration-web.rst.vm | 52 ++++++----- 5 files changed, 102 insertions(+), 88 deletions(-) create mode 100644 application-web-configuration/src/main/resources/defaultDatabases.yml create mode 100644 application-web-configuration/src/main/resources/defaultUsers.yml -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 6a95d6a45f468778fcaf8733f9f16601280c59a0 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Sep 22 11:30:35 2016 +0200 Amélioration de la documentation et du démarrage de l'application web --- .../ObserveWebApplicationConfiguration.java | 100 +++++++-------------- .../src/main/resources/defaultDatabases.yml | 16 ++++ .../src/main/resources/defaultUsers.yml | 13 +++ .../web/ObserveWebApplicationListener.java | 9 +- src/site/rst/administration-web.rst.vm | 52 ++++++----- 5 files changed, 102 insertions(+), 88 deletions(-) diff --git a/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java b/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java index fb92759..a7ddd87 100644 --- a/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java +++ b/application-web-configuration/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java @@ -78,9 +78,9 @@ public class ObserveWebApplicationConfiguration extends GeneratedObserveWebAppli throw new ObserveWebApplicationConfigurationInitException("could not parse configuration", e); } - File applicationBaseDirectory = getBaseDirectory(); + File baseDirectory = getBaseDirectory(); - if (isDevMode() && !applicationBaseDirectory.exists()) { + if (isDevMode() && !baseDirectory.exists()) { // on utilise un répertoire temporaire comme basedir if (log.isInfoEnabled()) { @@ -93,25 +93,24 @@ public class ObserveWebApplicationConfiguration extends GeneratedObserveWebAppli Files.createDirectories(tmpdir); } - applicationBaseDirectory = Files.createTempDirectory("observeweb").toFile(); + baseDirectory = Files.createTempDirectory("observeweb").toFile(); } catch (IOException e) { throw new ObserveWebApplicationConfigurationInitException("could not create temporary basedir", e); } if (log.isInfoEnabled()) { - log.info("Dev mode detected, use temporary basedir: " + applicationBaseDirectory); + log.info("Dev mode detected, use temporary basedir: " + baseDirectory); } - get().setOption(ObserveWebApplicationConfigurationOption.BASE_DIRECTORY.getKey(), applicationBaseDirectory.getAbsolutePath()); + get().setOption(ObserveWebApplicationConfigurationOption.BASE_DIRECTORY.getKey(), baseDirectory.getAbsolutePath()); } if (log.isInfoEnabled()) { - String message = getConfigurationDescription(); - log.info(message); + log.info(getConfigurationDescription()); } try { - createDirectory(applicationBaseDirectory); + createDirectory(baseDirectory); } catch (IOException e) { - throw new ObserveWebApplicationConfigurationInitException("Impossible de créer le répertoire principal de l'application (" + applicationBaseDirectory + ")", e); + throw new ObserveWebApplicationConfigurationInitException("Impossible de créer le répertoire principal de l'application (" + baseDirectory + ")", e); } File temporaryDirectory = getTemporaryDirectory(); try { @@ -121,45 +120,33 @@ public class ObserveWebApplicationConfiguration extends GeneratedObserveWebAppli } File databasesConfigurationFile = getDatabasesConfigurationFile(); - File usersConfigurationFile = getUsersConfigurationFile(); - - if (isDevMode()) { - - if (!databasesConfigurationFile.exists()) { - - // Generate a default databasesConfigurationFile - if (log.isInfoEnabled()) { - log.info("Generate a default databasesConfigurationFile for tests purpose only:\n" + DEV_DATABASES_CONFIGURATION_FILE_CONTENT); - } + if (!databasesConfigurationFile.exists()) { - try { - Files.write(databasesConfigurationFile.toPath(), DEV_DATABASES_CONFIGURATION_FILE_CONTENT.getBytes()); - } catch (IOException e) { - throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de configuration des bases pour développement", e); - } + if (log.isInfoEnabled()) { + log.info("Generate default databases.yml"); } - if (!usersConfigurationFile.exists()) { - - // Generate a default usersConfigurationFile - if (log.isInfoEnabled()) { - log.info("Generate a default usersConfigurationFile for tests purpose only:\n" + DEV_USERS_CONFIGURATION_FILE_CONTENT); - } - try { - Files.write(usersConfigurationFile.toPath(), DEV_USERS_CONFIGURATION_FILE_CONTENT.getBytes()); - } catch (IOException e) { - throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de configuration des utilisateurs pour développement", e); - } + try { + CharSource charSource = Resources.asCharSource(getClass().getResource("/defaultDatabases.yml"), StandardCharsets.UTF_8); + Files.write(databasesConfigurationFile.toPath(), charSource.readLines()); + } catch (IOException e) { + throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de configuration des bases", e); } - - } - - if (!databasesConfigurationFile.exists()) { - throw new ObserveWebApplicationConfigurationInitException("Le fichier de configuration des bases n'existe pas : " + databasesConfigurationFile); } + File usersConfigurationFile = getUsersConfigurationFile(); if (!usersConfigurationFile.exists()) { - throw new ObserveWebApplicationConfigurationInitException("Le fichier de configuration des utilisateurs n'existe pas : " + usersConfigurationFile); + + if (log.isInfoEnabled()) { + log.info("Generate default users.yml"); + } + try { + CharSource charSource = Resources.asCharSource(getClass().getResource("/defaultUsers.yml"), StandardCharsets.UTF_8); + Files.write(usersConfigurationFile.toPath(), charSource.readLines()); + } catch (IOException e) { + throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de configuration des utilisateurs", e); + } + } File log4jConfigurationFile = getLog4jConfigurationFile(); @@ -170,16 +157,20 @@ public class ObserveWebApplicationConfiguration extends GeneratedObserveWebAppli CharSource charSource = Resources.asCharSource(getClass().getResource("/observeweb-log4j.conf"), Charsets.UTF_8); String log4jFileContent = charSource.read(); if (log.isInfoEnabled()) { - log.info("Generate a default log4jConfigurationFile for tests purpose only:\n" + log4jFileContent); + log.info("Generate default log4jConfigurationFile"); } Files.write(log4jConfigurationFile.toPath(), log4jFileContent.getBytes()); } catch (IOException e) { - throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de log4j pour développement", e); + throw new ObserveWebApplicationConfigurationInitException("Impossible de créer un fichier de log4j", e); } } initLog(); + if (log.isInfoEnabled()) { + log.info("Observe web configuration init done."); + } + } public String getConfigurationDescription() { @@ -233,27 +224,4 @@ public class ObserveWebApplicationConfiguration extends GeneratedObserveWebAppli } - private static final String DEV_DATABASES_CONFIGURATION_FILE_CONTENT = - "databases: \n" + - "- name: production\n" + - " defaultDatabase: true\n" + - " roles: \n" + - " - login: admin\n" + - " password: a\n" + - " - login: referentiel\n" + - " password: a\n" + - " url: jdbc:postgresql://localhost:5432/obstuna"; - - private static final String DEV_USERS_CONFIGURATION_FILE_CONTENT = - "users: \n" + - "- login: admin\n" + - " password: a\n" + - " permissions: \n" + - " - database: production\n" + - " role: admin\n" + - "- login: referentiel\n" + - " password: a\n" + - " permissions: \n" + - " - database: production\n" + - " role: referentiel"; } diff --git a/application-web-configuration/src/main/resources/defaultDatabases.yml b/application-web-configuration/src/main/resources/defaultDatabases.yml new file mode 100644 index 0000000..860d1b2 --- /dev/null +++ b/application-web-configuration/src/main/resources/defaultDatabases.yml @@ -0,0 +1,16 @@ +databases: +- name: production + defaultDatabase: true + roles: + - login: technicien + password: tech + - login: referentiel + password: a + url: jdbc:postgresql://localhost:5432/obstuna-production +- name: test + roles: + - login: technicien + password: tech + - login: referentiel + password: a + url: jdbc:postgresql://localhost:5432/obstuna-test \ No newline at end of file diff --git a/application-web-configuration/src/main/resources/defaultUsers.yml b/application-web-configuration/src/main/resources/defaultUsers.yml new file mode 100644 index 0000000..fd88902 --- /dev/null +++ b/application-web-configuration/src/main/resources/defaultUsers.yml @@ -0,0 +1,13 @@ +users: +- login: utilisateur-technicien + password: a + permissions: + - database: production + role: technicien + - database: test + role: technicien +- login: utilisateur-referentiel + password: a + permissions: + - database: production + role: referentiel diff --git a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java index 93772d5..eaec878 100644 --- a/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationListener.java @@ -74,9 +74,11 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { context.addInjector(new ImmutableSetInjector()); context.addConverter(new ObserveDtoConverter(gson), ObserveDbUserDto.class); - context.getServletContext().setAttribute( - ObserveWebApplicationContext.APPLICATION_CONTEXT_PARAMETER, applicationContext); + context.getServletContext().setAttribute(ObserveWebApplicationContext.APPLICATION_CONTEXT_PARAMETER, applicationContext); + if (log.isInfoEnabled()) { + log.info("Initializing " + ObserveWebApplicationListener.class.getName() + " done."); + } } @Override @@ -88,6 +90,9 @@ public class ObserveWebApplicationListener implements WebMotionServerListener { IOUtils.closeQuietly(applicationContext); + if (log.isInfoEnabled()) { + log.info("Destroying " + ObserveWebApplicationListener.class.getName() + " done."); + } } } diff --git a/src/site/rst/administration-web.rst.vm b/src/site/rst/administration-web.rst.vm index 531172d..7b2996e 100644 --- a/src/site/rst/administration-web.rst.vm +++ b/src/site/rst/administration-web.rst.vm @@ -36,7 +36,17 @@ La configuration de l'application web est regroupé dans un seul fichier à plac La configuration de l'application possède des valeurs par défaut pour toutes les options, si vous utiliser ces valeurs par défaut, un minimum de configuration est requise. +Deux options doivent être modifiées : + + - **observeweb.adminApiKey** : la clef à utiliser pour accéder aux services d'administration + - **observeweb.apiUrl** : l'url publique d'accès aux services web + +Consulter la `page des configurations`_ pour connaitre l'ensemble des options de cette configuration. + Par défaut, l'application utilise le répertoire **/var/local/observeweb** pour y stoquer ses données. + +Voici le contenu de ce dossier suite à un premier démarrage : + :: /var/local/observeweb/ @@ -47,17 +57,17 @@ Par défaut, l'application utilise le répertoire **/var/local/observeweb** pour |-- temp # répertoire temporaire `-- users.yml # configuration des utilisateurs -Consulter la `page des configurations`_ pour connaitre l'ensemble des options de cette configuration. +Lors du premier démarrage, l'application génère des fichiers exemples de «*databases.yml*» et «*users.yml*». -Deux options doivent être modifiées : - - - **observeweb.adminApiKey** : la clef de l'API pour accéder aux services d'administrations - - **observeweb.apiUrl** : l'url publique d'accès aux services web +Vous pouvez ensuite les modifier et recharger la configuration à chaud. -Configuration des bases données accessibles par les utilisateurs des services web -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Configuration des bases données +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Le fichier databases.yml liste les bases de données connues par l'application. + +Il s'agit donc ici bien uniquement de configuration de type postgresql. + Par exemple : :: @@ -67,28 +77,29 @@ Par exemple : defaultDatabase: true roles: - login: technicien - password: tech + password: a - login: referentiel - password: ref + password: a url: jdbc:postgresql://localhost:5432/obstuna-production - name: test roles: - login: technicien - password: tech + password: a - login: referentiel - password: ref + password: a url: jdbc:postgresql://localhost:5432/obstuna-test -On décrit ici deux bases «production» (base par défaut) et «test» qui pointent sur les bases postgresql -«obstuna-production» et «obstuna-test». +On décrit ici deux bases «*production*» (base par défaut) et «*test*» qui pointent sur les bases postgresql +«*obstuna-production*» et «*obstuna-test*». + +Sur ces deux bases, on utilise deux utilisateurs (role postgres) «*technicien*» et «*referentiel*». -Sur ces deux bases, on utilise deux utilisateurs (role postgres) «technicien» et «referentiel». +Configuration des utilisateurs de l'application +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Configuration des utilisateurs habilités à consommer les services web -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Le fichier users.yml définit les utilisateurs de l'applications web ainsi que leur niveau de droit (mapping avec les droits des bases de données). -Le fichier users.yml définit les utilisateurs habilités à utiliser les services mis à disposition par l'application web -ainsi que leur niveau de droit (mapping avec les droits des bases de données). Par exemple : +Par exemple : :: @@ -106,8 +117,9 @@ ainsi que leur niveau de droit (mapping avec les droits des bases de données). - database: production role: referentiel -L'utilisateur «utilisateur-technicien» aura le droit d'accéder à la base de production et de test avec le rôle «technicien». -L'utilisateur «utilisateur-referentiel» aura le droit d'accéder à la base de production uniquement avec le rôle «referentiel». +L'utilisateur «*utilisateur-technicien*» aura le droit d'accéder à la base de production et de test avec le rôle «*technicien*». + +L'utilisateur «*utilisateur-referentiel*» aura le droit d'accéder à la base de production uniquement avec le rôle «*referentiel*». Tester l'application ~~~~~~~~~~~~~~~~~~~~ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm