Ejemplo n.º 1
0
def start_server(host, port, keyfile, level):
    paramiko_level = getattr(paramiko.common, level)
    paramiko.common.logging.basicConfig(level=paramiko_level)

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
    server_socket.bind((host, port))
    server_socket.listen(BACKLOG)

    while True:
        conn, addr = server_socket.accept()
        try:
            host_key = paramiko.RSAKey.from_private_key_file(keyfile)
            transport = paramiko.Transport(conn)
            transport.add_server_key(host_key)
            transport.set_subsystem_handler('sftp', paramiko.SFTPServer,
                                            StubSFTPServer)

            server = StubServer()
            transport.start_server(server=server)

            channel = transport.accept()
            while transport.is_active():
                time.sleep(1)
        except Exception as ex:
            print ex
Ejemplo n.º 2
0
 def __init__(self, host_name, port, key, root_dir):
     self.host_name = host_name
     self.port = port
     self.keyfile = key
     self.backlog = 0
     self.timeout_sec = 0.5
     self.running = False
     self.log_level = 'INFO'
     self.stub_server = StubServer()
     self.stub_server._ROOT = root_dir
Ejemplo n.º 3
0
    def run(self):
        host_key = paramiko.RSAKey.from_private_key_file(self._keyfile)
        transport = paramiko.Transport(self._conn)
        transport.add_server_key(host_key)
        transport.set_subsystem_handler('sftp', paramiko.SFTPServer,
                                        StubSFTPServer)

        server = StubServer()
        transport.start_server(server=server)

        channel = transport.accept()
        while transport.is_active():
            time.sleep(.00001)
Ejemplo n.º 4
0
def handle_connection(conn, host_key):
    transport = paramiko.Transport(conn)
    transport.add_server_key(host_key)
    transport.set_subsystem_handler('sftp', paramiko.SFTPServer,
                                    StubSFTPServer)

    server = StubServer()
    transport.start_server(server=server)

    channel = transport.accept()
    while transport.is_active():
        time.sleep(1)
    conn.close()
Ejemplo n.º 5
0
def socket_thread_loop(conn, keyfile):
    host_key = paramiko.RSAKey.from_private_key_file(keyfile)
    transport = paramiko.Transport(conn)
    transport.add_server_key(host_key)
    transport.set_subsystem_handler(
        'sftp', paramiko.SFTPServer, StubSFTPServer)

    server = StubServer()
    transport.start_server(server=server)

    channel = transport.accept()
    while transport.is_active():
        time.sleep(1)
Ejemplo n.º 6
0
def start_server(host, port, keyfile, level, auth, ipv6):
    """
    This function starts the server and it is called by 'main'
    It works for both ipv4 and ipv6 using two different approaches.
    In principle, one could always use the getsockattr retrieving the
    data structure for socket address.
    host - host address (IPv4 or IPv6 address are allowed)
    port - listening port
    keyfile - the file where key s stored (fingerprint will be retrreved automatically)
    level - logging level (default is INFO)
    ipv6 - use ipv6 procedure to get the socket address (for IPv6)
    """
    paramiko_level = getattr(paramiko.common, level)
    paramiko.common.logging.basicConfig(level=paramiko_level)
    print socket.has_ipv6

    #IPv6: it is a 4-tuple
    if ipv6:
        sockaddr = retrieve_socket_ipv6_address(host, port)
        server_socket = ipv6_bind(sockaddr)
        print "You are in IPv6, ipv6 = %s" % ipv6

    #IPv4: it is a 2-tuple (host,port)
    else:
        server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
        server_socket.bind((host, port))
        server_socket.listen(BACKLOG)


    while True:
        conn, addr = server_socket.accept()

        host_key = paramiko.RSAKey.from_private_key_file(keyfile)
        print host_key
        transport = paramiko.Transport(conn)
        transport.add_server_key(host_key)
        transport.set_subsystem_handler(
            'sftp', paramiko.SFTPServer, StubSFTPServer)
        if auth:
            server = AuthenticationStubServer()
        else:
            server = StubServer()

        transport.start_server(server=server)

        channel = transport.accept()