Seite 1 von 1
htaccess abfragen geht aber Router blockt bei neuem Passwort
Verfasst: Montag 30. Juni 2014, 17:05
von Gerhard.S
Jetzt mal ein komisches Phänomen
ich habe eine Routine in der User und Passwort abgefragt werden über die htaccess / htpasswd um in den geschützten Bereich zu kommen und eine Datei abzufragen
funktioniert auch bei 90% (leider nur)
bei einigen Leuten sperrt der Router sämtliche Verbindung auf meinen Server IPTVxtra.net bei einem Passwortwechsel, nur ein Router Reset hilft
kennt jemand ein solches Phänomen oder ist mein Code nicht ganz richtig?
gruß Gerhard
Code: Alles auswählen
if not user or user == "xbmcuser":
url = std_url + "xbmc/xml_list/" + file
else:
url = std_url + "xbmc/xml_save/" + file
urlsave = urllib2.HTTPPasswordMgrWithDefaultRealm()
urlsave.add_password(None, url, user, pwd)
authhandler = urllib2.HTTPBasicAuthHandler(urlsave)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
response = urllib2.urlopen(url)
link=response.read()
response.close()
return link
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Montag 30. Juni 2014, 17:26
von snafu
@Gerhard.S: Keine direkte Antwort auf deine Frage, aber das ``urllib2``-Modul hat eine äußerst bescheidene API. Oft wird als Alternative dazu das
requests-Modul empfohlen, welches auch ich dir ans Herz legen möchte. Es ist zwar nicht aus der Standardbibliothek, aber es wird dich auf Dauer sicherlich glücklicher machen.
Hier übrigens ein schönes Beispiel als Vergleich zwischen ``urllib2``-Code (oben) und ``requests``-Code (unten), der im Übrigen fast das selbe wie dein Codeausschnitt macht.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Montag 30. Juni 2014, 17:43
von Gerhard.S
@snafu - Danke für den Tip
aber was ich nicht verstehen kann wie so ein Code den Router beeinflussen kann, schreibt der sich irgendwas in den cache bei einem Passwortwechsel
der Fehler kommt nur vor wenn Zugangsdaten gewechselt werden ansonsten nicht
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Montag 30. Juni 2014, 18:02
von Gerhard.S
@snafukann - kann man aus dem requests Paket auch einzelne Teile (*.py) rauspicken oder muss das ganze Paket installiert werden
das obere Code ist aus einem XBMC Addon und da ist es unmöglich bei allen das Paket zu installieren
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Montag 30. Juni 2014, 18:10
von snafu
Das ``requests``-Package ist über mehrere Module verteilt aufgebaut. Du müsstest vermutlich eher den Code für die relevanten Teile nachbauen. Aber dann kann man auch gleich bei ``urllib2`` bleiben. Der Sinn von ``requests`` ist ja vor allem, den benötigten Code hinter einer schönen API zu verstecken. Es ist ja nicht so, dass das, was ``requests`` macht, allein nur mit ``requests`` möglich wäre. Das wäre ja schon rein logisch ein ziemlicher Widerspruch.
Wenn du bestimmte Dinge öfter in deinem Programm brauchst, dann kannst du die aber natürlich als Hilfsfunktionen auslagern, die du dann verwendest.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Montag 30. Juni 2014, 18:23
von Sirius3
@Gerhard.S: Du kannst Pakete auch direkt in Deinen Code aufnehmen, macht requests z.B. mit urllib3.
Zum Thema: Gibt es das gleiche Problem mit einem Browser? Was sagen die Server-logs?
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 06:12
von Gerhard.S
@Sirius3
wird direkt im Router geblockt, mit dem Browser kommen die auch nicht mehr auf den Server
keinerlei Eintrag in den Logs vom Server
ein Ping vom PC z.B. auf die IP vom Server ist auch negativ,
was ich heute erfahren habe, mit einem Proxy geht die Verbindung wieder auf den Server
ist doch aber auch keine Lösung, das Addon über einen Proxy laufen zu lassen,
mit dem Browser kommt man dann trotzdem nicht auf die HP
ich habe jetzt schon einen Header mit eingesetzt aber ich trau mich nicht das so wieder bereitzustellen
Code: Alles auswählen
url.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
ich habe aber keine Ahnung was da passiert im Router
urllib3 schaue ich mir an, weiß aber auch nicht ob die dann das selbe tut
sorry was meinst du mit Pakete
gruß Gerhard
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 08:27
von Gerhard.S
urllib3 funktioniert prächtig, sind auch nur noch 3 Zeilen
was ich auch noch festgestellt habe, beim Mitschnitt des Aufrufs - die einzulesende Datei wurde vorher 2x aufgerufen - jetzt nur 1x
hoffentlich gehts auch bei den anderen :K
Code: Alles auswählen
http = urllib3.PoolManager()
headers = urllib3.util.make_headers(basic_auth= user + ':' + pwd)
link = http.request('GET', url, headers=headers)
return link.data
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 08:38
von jerch
@Gerhard.S:
Ich rate Dir, die Verwendung von BasicAuth nochmal zu überdenken, wenn die Nutzernamen und Passwörter halbwegs sicher sein sollen/müssen.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 10:18
von Gerhard.S
@jerch - weil alles im Klartext übermittelt wird ?
habe ich mir auch schon überlegt,
eine weitere Möglichkeit die ich mir noch überlegt habe mit basic auth oder auch nicht, eine php Abfrage ob passwort und user richtig ist (md5 verschlüsselt)
aber ich habe noch ne Frage zur urllib3:
bei einem Fehler z.B. 401 kann ich ja keine Abfrage (except urllib3.exceptions.HttpError, e:)wie bei der normalen urllib machen (except urllib2.URLError, e:), irgendwie kommt gar kein Fehler im Vergleich zur urllib
sondern ich kann vor dem übergeben des link eine Abfrage starten, dann fällt try /except weg
Code: Alles auswählen
if link.data.find('401') > 0:
exitcode = "1"
xbmc.executebuiltin('XBMC.Notification(Netzwerkfehler HTTP-401 , Passwort oder User ist sehr wahrscheinlich verkehrt ,25000,'+net+')')
sys.exit(0)
oder gibts ne andere Lösung?
gruß Gerhard
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 12:47
von jerch
@Gerhard.S:
Zum einen wegen Klartext, desweiteren posaunt der Browser mit jeder Verbindung zu diesem Host die Credentials mit und damit er das kann, muss er Name/Passwort zumindest temporär speichern. Unter Sicherheitsaspekten betrachtet alles nicht so dolle. Ich würd da auch das Rad nicht neu erfinden, sondern einfach auf HTTPS+Sessioncookie+Passworthashing setzen.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 13:22
von Gerhard.S
@jerch - ich denke darüber nach, denn ich wollte auch das sich nur jeder Benutzer einmal anmelden kann,
allerdings in einem anderen Programm, da muss ich eh mit sessions arbeiten
hier noch die Fehlerroutine die ich im Moment eingebaut habe, evtl. kanns jemand brauchen
Code: Alles auswählen
try:
..........
if link.data.find('<epg>') > 0: # wenn xml gefunden wurde, gehts weiter an anderer Stelle
return link.data
elif link.data.find('401 Authorization Required') > 0:
xbmc.executebuiltin('XBMC.Notification(Netzwerkfehler HTTP-401 , Passwort oder User ist sehr wahrscheinlich verkehrt ,25000,'+net+')')
sys.exit(0)
elif link.data.find('404 Not Found') > 0:
xbmc.executebuiltin('XBMC.Notification(Netzwerkfehler HTTP-404 , IPTVxtra.net Server nicht gefunden ,25000,'+net+')')
sys.exit(0)
elif link.data.find('403 Forbidden') > 0:
xbmc.executebuiltin('XBMC.Notification(Netzwerkfehler HTTP-403 , Verbotener Zugriff auf IPTVxtra.net ,25000,'+net+')')
sys.exit(0)
elif link.data.find('Internal Server Error') > 0:
xbmc.executebuiltin('XBMC.Notification(Netzwerkfehler HTTP-500 , Interner Server-Fehler bei IPTVxtra.net ,25000,'+net+')')
sys.exit(0)
else:
xbmc.executebuiltin('XBMC.Notification(allgemeiner Netzwerkfehler , pruefe dein Netzwerk oder die Routerkonfiguration,25000,'+net+')')
sys.exit(0)
except urllib3.exceptions.MaxRetryError, e:
xbmc.executebuiltin('XBMC.Notification(allgemeiner Netzwerkfehler , pruefe dein Netzwerk oder die Routerkonfiguration,25000,'+net+')')
sys.exit(0)
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 13:31
von BlackJack
@Gerhard.S: Das sieht etwas unschön aus mit den ganzen Wiederholungen. Enthaltensein einer Zeichenkette ist deutlicher mit ``if a in b`` statt ``if b.find(a) > 0``.
Allerdings würde ich da nicht im Text nach den Fehlern suchen, denn der Fehlercode wird ja vom Webserver auch im Header übertragen. Das ist sicherer und der vorgesehene Ort diese Information abzufragen.
Die ganzen Wiederholungen kann man durch ein Wörterbuch das HTTP-Fehlernummern auf Antworten abbildet vermeiden.
Ein Rückgabewert von 0 bei Prozessen ist eigentlich die übliche Konvention wenn alles glatt gelaufen ist. Wenn ein Programm aufgrund eines Fehlers abbricht, würde ich da einen anderen Wert zurück geben.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 15:50
von Gerhard.S
@BlackJack - hast sicher Recht,
aber so funkts momentan auch und kommt nur einmal im ganzen Code vor, würde ich das ganze öfters brauchen würde ichs anders machen
habe mir aber bis zu diesem Zeitpunkt noch keine Gedanken gemacht, wollte nur darauf anstoßen das die urllib3 keine Http-Fehlermeldung wie bei urllib2 ausgiebt
z.B. bei xbmc machts nur ping und rechts unten steht Scriptfehler, und mit dem Zeugs oben zeigt es den genauen Fehler an, ist einfacher bei der Fehlerbehebung
gruß Gerhard
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Dienstag 1. Juli 2014, 16:02
von snafu
@Gerhard.S: Man kann das durchaus so hinklatschen, wenn es erstmal funktionieren soll. Sofern du aber nicht unter Zeitdruck stehst, solltest du das früher oder später nochmal überarbeiten entsprechend der Hinweise, die BlackJack gegeben hat. Die Entscheidung liegt natürlich bei dir, aber es wäre sicherlich keine Zeitverschwendung, zumal man durch solche Überarbeitungen auch grundsätzlich die eigenen Fähigkeiten beim Coden verbessert.
Re: htaccess abfragen geht aber Router blockt bei neuem Pass
Verfasst: Donnerstag 3. Juli 2014, 16:20
von Gerhard.S
noch mal zum Schluss:
Ich habe jetzt das requests-Paket eingebaut, da ist alles drin was das URL Herz begehrt und auch noch wesentlich einfacher zu coden.
dann habe ich mir auch die Kritik von meinem Code zu Herzen genommen und habe alles ausgebessert / umgeschrieben
jetzt läuft auch alles so wie ich es mir vorgestellt habe, logge mich nicht mehr über die .htaccess ein sondern über ein PHP Script
im Moment noch ohne sessions aber das kommt noch, da ich nur eine Anmeldung pro User und Sitzung zulassen möchte.
gruß Gerhard
und nochmal Danke für eure Tips und Hilfe