Example #1
0
def main(stdscr):
    parser = argparse.ArgumentParser()
    parser.add_argument("user", type=str)
    parser.add_argument("-v", "--verbose", action="count")
    args = parser.parse_args()

    user = args.user
    server_name = origin_from_ucid(user)

    ## Set up logging ##

    root_logger = logging.getLogger()

    formatter = logging.Formatter(
        "%(asctime)s - %(name)s - %(lineno)d - " "%(levelname)s - %(message)s"
    )
    if not os.path.exists("logs"):
        os.makedirs("logs")
    fh = logging.FileHandler("logs/%s" % user)
    fh.setFormatter(formatter)

    root_logger.addHandler(fh)
    root_logger.setLevel(logging.DEBUG)

    # Hack: The only way to get it to stop logging to sys.stderr :(
    log.theLogPublisher.observers = []
    observer = log.PythonLoggingObserver()
    observer.start()

    ## Set up synapse server

    curses_stdio = cursesio.CursesStdIO(stdscr)
    input_output = InputOutput(curses_stdio, user)

    curses_stdio.set_callback(input_output)

    app_hs = SynapseHomeServer(server_name, db_name="dbs/%s" % user)
    replication = app_hs.get_replication_layer()

    hs = HomeServer(server_name, replication, curses_stdio)

    input_output.set_home_server(hs)

    ## Add input_output logger
    io_logger = IOLoggerHandler(input_output)
    io_logger.setFormatter(formatter)
    root_logger.addHandler(io_logger)

    ## Start! ##

    try:
        port = int(server_name.split(":")[1])
    except:
        port = 12345

    app_hs.get_http_server().start_listening(port)

    reactor.addReader(curses_stdio)

    reactor.run()
Example #2
0
def main(stdscr):
    parser = argparse.ArgumentParser()
    parser.add_argument('user', type=str)
    parser.add_argument('-v', '--verbose', action='count')
    args = parser.parse_args()

    user = args.user
    server_name = origin_from_ucid(user)

    ## Set up logging ##

    root_logger = logging.getLogger()

    formatter = logging.Formatter('%(asctime)s - %(name)s - %(lineno)d - '
            '%(levelname)s - %(message)s')
    if not os.path.exists("logs"):
        os.makedirs("logs")
    fh = logging.FileHandler("logs/%s" % user)
    fh.setFormatter(formatter)

    root_logger.addHandler(fh)
    root_logger.setLevel(logging.DEBUG)

    # Hack: The only way to get it to stop logging to sys.stderr :(
    log.theLogPublisher.observers = []
    observer = log.PythonLoggingObserver()
    observer.start()

    ## Set up synapse server

    curses_stdio = cursesio.CursesStdIO(stdscr)
    input_output = InputOutput(curses_stdio, user)

    curses_stdio.set_callback(input_output)

    app_hs = SynapseHomeServer(server_name, db_name="dbs/%s" % user)
    replication = app_hs.get_replication_layer()

    hs = HomeServer(server_name, replication, curses_stdio)

    input_output.set_home_server(hs)

    ## Add input_output logger
    io_logger = IOLoggerHandler(input_output)
    io_logger.setFormatter(formatter)
    root_logger.addHandler(io_logger)

    ## Start! ##

    try:
        port = int(server_name.split(":")[1])
    except:
        port = 12345

    app_hs.get_http_server().start_listening(port)

    reactor.addReader(curses_stdio)

    reactor.run()
Example #3
0
    def test_webclient_resolves_with_client_resource(self):
        """
        Tests that both client and webclient resources can be accessed simultaneously.

        This is a regression test created in response to https://github.com/matrix-org/synapse/issues/11763.
        """
        for resource_name_order_list in [
            ["webclient", "client"],
            ["client", "webclient"],
        ]:
            # Create a dictionary from path regex -> resource
            resource_dict: Dict[str, Resource] = {}

            for resource_name in resource_name_order_list:
                resource_dict.update(
                    SynapseHomeServer._configure_named_resource(
                        self.hs, resource_name))

            # Create a root resource which ties the above resources together into one
            root_resource = Resource()
            create_resource_tree(resource_dict, root_resource)

            # Create a site configured with this resource to make HTTP requests against
            listener_config = ListenerConfig(
                port=8008,
                bind_addresses=["127.0.0.1"],
                type="http",
                http_options=HttpListenerConfig(resources=[
                    HttpResourceConfig(names=resource_name_order_list)
                ]),
            )
            test_site = SynapseSite(
                logger_name="synapse.access.http.fake",
                site_tag=self.hs.config.server.server_name,
                config=listener_config,
                resource=root_resource,
                server_version_string="1",
                max_request_body_size=1234,
                reactor=self.reactor,
            )

            # Attempt to make requests to endpoints on both the webclient and client resources
            # on test_site.
            self._request_client_and_webclient_resources(test_site)