Esempio n. 1
0
 def template_args(self):
     """Return additional template args"""
     return {
         "sessions": sessions.get_all(),
         "hosts": sessions.hosts(),
         "regions": sessions.regions(),
     }
Esempio n. 2
0
    def test_post(self):
        login_cookie = yield self.login()

        get = yield self.http_client.fetch(
            self.get_url("/admin/server_list"),
            headers={"Cookie": login_cookie},
            follow_redirects=False,
        )

        self.assertEqual(get.code, 200)

        xsrf = _get_xsrf(get.body, "session_remove")

        cookie = login_cookie + ";" + get.headers["Set-Cookie"]

        secret = list(sessions.get_all().keys())[0]

        post = yield self.http_client.fetch(
            self.get_url("/admin/server_list"),
            headers={"Cookie": cookie},
            follow_redirects=False,
            method="POST",
            body="_xsrf={}&action=session_remove&secret={}".format(
                xsrf, secret),
        )

        self.assertEqual(post.code, 200)

        database.delete_login("test_user")
Esempio n. 3
0
    def admin_post(self):
        action = self.get_argument("action", default=None)
        secret = self.get_argument("secret", default=None)

        if action != "session_remove":
            return

        if secret in sessions.get_all():
            sessions.remove_entry(secret)
Esempio n. 4
0
def _cleanup_sessions():
    to_delete = []
    for key in sessions.get_all():
        if (time.time() - sessions.get_entry(key)["timestamp"] >
                settings.SESSION_TIMEOUT_SECONDS):
            to_delete.append(key)

    for key in to_delete:
        sessions.remove_entry(key)
Esempio n. 5
0
    def template_args(self):
        """Additional template arguments"""

        total_player_count = 0

        for secret in sessions.get_all():
            total_player_count += sessions.get_entry(secret)["player_count"]

        return {
            "session_count": sessions.count(),
            "total_player_count": total_player_count,
            "total_session_count": sessions.total_session_count,
            "start_time": sessions.start_time,
        }
Esempio n. 6
0
    def list(self):
        """List all sessions matching filter"""
        # pylint: disable=W0603
        global LAST_SESSION_CLEANUP

        if time.time() - LAST_SESSION_CLEANUP > settings.SESSION_CLEANUP_DELAY:
            LAST_SESSION_CLEANUP = time.time()
            _cleanup_sessions()

        name = self.get_argument("name", default=None)
        game = self.get_argument("game", default=None)
        password = self.get_argument("password", default=None)
        region = self.get_argument("region", default=None)
        version = self.get_argument("version", default=None)
        in_game = self.get_argument("in_game", default=None)

        filtered_sessions = list(sessions.get_all().values())

        if name is not None:
            filtered_sessions = _filter_string(filtered_sessions, "name", name,
                                               True)

        if game is not None:
            filtered_sessions = _filter_string(filtered_sessions, "game", game,
                                               True)

        if region is not None:
            filtered_sessions = _filter_string(filtered_sessions, "region",
                                               region)

        if version is not None:
            filtered_sessions = _filter_string(filtered_sessions, "version",
                                               version)

        try:
            if password is not None:
                filtered_sessions = _filter_string(filtered_sessions,
                                                   "password",
                                                   bool(int(password)))

            if in_game is not None:
                filtered_sessions = _filter_string(filtered_sessions,
                                                   "in_game",
                                                   bool(int(in_game)))
        except ValueError:
            self.write({"status": "PARSE_ERROR"})
            self.set_status(400)
            return

        self.write({"status": "OK", "sessions": filtered_sessions})