Comments (17)
ça me parait un peu lourd de relancer toute l'installation du frontend juste pour modifier un paramètre de conf. Pour moi il faut indiquer dans le doc que si on modifie l'URL de son API, il faut le spécifier dans ce fichier de conf frontend
from geonature.
Dans tous les cas, on n'est pas censé modifier manuellement le fichier frontend/src/assets/config.json
, donc toute contribution à améliorer le script et/ou la documentation est bienvenue.
from geonature.
Une fois passé en HTTPS, il faut mettre à jour la configuration de GeoNature pour que l'API soit interrogée en HTTPS, voir la doc sur le sujet : https://docs.geonature.fr/installation.html#https
from geonature.
Merci Camille.
Au premier essai, je reconnais que je n'avais pas mis à jour la configuration. C'est une autre question, mais il me semble que le code sur le navigateur devrait détecter automatiquement le scheme (http ou https) de la page chargée et l'appliquer aux requêtes d'API, sachant que les mélanges sont désormais interdits.
Je propose la demande d'évolution suivante : faire en sorte que cela marche quel que soit le scheme sans qu'on touche à la configuration.
Après avoir vu le fameux fichier de config mentionné dans la doc, j'ai modifié la config. L'appel api/gn_commons/config retourne un document json avec API_ENDPOINT en https comme on le souhaite.
J'ai suivi également la doc pour reconstruire le frontend (pas clair que ce soit encore nécessaire, en tout cas je l'ai fait).
J'ai toujours la même erreur avec geonature ;
Mixed Content: The page at 'https://geonature.mercantour.eu/geonature/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://geonature.mercantour.eu/geonature/api/gn_commons/config'. This request has been blocked; the content must be served over HTTPS.
Aussi une erreur avec usershub:
Mixed Content: The page at 'https://geonature.mercantour.eu/usershub/login' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://geonature.mercantour.eu/usershub/pypn/auth/login'. This request has been blocked; the content must be served over HTTPS.
J'ai essayé de comprendre ce que fait le code frontend/src/app/services/config.service.ts
Il fait un premier appel https://geonature.mercantour.eu/geonature/assets/config.json pour récupérer l'API endpoint
{
"API_ENDPOINT" : "http://geonature.mercantour.eu/geonature/api"
}
puis il utilise cet endpoint pour la suite.
Dans mon cas, assets/config.json n'a pas été correctement mis à jour et l'endpoint connu du client en'est pas le bon.. Fausse manip de ma part ou problème de build? Où est ce que je dois chercher ce fichier ou le code qui répond à cette API ?
merci d'avance
from geonature.
Je vois le fichier config.json dans frontend/src/assets/config.json (et frontend/dist/assets/) .
Est-ce que je suis sensé mettre à jour moi-même ce fichier? Je n'ai pas vu cela mentionné dans la doc, et on pourrait penser que c'est fait automatiquement.
from geonature.
La release note de la 2.12.0 dit :
Configuration dynamique du frontend : le frontend récupère dynamiquement sa configuration depuis le backend. Pour cela, il nécessite uniquement l’adresse de l’
API_ENDPOINT
qui doit être renseignée dans le fichierfrontend/src/assets/config.json
. En conséquence, il n’est plus nécessaire de rebuilder le frontend lors d’une modification de la configuration de GeoNature ou de ses modules (#2205).
Je n'ai pas vu cette précision dans la doc d'installation , et surtout je n'ai pas édité à la première installation le fameux fichier frontend/assets/config.json
qui a été créé automatiquement à partir du template et de la valeur donnée dans le fichier de config général (c'est très bien ainsi).
J'ai l'impression que la modification après coup de API_ENDPOINT
n'est pas bien prise en compte et que la mise à jour du fichier frontend/src/assets/config.json
a été oubliée.
from geonature.
On n'est pas censé modifier à la main le fichier frontend/src/assets/config.json
, mais on n'a pas documenté comment répercuter cette mise à jour.
Le plus propre est certainement de relancer le script d'installation du frontend qui se charge notamment de renseigner ce fichier : https://github.com/PnX-SI/GeoNature/blob/master/install/05_install_frontend.sh#L67-L70
from geonature.
Ben non justement.
Pour que cela marche, il faudrait que le script que tu mentionnes écrase systématiquement le fichier config avec le template.(ligne 64). Parce que sinon (lorsque le fichier config.json a déjà été créé) la commande sed ne va rien trouver à remplacer.
Tel que c'est écrit, ça marche la première fois, seulement.
from geonature.
Erreur de ma part, je pensais que le script remplacer la valeur de API_ENDPOINT
dans le fichier config.json
... En fait, il remplace une chaîne de caractère bien précise ... "API_ENDPOINT"
que l'on peut voir dans le config.json.sample
.
Du coup, plusieurs solutions:
- 1ère solution : renommer le fichier
frontend/src/assets/config.json
parfrontend/src/assets/config.json_backup
. Relancer, le scriptinstall/05_install_frontend.sh
. - 2ème solution : récupérer l'adresse de l'api avec la commande
geonature get-config API_ENDPOINT
et l'indiquer à la main dans le fichierconfig.json
existant.
from geonature.
Si, actuellement, si on change d'URL ou qu'on passe en HTTPS, il est nécessaire de modifier ce fichier.
Avant la configuration du frontend était synchronisée via une commande backend et comme on a souhaité réduire au maximum l'adhérence en le backend et le frontend, elle est désormais servie par une API.
La seule chose dont le frontend a besoin de savoir, c'est l'URL de base de cette API, ça me parait normal de devoir modifier ce paramètre côté frontend. Le problème est qu’actuellement, ce paramètre est à deux endroits donc ça fait de la confusion. A étudier, mais je ne suis pas sur que le backend ai besoin de connaître sa propre adresse
from geonature.
Je viens de faire un rapide test avec l'URL sans spécifier le protocole dans le fichier config.json et ça fonctionne. Ne serait-ce pas une solution plus générique ?
{"API_ENDPOINT": "//geonature.demo.dbwildlife.info/api"}
from geonature.
@vprunet, le problème est résolu ?
@hypsug0, ça peut être une solution en effet ! A voir quel protocole il utilise par défaut.
from geonature.
A voir si on fait évoluer le script 05_install_frontend.sh pour qu'il puisse être relancé et mettre à jour ce fichier, ou alors si on indique dans la doc de modifier ce fichier manuellement si on modifie l'URL.
from geonature.
ça me parait un peu lourd de relancer toute l'installation du frontend juste pour modifier un paramètre de conf. Pour moi il faut indiquer dans le doc que si on modifie l'URL de son API, il faut le spécifier dans ce fichier de conf frontend
Oui, mais c'est dommage de demander à l'administrateur de saisir un paramètre de configuration que l'on sait inférer de la configuration du backend (paramètre qu'on n'a d'ailleurs pas demandé lors de l'installation initiale).
from geonature.
Depuis la version 2.11, une séparation du frontend et du backend s'est effectuée dans la cadre de la dockerisation de GeoNature (#2088). Par conséquent, il n'est pas possible de (ré) inclure une commande (ou autres solutions) depuis le backend.
Pour moi, une solution serait d'intégrer un item dans la FAQ sur le changement d'URL d’accès à GeoNature.
from geonature.
J'ai essayé la proposition de @hypsug0 de configurer le frontend avec une url sans scheme (dans le fichier frontend/dist/assets/config.json). Cela fonctionne.
Cela marche même avec une url relative comme ci-dessous:
{
"API_ENDPOINT" : "/geonature/api"
}
ce qui permet en principe de passer de http à https, de changer le nom de domaine ou même d'accepter plusieurs noms de domaine sans avoir à toucher à la configuration du frontend.
Par contre impossible de configurer le backend avec une url de ce type à cause de la validation marshmallow, qui par défaut exige une url complète. https://marshmallow.readthedocs.io/en/latest/marshmallow.fields.html#marshmallow.fields.Url
Vous semble-t-il envisageable d'autoriser les url relatives dans la configuration, d'en profiter pour définir des url par défaut (/geonature /geonature/api /usershub, ...) et de revoir les scripts d'installation pour qu'ils acceptent ces url ?
from geonature.
Le script "install/05_install_frontend.sh" se charge désormais de mettre à jour l'URL si on le relance et la doc a été complétée sur le sujet.
from geonature.
Related Issues (20)
- La version de taxref n'apparaît pas dans les nouvelles observations occtax HOT 2
- Doit-on supprimer le stockage de la version de TaxRef dans les données dans Synthèse et dans les occurrences OccTax HOT 8
- [IMPORT][FRONTEND] Afficher le nom du champ du standard SINP pour une colonne importée HOT 1
- [INSCRIPTION] L'inscription renvoie une erreur 500 HOT 6
- [OCCHAB] Missing forms
- [OCCHAB] Ajout champs pour matcher avec le standard V1 sur la saisie de données d'habitat
- OccHab en retard par rapport à OccTax, des développements prévus ? HOT 3
- Celery - SQLAlchemy : problème de fermeture de session HOT 1
- Question Validation - Statut Certain - très probable HOT 2
- Paramêtrage champs additionnels html HOT 4
- la route `/geo/areas` ne gère plus le filtre par `type_code` multiple HOT 3
- [module occtax] définir heure par défaut pour les relevés HOT 2
- [module occtax] possibilité de sélectionner plusieurs points de relevés sur la carte HOT 2
- [module métadonnées] - propositions d’évolutions pour le cadre d’acquisition parent HOT 6
- [Module Metadonnées] Suivi de cadre d'acquisition
- Passage à 2.14.1 - Problème de migrations HOT 6
- [IMPORT] [RAPPORT] Faire que le niveau de zoom du graphique dans la section "Données importées" s'ajuste à l'espace qui lui est attribué
- Pb d'accès après Installation certif ssl HOT 4
- [IMPORT][LISTE] Reprise des informations concernant les nombres de lignes et d'entités importées dans la liste des imports HOT 5
- [Synthèse] Filtre complémentaire "Saisie par" -> no items found HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from geonature.