Ejemplo n.º 1
0
def main():
    parser = argparse.ArgumentParser()

    parser.add_argument('-p',
                        '--port',
                        required=True,
                        type=int,
                        help='TCP port used for incoming connections')
    parser.add_argument('-d',
                        '--directory',
                        required=True,
                        help='Directory containing the challenge binaries')
    parser.add_argument(
        '-t',
        '--timeout',
        type=int,
        help=
        'The time in seconds that challenges are allowed to run before quitting'
        ' (default is {} seconds)'.format(ChallengeHandler.chal_timeout))
    parser.add_argument('challenge_binaries',
                        nargs='+',
                        help='List of challenge binaries to run on the server')

    args = parser.parse_args(sys.argv[1:])

    # Generate the full paths to all binaries in the request handler
    cdir = os.path.abspath(args.directory)
    for chal in args.challenge_binaries:
        ChallengeHandler.challenges.append(os.path.join(cdir, chal))

    # Set challenge timeout
    if args.timeout and args.timeout > 0:
        ChallengeHandler.chal_timeout = args.timeout

    # Start the challenge server
    ForkingTCPServer.allow_reuse_address = True
    srv = ForkingTCPServer(('localhost', args.port), ChallengeHandler)
    try:
        print('Starting server at localhost:{}'.format(args.port))
        srv.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        srv.server_close()
Ejemplo n.º 2
0
def main():
    parser = argparse.ArgumentParser()

    parser.add_argument('-p',
                        '--port',
                        required=True,
                        type=int,
                        help='TCP port used for incoming connections')
    parser.add_argument('-d',
                        '--directory',
                        required=True,
                        help='Directory containing the challenge binaries')
    parser.add_argument(
        '-m',
        '--max-connections',
        required=False,
        type=int,
        default=0,
        help=
        'The number of connections this server will handle before shutting down'
    )
    parser.add_argument(
        '-t',
        '--timeout',
        type=int,
        help=
        'The time in seconds that challenges are allowed to run before quitting'
        ' (default is {} seconds)'.format(ChallengeHandler.chal_timeout))
    parser.add_argument(
        '--use-signals',
        action='store_true',
        help=
        'Use signals to coordinate starting the challenges with another process'
    )
    parser.add_argument('challenge_binaries',
                        nargs='+',
                        help='List of challenge binaries to run on the server')

    args = parser.parse_args(sys.argv[1:])

    # Generate the full paths to all binaries in the request handler
    cdir = os.path.abspath(args.directory)
    for chal in args.challenge_binaries:
        ChallengeHandler.challenges.append(os.path.join(cdir, chal))

    # Set challenge timeout
    if args.timeout and args.timeout > 0:
        ChallengeHandler.chal_timeout = args.timeout

    # Set how the handler will start challenges
    ChallengeHandler.use_signals = args.use_signals

    # Start the challenge server
    ForkingTCPServer.allow_reuse_address = True
    if args.max_connections > 0:
        srv = LimitedForkServer(('localhost', args.port), ChallengeHandler,
                                args.max_connections)
    else:
        srv = ForkingTCPServer(('localhost', args.port), ChallengeHandler)

    try:
        stdout_flush('Starting server at localhost:{}\n'.format(args.port))
        srv.serve_forever()
    except KeyboardInterrupt:
        pass
    finally:
        srv.server_close()
Ejemplo n.º 3
0
from SocketServer import BaseRequestHandler
from SocketServer import ForkingTCPServer


class EchoHandler(BaseRequestHandler):
    def handle(self):
        print "got connenction from", self.client_address
        while True:
            data = self.request.recv(4096)
            if data:
                sent = self.request.send(data)
            else:
                print "disconnect", self.client_address
                self.request.close()
                break


if __name__ == "__main__":
    listen_address = ("0.0.0.0", 2007)
    server = ForkingTCPServer(listen_address, EchoHandler)
    server.serve_forever()
