GeneralSection.php 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Sections\Qemu;
  3. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ResourceManager;
  5. use ModulesGarden\ProxmoxAddon\Core\Helper\AdvancedUserHelper;
  6. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\CpulimitValidator;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\HostnameValidator;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\IpAddressValidator;
  9. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\NumberValidator;
  10. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\SshPublicKeyValidator;
  11. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Fields\IsoImageSelect;
  12. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Fields\OsTemplateSelect;
  13. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Fields\SecondaryIsoImageSelect;
  14. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Validators\DiskSizeValidator;
  15. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Validators\IsoImageValidator;
  16. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Validators\PasswordValidator;
  17. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmClone\Validators\UserValidator;
  18. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Hidden;
  19. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Range;
  20. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Select;
  21. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Text;
  22. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Textarea;
  23. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Sections\BaseSection;
  24. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Sections\HalfPageSection;
  25. use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl;
  26. class GeneralSection extends HalfPageSection
  27. {
  28. use ProductService;
  29. /**
  30. * @var ResourceManager
  31. */
  32. protected $resourceManager;
  33. public function initContent() {
  34. $this->initIds('generalSection');
  35. $this->resourceManager = new ResourceManager();
  36. $this->initFields();
  37. }
  38. public function initFields() {
  39. $advancedUser = new AdvancedUserHelper($this->getWhmcsParamByKey('userid'));
  40. /**
  41. * @deprecated
  42. //name
  43. $field = new Text('name');
  44. $field->setDescription('description');
  45. $field->addValidator(new HostnameValidator());
  46. $this->addField($field);
  47. //description
  48. $field = new Textarea('description');
  49. $field->setDescription('tip');
  50. $this->addField($field);
  51. //osTemplate
  52. if($this->configuration()->isPermissionOsTemplate()){
  53. $field =new OsTemplateSelect('osTemplate');
  54. $field->notEmpty();
  55. $this->addField( $field);
  56. }
  57. */
  58. $cpuPrioryty = $this->configuration()->hasCpuPriority();
  59. //location
  60. if($this->configuration()->getLocations()){
  61. $field = new Select('location');
  62. $field->notEmpty();
  63. $field->setDescription('description');
  64. $this->addField($field);
  65. }
  66. //sockets
  67. if($this->configuration()->isPermissionSockets() && !$this->configuration()->isCalculateSocketsAndCores()){
  68. $field = new Text('sockets');
  69. $field->addValidator(new NumberValidator($this->resourceManager->sockets()->getMin(), $this->resourceManager->sockets()->free(),true));
  70. $field->setDefaultValue($this->configuration()->serverSockets->min);
  71. $field->setDescription('description');
  72. $this->addField($field);
  73. }
  74. //cores
  75. if($this->configuration()->isPermissionCores() && !$this->configuration()->isCalculateSocketsAndCores()){
  76. $field = new Text('cores');
  77. $field->addValidator(new NumberValidator($this->resourceManager->cores()->getMin(), $this->resourceManager->cores()->free(),true));
  78. $field->setDefaultValue($this->configuration()->serverCores->min);
  79. $field->setDescription('description');
  80. $this->addField($field);
  81. }
  82. //vcpus
  83. if($this->configuration()->isPermissionVcpus() || $this->configuration()->isCalculateSocketsAndCores()){
  84. $field = new Range('vcpus', $this->resourceManager->vcpus()->getMin(), $this->resourceManager->vcpus()->free());
  85. $field->addValidator(new NumberValidator($this->resourceManager->vcpus()->getMin(), $this->resourceManager->vcpus()->free(),true));
  86. $field->setDefaultValue($this->configuration()->serverVcpus->min);
  87. $field->setDescription('description');
  88. $this->addField($field);
  89. }
  90. //cpu priority
  91. if($cpuPrioryty){
  92. $field = new Range('cpuPriority', $this->resourceManager->cpuPriority()->getMin(), $this->resourceManager->cpuPriority()->free());
  93. $field->addValidator(new NumberValidator($this->resourceManager->cpuPriority()->getMin(), $this->resourceManager->cpuPriority()->free(),true));
  94. $field->setDefaultValue($this->resourceManager->cpuPriority()->free() >= 3 ? 3 : 1);
  95. $field->addHtmlAttribute('data-label1', sl('lang')->abtr("Very Low"));
  96. $field->addHtmlAttribute('data-label2', sl('lang')->abtr("Low"));
  97. $field->addHtmlAttribute('data-label3', sl('lang')->abtr("Normal"));
  98. $field->addHtmlAttribute('data-label4', sl('lang')->abtr("High"));
  99. $field->addHtmlAttribute('data-label5', sl('lang')->abtr("Medium"));
  100. $field->setDescription('description');
  101. $this->addField($field);
  102. }
  103. //cpulimit
  104. if($this->configuration()->isPermissionCpuLimit() && !$cpuPrioryty){
  105. $field = new Text('cpulimit');
  106. $field->addValidator(new CpulimitValidator($this->resourceManager->cpulimit()->getMin(), $this->resourceManager->cpulimit()->free(),true));
  107. $field->setDefaultValue($this->configuration()->serverCpulimit->min);
  108. $field->setDescription('description');
  109. $this->addField($field);
  110. }
  111. //cpuunits
  112. if($this->configuration()->isPermissionCpuunits() && !$cpuPrioryty){
  113. $field = new Text('cpuunits');
  114. $field->addValidator(new NumberValidator($this->resourceManager->cpuunits()->getMin(), $this->resourceManager->cpuunits()->free(),true));
  115. $field->setDefaultValue($this->configuration()->serverCpuunit->min);
  116. $field->setDescription('description');
  117. $this->addField($field);
  118. }
  119. //memory
  120. $field = new Range('memory', $this->resourceManager->memory()->getMin(), $this->resourceManager->memory()->free());
  121. $field->addValidator(new NumberValidator($this->resourceManager->memory()->getMin(), $this->resourceManager->memory()->free(),true));
  122. $field->setDefaultValue($this->configuration()->serverMemory->min);
  123. $field->setDescription('description');
  124. $this->addField($field);
  125. //disk (filled by template needs)
  126. $field = new Hidden('disk');
  127. $this->addField($field);
  128. $field = new Hidden('disks');
  129. $this->addField($field);
  130. //username
  131. if($this->configuration()->isPermissionUsername()){
  132. $field = new Text('ciuser');
  133. $field->addValidator(new UserValidator());
  134. $field->setDefaultValue($this->configuration()->getCiuser());
  135. $field->setDescription('description');
  136. $this->addField($field);
  137. }
  138. //password
  139. if($this->configuration()->isPermissionPassword()){
  140. $field = new Text('password');
  141. $field->addValidator( new PasswordValidator());
  142. $field->setDescription('description');
  143. $this->addField($field);
  144. }
  145. //sshkey
  146. if($this->configuration()->isPermissionSshkeys()){
  147. $field = new Textarea('sshkeys');
  148. $field->addValidator(new SshPublicKeyValidator(false));
  149. $field->setDescription('description');
  150. $this->addField($field);
  151. }
  152. //ostype
  153. if(($advancedUser->isAdvanced() || $this->configuration()->isPermissionIsoImage()) && $this->configuration()->getPermissionOstype()){
  154. $field = new Select('ostype');
  155. $this->addField($field);
  156. }
  157. //isoImage
  158. if($this->configuration()->isPermissionIsoImage() && ($advancedUser->isAdvanced() || $this->configuration()->isPermissionIsoImage())){
  159. $field = new IsoImageSelect('isoImage');
  160. $field->addValidator(new IsoImageValidator());
  161. $this->addField($field);
  162. }
  163. //secondaryIsoImage
  164. if($this->configuration()->isPermissionSecondaryIsoImages() && $advancedUser->isAdvanced()){
  165. $this->addField(new SecondaryIsoImageSelect('secondaryIsoImage'));
  166. }
  167. //cloudInitScript
  168. if($this->configuration()->getCloudInitScript()){
  169. $field = new Select('cloudInitScript');
  170. $field->setDescription('description');
  171. $this->addField($field);
  172. }
  173. /**
  174. * @deprecated
  175. //ipv4
  176. if($this->configuration()->isPermissionIpv4()){
  177. $field = new Text('ipv4');
  178. $field->addValidator(new NumberValidator($this->resourceManager->ipv4()->getMin(), $this->resourceManager->ipv4()->free(),false));
  179. $field->setDefaultValue($this->configuration()->serverIpv4->min);
  180. $field->setDescription('description');
  181. $this->addField($field);
  182. }
  183. //ipv6
  184. if($this->configuration()->isPermissionIpv6()){
  185. $field = new Text('ipv6');
  186. $field->addValidator(new NumberValidator($this->resourceManager->ipv6()->getMin(), $this->resourceManager->ipv6()->free(),false));
  187. $field->setDefaultValue($this->configuration()->serverIpv6->min);
  188. $field->setDescription('description');
  189. $this->addField($field);
  190. }
  191. */
  192. }
  193. }