FitTrackee : Les manques

Pour moi voici les manques :

  1. Stockage du rythme cardiaque.
    1. Pas de calcul du TRIMPTRIMP = T (min) * k * IFC avec :
      • T le temps de l’entrainement en minutes
      • k le facteur de pondération
      • IFC l’intensité de l’exercice avec la fréquence cardiaque.
  2. Pas de partage des activités (Mastodon ou autres).
  3. Pas de photo pour les activités.(1 à 5 .. pas plus).
  4. Pas d’intégration de tous les sports : Tennis, Yoga, Padel, ….
  5. Stockage du poids et courbe sur le suivi.
  6. Ajout de mots clés : Compétition, ITRA, …

Très bon logiciel à suivre :

 

FitTrackee & Apache 2 : Problème OAuth 2.0

J’avais un problème avec le soft : https://github.com/Dryusdan/garmin-to-fittrackee .

En fait c’était un problème de configuration sur apache2 (qui me permet de faire la gestion des certificats), j’ai donc fait :

# /usr/sbin/a2enmod headers
Enabling module headers.
To activate the new configuration, you need to run:
  systemctl restart apache2

Ajout d’un paramètre dans mon fichier de conf

<VirtualHost>
<IfModule>
...
RequestHeader set X-Forwarded-Proto "https"
...
ErrorLog ${APACHE_LOG_DIR}/error.fit-ssl.log
CustomLog ${APACHE_LOG_DIR}/access.fit-ssl.log combined
...
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/fit.cyber-neurones.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/fit.cyber-neurones.org/privkey.pem
</VirtualHost>
</IfModule>

Pour finir :

# systemctl restart apache2

Ensuite j’ai fait la synchro, pas de problème :

# garmin2fittrackee setup fittrackee
Client id: chutunsecret
Client secret: 
Fittrackee domain: fit.cyber-neurones.org
Please go to 
https://fit.cyber-neurones.org/profile/apps/authorize?response_type=.... and authorize access.

Enter the full callback URL from the browser address barafter you are redirected and press : https://localhost/?code=....

[04/27/25 17:13:33] INFO     Logging successfull. Saving configuration fittrackee __web_application_flow  

Merci à :
https://social.dryusdan.fr/@Dryusdan
https://fosstodon.org/@FitTrackee

Et merci à la doc : https://docs.fittrackee.org/en/oauth.html#flow même si sur la doc il est question plus de NGNIX que d’APACHE2.

Bref le problème c’était moi.

J’ai testé FitTrackee pour vous .

J’ai longtemps hésité entre FitTrackee ( https://github.com/SamR1/FitTrackee ) et workout-tracker ( https://github.com/jovandeginste/workout-tracker  )

Et je voulais la synchronisation automatique ( Garmin ou Strava ), donc j’ai pris FitTrackee :

J’ai donc monté une VM sur mon proxmox, pas trop de problème pour faire l’installation. Sauf qu’il était impossible de faire fonctionner la synchronisation :

Traceback (most recent call last):
  File "fittrackee_venv/lib/python3.11/site-packages/flask/app.py", line 1511, in wsgi_app
    response = self.full_dispatch_request()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/flask/app.py", line 919, in full_dispatch_request
    rv = self.handle_user_exception(e)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/flask/app.py", line 917, in full_dispatch_request
    rv = self.dispatch_request()
         ^^^^^^^^^^^^^^^^^^^^^^^
  File "/fittrackee_venv/lib/python3.11/site-packages/flask/app.py", line 902, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/fittrackee/oauth2/resource_protector.py", line 103, in decorated
    return f(auth_user, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/fittrackee/oauth2/routes.py", line 570, in authorize
    response = authorization_server.create_authorization_response(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/authlib/oauth2/rfc6749/authorization_server.py", line 288, in create_authorization_response
    request = self.create_oauth2_request(request)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/authlib/integrations/flask_oauth2/authorization_server.py", line 75, in create_oauth2_request
    return FlaskOAuth2Request(flask_req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "fittrackee_venv/lib/python3.11/site-packages/authlib/integrations/flask_oauth2/requests.py", 
line 12, in __init__
    super().__init__(request.method, request.url, None, request.headers)
  File "fittrackee_venv/lib/python3.11/site-packages/authlib/oauth2/rfc6749/requests.py", line 12, in __init__
    InsecureTransportError.check(uri)
  File "fittrackee_venv/lib/python3.11/site-packages/authlib/oauth2/rfc6749/errors.py", line 65, in check
    raise cls()
authlib.oauth2.rfc6749.errors.InsecureTransportError: insecure_transport: OAuth 2 MUST utilize https.

J’ai pourtant bien mon url en HTTPS. Ensuite j’ai voulu mettre dans env.cfg

export OAUTHLIB_INSECURE_TRANSPORT=True
export OAUTHLIB_INSECURE_TRANSPORT=1

Pas mieux .

Bref, je vais devoir trouver mieux.