Example #1
0
        public void WaitJob()
        {
            @switch.SetStateAction(DoNothing);

            var job = ClientProxyProvider.Client.GetJob().Result;

            if (job?.Type == null)
            {
                @switch.SetStateAction(WaitJob);
                return;
            }

            jobHandler = JobHandler.Create(job);
            var preparationResult = jobHandler.Prepare();

            if (preparationResult.IsReadyForExecution)
            {
                cts = new CancellationTokenSource();
                var hashcatPath = SettingsProvider.CurrentSettings.Config.HashCatPath;
                Environment.CurrentDirectory = Path.GetDirectoryName(hashcatPath);
                hashcatTask = new HashCatCommandExecuter(preparationResult.HashCatArguments, hashcatPath)
                              .Execute(cts.Token, false, job.JobId);

                @switch.SetStateAction(ProcessJob);
                return;
            }

            Log.Message($"Задача от сервера не валидна: {preparationResult.Error}");
            jobHandler  = null;
            hashcatTask = null;
            @switch.SetStateAction(WaitJob);
        }
Example #2
0
        public void ProcessJob()
        {
            @switch.SetStateAction(DoNothing);

            if (!hashcatTask.IsCompleted)
            {
                //todo хэшкот может завершить работу и не сгенерировать событие Exit, тогда задача зависает, надо решить проблему!
                var heartbeat = ClientProxyProvider.Client.Heartbeat().Result;
                if (heartbeat?.Type == JobType.Stop)
                {
                    Log.Message($"Ну началось, откатываемся... Задача будет отменена.");
                    cts.Cancel();
                }

                @switch.SetStateAction(ProcessJob);
                return;
            }

            jobHandler.Clear(hashcatTask.Result);

            jobHandler  = null;
            hashcatTask = null;
            @switch.SetStateAction(WaitJob);
        }