|
|
|
@ -13,6 +13,8 @@ use GuzzleHttp\Client; |
|
|
|
|
use GuzzleHttp\Exception\GuzzleException; |
|
|
|
|
use phpseclib3\Crypt\PublicKeyLoader; |
|
|
|
|
use phpseclib3\Net\SSH2; |
|
|
|
|
use Symfony\Component\HttpFoundation\Response; |
|
|
|
|
use Symfony\Component\HttpKernel\HttpKernelInterface; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* |
|
|
|
@ -185,6 +187,14 @@ class JobRepository extends EntityRepository |
|
|
|
|
*/ |
|
|
|
|
private function runHttpJob(Job &$job): array |
|
|
|
|
{ |
|
|
|
|
if(isset($_ENV['DEMO_MODE']) && $_ENV['DEMO_MODE']) { |
|
|
|
|
$exitcodes = [...array_fill(0,120, $job->getData('http-status')[0]), ...array_keys(Response::$statusTexts)]; |
|
|
|
|
$return['exitcode'] = $exitcodes[random_int(0, 181)]; |
|
|
|
|
$return['failed'] = !in_array($return['exitcode'], $job->getData('http-status')); |
|
|
|
|
$return['output'] = 'Demo mode!'; |
|
|
|
|
|
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
$client = new Client(); |
|
|
|
|
|
|
|
|
|
$url = $job->getData('url'); |
|
|
|
@ -218,6 +228,14 @@ class JobRepository extends EntityRepository |
|
|
|
|
*/ |
|
|
|
|
private function runCommandJob(Job &$job): array |
|
|
|
|
{ |
|
|
|
|
if(isset($_ENV['DEMO_MODE']) && $_ENV['DEMO_MODE']) { |
|
|
|
|
$exitcodes = [...array_fill(0,400, $job->getData('response')), ...range(0, 255)]; |
|
|
|
|
$return['exitcode'] = $exitcodes[random_int(0, 655)]; |
|
|
|
|
$return['failed'] = !in_array($return['exitcode'], $job->getData('response')); |
|
|
|
|
$return['output'] = 'Demo mode!'; |
|
|
|
|
|
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
$command = $job->getData('command'); |
|
|
|
|
if(!empty($job->getData('vars'))) { |
|
|
|
|
foreach ($job->getData('vars') as $key => $var) { |
|
|
|
@ -303,6 +321,13 @@ class JobRepository extends EntityRepository |
|
|
|
|
{ |
|
|
|
|
$em = $this->getEntityManager(); |
|
|
|
|
if($job->getRunning() == 1) { |
|
|
|
|
if(isset($_ENV['DEMO_MODE']) && $_ENV['DEMO_MODE']) { |
|
|
|
|
$job->setRunning(time() + $job->getData('reboot-delay-secs') + ($job->getData('reboot-duration') * 60)); |
|
|
|
|
$em->persist($job); |
|
|
|
|
$em->flush(); |
|
|
|
|
|
|
|
|
|
return ['status' => 'deferred']; |
|
|
|
|
} |
|
|
|
|
$this->setTempVar($job, 'starttime', $starttime); |
|
|
|
|
$this->setTempVar($job, 'manual', $manual); |
|
|
|
|
$rebootcommand = $job->getData('reboot-command'); |
|
|
|
@ -337,6 +362,16 @@ class JobRepository extends EntityRepository |
|
|
|
|
if($job->getRunning() > time()) { |
|
|
|
|
return ['status' => 'deferred']; |
|
|
|
|
} |
|
|
|
|
if(isset($_ENV['DEMO_MODE']) && $_ENV['DEMO_MODE']) { |
|
|
|
|
$exitcodes = [...array_fill(0,400, $job->getData('getservices-response')), ...range(0, 255)]; |
|
|
|
|
$return['exitcode'] = $exitcodes[random_int(0, 655)]; |
|
|
|
|
$return['failed'] = !in_array($return['exitcode'], $job->getData('getservices-response')); |
|
|
|
|
$return['output'] = 'Demo mode!'; |
|
|
|
|
$job->setRunning(1); |
|
|
|
|
$em->persist($job); |
|
|
|
|
$em->flush(); |
|
|
|
|
return $return; |
|
|
|
|
} |
|
|
|
|
$starttime = (float)$this->getTempVar($job, 'starttime'); |
|
|
|
|
$this->deleteTempVar($job, 'starttime'); |
|
|
|
|
$manual = $this->getTempVar($job, 'manual'); |
|
|
|
|