http://modulesgarden.com * CONTACT -> contact@modulesgarden.com * * * This software is furnished under a license and may be used and copied * only in accordance with the terms of such license and with the * inclusion of the above copyright notice. This software or any other * copies thereof may not be provided or otherwise made available to any * other person. No title to and ownership of the software is hereby * transferred. * * * ******************************************************************** */ namespace ModulesGarden\ProxmoxAddon\App\Cron; use ModulesGarden\ProxmoxAddon as main; use ModulesGarden\ProxmoxAddon\Core\CommandLine\Command; use ModulesGarden\ProxmoxAddon\Core\CommandLine\Hypervisor; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; use ModulesGarden\ProxmoxAddon\App\Enum\Vps; use ModulesGarden\ProxmoxAddon\App\Enum\Cloud; /** * Description of Users * * @author Pawel Kopec */ class Users extends Command { /** * Command name * @var string */ protected $name = 'users'; /** * Command description * @var string */ protected $description = ''; /** * Command help text * @var string */ protected $help = ''; protected function process(InputInterface $input, OutputInterface $output, SymfonyStyle $io) { $io->title('Synchronize users: Starting'); if (!function_exists('ModuleBuildParams')) { require_once ROOTDIR . DIRECTORY_SEPARATOR . 'includes' . DIRECTORY_SEPARATOR . "modulefunctions.php"; } //Get Hostings $h = (new main\Core\Models\Whmcs\Hosting)->getTable(); $s = (new main\Core\Models\Whmcs\Server)->getTable(); $hostings = main\Core\Models\Whmcs\Hosting::select("{$h}.*") ->rightJoin($s, "{$h}.server", '=', "{$s}.id") ->where("{$h}.domainstatus", "Active") ->whereIn("{$s}.type", ["proxmoxVPS", "ProxmoxCloudVps"]) ->orderBy("{$h}.server"); $i = 0; foreach ($hostings->get() as $hosting) { /* @var $hosting main\Core\Models\Whmcs\Hosting */ $i++; $output->writeln(sprintf("Synchronize hosting: %s", $hosting->id)); try { $params = \ModuleBuildParams($hosting->id); if ($params['moduletype'] == "proxmoxVPS") { if (!$params['customfields'][Vps\CustomField::VMID]) { throw new \Exception("Custom Field \"vmid\" is empty"); } if (!$params['customfields'][Vps\CustomField::NODE]) { throw new \Exception("Custom Field \"node\" is empty"); } \ModulesGarden\Servers\ProxmoxVps\Core\Helper\sl("whmcsParams")->setParams($params); $controler = new \ModulesGarden\Servers\ProxmoxVps\App\Http\Actions\ChangeUserRole(); $controler->execute($params); } else { if ($params['moduletype'] == "ProxmoxCloudVps") { \ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl("whmcsParams")->setParams($params); $controler = new \ModulesGarden\Servers\ProxmoxCloudVps\App\Http\Actions\ChangeUserRole(); $controler->execute($params); } } $output->writeln(sprintf("Hosting: %s has been synchronized", $hosting->id)); } catch (\Exception $ex) { if ($hosting) { $io->error("Hosting Id #{$hosting->id}, " . $ex->getMessage()); } else { $io->error($ex->getMessage()); } } (new Hypervisor($this->getName(), $input->getOptions())) ->ping(); } $output->writeln(""); $io->success([ sprintf("Synchronize hostings: %s Entries Processed.", $i), "Synchronize hostings: Done" ]); } }