mit welchem proggy hast das file überhaupt editiert?
Passwortschutz für das WebIf der 7025
Wir haben aktuell ein Problem mit dem Board und arbeiten an der Lösung...
-
-
mit ultraedit
hier die komplette plugin.pyZitat#3c5x9
from Plugins.Plugin import PluginDescriptor
from twisted.internet import reactor
from twisted.web2 import server, channel, static, resource, stream, http_headers, responsecode, http
from twisted.python import util
import webif
#from IRCresource import IRCModule
from GrabResource import *
sessions = [ ]def startWebserver():
class ScreenPage(resource.Resource):
def __init__(self, path):
self.path = path
def render(self, req):
global sessions
if sessions == [ ]:
return http.Response(200, stream="please wait until enigma has booted")class myProducerStream(stream.ProducerStream):
closed_callback = Nonedef close(self):
if self.closed_callback:
self.closed_callback()
stream.ProducerStream.close(self)s = myProducerStream()
webif.renderPage(s, self.path, req, sessions[0]) # login?return http.Response(stream=s)
def locateChild(self, request, segments):
path = '/'.join(["web"] + segments)
if path[-1:] == "/":
path += "index.html"path += ".xml"
return ScreenPage(path), ()class Toplevel(resource.Resource):
addSlash = Truedef render(self, req):
html='<html><head><tilte></title><link href="/webdata/theme.css" rel="stylesheet" type="text/css" /></head><body><h1>Enigma2 Webinterface</h1>'
html +="""<ul>
<li><a href="/web/">Webinterface</a></li>
<li><a href="/grab">Screenshot</a></li>
</ul>"""
html +="</body></html>"
return http.Response(responsecode.OK, {'Content-type': http_headers.MimeType('text', 'html')},stream =html)child_web = ScreenPage("/") # "/web"
child_hdd = static.File("/hdd")
#child_irc = IRCModule()
child_grab =GrabResource()
child_webdata = static.File(util.sibpath(__file__, "web-data")) # FIXME: web-data appears as webdatafrom twisted.cred.portal import Portal
from twisted.cred import checkers
from twisted.web2.auth import digest, basic, wrapper
portal = Portal(HTTPAuthRealm())
checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(root='test')
portal.registerChecker(checker)
root = wrapper.HTTPAuthResource(Toplevel(),
(basic.BasicCredentialFactory('DM7025'),digest.DigestCredentialFactory('sha','DM7025')),
portal, (IHTTPUser,))
site = server.Site(root)
reactor.listenTCP(80, channel.HTTPFactory(site))
def autostart(reason, **kwargs):
if "session" in kwargs:
global sessions
sessions.append(kwargs["session"])
returnif reason == 0:
#try:
#f = open("/tmp/logfile.log", 'w')
#from twisted.python.log import startLogging
#startLogging(f)
startWebserver()
#except Exception,e:
# print e
####################
####################
from zope.interface import Interface, implements
from twisted.cred import portalclass IHTTPUser(Interface):
passclass HTTPUser(object):
implements(IHTTPUser)class HTTPAuthRealm(object):
implements(portal.IRealm)def requestAvatar(self, avatarId, mind, *interfaces):
if IHTTPUser in interfaces:
return IHTTPUser, HTTPUser()raise NotImplementedError("Only IHTTPUser interface is supported")
#############################
#############################
def Plugins(**kwargs):
return PluginDescriptor(where = [PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc = autostart) -
Zitat
Original von 3c5x9
Moin, Moin!
Nach einiger Zeit des Selbsttesten hier nun eine Möglichkeit für das Schützen des Webinterface per Passwort. Damit ist dann http://dbox/hdd nicht mehr für die ganze Welt offen und die Box kann getrost am Netz bleiben und ne Portfreigabe nach draußen bekommen.Wie eigentlich immer sind hierfür kleine Änderungen an Dateien nötig.
1. Die angehängte Datei plugin.py kommt in das Verzeichniss /usr/lib/enigma2/python/Plugins/Extensions/Webinterface/ und ersetzt die vorhandene Datei. (oder es werden die Unterschiede meiner Datei zur CVS Datei übernommen. Ihr wisst schon .. )
2. Durch einen Bug im Twisted (http://twistedmatrix.com/trac/ticket/2041) muss eine Datei gepatch werden. In der Datei /usr/lib/python2.4/site-packages/twisted/web2/auth/wrapper.py muss in in der Zeile 100
return self.authenticate(req), seg[1: ]
in
return self.authenticate(req), seg
geändert werden. Im Gemini2 1.9 ist das nicht mehr nötig.
3. In der geänderten plugin.py sollte/könnte man sein eigenes Passwort einstellen.Wie in der plugin.py geschrieben, geht es immo nicht mit dem IE (hab nur Version 6). Der meint, die Resource nicht anzeigen zu können. Firefox, Opera und wget kommen damit wunderbar klar.
wget http://user:password@127.0.0.1/web
geht wunderbar.
Warum man das Passwort zwei mal eingeben muss, ist mir immo noch nicht ganz klar. Bekomme ich aber auch noch raus
PS.: Als kleines Schmankerl noch mit drin (aber auskommentiert) ist eine Funktion, um die Webzugriffe und alle Ausgaben von E2 in eine Datei schreiben zu können.
PS.: Funktioniert derzeit nur bei aktuellen CVS-Images mit einem funktionierendem WebIF.kann man das auch für Gemini 2.10 verwenden ?
-
in Einsteinis kit für 2.1 ist es eh dabei, einfach das aktuelle enhanced webif runterladen ...
-
Zitat
Original von gutemine
in Einsteinis kit für 2.1 ist es eh dabei, einfach das aktuelle enhanced webif runterladen ...wie muss mann das machen ? bitte genauer wenn es möglich ist
-
-
Zitat
Original von gutemine
in Einsteinis kit für 2.1 ist es eh dabei, einfach das aktuelle enhanced webif runterladen ...nach dem ich neue Version instalirt habe muss ich nichts mer machen ? oder noch was einstellen ? Password in webif wird trotzdem nich abgefragt warum weiss ich auch nicht
-
Zitat
Original von YC78
nach dem ich neue Version instalirt habe muss ich nichts mer machen ? oder noch was einstellen ? Password in webif wird trotzdem nich abgefragt warum weiss ich auch nicht
Bei "old password" > "newpassword" eintragen,dann eigenes Passwort zweimal.
-
Zitat
Original von SadButTrue
kommt von hier: /usr/lib/enigma2/python/Plugins/Extensions/Webinterface/plugin.pyund dann das anschaun:
Pythonfrom twisted.cred.portal import Portal from twisted.cred import checkers from twisted.web2.auth import digest, basic, wrapper portal = Portal(HTTPAuthRealm()) checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(root='password')# CHANGE THIS FOR YOUR PASSWORD portal.registerChecker(checker) # i have tested it with md5 instead of sha, but that did not work. sha is not working with IE6. But who cares?! root = wrapper.HTTPAuthResource(Toplevel(), (basic.BasicCredentialFactory('DM7025'),digest.DigestCredentialFactory('sha','DM7025')), portal, (IHTTPUser,))
und wo muss ich hier was endern ???
-
Entschuldigt - gibt sowas auch für die 7000/7020er