Ejemplo n.º 1
0
def register_application(db: Session,
                         app_name,
                         redirect_url=None,
                         algorithm="HS256",
                         enable_sso=False):
    redirect_url = redirect_url if redirect_url is not None else ""
    client_id = generate_client_id()
    client_secret = generate_client_secret()
    created_time = round(int(time.time()))
    updated_time = created_time
    is_deleted = 0

    try:
        app = models.ApplicationTab(app_name=app_name,
                                    client_id=client_id,
                                    client_secret=client_secret,
                                    redirect_url=redirect_url,
                                    algorithm=algorithm,
                                    enable_sso=enable_sso,
                                    is_deleted=is_deleted,
                                    created_time=created_time,
                                    updated_time=updated_time)
        db = db.using_bind()
        db.add(app)
        db.commit()
        # db_.refresh(app)

        return 1
    except Exception as err:
        log.warn("register_application_fail| error = %s", err)
        return 0
Ejemplo n.º 2
0
def update_application(db: Session,
                       app_id,
                       app_name=None,
                       redirect_url=None,
                       enable_sso=None,
                       algorithm=None):
    updated_time = round(int(time.time()))
    model = db.using_bind("slave").query(models.ApplicationTab).filter(
        models.ApplicationTab.id == app_id).first()

    if not model:
        return 0

    try:
        if app_name is not None:
            model.app_name = app_name

        if redirect_url is not None:
            model.redirect_url = redirect_url

        if enable_sso is not None:
            model.enable_sso = enable_sso

        if algorithm is not None:
            model.algorithm = algorithm

        model.updated_time = updated_time

        db = db.using_bind("master")
        db.commit()
        db.flush()
        return 1
    except Exception as err:
        log.warn("update_application_fail|error=%s", err)
        return 0
Ejemplo n.º 3
0
def create_user_info(user_name, password, full_name, email, phone,
                     db: Session):
    time_ts = round(int(time.time()))
    password = password
    salt_key = bcrypt.gensalt()
    hash_password = bcrypt.hashpw(password.encode("utf-8"), salt_key)
    user_name = user_name
    full_name = full_name
    email = email
    phone = phone
    is_deleted = 0
    created_time = time_ts
    updated_time = time_ts

    try:
        db_user = models.UserInfoTab(user_name=user_name,
                                     password=hash_password.decode("utf-8"),
                                     salt_key=salt_key.decode("utf-8"),
                                     full_name=full_name,
                                     email=email,
                                     phone=phone,
                                     is_deleted=is_deleted,
                                     created_time=created_time,
                                     updated_time=updated_time)
        db = db.using_bind("master")
        db.add(db_user)
        db.commit()
        # db.using_bind("master").refresh(db_user)
        return 1
    except Exception as err:
        log.warn("create_user_fail|error=%s", err)
        return 0
Ejemplo n.º 4
0
def _sync_player_dex(data_contract, address, transform_contract=None, base_stats_refresh=False):
	# get monster dex size
	dex_size = data_contract.call().getMonsterDexSize(address)
	dex_size = int(dex_size)
	if dex_size == 0:
		first_monster_id = int(data_contract.call().getMonsterObjId(address, 0))
		if first_monster_id != 0:
			log.warn("sync_player_invalid|address=%s,dex_size=%s,first_monster_id=%s", address, dex_size, first_monster_id)
			return False
		return True

	monster_id_set = set()
	for index in range(dex_size):
		monster_id = data_contract.call().getMonsterObjId(address, index)
		monster_id_set.add(int(monster_id))

	#log.info("sync_player_dex|monster_id_set=%s", monster_id_set)

	# get monster id which that user current has in db
	current_monster_ids = get_monster_ids(address)
	for current_monster_id in current_monster_ids:
		monster_id_set.add(current_monster_id)

	total_add = 0
	total_update = 0
	for monster_id in monster_id_set:
		result, add_flag, update_flag = _sync_monster_id(data_contract, monster_id, transform_contract, base_stats_refresh)
		if result is False:
			return False
		total_add += add_flag
		total_update += update_flag

	#log.info("sync_player_dex|address=%s,total_add=%s,total_update=%s", address, total_add, total_update)

	return True
Ejemplo n.º 5
0
def check_password_user(pass1, pass2):
    try:
        if bcrypt.checkpw(pass1.encode("utf-8"), pass2.encode("utf-8")):
            return True
    except Exception as err:
        log.warn("check_password_fail|error=%s", err)
        return False
