Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Rpyc/Servers
diff options
context:
space:
mode:
authorolpc user <olpc@localhost.localdomain>2010-01-30 13:13:29 (GMT)
committer olpc user <olpc@localhost.localdomain>2010-01-30 13:13:29 (GMT)
commitf8a54f5c2f4487f264fe4647cec62599db93d063 (patch)
tree8758b1412c524129dad7e90a4da6b463a85ed96f /Rpyc/Servers
initial save 1-30-2010 bangladesh
Diffstat (limited to 'Rpyc/Servers')
-rw-r--r--Rpyc/Servers/Users.py9
-rw-r--r--Rpyc/Servers/__init__.py0
-rw-r--r--Rpyc/Servers/forking_server.py32
-rw-r--r--Rpyc/Servers/selecting_server.py35
-rw-r--r--Rpyc/Servers/simple_server.py13
-rw-r--r--Rpyc/Servers/std_server.py31
-rw-r--r--Rpyc/Servers/threaded_server.py10
-rw-r--r--Rpyc/Servers/tls_server.py20
8 files changed, 150 insertions, 0 deletions
diff --git a/Rpyc/Servers/Users.py b/Rpyc/Servers/Users.py
new file mode 100644
index 0000000..1060e0c
--- /dev/null
+++ b/Rpyc/Servers/Users.py
@@ -0,0 +1,9 @@
+#
+# chmod this file securely and be sure to remove the default users
+#
+users = {
+ "frodo" : "1ring",
+ "yossarian" : "catch22",
+ "ayla" : "jondalar",
+}
+
diff --git a/Rpyc/Servers/__init__.py b/Rpyc/Servers/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Rpyc/Servers/__init__.py
diff --git a/Rpyc/Servers/forking_server.py b/Rpyc/Servers/forking_server.py
new file mode 100644
index 0000000..1d55d01
--- /dev/null
+++ b/Rpyc/Servers/forking_server.py
@@ -0,0 +1,32 @@
+import sys
+import os
+from Rpyc.Utils.Serving import (
+ serve_socket,
+ create_listener_socket,
+ DEFAULT_PORT,
+ start_discovery_agent_thread)
+
+
+def serve_in_child(sock):
+ """forks a child to run the server in. the parent doesnt wait() for the child,
+ so if you do a `ps`, you'll see zombies. but who cares. i used to do a doublefork()
+ for that, but it's really meaningless. anyway, when the parent dies, the zombies
+ die as well."""
+ if os.fork() == 0:
+ try:
+ serve_socket(sock)
+ finally:
+ sys.exit()
+
+def main(port = DEFAULT_PORT):
+ # comment this out to disable broadcast queries
+ start_discovery_agent_thread(rpyc_port = port)
+
+ sock = create_listener_socket(port)
+ while True:
+ newsock, name = sock.accept()
+ serve_in_child(newsock)
+
+if __name__ == "__main__":
+ main()
+
diff --git a/Rpyc/Servers/selecting_server.py b/Rpyc/Servers/selecting_server.py
new file mode 100644
index 0000000..c39cf2b
--- /dev/null
+++ b/Rpyc/Servers/selecting_server.py
@@ -0,0 +1,35 @@
+import select
+import socket
+from Rpyc.Utils.Serving import (
+ log,
+ create_listener_socket,
+ DEFAULT_PORT,
+ SocketStream,
+ Channel,
+ Connection)
+
+
+def main(port = DEFAULT_PORT):
+ sock = create_listener_socket(port)
+ connections = []
+
+ while True:
+ rlist, wlist, xlist = select.select([sock] + connections, [], [])
+
+ if sock in rlist:
+ rlist.remove(sock)
+ newsock, name = sock.accept()
+ conn = Connection(Channel(SocketStream(newsock)))
+ conn.sockname = name
+ connections.append(conn)
+ log("welcome", conn.sockname)
+
+ for conn in rlist:
+ try:
+ conn.serve()
+ except (EOFError, socket.error):
+ connections.remove(conn)
+ log("goodbyte", conn.sockname)
+
+if __name__ == "__main__":
+ main()
diff --git a/Rpyc/Servers/simple_server.py b/Rpyc/Servers/simple_server.py
new file mode 100644
index 0000000..ba7b19b
--- /dev/null
+++ b/Rpyc/Servers/simple_server.py
@@ -0,0 +1,13 @@
+from Rpyc.Utils.Serving import serve_socket, create_listener_socket, DEFAULT_PORT
+
+
+def main(port = DEFAULT_PORT):
+ sock = create_listener_socket(port)
+ while True:
+ newsock, name = sock.accept()
+ serve_socket(newsock)
+
+if __name__ == "__main__":
+ main()
+
+ \ No newline at end of file
diff --git a/Rpyc/Servers/std_server.py b/Rpyc/Servers/std_server.py
new file mode 100644
index 0000000..0bf4475
--- /dev/null
+++ b/Rpyc/Servers/std_server.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+#
+# installation instructions
+# * add a service in /etc/services for rpyc: tcp port 18812
+# * add "rpyc .... /usr/lib/pythonXX/site-packages/Rpyc/Servers/std_server.py"
+# to /etc/inetd.conf (i dont remember syntax, rtfm)
+# * dont forget to chmod +x this file
+# * restart inetd with sighup
+#
+import sys
+import time
+from traceback import format_exception
+from Rpyc.Utils.Serving import log, serve_pipes
+
+
+def main(filename = "/tmp/rpyc-server.log"):
+ log.logfile = open(filename, "a")
+ log("-" * 80)
+ log("started serving at", time.asctime())
+ try:
+ try:
+ serve_pipes(sys.stdin, sys.stdout)
+ except:
+ log(*format_exception(*sys.exc_info()))
+ finally:
+ log("server exits at", time.asctime())
+
+if __name__ == "__main__":
+ main()
+
+ \ No newline at end of file
diff --git a/Rpyc/Servers/threaded_server.py b/Rpyc/Servers/threaded_server.py
new file mode 100644
index 0000000..0885aba
--- /dev/null
+++ b/Rpyc/Servers/threaded_server.py
@@ -0,0 +1,10 @@
+from Rpyc.Utils.Serving import DEFAULT_PORT, threaded_server, start_discovery_agent_thread
+
+
+def main(port = DEFAULT_PORT):
+ start_discovery_agent_thread(rpyc_port = port)
+ threaded_server(port = port)
+
+
+if __name__ == "__main__":
+ main()
diff --git a/Rpyc/Servers/tls_server.py b/Rpyc/Servers/tls_server.py
new file mode 100644
index 0000000..7b6189c
--- /dev/null
+++ b/Rpyc/Servers/tls_server.py
@@ -0,0 +1,20 @@
+from Rpyc.Utils.Serving import DEFAULT_PORT, threaded_server, start_discovery_agent_thread
+from Users import users
+from tlslite.api import VerifierDB
+
+
+#
+# creates the verifier db
+#
+vdb = VerifierDB()
+for username, password in users.iteritems():
+ vdb[username] = vdb.makeVerifier(username, password, 2048)
+
+def main(port = DEFAULT_PORT):
+ start_discovery_agent_thread(rpyc_port = port)
+ threaded_server(port = port, secure = True, vdb = vdb)
+
+
+if __name__ == "__main__":
+ main()
+