cloudInitScript = $cloudInitScript; $this->serverConfiguration = $serverConfiguration; $this->vmModel = $vmModel; } /** * @return Snippet */ public function convert($params=[]){ if(!$this->serverConfiguration->snippetDirectory){ throw new \InvalidArgumentException("Snippet Directory is empty"); } $data=['script','meta','network']; if(empty($params)){ $params = sl('whmcsParams')->getWhmcsParams(); } $params['passwordHash'] = Utility::passwordHash($params['password']); if($this->vmModel instanceof VmModel){ //load ip addresses $this->vmModel->ipv4Addresses; $this->vmModel->ipv6Addresses; $params['vm'] = $this->vmModel->toArray(); //password decode $params['vm']['password'] = $this->vmModel->getPassword(); $params['vm']['passwordHash'] = Utility::passwordHash($params['vm']['password']); $params['ipv4Addresses'] = $params['vm']['ipv4Addresses']; $params['ipv6Addresses'] = $params['vm']['ipv6Addresses']; }else{ $params['ipv4Addresses'] = VmIpAddress::ofHostingId($params['serviceid'])->ofIp4()->get()->toArray(); $params['ipv6Addresses'] = VmIpAddress::ofHostingId($params['serviceid'])->ofIp6()->get()->toArray(); } $snippets=[]; foreach ($data as $key ){ if(empty($this->cloudInitScript->{$key})){ continue; } $script = html_entity_decode($this->cloudInitScript->{$key}, ENT_QUOTES); $name = str_replace('script','userconfig',$key); if($this->vmModel instanceof VmModel){ $filename = sprintf($name."-%s-%s.yaml",$this->getWhmcsParamByKey('serviceid'), $this->vmModel->id); }else{//vps $filename = sprintf($name."-%s.yaml",$this->getWhmcsParamByKey('serviceid')); } $content = $this->getSmarty()->fetchString($script, $params); $snippets[] = new Snippet($this->serverConfiguration->snippetDirectory,$filename, $content); } return $snippets; } }