Ejemplo n.º 1
0
def attack(data: dict, user: str, service: Service):
    if service.running:
        return attack_already_running

    target_device: str = data["target_device"]
    target_service_uuid: str = data["target_service"]

    target_service: Service = wrapper.session.query(Service).filter_by(
        uuid=target_service_uuid, device=target_device).first()
    if target_service is None:
        return service_not_found
    if not target_service.running:
        return service_not_running

    speed: float = register_service(service.device, service.uuid, service.name,
                                    service.owner)
    if speed == -1:
        return could_not_start_service

    bruteforce: Bruteforce = wrapper.session.query(Bruteforce).get(
        service.uuid)
    bruteforce.target_service = target_service_uuid
    bruteforce.target_device = target_device
    bruteforce.started = int(time.time())
    bruteforce.progress = 0
    service.speed = speed
    service.running = True

    wrapper.session.commit()

    return success_scheme
Ejemplo n.º 2
0
def set_power(data: dict, user: str, service: Service) -> dict:
    miner: Miner = wrapper.session.query(Miner).get(service.uuid)

    if not exists_wallet(miner.wallet):
        return wallet_not_found

    power: int = data["power"]

    update_miner(miner)

    speed: float = change_miner_power(power, service.uuid, service.device,
                                      service.owner)
    if speed == -1:
        return could_not_start_service

    service.speed = speed
    service.running = power > 0
    miner.power = power
    if service.running:
        miner.started = int(time.time() * 1000)
    else:
        miner.started = None

    # notify wallet owner
    wallet_owner: Optional[str] = get_wallet_owner(miner.wallet)
    if wallet_owner is not None:
        m.contact_user(
            wallet_owner, {
                "notify-id": "miner-rate-changed",
                "origin": "miner/power",
                "wallet_uuid": miner.wallet
            })

    wrapper.session.commit()

    return miner.serialize