Ejemplo n.º 4
0
                    make_torrent()
                    blocking
                    '''
                elif data == "download":
                    print(" server download")
                    '''
                    libtorrent add param ....
                    add_handle()
                    no block
                    '''
                elif data == "seeding":
                    '''
                    start seeding ..
                    no block
                    '''
                    print("start seeding")

                print("recv from client:", data)
                self.request.sendall(data.upper())
            except Exception as e:
                print(e)
                break


if __name__ == "__main__":
    TCPServer.allow_reuse_address = True
    # tcpSerSock = ThreadingTCPServer(ADDR, MsgTransfer)
    tcpSerSock = ForkingTCPServer(ADDR, MsgTransfer)
    print 'waiting for connection...'
    tcpSerSock.serve_forever()
Ejemplo n.º 5
0
# -*- coding: UTF-8 -*-
'''
/***********************************************************
      FileName: listing14-4.ForkingTCPServer2.py
          Desc: 原生ForkingTCPServer
        Author: Jie Yin
         Email: [email protected]
      HomePage: https://github.com/mumingv
       Version: 0.0.1
    LastChange: 2017-05-30 12:55:07
       History:
 ***********************************************************/
'''
from SocketServer import ForkingTCPServer, StreamRequestHandler
import time

class Handler(StreamRequestHandler):

    def handle(self):
        addr = self.request.getpeername()
        print 'Got connection from', addr
        # 延迟5秒
        time.sleep(5)
        self.wfile.write('Thank you for connecting')
        print 'Send data to', addr, 'ok'

# Server是一个ForkingTCPServer,所以对于每个客户端请求都会自动创建一个Handler实例
# ForkingTCPServer是异步的,对于每个请求,服务端都会fork一个子进程来处理客户端请求,所以同时会有多个Handler实例在跑
server = ForkingTCPServer(('', 1234), Handler)
server.serve_forever()
Ejemplo n.º 6
0
        return True

    def do_GET(self):
        """
        Process the HTTP GET Request
        """

        logging.debug('Processing %s', self.path)

        if not self.do_netlist():
            self.copyfile(urllib.urlopen(self.path, proxies={}), self.wfile)

if __name__ == '__main__':

    parser = OptionParser()
    parser.add_option('-p', '--port', type='int', help='Listening port number', default=8080)
    parser.add_option('-v', '--verbose', type='choice', action='store',
        choices=[k.lower() for k in logging._levelNames.keys() if isinstance(k, basestring)],
        default=logging.getLevelName(logging.INFO).lower(),
        help='Set the verbosity of the log level')
    options, args = parser.parse_args()

    logging.basicConfig(
        level=logging.getLevelName(options.verbose.upper()),
        handlers=[logging.StreamHandler()])

    httpd = ForkingTCPServer(('', options.port), Proxy)
    logging.info('Listening at port: %d', options.port)
    httpd.serve_forever()
                break


if __name__ == "__main__":
    #telnet 127.0.0.1 9999
    host = ""  #主机名,可以是ip,像localhost的主机名,或""
    port = 12580  #端口
    addr = (host, port)
    flag = raw_input("请选择运行模式:")
    if flag == '1':
        #socket server 1:TCPServer+BaseRequestHandler,单客户端连接,单字符接收
        #构造TCPServer对象
        server = TCPServer(addr, MyBaseRequestHandlerr)
        #启动服务监听
        server.serve_forever()

    elif flag == '2':
        #socket server 2:单客户端连接,多字符接收
        server = TCPServer(addr, MyStreamRequestHandlerr)
        server.serve_forever()

    elif flag == '3':
        #socket server 3:用多线程实现多客户端连接,多字符接收
        server = ThreadingTCPServer(addr, MyStreamRequestHandlerr)
        server.serve_forever()
    elif flag == '4':
        #socket server 4:用多进程实现多客户端连接,多字符接收
        server = ForkingTCPServer(addr, MyStreamRequestHandlerr)
        server.serve_forever()
    else:
        print "请输入1-4序号:"
Ejemplo n.º 8
0
def test_echoserver_fork():
    server = ForkingTCPServer(listen_address, EchoHandlerFork)
    server.serve_forever()