示例#1
0
 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
示例#2
0
	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'})
示例#3
0
 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)
示例#4
0
 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)
示例#5
0
文件: nss_fs_ex.py 项目: Grissess/nSS
 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
示例#6
0
 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)
示例#7
0
文件: nss_fs_ex.py 项目: Grissess/nSS
 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)
示例#8
0
 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)
示例#9
0
 def Handle(self, client, req, server):
     if req.path == '/':
         return nss.HTTPResponse(self.doc)
示例#10
0
 def Handle(self, client, req, server):
     return nss.HTTPResponse(self.doc, self.status)
示例#11
0
 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)
示例#12
0
 def Handle(self, client, req, server):
     return nss.HTTPResponse(open(self.fname, 'rb'), self.status)