FHEM Update auf https umstellen

Begonnen von dev0, 18 Juli 2017, 21:49:25

Vorheriges Thema - Nächstes Thema

dev0

Zumindest ein Mobilfunk Provider scheint Daten bei der Übertragung zu komprimieren. Das führt zu Problemen beim FHEM Update: https://forum.fhem.de/index.php/topic,74337.0.html

Ich fände es sinnvoll die Dateien von fhem.de beim Update generell mit https zu übertragen.

rudolfkoenig

Soweit ich sehe, es reicht http gegen https in controls.txt manuell auszutauschen.

Wir koennten auch in fhem.de das zwangsweise Umleiten auf https aktivieren, wuerde aber alle ausgrenzen, die kein IO::Socket::SSL installiert haben oder gar koennen. Falls jemand Ideen hat, wie wir einen sanften Umstieg realisieren koennen, der moege sich melden.

dev0

Zitatdie kein IO::Socket::SSL installiert haben oder gar koennen
Das hatte ich nicht bedacht. Wie wäre es anfangs in 98_update.pm zu prüfen, ob IO::Socket::SSL geladen werden kann. Falls ja, dann spätestens in upd_getUrl() http://fhem.de durch https://fhem.de ersetzen. Nicht besonders schön, aber man sperrt niemanden aus.

betateilchen

Zitat von: rudolfkoenig am 19 Juli 2017, 07:34:30
Falls jemand Ideen hat, wie wir einen sanften Umstieg realisieren koennen, der moege sich melden.

*meld*



Index: 98_update.pm
===================================================================
--- 98_update.pm (revision 14744)
+++ 98_update.pm (working copy)
@@ -29,6 +29,9 @@
my $upd_nChanged;
my $upd_running;

+my $update_proto = 'http';
+eval( "use IO::Socket::SSL" );
+$update_proto .= 's' unless ($@);

########################################
sub



und dann die im control-File gefundene URL modifizieren: "http://" durch "$update_proto://" per regexp ersetzen.

Noch einfacher wäre, im control-File gar kein Protokoll anzugeben, aber das wäre nicht kompatibel zu bestehenden Installationen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Das ist zwar nett (implementiert den Vorschlag von dev0), aber vmtl. unvollstaendig, da update_proto mW nicht verwendet wird. Wenn Patch, dann bitte getestet. Oder ich habe heute eine lange Leitung :)

betateilchen

Nirgends steht, dass das ein vollständiger patch ist, aber es ist zumindest ein vollständig beschriebener Lösungsvorschlag.

Zitat von: betateilchen am 19 Juli 2017, 11:10:07
und dann die im control-File gefundene URL modifizieren: "http://" durch "$update_proto://" per regexp ersetzen.

Da Du mit von mir vorgeschlagenen regexp bisher nie zufrieden warst und sie immer anders eingebaut hast, als von mir vorgeschlagen, wollte ich diesen Teil der Lösung heute gleich Dir überlassen  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dev0

Der Patch ist in meiner Umgebung getestet und macht was er soll. Da aber gerade beim update command ein Fehler sehr unangenehm wäre, bitte selbst noch einmal checken.


Index: FHEM/98_update.pm
===================================================================
--- FHEM/98_update.pm (revision 14748)
+++ FHEM/98_update.pm (working copy)
@@ -29,6 +29,8 @@
my $upd_nChanged;
my $upd_running;

+eval "require IO::Socket::SSL";  # Forum #74387
+my $hasSSL = $@ ? 0 : 1;

########################################
sub
@@ -239,6 +241,7 @@
{
   my ($curr, $max, $src, $arg) = @_;
   my ($basePath, $ctrlFileName);
+  $src =~ s'^http://fhem\.de'https://fhem.de' if($hasSSL); # Forum #74387
   if($src !~ m,^(.*)/([^/]*)$,) {
     uLog 1, "Cannot parse $src, probably not a valid http control file";
     return;

rudolfkoenig

Ich werde das erst naechste Woche testen/einchecken, da ich in den naechsten paar Tagen evtl. nicht ausreichend Zeit fuer FHEM haben werde.

rudolfkoenig

Habe den Vorschlag nach einem kurzen Test eingecheckt.

KnutWuchtig

Hallo,
ich habe den gleichen Fehler.

Wie ist die Vorgehensweise?
Manueller Download über den Browser und dann neu installieren?
Oder den Beispielcode in die Datei 98_update kopieren?

HJL

dev0

Du kannst auch direkt in controls.txt den Link auf https umstellen, wenn Dein Update nicht durchläuft.

KnutWuchtig

Schaaade.
Bringts leider auch nichts.

Fehlermeldung:
https://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(2) to https://fhem.de:443: SSL Version SSLv2 not supported error:00000000:lib(0):func(0):reason(0)

Über Windows und Firefox kann ich ohen Probleme hierauf zugreifen:
https://fhem.de/fhemupdate/controls_fhem.txt

Achim

CoolTux

Suche mal im Forum nach

SSL Version SSLv2 not supported



Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

dev0

Zitat von: KnutWuchtig am 03 August 2017, 20:17:04
ich habe den gleichen Fehler.
Zitat von: KnutWuchtig am 04 August 2017, 10:52:36
Fehlermeldung:
https://fhem.de/fhemupdate/controls_fhem.txt: Can't connect(2) to https://fhem.de:443: SSL Version SSLv2 not supported error:00000000:lib(0):func(0):reason(0)

Du hast nicht "den gleichen Fehler". Bitte an einen passenden Thread anhängen oder einen eigenen Thread dazu beginnen.
Danke.

gichtl

#14
Zitat von: rudolfkoenig am 19 Juli 2017, 07:34:30Wir koennten auch in fhem.de das zwangsweise Umleiten auf https aktivieren, wuerde aber alle ausgrenzen, die kein IO::Socket::SSL installiert haben oder gar koennen.
Offenbar trifft das genau bei mir zu.
Ich habe seit einiger Zeit bei auf einem älteren System das Problem daß ich IO::Socket:SSL nicht installieren kann und offenbar deswegen kein update mehr funktioniert. Egal ob mit oder ohne den Parameter -noSSL bekomme ich immer folgende Fehlermeldung
update -noSSL check
Downloading http://fhem.de/fhemupdate/controls_fhem.txt
https://fhem.de:443: Can't locate IO/Socket/SSL.pm in @INC (you may need to install the IO::Socket::SSL module) (@INC contains: ./lib ./FHEM . /opt/lib/perl5/5.26) at (eval 517) line 1.
BEGIN failed--compilation aborted at (eval 517) line 1.

Anscheinend funktioniert der Parameter -noSSL nicht mehr. Gibt es eine einfache Möglichkeit den Update per http wieder ans Laufen zu bekommen?