Пример #1
0
    def _set_data_(self, data, *args, **kwargs):
        if isinstance(data, QtGui.QTextDocument):
            self._docViewer_.setDocument(data)

        elif isinstance(data, str):
            from html.parser import HTMLParser

            parser = HTMLParser(convert_charrefs=True)

            parser.feed(data)

            parser.close()

            if parser.get_starttag_text() is None:
                self._docViewer_.document().setPlainText(data)

            else:
                self._docViewer_.document().setHtml(data)

            if data.find("<?xml version=") >= 0:
                self._highlighter_ = xmlutils.XmlSyntaxHighlighter(
                    self._docViewer_.document())
            else:
                self._highlighter_ = None

        else:
            raise TypeError(
                "Expecting a QTextDdocument or a str; got %s instead" %
                type(data).__name__)

        if kwargs.get("show", True):
            self.activateWindow()
 def test_generate_body_with_dummy_data_html(self):
     """Check to make sure that the last tag is an html tag"""
     test_email_data = [{'Author': 'Test Author', 'Journal': 'Test Journal', 'PubDate': datetime.datetime.now().date(), 'Title': 'Test Title', 'Link': 'https://www.altmetric.com/details/101571224'}]
     test_email_address = '*****@*****.**'
     test_body = api_parser.generate_body(test_email_data, 30, test_email_address)
     parser = HTMLParser()
     parser.feed(test_body)
     test_output = parser.get_starttag_text()
     parser.close()
     self.assertEqual(test_output, '<a href="mailto:[email protected]">')
Пример #3
0
    def validTextHTML(self, strText):
        isHTML = False

        parser = HTMLParser()
        parser.feed(strText)
        tagHtml = parser.get_starttag_text()

        if tagHtml:
            isHTML = True

        return isHTML
Пример #4
0
def submit(request):
    ret = {}
    has_html = False

    if request.POST:
        d = request.POST.dict()
        name = d.get("name", None)
        secret_key = d.get("secret_key", None)

        if name and is_user_data_valid(name):
            parser = HTMLParser()
            parser.feed(name)
            parser.close()
            if parser.get_starttag_text():
                ret["flag"] = FLAGS["scoreboard_hacking"][0]
                has_html = True

        if name and secret_key and not has_html:
            if not is_user_data_valid(name, data_type=DataType.SHORT_NAME):
                ret["error"] = "Too much data"
            elif not is_user_data_valid(secret_key,
                                        data_type=DataType.PASSWORD):
                ret["error"] = "Too much data"
            elif get_leader(name.strip().lower()):
                # If they also proved the correct secret key, update that entry in the database
                secret_key = hashlib.sha512(
                    secret_key.encode('utf-8')).hexdigest()
                leader = get_leader(name.strip().lower(), secret_key)
                if leader:
                    session = get_unauth_session(request)
                    if not session.lifetime_hacker_bucks:
                        ret["error"] = "What makes you think you belong on the leaderboard?"
                    else:
                        # Update the leader with the new info
                        # Create a set of claimed flags and combine the loaded leader with the current session
                        leader_claimed_flags = json.loads(leader.claimed_flags)
                        claimed_flags = list(
                            set(leader_claimed_flags + session.claimed_flags))

                        leader.lifetime_hacker_bucks = calc_lifetime_hacker_bucks_from_claimed_flags(
                            claimed_flags)
                        leader.num_flags_found = len(claimed_flags)
                        leader.claimed_flags = json.dumps(claimed_flags)

                        # This will overwrite their hacker bucks. Only an issue if they didn't load first
                        leader.hacker_bucks = session.hacker_bucks
                        leader.remote_ip = session.remote_ip
                        leader.percent_complete = int(
                            (leader.num_flags_found) / len(FLAGS) * 100)
                        leader.playtime = str(timezone.now() -
                                              leader.session_creation_time)

                        leader_purchased_challenges = json.loads(
                            leader.purchased_challenges)
                        for challenge_id, challenge in session.challenges.items(
                        ):
                            if challenge.purchased:
                                leader_purchased_challenges.append(
                                    challenge_id)
                        leader_purchased_challenges = list(
                            set(leader_purchased_challenges))
                        leader.purchased_challenges = json.dumps(
                            leader_purchased_challenges)

                        # Update the changes
                        leader.save()
                else:
                    ret["error"] = "Already a leader with that name. To update, provide the correct password."
            else:
                name = name.strip()
                session = get_unauth_session(request)
                if not session.lifetime_hacker_bucks:
                    ret["error"] = "What makes you think you belong on the leaderboard?"
                else:
                    leader = LeaderboardEntry()
                    leader.lifetime_hacker_bucks = session.lifetime_hacker_bucks
                    leader.num_flags_found = len(session.claimed_flags)
                    leader.claimed_flags = json.dumps(session.claimed_flags)
                    leader.hacker_bucks = session.hacker_bucks
                    leader.percent_complete = int(
                        (leader.num_flags_found / len(FLAGS)) * 100)
                    leader.name = name.lower()
                    leader.display_name = name
                    leader.remote_ip = session.remote_ip
                    leader.session_creation_time = session.creation_time
                    leader.secret_key = hashlib.sha512(
                        secret_key.encode('utf-8')).hexdigest()
                    leader.playtime = str(timezone.now() -
                                          session.creation_time)

                    # Get the list of purchased challenge IDs
                    purchased_challenges = []
                    for challenge_id, challenge in session.challenges.items():
                        if challenge.purchased:
                            purchased_challenges.append(challenge_id)
                    leader.purchased_challenges = json.dumps(
                        purchased_challenges)

                    leader.save()
        elif not has_html:
            ret["error"] = "No name/secret key provided for leaderboard entry"

    return HttpResponse(json.dumps(ret))
