server.py
author Eugen Sawin <sawine@me73.com>
Sun, 13 Jun 2010 01:53:58 +0200
changeset 1 0ebb73fd094a
child 2 b887ce19c300
permissions -rw-r--r--
Profiling added.
sawine@0
     1
#!/usr/bin/python
sawine@0
     2
sawine@0
     3
import com
sawine@0
     4
import optparse
sawine@0
     5
import SocketServer
sawine@0
     6
sawine@0
     7
option_list = [
sawine@0
     8
	optparse.make_option("-q", "--quiet", action="store_true", dest="quiet", 
sawine@0
     9
		help="quiet mode", default=False)]
sawine@0
    10
	
sawine@0
    11
class Handler(SocketServer.BaseRequestHandler):
sawine@0
    12
	"""
sawine@0
    13
	"""	
sawine@0
    14
	def handle(self):
sawine@0
    15
		data = self.request[0].strip()
sawine@0
    16
		socket = self.request[1]
sawine@0
    17
		print "%s wrote:" % self.client_address[0]
sawine@0
    18
		print data
sawine@0
    19
		for key, value in com.commands.iteritems():
sawine@0
    20
			if key in data:
sawine@0
    21
				args = data.partition(key)[2].split()
sawine@0
    22
				if args:
sawine@0
    23
					value[0](socket, self.client_address, args)
sawine@0
    24
				else:
sawine@0
    25
					value[0](socket, self.client_address)
sawine@0
    26
		
sawine@0
    27
class Server(SocketServer.UDPServer):
sawine@0
    28
	def __init__(self, host, port, handler, options):
sawine@0
    29
		SocketServer.UDPServer.__init__(self, (host, port), handler)
sawine@0
    30
		self.host = host
sawine@0
    31
		self.port = port
sawine@0
    32
		self.handler = handler
sawine@0
    33
		self.options = options
sawine@0
    34
	def run(self):
sawine@0
    35
		self.serve_forever()
sawine@0
    36
	
sawine@0
    37
if __name__ == "__main__":
sawine@0
    38
	parser = optparse.OptionParser(usage="usage: %prog [options] port",
sawine@0
    39
		option_list=option_list)
sawine@0
    40
	options, args = parser.parse_args()
sawine@0
    41
	
sawine@0
    42
	if len(args) > 0:
sawine@0
    43
		port = int(args[0])
sawine@0
    44
		server = Server("localhost", port, Handler, options)
sawine@0
    45
		server.run()