diff --git a/README.md b/README.md index 27311bb..b12875f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ command prompt there and running python setup.py install. You can also download ## Webinterface Configuration * The Web interface port / ip is configurable in http.config - + * The Default User / Password can be set in auth.config + ## Webinterface Styling * css/style.css can be modified to change the style of the Web Interface. diff --git a/auth.config b/auth.config new file mode 100644 index 0000000..17a02cf --- /dev/null +++ b/auth.config @@ -0,0 +1,3 @@ +[user] +user = admin +pass = password \ No newline at end of file diff --git a/http.config b/http.config index 598483d..b5093db 100644 --- a/http.config +++ b/http.config @@ -2,6 +2,3 @@ server.socket_host: "localhost" server.socket_port: 8080 -[/css/style.css] -tools.staticfile.on = True -tools.staticfile.filename = "C:\Printrun-web\Printrun\css\style.css" diff --git a/webinterface.py b/webinterface.py index 788f82c..758687d 100644 --- a/webinterface.py +++ b/webinterface.py @@ -1,7 +1,9 @@ #!/usr/bin/python -import cherrypy, pronterface, re +import cherrypy, pronterface, re, ConfigParser, io import os.path +users = {} + def PrintHeader(): return '\n\nPronterface-Web\n\n\n\n' @@ -14,6 +16,9 @@ def PrintFooter(): def ReloadPage(action): return ""+action+"" +def clear_text(mypass): + return mypass + gPronterPtr = 0 gWeblog = "" gLogRefresh =5 @@ -65,13 +70,21 @@ class ConnectButton(object): gPronterPtr.connect(0) return ReloadPage("Connect...") index.exposed = True - + index._cp_config = {'tools.basic_auth.on': True, + 'tools.basic_auth.realm': 'My Print Server', + 'tools.basic_auth.users': users, + 'tools.basic_auth.encrypt': clear_text} + class DisconnectButton(object): def index(self): #handle connect push, then reload page gPronterPtr.disconnect(0) return ReloadPage("Disconnect...") index.exposed = True + index._cp_config = {'tools.basic_auth.on': True, + 'tools.basic_auth.realm': 'My Print Server', + 'tools.basic_auth.users': users, + 'tools.basic_auth.encrypt': clear_text} class ResetButton(object): def index(self): @@ -79,6 +92,10 @@ class ResetButton(object): gPronterPtr.reset(0) return ReloadPage("Reset...") index.exposed = True + index._cp_config = {'tools.basic_auth.on': True, + 'tools.basic_auth.realm': 'My Print Server', + 'tools.basic_auth.users': users, + 'tools.basic_auth.encrypt': clear_text} class PrintButton(object): def index(self): @@ -86,6 +103,10 @@ class PrintButton(object): gPronterPtr.printfile(0) return ReloadPage("Print...") index.exposed = True + index._cp_config = {'tools.basic_auth.on': True, + 'tools.basic_auth.realm': 'My Print Server', + 'tools.basic_auth.users': users, + 'tools.basic_auth.encrypt': clear_text} class PauseButton(object): def index(self): @@ -93,16 +114,49 @@ class PauseButton(object): gPronterPtr.pause(0) return ReloadPage("Pause...") index.exposed = True + index._cp_config = {'tools.basic_auth.on': True, + 'tools.basic_auth.realm': 'My Print Server', + 'tools.basic_auth.users': users, + 'tools.basic_auth.encrypt': clear_text} class XMLstatus(object): def index(self): #handle connect push, then reload page - return '\n\n '+gPronterPtr.status.GetStatusText()+'\n'; + txt='\n\n' + txt=txt+''+str(gPronterPtr.filename)+'\n' + txt=txt+''+str(gPronterPtr.status.GetStatusText())+'\n' + try: + temp = str(float(filter(lambda x:x.startswith("T:"),gPronterPtr.tempreport.split())[0].split(":")[1])) + txt=txt+''+temp+'\n' + except: + txt=txt+'NA\n' + pass + try: + temp = str(float(filter(lambda x:x.startswith("B:"),gPronterPtr.tempreport.split())[0].split(":")[1])) + txt=txt+''+temp+'\n' + except: + txt=txt+'NA\n' + pass + if gPronterPtr.sdprinting: + fractioncomplete = float(gPronterPtr.percentdone/100.0) + txt+= _("%04.2f %%") % (gPronterPtr.percentdone,) + txt+="\n" + elif gPronterPtr.p.printing: + fractioncomplete = float(gPronterPtr.p.queueindex)/len(gPronterPtr.p.mainqueue) + txt+= _("%04.2f %% |") % (100*float(gPronterPtr.p.queueindex)/len(gPronterPtr.p.mainqueue),) + txt+="\n" + else: + txt+="NA\n" + txt+='' + return txt index.exposed = True class WebInterface(object): def __init__(self, pface): + config = ConfigParser.SafeConfigParser(allow_no_value=True) + config.read('auth.config') + users[config.get("user", "user")] = config.get("user", "pass") self.pface = pface global gPronterPtr global gWeblog