def Handle(self, client, req, resp, creator, fromerror, server): if not req.path.startswith(self.prefix): return if isinstance(resp, nss.HTTPRawResponse): #We're gonna wing it. See if there's a line like this: if 'content-type: text/html' not in resp.read(1024).lower(): return #if so... buf=resp.payload.getvalue() inj=buf.rfind('</body>') buf=buf[:inj]+self.doc+buf[inj:] #Strip off the headers and turn into a bona-fide Response #for speedy delivery if '\r\n\r\n' in buf[:1024]: return nss.HTTPResponse(buf[buf.index('\r\n\r\n')+4:]) return nss.HTTPResponse(buf[buf.index('\n\n')+2:]) elif isinstance(resp, nss.HTTPResponse): if not resp.headers['Content-type'].lower()=='text/html': return if (not self.useerror) and fromerror: return buf=resp.payload.getvalue() inj=buf.rfind('</body>') buf=buf[:inj]+self.doc+buf[inj:] return nss.HTTPResponse(buf) return
def Handle(self, client, req, server): global CURDATA if CURDATA is None: if 'file' in req.formdata and req.formdata['file'].file: CURDATA=FileData(req.formdata['file'].filename, req.formdata['file'].file.read()) return nss.HTTPResponse('<p>Your file is uploaded.</p>') else: return nss.HTTPResponse('<form action="?" method="POST" enctype="multipart/form-data"><input type="file" name="file"/><button name="submit" type="submit">Submit</button></form>') else: data=CURDATA CURDATA=None return nss.HTTPResponse(data.buf, headers={'Content-Disposition': 'attachment; filename="'+data.name+'"', 'Content-Type': 'application/octet-stream'})
def Handle(self, client, req, server): if not req.path.startswith(self.prefix): return resp = cStringIO.StringIO() resp.write('<html><head><title>Form Data</title></head><body>') resp.write('<h1>Form Data</h1>') if isinstance(req.formdata, dict): resp.write('<p>Form data is in dict form:</p>') resp.write('<table><tr><th>Key</th><th>Value</th></tr>') for key, val in req.formdata.iteritems(): resp.write('<tr><td>' + key + '</td><td>' + repr(val) + '</td></tr>') resp.write('</table>') elif isinstance(req.formdata, cgi.FieldStorage): resp.write('<p>Form data is a FieldStorage:</p>') resp.write('<table><tr><th>Key</th><th>Value</th></tr>') for key in req.formdata: val = req.formdata[key] resp.write('<tr><td>' + key + '</td><td>') if val.filename: resp.write('<i>File</i>') else: resp.write(repr(val)) resp.write('</td></tr>') resp.write('</table>') elif isinstance(req.formdata, str): resp.write('<p>Form data is a str: ' + repr(req.formdata) + '</p>') else: resp.write('<p>Form data is in some weird format (%s)</p>' % (str(type(req.formdata)))) return nss.HTTPResponse(resp)
def Handle(self, client, req): if not req.path.startswith(self.prefix): return resp = cStringIO.StringIO() hdrs = {} if 'xml' in req.formdata: resp.write('<managers>') for man in nss.HTTPHandler.GetManagers(): resp.write('<manager name="' + cgi.escape(repr(man)) + '" enabled="' + ('1' if getattr(man, 'enabled', True) else '0') + '"/>') resp.write('</managers>') hdrs['Content-type'] = 'application/xml' else: resp.write('<html><head><title>All Managers</title></head><body>') resp.write('<p>All Managers:</p>') resp.write( '<table><tr><th>Representation</th><th>Enabled</th></tr>') for man in nss.HTTPHandler.GetManagers(): resp.write('<tr><td>' + cgi.escape(repr(man)) + '</td>') if getattr(man, 'enabled', True): resp.write('<td style="color:#00FF00;">Enabled</td>') else: resp.write('<td style="color:#FF0000;">Disabled</td>') resp.write('</tr>') resp.write('</table></body></html>') return nss.HTTPResponse(resp, headers=hdrs)
def Handle(self, client, req, server): if '.' not in str(req.path) and not str(req.path).endswith('/'): #And thus we can safely assume it's a directory, raise nss.HTTPRedirectError(str(req.path)+'/') reqpath=str(req.localpath) syspath=os.path.normpath(reqpath)[1:] print 'IN SIMPLEFILESYSTEM: syspath is', syspath fullpath=os.path.join(self.localpath, syspath) if not os.path.exists(fullpath): raise nss.HTTPError(404, longdesc='Entity does not exist.') if os.path.isdir(fullpath): #Check for directory overrides for oname in self.DIR_OVERRIDES: ofull=os.path.join(fullpath, oname) if os.path.exists(ofull) and os.path.isfile(ofull): fullpath=ofull break else: #No directory, do a listing return self.DIR_FORMATTER.ListDir(fullpath, reqpath) contenttype=mimetypes.guess_type(fullpath, False)[0] if contenttype is None: contenttype=self.DEFAULT_MIMETYPE try: f=open(fullpath, 'rb') except (EnvironmentError, IOError): raise nss.HTTPError(403, longdesc='The server lacks access permissions to read this file.') return nss.HTTPResponse(f, contenttype=contenttype) if self.USE_404: raise nss.HTTPError(404, longdesc='File or directory not found.') else: return None
def Handle(self, client, req, server): #print req.payload try: obj = json.loads(req.payload) except ValueError: raise nss.HTTPError(500, 'No JSON data present') rm.notification('<' + obj['item']['room']['name'] + '> ' + obj['item']['message']['message'], format='text') return nss.HTTPResponse('', 204)
def ListDir(self, fullpath, disppath): try: ents=os.listdir(fullpath) except (EnvironmentError, IOError): raise nss.HTTPError(403, longdesc='The server lacks access permissions to list this directory.') resp=cStringIO.StringIO() resp.write('<html><head><title>Directory listing: ') resp.write(disppath) resp.write('</title></head><body><ul>') resp.write('<li><a href="..">..</a></li>') for ent in ents: if os.path.isdir(os.path.join(fullpath, ent)): ent=ent+'/' resp.write('<li><a href="'+ent+'">'+ent+'</a></li>') resp.write('</ul></body></html>') return nss.HTTPResponse(resp)
def Handle(self, client, req, server): resp = cStringIO.StringIO() resp.write('<html><body><h1>nSS Server Mounts:</h1>\n') for vserv in nss.PRIMARY_VSERVERS: resp.write('<h3>' + vserv.hname + '</h3>\n<table>') for pth in vserv.IterPaths(): resp.write('<tr><td>' + str(pth) + '</td>') man = vserv.mounts[str(pth)] resp.write('<td>' + cgi.escape(repr(man)) + '</td>') resp.write( '<td style="color: %s">%s</td>' % (('green', 'Enabled') if getattr(man, 'enabled', True) else ('red', 'Disabled'))) resp.write('</tr>') resp.write('</table>\n') resp.write('</body></html>') return nss.HTTPResponse(resp)
def Handle(self, client, req, server): if req.path == '/': return nss.HTTPResponse(self.doc)
def Handle(self, client, req, server): return nss.HTTPResponse(self.doc, self.status)
def Handle(self, client, req, server): if req.path == '/banana': raise nss.HTTPRedirectError('/banana/', req.ver_s) elif req.path == '/banana/': return nss.HTTPResponse(self.doc)
def Handle(self, client, req, server): return nss.HTTPResponse(open(self.fname, 'rb'), self.status)