diff options
author | olpc user <olpc@localhost.localdomain> | 2010-01-30 13:13:29 (GMT) |
---|---|---|
committer | olpc user <olpc@localhost.localdomain> | 2010-01-30 13:13:29 (GMT) |
commit | f8a54f5c2f4487f264fe4647cec62599db93d063 (patch) | |
tree | 8758b1412c524129dad7e90a4da6b463a85ed96f /Rpyc/Servers |
initial save 1-30-2010 bangladesh
Diffstat (limited to 'Rpyc/Servers')
-rw-r--r-- | Rpyc/Servers/Users.py | 9 | ||||
-rw-r--r-- | Rpyc/Servers/__init__.py | 0 | ||||
-rw-r--r-- | Rpyc/Servers/forking_server.py | 32 | ||||
-rw-r--r-- | Rpyc/Servers/selecting_server.py | 35 | ||||
-rw-r--r-- | Rpyc/Servers/simple_server.py | 13 | ||||
-rw-r--r-- | Rpyc/Servers/std_server.py | 31 | ||||
-rw-r--r-- | Rpyc/Servers/threaded_server.py | 10 | ||||
-rw-r--r-- | Rpyc/Servers/tls_server.py | 20 |
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()
+
|