mirror of
https://github.com/i2p/i2p.i2p.git
synced 2026-06-08 10:51:43 +00:00
Update Python I2P version 0.91 by sunshine
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
#! /usr/bin/env python
|
||||
|
||||
"""
|
||||
Emulation of Python BaseHTTPServer module using I2P sockets.
|
||||
|
||||
The Python module is described at
|
||||
http://www.python.org/doc/current/lib/module-BaseHTTPServer.html
|
||||
|
||||
To get a server going, use:
|
||||
|
||||
>>> from i2p import BaseHTTPServer
|
||||
>>> BaseHTTPServer.test().
|
||||
|
||||
Consult the documentation for function test() to change basic
|
||||
server settings, such as the session name.
|
||||
|
||||
A fully customizable example:
|
||||
|
||||
>>> from i2p import BaseHTTPServer
|
||||
>>> session = "mytestxxx.i2p" # SAM session name
|
||||
>>> class MyServer(BaseHTTPServer.HTTPServer): pass
|
||||
>>> class MyRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): pass
|
||||
>>> httpd = MyServer(session, MyRequestHandler)
|
||||
>>> httpd.socket.dest
|
||||
(Base64 Destination of server)
|
||||
>>> httpd.serve_forever()
|
||||
|
||||
"""
|
||||
|
||||
# By aum.
|
||||
|
||||
# Hack to keep Python from importing from current directory:
|
||||
# Use pylib package, then use = signs instead of from x import y.
|
||||
import pylib
|
||||
BaseHTTPServer = pylib.BaseHTTPServer
|
||||
|
||||
import sys
|
||||
import i2p.SocketServer
|
||||
|
||||
__version__ = "0.3"
|
||||
|
||||
__all__ = ["HTTPServer", "BaseHTTPRequestHandler", "test"]
|
||||
|
||||
DEFAULT_ERROR_MESSAGE = BaseHTTPServer.DEFAULT_ERROR_MESSAGE
|
||||
|
||||
class HTTPServer(i2p.SocketServer.TCPServer, BaseHTTPServer.HTTPServer):
|
||||
"""
|
||||
Same interface as Python class
|
||||
BaseHTTPServer.HTTPServer.
|
||||
"""
|
||||
|
||||
class BaseHTTPRequestHandler(
|
||||
i2p.SocketServer.StreamRequestHandler,
|
||||
BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
"""
|
||||
Same interface as Python class
|
||||
BaseHTTPServer.BaseHTTPRequestHandler.
|
||||
"""
|
||||
|
||||
def test(HandlerClass = BaseHTTPRequestHandler,
|
||||
ServerClass = HTTPServer, protocol="HTTP/1.0",
|
||||
session = "mytestxxx.i2p"):
|
||||
"""
|
||||
Test the HTTP request handler class.
|
||||
|
||||
This runs an I2P TCP server under SAM session 'session'.
|
||||
If a single command line argument is given, the argument is used
|
||||
instead as the SAM session name.
|
||||
"""
|
||||
|
||||
if sys.argv[1:] and __name__ == '__main__':
|
||||
session = sys.argv[1]
|
||||
|
||||
HandlerClass.protocol_version = protocol
|
||||
httpd = ServerClass(session, HandlerClass)
|
||||
|
||||
print "Serving HTTP on", session, "..."
|
||||
print "Destination follows:"
|
||||
print httpd.socket.dest
|
||||
httpd.serve_forever()
|
||||
|
||||
if __name__ == '__main__':
|
||||
test()
|
||||
Reference in New Issue
Block a user