Ejemplo n.º 6
0
def crawl_adventure_presale():
    infura_client = InfuraClient(INFURA_API_URL)
    adventure_presale_contract = infura_client.getAdventurePresaleContract()

    current_ts = get_timestamp()
    site_id_index = 1
    while site_id_index <= 54:
        site_item_index = 0
        while site_item_index < 10:
            try:
                (bidder, bid_id, site_id, amount, bid_time
                 ) = adventure_presale_contract.call().getBidBySiteIndex(
                     site_id_index, site_item_index)
                if bid_id == 0:
                    log.warn(
                        "query_adventure_presale_invalid|site_id=%s,site_index=%s",
                        site_id_index, site_item_index)
                    time.sleep(3)
                    continue
            except Exception as error:
                logging.exception(
                    "query_adventure_presale_exception|site_id=%s,site_index=%s",
                    site_id_index, site_item_index)
                time.sleep(3)
                continue

            bidder = bidder.lower()
            record = EtheremonDB.EmaAdventurePresaleTab.objects.filter(
                bid_id=bid_id).first()
            if record:
                record.site_id = site_id
                record.bid_id = bid_id
                record.site_index = site_item_index
                record.bidder = bidder
                record.bid_amount = amount
                record.bid_time = bid_time

            else:
                record = EtheremonDB.EmaAdventurePresaleTab(
                    site_id=site_id,
                    site_index=site_item_index,
                    bid_id=bid_id,
                    bidder=bidder,
                    bid_amount=amount,
                    bid_time=bid_time,
                    token_id=0,
                    update_time=current_ts)
            log.data(
                "adventure_presale_query|site_id=%s,site_index=%s,bid_id=%s",
                site_id_index, site_item_index, bid_id)
            record.save()

            site_item_index += 1

        site_id_index += 1
Ejemplo n.º 7
0
def update_session(user_id, session, expired_time, db: Session):
    updated_time = get_timestamp()
    model = get_session_by_user_id(user_id, db)
    if not model:
        return 0

    try:
        model.session = session
        model.expired_time = expired_time
        model.updated_time = updated_time
        db = db.using_bind("master")
        db.commit()
        db.flush()
        return 1
    except Exception as err:
        log.warn("update_session_fail|err=%s", err)
        return 0
Ejemplo n.º 8
0
def update_castle():
    castle_class = web3.eth.contract(abi=CASTLE_ABI)
    castle_contract = castle_class(CASTLE_ADDRESS)

    castle_length = castle_contract.call().totalCastle()
    if DEBUG: print "castle_length: ", castle_length
    log.info('update_castle_length|castle_length=%s', castle_length)

    castle_id = 1
    with open(ID_LOG_FILE, 'r') as f:
        castle_id = int(f.read())

    if DEBUG: print "castle id start:", castle_id
    log.info('update_castle_start|castle_start_id=%s', castle_id)

    while castle_id <= castle_length:
        (name, owner, brick_number, total_win, total_lose,
         create_time) = castle_contract.call().getCastleStats(castle_id)
        (monster_id_1, monster_id_2, monster_id_3, support_id_1, support_id_2,
         support_id_3) = castle_contract.call().getCastleObjInfo(castle_id)
        if DEBUG:
            print "castle id %s %s %s" % (castle_id, type(name),
                                          name.encode('utf-8'))
        log.info('update_castle|caslte_id=%s', castle_id)
        try:
            EtheremonDB.CastleTab.objects.create(
                castle_id=castle_id,
                name=name,
                owner_address=owner,
                brick_number=brick_number,
                castle_create_time=create_time,
                monster_id_1=monster_id_1,
                monster_id_2=monster_id_2,
                monster_id_3=monster_id_3,
                supporter_id_1=support_id_1,
                supporter_id_2=support_id_2,
                supporter_id_3=support_id_3,
                total_win=total_win,
                total_lose=total_lose,
                extra_data=json.dumps({}))
        except IntegrityError:
            log.warn('update_castle|re_update_id=%s', castle_id)
        castle_id += 1

    with open(ID_LOG_FILE, 'w') as f:
        f.write(str(castle_id))