Пример #5
0
    def handle_data(self, data):

        search = re.match('HOS', data)
        if(search):
            print(HTMLParser.get_starttag_text(self))
            print ("Encountered some data  :", data)
Пример #6
0
def submit(request):
    ret = {}
    has_html = False

    if request.POST:
        d = request.POST.dict()
        name = d.get("name", None)
        secret_key = d.get("secret_key", None)

        if name and is_user_data_valid(name):
            parser = HTMLParser()
            parser.feed(name)
            parser.close()
            if parser.get_starttag_text():
                ret["flag"] = FLAGS["scoreboard_hacking"][0]
                has_html = True

        if name and secret_key and not has_html:
            if not is_user_data_valid(name, data_type=DataType.SHORT_NAME):
                ret["error"] = "Too much data"
            elif not is_user_data_valid(secret_key, data_type=DataType.PASSWORD):
                ret["error"] = "Too much data"
            elif get_leader(name.strip().lower()):
                # If they also proved the correct secret key, update that entry in the database
                secret_key = hashlib.sha512(secret_key.encode('utf-8')).hexdigest()
                leader = get_leader(name.strip().lower(), secret_key)
                if leader:
                    session = get_unauth_session(request)
                    if not session.lifetime_hacker_bucks:
                        ret["error"] = "What makes you think you belong on the leaderboard?"
                    else:
                        # Update the leader with the new info
                        # Create a set of claimed flags and combine the loaded leader with the current session
                        leader_claimed_flags = json.loads(leader.claimed_flags)
                        claimed_flags = list(set(leader_claimed_flags + session.claimed_flags))

                        leader.lifetime_hacker_bucks = calc_lifetime_hacker_bucks_from_claimed_flags(claimed_flags)
                        leader.num_flags_found = len(claimed_flags)
                        leader.claimed_flags = json.dumps(claimed_flags)

                        # This will overwrite their hacker bucks. Only an issue if they didn't load first
                        leader.hacker_bucks = session.hacker_bucks
                        leader.remote_ip = session.remote_ip
                        leader.percent_complete = int((leader.num_flags_found) / len(FLAGS) * 100)
                        leader.playtime = str(timezone.now() - leader.session_creation_time)

                        leader_purchased_challenges = json.loads(leader.purchased_challenges)
                        for challenge_id, challenge in session.challenges.items():
                            if challenge.purchased:
                                leader_purchased_challenges.append(challenge_id)
                        leader_purchased_challenges = list(set(leader_purchased_challenges))
                        leader.purchased_challenges = json.dumps(leader_purchased_challenges)

                        # Update the changes
                        leader.save()
                else:
                    ret["error"] = "Already a leader with that name. To update, provide the correct password."
            else:
                name = name.strip()
                session = get_unauth_session(request)
                if not session.lifetime_hacker_bucks:
                    ret["error"] = "What makes you think you belong on the leaderboard?"
                else:
                    leader = LeaderboardEntry()
                    leader.lifetime_hacker_bucks = session.lifetime_hacker_bucks
                    leader.num_flags_found = len(session.claimed_flags)
                    leader.claimed_flags = json.dumps(session.claimed_flags)
                    leader.hacker_bucks = session.hacker_bucks
                    leader.percent_complete = int((leader.num_flags_found / len(FLAGS)) * 100)
                    leader.name = name.lower()
                    leader.display_name = name
                    leader.remote_ip = session.remote_ip
                    leader.session_creation_time = session.creation_time
                    leader.secret_key = hashlib.sha512(secret_key.encode('utf-8')).hexdigest()
                    leader.playtime = str(timezone.now() - session.creation_time)

                    # Get the list of purchased challenge IDs
                    purchased_challenges = []
                    for challenge_id, challenge in session.challenges.items():
                        if challenge.purchased:
                            purchased_challenges.append(challenge_id)
                    leader.purchased_challenges = json.dumps(purchased_challenges)

                    leader.save()
        elif not has_html:
            ret["error"] = "No name/secret key provided for leaderboard entry"

    return HttpResponse(json.dumps(ret))