1 """Socket objects for the MUFF Engine"""
3 # Copyright (c) 2005 mudpy, Jeremy Stanley <fungi@yuggoth.org>
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
10 # - Redistributions of source code must retain the above copyright
11 # notice, this list of conditions and the following disclaimer.
12 # - Redistributions in binary form must reproduce the above
13 # copyright notice, this list of conditions and the following
14 # disclaimer in the documentation and/or other materials provided
15 # with the distribution.
17 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21 # COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
22 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 # POSSIBILITY OF SUCH DAMAGE.
33 for module in muff.__all__:
34 exec("import " + module)
36 def check_for_connection(newsocket):
38 connection, address = newsocket.accept()
41 print "Connection from", address
42 connection.setblocking(0)
43 user = muffuser.User();
44 user.connection = connection
45 user.address = address[0]
48 def initialize_server_socket():
49 newsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
50 newsocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
51 newsocket.bind((muffconf.config_data.get("network", "host"), muffconf.config_data.getint("network", "port")))
52 newsocket.setblocking(0)
54 print "Waiting for connection(s)..."
55 muffvars.newsocket = newsocket
57 def destroy_all_sockets():
58 print "Closing remaining connections..."
59 for user in muffvars.userlist:
60 user.connection.close()