PnX-SI / gn_mobile_occtax

Application mobile pour la saisie dans le module Occtax de GeoNature
GNU General Public License v3.0
13 stars 5 forks source link

Question : SSL #256

Closed coder-pour-changer-de-vie closed 5 months ago

coder-pour-changer-de-vie commented 6 months ago

Bonjour,

L'application mobile nécessite obligatoire une connexion SSL valide.

Est-il possible de passer l'application en mode HTTP dans le cadre d'une évolution de l'application mobile ?

L'idée est de pouvoir, sur la même machine, réaliser des évolutions de l'application avec un serveur GeoNature lancé en mode développement via la commande "geonature back-dev".

Cela éviterait d'avoir à configurer un certificat SSL pour une connexion localhost uniquement.

La version de geonature utilisé est la 2.14.0, et la 2.6.2 pour l'application mobile.

En mode développement, Werkzeug (le serveur web utilisé par Flask) offre la possibilté de gérer des certificats "Adhoc" :

https://werkzeug.palletsprojects.com/en/3.0.x/serving/#quickstart

"The easiest way to enable SSL is to start the server in adhoc-mode. In that case Werkzeug will generate an SSL certificate for you:

run_simple('localhost', 4000, application, ssl_context='adhoc') " Cela pourrait fonctionner, mais en regardant les issues en lien avec SSL, je crois comprendre que l'application mobile nécessitera un certificat non auto généré.

Du coup, quel est le flux de travail recommandé lorsqu'on développe sur l'application mobile ?

Faut-il utiliser un serveur "d'intégration" avec une configuration basé sur Apache" ou existe-t-il un mode "by pass" pour se faciliter la vie en mode développement (le tout sur la même machine en local) ?

D'avance merci pour le coup de pouce :-)

Nicolas.

sgrimault commented 6 months ago

Bonjour @coder-pour-changer-de-vie,

Le plus simple est de rajouter uniquement en mode debug, la configuration réseau pour "bypasser" la sécurité et accepter des connexions en clair sur certaines URL (comme localhost) : Dans le répertoire occtax/src/debug/res/xml, ajouter le fichier network_security_config.xml comme suit, à adapter selon vos besoin :

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">geonature.fr</domain>
    </domain-config>
</network-security-config>

Puis toujours en mode debug, d'ajouter une version spécifique du fichier AndroidManifest.xml comme suit dans le répertoire occtax/src/debug pour indiquer la configuration réseau :

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:name=".MainApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:theme="@style/AppTheme"
        android:networkSecurityConfig="@xml/network_security_config"
        tools:ignore="AllowBackup,GoogleAppIndexingWarning">
    </application>

</manifest>

Cette configuration ne sera active que pour le mode debug sans affecter le comportement par défaut de l'application.

Vous aurez plus d'information sur cette configuration ici.

coder-pour-changer-de-vie commented 6 months ago

Merci beaucoup ! Je vais tester tout ça, c'est top !

coder-pour-changer-de-vie commented 6 months ago

Bonjour,

j'ai bien appliqué les paramètres spécifiques en debug, merci !

je rencontre deux difficultés, peut-être associées (pas sûr).

1) Modification de l'url dans l'application en cours d'exécution

j'ai lancé l'application en mode debug, et dans l'écran de settings j'ai indiqué l'adresse de mon instance locale de géonature (lancé via geonature dev-back)

Depuis, l'application plante au démarrage.

2) Je pense que l'instance de TaxHub n'est pas en exécution

TaxHub a été installé avec l'instance locale de Geonature sur une machine de développement debian virtualisée (où tourne également l'appli mobile avec Android studio)

Mais j'ai le sentiment que j'aurais du l'installer séparément afin de pouvoir la lancer via "flask run" comme indiqué ici (en bas de page) :

https://taxhub.readthedocs.io/fr/latest/installation.html

Voici ma configuration :

geonature front : http://192.168.1.30:4200 geonature back : http://192.168.1.30:8000 (lancé via la commande geonature back-dev)

d'après la commande get-config taxhub est configuré pour répondre ici : http://192.168.1.30:5000/api

mais malheuresement il n'est pas lancé sur ce port / endpoint

NB : systemclt m'indique que le service taxhub est bien présent (je peux le stopper)

Questions :

**a) Quelle est la meilleure approche pour disposer de taxhub quand on utilise geonature lancé avec l'option dev-back et que l'on souhaite développer une fonctionnalité sur l'application mobile ?

b) Comment faire pour changer les paramètres de settings de l'application mobile afin qu'elle ne crash pas au démarrage (et quels logs surveiller) ?

c) dois-je réinstaller taxhub en standalone ?**

PS : j'ai bien configuré le fichier de setting côté serveur dans geonature (settings.json) ainsi que l'APK, correspondant à la conguration nécessaire dans l'interface d'admin geonature

D'avance un grand merci pour vos retour, je pense passer à côté de quelque chose de simple,

mais pour le savoir, il faut demander :-) Nicolas.

coder-pour-changer-de-vie commented 5 months ago

Bonjour,

pour faciliter le processus de dev, un serveur VPS d'intégration a été déployé avec le support https,

l'instance Geonature n'est donc plus en local sur la VM de développement, ce qui résoud le problème.

Pour les logs, la procédure est indiquée dans la documentation installation-fr.adoc

Concernant le fait d'être bloqué avec une ancienne configuration saisie via le menu settings de l'application (plantage de l'application au démarrage), voici l'analyse et le contournement mis en place pour débloquer la situation :

1) Analyse du fichier de configuration json et de la base sqlite présent en local sur l'émulateur Android

=> ne contenait pas les valeurs saisies dans l'application

=> à priori ces valeur sont stockées dans un cookie local au niveau de l'API réseau.

2) solution

=> les bonnes valeurs (https vers le serveur VPS) ont été saisies en dur dans le code afin de lancer l'application et de pouvoir les saisire dans l'écran de settings

=> remise en place du code initial

NB : il aurait été possible à priori de faire un cookie.clear, mais cette solution de contournement était plus rapide.

Si à terme ça peut aider quelqu'un d'autre, voici la piste suivie ;-)

camillemonchicourt commented 5 months ago

A noter en passant qu'Occtax-mobile est publié sous licence libre GPL v3 (https://github.com/PnX-SI/gn_mobile_occtax/blob/master/LICENSE). Celle-ci impose que tous les développements et évolutions de l'outil soient publiés sous la même licence. Est-ce prévu pour le travail que vous réalisé ? Où celui-ci est-il disponible et publié ?