Pinaute / OctoPrint_FreeMobile-Notifier

Octoprint plugin for print completion notifications using Free (Free is a French telecommunications company)
GNU Affero General Public License v3.0
1 stars 3 forks source link

Mise à jour #7

Closed ludo453 closed 3 years ago

ludo453 commented 3 years ago

Salut,

Ca ne fonctionne plus depuis les dernières mise à jour octoprint.

Prévois tu une mise à jour ?

Merci

Pinaute commented 3 years ago

Salut,

Le problème vient de chez Free. Le certificat SSL de l'API a expiré.

$ curl "https://smsapi.free-mobile.fr"
curl: (60) SSL certificate problem: certificate has expired
ludo453 commented 3 years ago

Salut,

Merci

Je n'ai pas penser à ça. On peut faire quelque chose ?

Bonne journée

Pinaute commented 3 years ago

remplacer la ligne : https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/blob/4968dab515a19b8ee80482cc928159b15e54eaaf/octoprint_freemobilenotifier/__init__.py#L91

par :request.urlopen(url, context=ssl._create_unverified_context())

source https://stackoverflow.com/questions/19268548/python-ignore-certificate-validation-urllib2

ludo453 commented 3 years ago

OK je regarde ça merci -------- Message d'origine --------De : Antoine Cavard @.> Date : 24/06/2021 12:23 (GMT+01:00) À : Pinaute/OctoPrint_FreeMobile-Notifier @.> Cc : ludo453 @.>, Author @.> Objet : Re: [Pinaute/OctoPrint_FreeMobile-Notifier] Mise à jour (#7) remplacer la ligne : https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/blob/4968dab515a19b8ee80482cc928159b15e54eaaf/octoprint_freemobilenotifier/__init__.py#L91 par :request.urlopen(url, context=ssl._create_unverified_context())

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

ludo453 commented 3 years ago

Je ne vois pas ou le faire. Dans le pluggins sur l'octoprint ?

ludo453 commented 3 years ago

j'ai réinstaller et rien ça ne fonctionne pas de mon coté.

Mais ça ne viendrai pas du faite que je suis je crois sur Python 3 ?

