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
def toggle(data: dict, user: str, service: Service) -> dict: if not config["services"][service.name]["toggleable"]: return cannot_toggle_directly if service.running: stop_service(service.device, service.uuid, service.owner) else: if register_service(service.device, service.uuid, service.name, service.owner) == -1: return could_not_start_service service.running = not service.running wrapper.session.commit() return service.serialize
def stop(data: dict, user: str, service: Service): if not service.running: return attack_not_running bruteforce: Bruteforce = wrapper.session.query(Bruteforce).get( service.uuid) target_device: str = bruteforce.target_device target_service: Service = wrapper.session.query(Service).filter_by( uuid=bruteforce.target_service, device=target_device).first() bruteforce.update_progress(service.speed) progress: float = bruteforce.progress bruteforce.target_device = None bruteforce.target_service = None bruteforce.started = None bruteforce.progress = 0 service.running = False wrapper.session.commit() stop_service(service.device, service.uuid, service.owner) access: bool = False if target_service is None: return service_not_found elif not target_service.running: return service_not_running elif random.random() + 0.1 < calculate_pos(progress): target_service.part_owner = user wrapper.session.commit() access: bool = True return { "ok": True, "access": access, "progress": progress, "target_device": target_device }
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