#!/usr/bin/python3
# Author: neo chan
# Homepage: http://netkiller.8800.org
import socketserver,sys
import threading
class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
def setup(self):
print(self.client_address[0], 'connected!')
self.request.send(b'+OK Welcome to coremail Mail Pop3 Server \r\n')
def handle(self):
# self.request is the TCP socket connected to the client
while True:
self.data = self.request.recv(1024).strip()
if self.data == b'QUIT':
return
if self.data == b'AUTH':
self.request.send(b'-ERR Not support ntlm auth method\r\n')
print("%s wrote: " % self.client_address[0])
print (self.data)
# just send back the same data, but upper-cased
# self.request.send(self.data.upper())
self.request.send(b'+OK 0 message(s) [0 byte(s)]\r\n')
def finish(self):
print( self.client_address[0], 'disconnected!')
self.request.send(b'Goodbye! \r\n')
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
pass
if __name__ == "__main__":
HOST, PORT = "172.16.0.1", 110
# Create the server, binding to localhost on port 110
# server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)
# server.serve_forever()
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
try:
server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
# Start a thread with the server -- that thread will then start one
# more thread for each request
server_thread = threading.Thread(target=server.serve_forever)
# Exit the server thread when the main thread terminates
# server_thread.setDaemon(True)
server_thread.start()
except KeyboardInterrupt:
sys.exit(0)
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。