De: "Antoine Cavard" @.> À: "Pinaute/OctoPrint_FreeMobile-Notifier" @.> Cc: "ludovic durousseau" @.>, "Author" @.> Envoyé: Jeudi 24 Juin 2021 12:23:21 Objet: Re: [Pinaute/OctoPrint_FreeMobile-Notifier] Mise à jour (#7)

remplacer la ligne : [ https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/blob/4968dab515a19b8ee80482cc928159b15e54eaaf/octoprint_freemobilenotifier/__init__.py#L91 | https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/blob/4968dab515a19b8ee80482cc928159b15e54eaaf/octoprint_freemobilenotifier/__init__.py#L91 ]

par : request.urlopen(url, context=ssl._create_unverified_context())

— You are receiving this because you authored the thread. Reply to this email directly, [ https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/issues/7#issuecomment-867522517 | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/AUB4EQC6FTUENCW3EFNKDZLTUMBRTANCNFSM47HFMOCQ | unsubscribe ] .

Pinaute commented 3 years ago

Ça fonctionne pour moi.

Tu as ajouté la lib ssl ?

import ssl
ludo453 commented 3 years ago

OK normalement oui Mais tu peux faire une mise à jour sinon avec le changement ? -------- Message d'origine --------De : Antoine Cavard @.> Date : 24/06/2021 18:52 (GMT+01:00) À : Pinaute/OctoPrint_FreeMobile-Notifier @.> Cc : ludo453 @.>, Author @.> Objet : Re: [Pinaute/OctoPrint_FreeMobile-Notifier] Mise à jour (#7)

Ça fonctionne pour moi.

Tu as ajouté la lib ssl ?

import ssl

—You are receiving this because you authored the thread.Reply to this email directly, view it on GitHub, or unsubscribe.

ludo453 commented 3 years ago

La je ne comprend plus rien dit moi ou et comment ajouter la ligne request.urlopen(url, context=ssl._create_unverified_context())

Et comment vérifier la lib ssl

La dessus je n’ai rien toucher

De : Antoine Cavard @.> Envoyé : jeudi 24 juin 2021 18:52 À : Pinaute/OctoPrint_FreeMobile-Notifier @.> Cc : ludo453 @.>; Author @.> Objet : Re: [Pinaute/OctoPrint_FreeMobile-Notifier] Mise à jour (#7)

Ça fonctionne pour moi.

Tu as ajouté la lib ssl ?

import ssl

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/issues/7#issuecomment-867798088 , or unsubscribe https://github.com/notifications/unsubscribe-auth/AUB4EQBWBHMD6467YKUBFZDTUNPC5ANCNFSM47HFMOCQ . https://github.com/notifications/beacon/AUB4EQCR7VR6LFNO564LQH3TUNPC5A5CNFSM47HFMOC2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOGO4YYSA.gif

Pinaute commented 3 years ago

OK normalement oui Mais tu peux faire une mise à jour sinon avec le changement ?

Je ne vais pas faire le changement dans le projet officiel du plugin. Ne pas vérifier la validité du certificat introduit une faille de sécurité. Libre à chacun de faire le changement de son coté.

Le problème vient de chez Free, dans quelque jours le problème sera peut-être résolut.

La je ne comprend plus rien dit moi ou et comment ajouter la ligne request.urlopen(url, context=ssl._create_unverified_context())

A la racine du plugin, tu peux remplacer le fichier __init__.py par celui ci-dessous. J'ai ajouté l'import de la lib ssl et l'option pour ignorer la vérification du certificat.

Clique ici pour voir le fichier __init__.py

```python # coding=utf-8 from __future__ import absolute_import import os import sys import ssl import octoprint.plugin from future import standard_library standard_library.install_aliases() from urllib import request,parse class FreemobilenotifierPlugin(octoprint.plugin.EventHandlerPlugin, octoprint.plugin.SettingsPlugin, octoprint.plugin.AssetPlugin, octoprint.plugin.TemplatePlugin): #~~ SettingsPlugin def get_settings_defaults(self): return dict( login="", pass_key="", print_events=dict( PrintStarted=dict( Enabled=False, Message="A new print has started! - Filename: {filename}", ), PrintFailed=dict( Enabled=False, Message="Oh no! The print has failed... - Filename: {filename}", ), PrintCancelled=dict( Enabled=False, Message="Uh oh... someone cancelled the print! - Filename: {filename}", ), PrintDone=dict( Enabled=True, Message="Print finished successfully! - Filename: {filename}, Time: {time}", ), PrintPaused=dict( Enabled=False, Message="Printing has been paused... - Filename: {filename}", Color="warning", ), PrintResumed=dict( Enabled=False, Message="Phew! Printing has been resumed! Back to work... - Filename: {filename}", ), ), ) def get_settings_version(self): return 1 #~~ TemplatePlugin def get_template_configs(self): return [dict(type="settings", name="FreeMobile Notifier", custom_bindings=False)] def on_event(self, event, payload): events = self._settings.get(['print_events'], merged=True) if event in events and events[event] and events[event]['Enabled']: login = self._settings.get(['login']) if not login: self._logger.exception("Free login is not set!") return pass_key = self._settings.get(['pass_key']) if not pass_key: self._logger.exception("Free key is not set!") return filename = payload["name"] message = {} ## event settings event = self._settings.get(['print_events', event], merged=True) import datetime import octoprint.util if "time" in payload and payload["time"]: elapsed_time = octoprint.util.get_formatted_timedelta(datetime.timedelta(seconds=payload["time"])) else: elapsed_time = "" message = parse.quote(event['Message'].format(**{'filename': filename, 'time':elapsed_time})) login = self._settings.get(["login"]) pass_key = self._settings.get(["pass_key"]) url = 'https://smsapi.free-mobile.fr/sendmsg?&user='+login+'&pass='+pass_key+'&msg='+message try: request.urlopen(url, context=ssl._create_unverified_context()) except Exception as e: # report problem sending sms self._logger.exception("SMS notification error: %s" % (str(e))) else: # report notification was sent self._logger.info("Print notification sent to %s" % (self._settings.get(['login']))) else: self._logger.debug("SMS not configured for event.") return ##~~ Softwareupdate hook def get_update_information(self): return dict( freemobilenotifier=dict( displayName="FreeMobile Notifier", displayVersion=self._plugin_version, # version check: github repository type="github_release", user="Pinaute", repo="OctoPrint_FreeMobile-Notifier", current=self._plugin_version, # update method: pip pip="https://github.com/Pinaute/OctoPrint_FreeMobile-Notifier/archive/{target_version}.zip" ) ) __plugin_name__ = "FreeMobile Notifier" __plugin_pythoncompat__ = ">=2.7,<4" # python 2 and 3 def __plugin_load__(): global __plugin_implementation__ __plugin_implementation__ = FreemobilenotifierPlugin() global __plugin_hooks__ __plugin_hooks__ = { "octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information } ```

Pinaute commented 3 years ago

Ensuite redémarre le serveur pour prendre en compte les changements.

ludo453 commented 3 years ago

Salut OK je vais voir ça Pour freemobile je l'utilise autre part et ça ne me dit pas que le certificat est périmée Et pour faire ça sur la racine du pluggins il faut le faire dans octoprint depuis un accès ssh ?Merci

ludo453 commented 3 years ago

Salut Normalement le certificat est ok maintenant.

Pour toi c'est ok ?