Пример #1
0
    def get(self):
        if self.is_admin:
            challenge_list = monitor.challenges
        else:
            challenge_list = monitor.visible_challenges

        metadata = {name: monitor.metadata(name) for name in challenge_list}
        challenge_list = sorted(challenge_list,
                                key=lambda n: (metadata[n]['points'], n))

        challenges = [{
            'name':
            name,
            'points':
            metadata[name]['points'],
            'captures':
            len(scoreboard.get_captures_by_challenge(name)),
            'status':
            make_status_widget(self, monitor.status(name), metadata[name])
        } for name in challenge_list]

        self.render('templates/challenge_index.html',
                    user=self.user,
                    selected='challenges',
                    challenges=challenges)
Пример #2
0
    def get(self, challenge):
        status = monitor.status(challenge)
        metadata = monitor.metadata(challenge)
        if status == None or metadata == None:
            raise tornado.web.HTTPError(404)

        if not self.is_admin and not status['visible']:
            raise tornado.web.HTTPError(404)

        status_widget = make_status_widget(self, status, metadata,
                                           self.is_admin)

        self.render(
            'templates/challenge.html',
            user=self.user,
            selected='challenges',
            challenge_files=metadata.get('public_files', []),
            challenge_name=metadata.get('name', challenge),
            challenge_author=metadata.get('author', 'Anonymous'),
            challenge_points=metadata.get('points', 0),
            challenge_solves=len(
                scoreboard.get_captures_by_challenge(challenge)),
            challenge_description=metadata.get('description', ''),
            show_capture=auth.is_playing(self.user or ''),
            status=status_widget,
        )
    def action_capture(self, challenge, flag):
        if not self.is_playing:
            raise tornado.web.HTTPError(403)
        
        status = monitor.status(challenge)
        metadata = monitor.metadata(challenge)
        if status == None or metadata == None or not status['visible']:
            raise tornado.web.HTTPError(403)

        if metadata['flag'].strip() == flag.strip():
            scoreboard.capture(self.user, challenge)
            scoreboard_cache.dirty = True
Пример #4
0
    def action_capture(self, challenge, flag):
        if not self.is_playing:
            raise tornado.web.HTTPError(403)

        status = monitor.status(challenge)
        metadata = monitor.metadata(challenge)
        if status == None or metadata == None or not status['visible']:
            raise tornado.web.HTTPError(403)

        if metadata['flag'].strip() == flag.strip():
            scoreboard.capture(self.user, challenge)
            scoreboard_cache.dirty = True
    def get(self, challenge):
        status = monitor.status(challenge)
        metadata = monitor.metadata(challenge)
        if status == None or metadata == None:
            raise tornado.web.HTTPError(404)

        if not self.is_admin and not status['visible']:
            raise tornado.web.HTTPError(404)

        status_widget = make_status_widget(self, status, metadata, self.is_admin)

        self.render('templates/challenge.html',
            user=self.user,
            selected='challenges',
            challenge_files=metadata.get('public_files', []),
            challenge_name=metadata.get('name', challenge),
            challenge_author=metadata.get('author', 'Anonymous'),
            challenge_points=metadata.get('points', 0),
            challenge_solves=len(scoreboard.get_captures_by_challenge(challenge)),
            challenge_description=metadata.get('description', ''),
            show_capture=auth.is_playing(self.user or ''),
            status=status_widget,
        )
    def get(self):
        if self.is_admin:
            challenge_list = monitor.challenges
        else:
            challenge_list = monitor.visible_challenges

        metadata = { name : monitor.metadata(name) for name in challenge_list }
        challenge_list = sorted(challenge_list, key=lambda n: (metadata[n]['points'], n))

        challenges = [
            {
                'name' : name,
                'points' : metadata[name]['points'],
                'captures' : len(scoreboard.get_captures_by_challenge(name)),
                'status' : make_status_widget(self, monitor.status(name), metadata[name])
            }
            for name in challenge_list
        ]

        self.render('templates/challenge_index.html',
            user=self.user,
            selected='challenges',
            challenges=challenges
        )