Ejemplo n.º 9
0
def crawl_monster_egg_data():
    infura_client = InfuraClient(INFURA_API_URL)
    current_block_number = infura_client.getCurrentBlock()
    transform_data_contract = infura_client.getTransformDataContract()

    start_time = time.time()
    total_egg_no = transform_data_contract.call().totalEgg()
    log.data("start_crawl_egg_data|total_egg=%s,block=%s", total_egg_no,
             current_block_number)

    index = 1
    while index <= total_egg_no:
        try:
            (egg_id, mother_id, class_id, trainer_address, hatch_time,
             monster_id) = transform_data_contract.call().getEggDataById(index)
        except Exception as error:
            log.warn("query_borrow_data_error|index=%s,error=%s", index,
                     error.message)
            time.sleep(5)
            infura_client = InfuraClient(INFURA_API_URL)
            transform_data_contract = infura_client.getTransformDataContract()
            continue

        egg_record = EtheremonDB.EmaEggDataTab.objects.filter(
            egg_id=index).first()
        if egg_record:
            egg_record.mother_id = mother_id
            egg_record.class_id = class_id
            egg_record.trainer = str(trainer_address).lower()
            egg_record.hatch_time = int(hatch_time)
            egg_record.new_obj_id = monster_id
            egg_record.create_time = start_time
        else:
            EtheremonDB.EmaEggDataTab.objects.create(
                egg_id=index,
                mother_id=mother_id,
                class_id=class_id,
                trainer=str(trainer_address).lower(),
                hatch_time=int(hatch_time),
                new_obj_id=monster_id,
                create_time=start_time)
        index += 1

    log.data("end_crawl_egg_data|total_egg=%s,block=%s,elapsed=%s",
             total_egg_no, current_block_number,
             time.time() - start_time)
Ejemplo n.º 10
0
def create_new_session(user_id, session_id, session, expired_time,
                       db: Session):
    created_time = updated_time = get_timestamp()
    try:
        db_token = models.SsoSessionTab(session_id=session_id,
                                        session=session,
                                        user_id=user_id,
                                        expired_time=expired_time,
                                        created_time=created_time,
                                        updated_time=updated_time)
        db = db.using_bind("master")
        db.add(db_token)
        db.commit()
        # db.refresh(db_token)
        return 1
    except Exception as err:
        log.warn("create_new_session_fail|error=%s", err)
        return 0
Ejemplo n.º 11
0
def fix_bonus_egg():
    infura_client = InfuraClient(INFURA_API_URL)
    current_block_number = infura_client.getCurrentBlock()

    mother_egg_records = EtheremonDB.EmaEggDataTab.objects.filter(
        mother_id__gt=0).filter(
            class_id__lt=25).values('mother_id').distinct()
    mother_id = []
    for mother_egg_record in mother_egg_records:
        mother_id.append(mother_egg_record["mother_id"])

    # monster
    transform_contract = infura_client.getTransformContract()
    monster_records = list(
        EtheremonDB.EmaMonsterDataTab.objects.filter(
            monster_id__in=mother_id).filter(egg_bonus__gt=0).all())
    count = 0
    while count < len(monster_records):
        monster_record = monster_records[count]
        try:
            egg_bonus = transform_contract.call().getBonusEgg(
                monster_record.monster_id)
        except Exception as error:
            log.warn("get_egg_bonus_error|monster_id=%s,error=%s",
                     monster_record.monster_id, error)
            time.sleep(4)
            continue
        if monster_record.egg_bonus != egg_bonus:
            log.info(
                "fix_egg_bonus|monster_id=%s,before_bonus=%s,after_bonus=%s,block=%s",
                monster_record.monster_id, monster_record.egg_bonus, egg_bonus,
                current_block_number)
            EtheremonDB.EmaMonsterDataTab.objects.filter(
                monster_id=monster_record.monster_id).update(
                    egg_bonus=egg_bonus)
        else:
            log.info("correct_egg_bonus|monster_id=%s",
                     monster_record.monster_id)
        count += 1
Ejemplo n.º 12
0
def fix_egg_info():
    infura_client = InfuraClient(INFURA_API_URL)
    transform_data_contract = infura_client.getTransformDataContract()

    egg_records = list(
        EtheremonDB.EmaEggDataTab.objects.filter(class_id=0).all())
    index = 0
    while index < len(egg_records):
        egg_record = egg_records[index]
        (egg_id, mother_id, class_id, trainer_address, hatch_time,
         monster_id) = transform_data_contract.call().getEggDataById(
             egg_record.egg_id)
        if class_id is 0:
            log.warn("invalid_egg_data|egg_id=%s", index)
            continue
        egg_record.mother_id = mother_id
        egg_record.class_id = class_id
        egg_record.trainer = str(trainer_address).lower()
        egg_record.hatch_time = int(hatch_time)
        egg_record.new_obj_id = monster_id
        egg_record.save()
        index += 1