コード例 #1
0
    def tracker():
        if request.endpoint == "views.themes":
            return

        if authed():
            user_ips = get_current_user_recent_ips()
            ip = get_ip()

            track = None
            if (ip not in user_ips) or (request.method != "GET"):
                track = Tracking.query.filter_by(
                    ip=get_ip(), user_id=session["id"]).first()

                if track:
                    track.date = datetime.datetime.utcnow()
                else:
                    track = Tracking(ip=get_ip(), user_id=session["id"])
                    db.session.add(track)

            if track:
                try:
                    db.session.commit()
                except (InvalidRequestError, IntegrityError):
                    db.session.rollback()
                    db.session.close()
                    logout_user()
                else:
                    clear_user_recent_ips(user_id=session["id"])
コード例 #2
0
    def tracker():
        # TODO: This function shouldn't cause a DB hit for lookups if possible
        if authed():
            track = Tracking.query.filter_by(ip=get_ip(),
                                             user_id=session['id']).first()
            if not track:
                visit = Tracking(ip=get_ip(), user_id=session['id'])
                db.session.add(visit)
            else:
                track.date = datetime.datetime.utcnow()

            try:
                db.session.commit()
            except (InvalidRequestError, IntegrityError) as e:
                print(e.message)
                db.session.rollback()
                session.clear()

            if authed():
                user = get_current_user()
                team = get_current_team()

                if request.path.startswith('/themes') is False:
                    if user and user.banned:
                        return render_template(
                            'errors/403.html',
                            error='You have been banned from this CTF'), 403

                    if team and team.banned:
                        return render_template(
                            'errors/403.html',
                            error='Your team has been banned from this CTF'
                        ), 403

            db.session.close()
コード例 #3
0
 def tracker():
     if authed():
         if not Tracking.query.filter_by(ip=ip2long(request.remote_addr)).first():
             visit = Tracking(request.remote_addr, session['id'])
             db.session.add(visit)
             db.session.commit()
             db.session.close()
コード例 #4
0
ファイル: utils.py プロジェクト: yizhimanpadewoniu/CTFd
 def tracker():
     if authed():
         track = Tracking.query.filter_by(ip=ip2long(get_ip()), team=session['id']).first()
         if not track:
             visit = Tracking(ip=get_ip(), team=session['id'])
             db.session.add(visit)
             db.session.commit()
         else:
             track.date = datetime.datetime.utcnow()
             db.session.commit()
         db.session.close()
コード例 #5
0
    def tracker():
        if authed():
            track = Tracking.query.filter_by(ip=get_ip(), team=session['id']).first()
            if not track:
                visit = Tracking(ip=get_ip(), team=session['id'])
                db.session.add(visit)
            else:
                track.date = datetime.datetime.utcnow()

            try:
                db.session.commit()
            except (InvalidRequestError, IntegrityError) as e:
                print(e.message)
                db.session.rollback()
                session.clear()

            db.session.close()
コード例 #6
0
ファイル: __init__.py プロジェクト: Deadlock-Team/ctfd-theme
    def tracker():
        if request.endpoint == "views.themes":
            return

        if authed():
            track = Tracking.query.filter_by(ip=get_ip(),
                                             user_id=session["id"]).first()
            if not track:
                visit = Tracking(ip=get_ip(), user_id=session["id"])
                db.session.add(visit)
            else:
                track.date = datetime.datetime.utcnow()

            try:
                db.session.commit()
            except (InvalidRequestError, IntegrityError):
                db.session.rollback()
                logout_user()

            if authed():
                user = get_current_user()
                team = get_current_team()
                #level = get_level()

                if request.path.startswith("/themes") is False:
                    if user and user.banned:
                        return (
                            render_template(
                                "errors/403.html",
                                error="You have been banned from this CTF",
                            ),
                            403,
                        )

                    if team and team.banned:
                        return (
                            render_template(
                                "errors/403.html",
                                error="Your team has been banned from this CTF",
                            ),
                            403,
                        )

            db.session.close()
コード例 #7
0
def gen_tracking(db, user_id=None, ip="127.0.0.1", **kwargs):
    tracking = Tracking(ip=ip, user_id=user_id, **kwargs)
    db.session.add(tracking)
    db.session.commit()
    return tracking
コード例 #8
0
                                 password="******")
                    user.verified = True
                    if random_chance():
                        user.affiliation = gen_affiliation()
                    if random_chance():
                        oauth_id = random.randint(1, 1000)
                        while oauth_id in used_oauth_ids:
                            oauth_id = random.randint(1, 1000)
                        used_oauth_ids.append(oauth_id)
                        user.oauth_id = oauth_id
                    if mode == "teams":
                        user.team_id = random.randint(1, TEAM_AMOUNT)
                    db.session.add(user)
                    db.session.flush()

                    track = Tracking(ip=gen_ip(), user_id=user.id)
                    db.session.add(track)
                    db.session.flush()
                    count += 1
                except Exception:
                    pass

        db.session.commit()

        if mode == "teams":
            # Assign Team Captains
            print("GENERATING TEAM CAPTAINS")
            teams = Teams.query.all()
            for team in teams:
                captain = (Users.query.filter_by(team_id=team.id).order_by(
                    Users.id).limit(1).first())