From d8ee5c180bf7ab3a1437dde4d6c7b82b9d356f3f Mon Sep 17 00:00:00 2001
From: aum <aum>
Date: Sat, 31 Jul 2004 18:45:13 +0000
Subject: [PATCH] Replaced hacked Python server modules with ones which
 subclass the python modules.

---
 apps/sam/python/src/i2p/I2PBaseHTTPServer.py  | 50 +++++++++++++++++++
 apps/sam/python/src/i2p/I2PCGIHTTPServer.py   | 16 ++++++
 .../sam/python/src/i2p/I2PSimpleHTTPServer.py | 19 +++++++
 apps/sam/python/src/i2p/I2PSocketServer.py    | 47 +++++++++++++++++
 4 files changed, 132 insertions(+)
 create mode 100644 apps/sam/python/src/i2p/I2PBaseHTTPServer.py
 create mode 100644 apps/sam/python/src/i2p/I2PCGIHTTPServer.py
 create mode 100644 apps/sam/python/src/i2p/I2PSimpleHTTPServer.py
 create mode 100644 apps/sam/python/src/i2p/I2PSocketServer.py

diff --git a/apps/sam/python/src/i2p/I2PBaseHTTPServer.py b/apps/sam/python/src/i2p/I2PBaseHTTPServer.py
new file mode 100644
index 0000000000..116dd7b164
--- /dev/null
+++ b/apps/sam/python/src/i2p/I2PBaseHTTPServer.py
@@ -0,0 +1,50 @@
+#! /usr/bin/env python
+
+import BaseHTTPServer
+
+import i2p.sam
+
+import I2PSocketServer
+
+import sys
+import BaseHTTPServer
+
+import i2p.sam
+import I2PSocketServer
+
+__version__ = "0.3"
+
+__all__ = ["HTTPServer", "BaseHTTPRequestHandler"]
+
+DEFAULT_ERROR_MESSAGE = BaseHTTPServer.DEFAULT_ERROR_MESSAGE
+
+class HTTPServer(I2PSocketServer.TCPServer, BaseHTTPServer.HTTPServer):
+    pass
+class BaseHTTPRequestHandler(
+        I2PSocketServer.StreamRequestHandler,
+        BaseHTTPServer.BaseHTTPRequestHandler):
+    pass
+def test(HandlerClass = BaseHTTPRequestHandler,
+         ServerClass = HTTPServer, protocol="HTTP/1.0"):
+    """Test the HTTP request handler class.
+
+    This runs an HTTP server on port 8000 (or the first command line
+    argument).
+
+    """
+
+    if sys.argv[1:]:
+        server_address = sys.argv[1]
+    else:
+        server_address = "mytestxxx.i2p"
+
+    HandlerClass.protocol_version = protocol
+    httpd = ServerClass(server_address, HandlerClass)
+
+    print "Serving HTTP on", server_address, "..."
+    print "Destination follows:"
+    print httpd.socket.dest
+    httpd.serve_forever()
+
+if __name__ == '__main__':
+    test()
diff --git a/apps/sam/python/src/i2p/I2PCGIHTTPServer.py b/apps/sam/python/src/i2p/I2PCGIHTTPServer.py
new file mode 100644
index 0000000000..d509197836
--- /dev/null
+++ b/apps/sam/python/src/i2p/I2PCGIHTTPServer.py
@@ -0,0 +1,16 @@
+#! /usr/bin/env python
+
+import CGIHTTPServer
+from CGIHTTPServer import nobody_uid, executable
+
+import I2PBaseHTTPServer, I2PSimpleHTTPServer
+
+class CGIHTTPRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
+    pass
+def test(HandlerClass = CGIHTTPRequestHandler,
+         ServerClass = I2PBaseHTTPServer.HTTPServer):
+    I2PSimpleHTTPServer.test(HandlerClass, ServerClass)
+
+if __name__ == '__main__':
+    test()
+
diff --git a/apps/sam/python/src/i2p/I2PSimpleHTTPServer.py b/apps/sam/python/src/i2p/I2PSimpleHTTPServer.py
new file mode 100644
index 0000000000..c05aac1370
--- /dev/null
+++ b/apps/sam/python/src/i2p/I2PSimpleHTTPServer.py
@@ -0,0 +1,19 @@
+#! /usr/bin/env python
+
+import SimpleHTTPServer
+
+import I2PBaseHTTPServer
+
+__version__ = "0.1.0"
+
+__all__ = ["SimpleHTTPRequestHandler"]
+
+class SimpleHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
+    pass
+
+def test(HandlerClass = SimpleHTTPRequestHandler,
+         ServerClass = I2PBaseHTTPServer.BaseHTTPServer):
+    I2PBaseHTTPServer.test(HandlerClass, ServerClass)
+
+if __name__ == '__main__':
+    test()
diff --git a/apps/sam/python/src/i2p/I2PSocketServer.py b/apps/sam/python/src/i2p/I2PSocketServer.py
new file mode 100644
index 0000000000..0fabdf7ad2
--- /dev/null
+++ b/apps/sam/python/src/i2p/I2PSocketServer.py
@@ -0,0 +1,47 @@
+import SocketServer
+
+import i2p.sam
+class BaseServer(SocketServer.BaseServer):
+    pass
+class TCPServer(SocketServer.TCPServer, BaseServer):
+    
+    socket_type = i2p.sam.SOCK_STREAM
+    
+    def __init__(self, server_address, RequestHandlerClass):
+        """Constructor.  May be extended, do not override."""
+        BaseServer.__init__(self, server_address, RequestHandlerClass)
+    
+        #self.socket = socket.socket(self.address_family,
+        #                            self.socket_type)
+        self.server_address = server_address
+        self.socket = i2p.sam.socket(server_address, self.socket_type)
+    
+        self.server_bind()
+        self.server_activate()
+class UDPServer(TCPServer, SocketServer.UDPServer):
+
+    pass
+class ForkingMixIn(SocketServer.ForkingMixIn):
+    
+    pass
+class ThreadingMixIn(SocketServer.ThreadingMixIn):
+    
+    pass
+class ForkingUDPServer(ForkingMixIn, UDPServer): pass
+
+class ForkingTCPServer(ForkingMixIn, TCPServer): pass
+class ThreadingUDPServer(ThreadingMixIn, UDPServer): pass
+
+class ThreadingTCPServer(ThreadingMixIn, TCPServer): pass
+
+class BaseRequestHandler(SocketServer.BaseRequestHandler):
+    pass
+
+class StreamRequestHandler(SocketServer.StreamRequestHandler):
+    
+    pass
+class DatagramRequestHandler(SocketServer.DatagramRequestHandler):
+    
+    pass
+
+
-- 
GitLab