/
usr
/
lib
/
python2.6
/
site-packages
/
supervisor
/
medusa
/
/usr/lib/python2.6/site-packages/supervisor/medusa
mkdir
upload
Name
Size
Mode
Actions
auth_handler.py
4739
0644
edit
dl
rm
auth_handler.pyc
4513
0644
edit
dl
rm
auth_handler.pyo
4513
0644
edit
dl
rm
chat_server.py
4535
0644
edit
dl
rm
chat_server.pyc
6427
0644
edit
dl
rm
chat_server.pyo
6427
0644
edit
dl
rm
counter.py
1440
0644
edit
dl
rm
counter.pyc
2039
0644
edit
dl
rm
counter.pyo
2039
0644
edit
dl
rm
default_handler.py
6331
0644
edit
dl
rm
default_handler.pyc
5034
0644
edit
dl
rm
default_handler.pyo
5034
0644
edit
dl
rm
event_loop.py
2981
0644
edit
dl
rm
event_loop.pyc
3513
0644
edit
dl
rm
event_loop.pyo
3513
0644
edit
dl
rm
filesys.py
11206
0644
edit
dl
rm
filesys.pyc
13598
0644
edit
dl
rm
filesys.pyo
13598
0644
edit
dl
rm
ftp_server.py
40552
0644
edit
dl
rm
ftp_server.pyc
34727
0644
edit
dl
rm
ftp_server.pyo
34727
0644
edit
dl
rm
http_date.py
3415
0644
edit
dl
rm
http_date.pyc
3468
0644
edit
dl
rm
http_date.pyo
3468
0644
edit
dl
rm
http_server.py
25217
0644
edit
dl
rm
http_server.pyc
21468
0644
edit
dl
rm
http_server.pyo
21468
0644
edit
dl
rm
logger.py
8000
0644
edit
dl
rm
logger.pyc
10990
0644
edit
dl
rm
logger.pyo
10990
0644
edit
dl
rm
medusa_gif.py
2772
0644
edit
dl
rm
medusa_gif.pyc
1156
0644
edit
dl
rm
medusa_gif.pyo
1156
0644
edit
dl
rm
monitor.py
11054
0644
edit
dl
rm
monitor.pyc
12285
0644
edit
dl
rm
monitor.pyo
12285
0644
edit
dl
rm
monitor_client.py
3273
0644
edit
dl
rm
monitor_client.pyc
5390
0644
edit
dl
rm
monitor_client.pyo
5390
0644
edit
dl
rm
monitor_client_win32.py
1334
0644
edit
dl
rm
monitor_client_win32.pyc
2094
0644
edit
dl
rm
monitor_client_win32.pyo
2094
0644
edit
dl
rm
m_syslog.py
7351
0644
edit
dl
rm
m_syslog.pyc
4006
0644
edit
dl
rm
m_syslog.pyo
4006
0644
edit
dl
rm
producers.py
9439
0644
edit
dl
rm
producers.pyc
11634
0644
edit
dl
rm
producers.pyo
11634
0644
edit
dl
rm
put_handler.py
3324
0644
edit
dl
rm
put_handler.pyc
3511
0644
edit
dl
rm
put_handler.pyo
3511
0644
edit
dl
rm
redirecting_handler.py
1403
0644
edit
dl
rm
redirecting_handler.pyc
2159
0644
edit
dl
rm
redirecting_handler.pyo
2159
0644
edit
dl
rm
resolver.py
15559
0644
edit
dl
rm
resolver.pyc
12401
0644
edit
dl
rm
resolver.pyo
12401
0644
edit
dl
rm
rpc_client.py
9675
0644
edit
dl
rm
rpc_client.pyc
10346
0644
edit
dl
rm
rpc_client.pyo
10346
0644
edit
dl
rm
rpc_server.py
9953
0644
edit
dl
rm
rpc_server.pyc
9536
0644
edit
dl
rm
rpc_server.pyo
9536
0644
edit
dl
rm
script_handler.py
6554
0644
edit
dl
rm
script_handler.pyc
6651
0644
edit
dl
rm
script_handler.pyo
6651
0644
edit
dl
rm
setup.py
496
0644
edit
dl
rm
setup.pyc
729
0644
edit
dl
rm
setup.pyo
729
0644
edit
dl
rm
status_handler.py
9352
0644
edit
dl
rm
status_handler.pyc
9672
0644
edit
dl
rm
status_handler.pyo
9672
0644
edit
dl
rm
unix_user_handler.py
2312
0644
edit
dl
rm
unix_user_handler.pyc
2361
0644
edit
dl
rm
unix_user_handler.pyo
2361
0644
edit
dl
rm
virtual_handler.py
1724
0644
edit
dl
rm
virtual_handler.pyc
3164
0644
edit
dl
rm
virtual_handler.pyo
3164
0644
edit
dl
rm
xmlrpc_handler.py
2944
0644
edit
dl
rm
xmlrpc_handler.pyc
3784
0644
edit
dl
rm
xmlrpc_handler.pyo
3784
0644
edit
dl
rm
__init__.py
128
0644
edit
dl
rm
__init__.pyc
277
0644
edit
dl
rm
__init__.pyo
277
0644
edit
dl
rm
Edit:
/usr/lib/python2.6/site-packages/supervisor/medusa/chat_server.py
(4535B)
# -*- Mode: Python -*- # # Author: Sam Rushing <rushing@nightmare.com> # Copyright 1997-2000 by Sam Rushing # All Rights Reserved. # RCS_ID = '$Id: chat_server.py,v 1.1.1.1 2006/06/26 06:36:05 chrism Exp $' import string VERSION = string.split(RCS_ID)[2] import socket import asyncore import asynchat import status_handler class chat_channel (asynchat.async_chat): def __init__ (self, server, sock, addr): asynchat.async_chat.__init__ (self, sock) self.server = server self.addr = addr self.set_terminator ('\r\n') self.data = '' self.nick = None self.push ('nickname?: ') def collect_incoming_data (self, data): self.data = self.data + data def found_terminator (self): line = self.data self.data = '' if self.nick is None: self.nick = string.split (line)[0] if not self.nick: self.nick = None self.push ('huh? gimmee a nickname: ') else: self.greet() else: if not line: pass elif line[0] != '/': self.server.push_line (self, line) else: self.handle_command (line) def greet (self): self.push ('Hello, %s\r\n' % self.nick) num_channels = len(self.server.channels)-1 if num_channels == 0: self.push ('[Kinda lonely in here... you\'re the only caller!]\r\n') else: self.push ('[There are %d other callers]\r\n' % (len(self.server.channels)-1)) nicks = map (lambda x: x.get_nick(), self.server.channels.keys()) self.push (string.join (nicks, '\r\n ') + '\r\n') self.server.push_line (self, '[joined]') def handle_command (self, command): import types command_line = string.split(command) name = 'cmd_%s' % command_line[0][1:] if hasattr (self, name): # make sure it's a method... method = getattr (self, name) if type(method) == type(self.handle_command): method (command_line[1:]) else: self.push ('unknown command: %s' % command_line[0]) def cmd_quit (self, args): self.server.push_line (self, '[left]') self.push ('Goodbye!\r\n') self.close_when_done() # alias for '/quit' - '/q' cmd_q = cmd_quit def push_line (self, nick, line): self.push ('%s: %s\r\n' % (nick, line)) def handle_close (self): self.close() def close (self): del self.server.channels[self] asynchat.async_chat.close (self) def get_nick (self): if self.nick is not None: return self.nick else: return 'Unknown' class chat_server (asyncore.dispatcher): SERVER_IDENT = 'Chat Server (V%s)' % VERSION channel_class = chat_channel spy = 1 def __init__ (self, ip='', port=8518): asyncore.dispatcher.__init__(self) self.port = port self.create_socket (socket.AF_INET, socket.SOCK_STREAM) self.bind ((ip, port)) print '%s started on port %d' % (self.SERVER_IDENT, port) self.listen (5) self.channels = {} self.count = 0 def handle_accept (self): conn, addr = self.accept() self.count = self.count + 1 print 'client #%d - %s:%d' % (self.count, addr[0], addr[1]) self.channels[self.channel_class (self, conn, addr)] = 1 def push_line (self, from_channel, line): nick = from_channel.get_nick() if self.spy: print '%s: %s' % (nick, line) for c in self.channels.keys(): if c is not from_channel: c.push ('%s: %s\r\n' % (nick, line)) def status (self): lines = [ '<h2>%s</h2>' % self.SERVER_IDENT, '<br>Listening on Port: %d' % self.port, '<br><b>Total Sessions:</b> %d' % self.count, '<br><b>Current Sessions:</b> %d' % (len(self.channels)) ] return status_handler.lines_producer (lines) def writable (self): return 0 if __name__ == '__main__': import sys if len(sys.argv) > 1: port = string.atoi (sys.argv[1]) else: port = 8518 s = chat_server ('', port) asyncore.loop()
Save
cmd:
run