GeneralSection.php 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Sections\Lxc;
  3. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ResourceManager;
  5. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\CpulimitValidator;
  6. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\HostnameValidator;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\IpAddressValidator;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\NumberValidator;
  9. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\PasswordValidator;
  10. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Validators\SshPublicKeyValidator;
  11. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Fields\ArchiveSelect;
  12. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Fields\OsTemplateSelect;
  13. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Validators\ArchiveValidator;
  14. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\VmCreate\Validators\DiskSizeValidator;
  15. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Range;
  16. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Select;
  17. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Text;
  18. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Fields\Textarea;
  19. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Widget\Forms\Sections\BaseSection;
  20. use function ModulesGarden\Servers\ProxmoxCloudVps\Core\Helper\sl;
  21. class GeneralSection extends BaseSection
  22. {
  23. use ProductService;
  24. /**
  25. * @var ResourceManager
  26. */
  27. protected $resourceManager;
  28. public function initContent()
  29. {
  30. $this->initIds('generalSection');
  31. $this->resourceManager = new ResourceManager();
  32. $this->initFields();
  33. }
  34. public function initFields()
  35. {
  36. //ipv4
  37. if ($this->configuration()->isPermissionIpv4() && !$this->configuration()->isOrderPublicIp()) {
  38. $field = new Text('ipv4');
  39. $field->addValidator(
  40. new NumberValidator(
  41. $this->resourceManager->ipv4()->getMin(),
  42. $this->resourceManager->ipv4()->free(),
  43. $this->resourceManager->ipv4()->getMin() > 0
  44. )
  45. );
  46. $field->setDefaultValue($this->configuration()->serverIpv4->min);
  47. $field->setDescription('description');
  48. $this->addField($field);
  49. }
  50. //ipv6
  51. if($this->configuration()->isPermissionIpv6() && !$this->configuration()->isOrderPublicIp()) {
  52. $field = new Text('ipv6');
  53. $field->addValidator(
  54. new NumberValidator(
  55. $this->resourceManager->ipv6()->getMin(),
  56. $this->resourceManager->ipv6()->free(),
  57. $this->resourceManager->ipv6()->getMin() > 0
  58. )
  59. );
  60. $field->setDefaultValue($this->configuration()->serverIpv6->min);
  61. $this->addField($field);
  62. }
  63. $cpuPrioryty = $this->configuration()->hasCpuPriority();
  64. //location
  65. if($this->configuration()->getLocations()){
  66. $field = new Select('location');
  67. $field->notEmpty();
  68. $field->setDescription('description');
  69. $this->addField($field);
  70. }
  71. //cores
  72. if($this->configuration()->isPermissionCores()){
  73. $field = new Text('cores');
  74. $field->addValidator(new NumberValidator($this->resourceManager->cores()->getMin(), $this->resourceManager->cores()->free(),true));
  75. $field->setDefaultValue($this->configuration()->serverCores->min);
  76. $field->setDescription('description');
  77. $this->addField($field);
  78. }
  79. //cpu priority
  80. if($cpuPrioryty){
  81. $field = new Range('cpuPriority', $this->resourceManager->cpuPriority()->getMin(), $this->resourceManager->cpuPriority()->free());
  82. $field->addValidator(new NumberValidator($this->resourceManager->cpuPriority()->getMin(), $this->resourceManager->cpuPriority()->free(),true));
  83. $field->setDefaultValue($this->resourceManager->cpuPriority()->free() >= 3 ? 3 : 1);
  84. $field->addHtmlAttribute('data-label1', sl('lang')->abtr("Very Low"));
  85. $field->addHtmlAttribute('data-label2', sl('lang')->abtr("Low"));
  86. $field->addHtmlAttribute('data-label3', sl('lang')->abtr("Normal"));
  87. $field->addHtmlAttribute('data-label4', sl('lang')->abtr("High"));
  88. $field->addHtmlAttribute('data-label5', sl('lang')->abtr("Medium"));
  89. $field->setDescription('description');
  90. $this->addField($field);
  91. }
  92. //cpulimit
  93. if($this->configuration()->isPermissionCpuLimit() && !$cpuPrioryty){
  94. $field = new Text('cpulimit');
  95. $field->addValidator(new CpulimitValidator($this->resourceManager->cpulimit()->getMin(), $this->resourceManager->cpulimit()->free(),true));
  96. $field->setDefaultValue($this->configuration()->serverCpulimit->min);
  97. $field->setDescription('description');
  98. $this->addField($field);
  99. }
  100. //cpuunits
  101. if($this->configuration()->isPermissionCpuunits() && !$cpuPrioryty){
  102. $field = new Text('cpuunits');
  103. $field->addValidator(new NumberValidator($this->resourceManager->cpuunits()->getMin(), $this->resourceManager->cpuunits()->free(),true));
  104. $field->setDefaultValue($this->configuration()->serverCpuunit->min);
  105. $field->setDescription('description');
  106. $this->addField($field);
  107. }
  108. //memory
  109. $field = new Text('memory');
  110. $field->addValidator(new NumberValidator($this->resourceManager->memory()->getMin(), $this->resourceManager->memory()->free(),true));
  111. $field->setDefaultValue($this->configuration()->serverMemory->min);
  112. $field->setDescription('description');
  113. $this->addField($field);
  114. //swap lxc only
  115. if($this->configuration()->isPermissionSwap()){
  116. $field = new Text('swap');
  117. $field->addValidator(new NumberValidator($this->resourceManager->swap()->getMin(), $this->resourceManager->swap()->free(),true));
  118. $field->setDefaultValue($this->configuration()->serverSwap->min);
  119. $field->setDescription('description');
  120. $this->addField($field);
  121. }
  122. //disk
  123. $field = new Text('disk');
  124. $field->addValidator(new DiskSizeValidator('additionalDiskSize',true));
  125. $field->setDefaultValue($this->configuration()->serverDiskSize->min);
  126. $field->setDescription('description');
  127. $this->addField($field);
  128. //password
  129. if($this->configuration()->isPermissionPassword()){
  130. $field = new Text('password');
  131. $field->addValidator(new PasswordValidator());
  132. $field->setDescription('description');
  133. $this->addField($field);
  134. }
  135. //sshkey
  136. if($this->configuration()->isPermissionSshkeys() && !$this->configuration()->isSshKeyPairs()){
  137. $field = new Textarea('sshkeys');
  138. $field->addValidator(new SshPublicKeyValidator(false));
  139. $field->setDescription('description');
  140. $this->addField($field);
  141. }
  142. //dnsdomain
  143. if($this->configuration()->isPermissionSearchdomain()){
  144. $field = new Text('searchdomain');
  145. $field->addValidator(new HostnameValidator(false));
  146. $field->setDescription('description');
  147. $this->addField($field);
  148. }
  149. if($this->configuration()->isPermissionNameservers()){
  150. //ns1
  151. $field = new Text('nameserver[0]');
  152. $field->addValidator(new IpAddressValidator());
  153. $field->setDescription('description');
  154. $this->addField($field);
  155. //ns2
  156. $field = new Text('nameserver[1]');
  157. $field->addValidator(new IpAddressValidator());
  158. $field->setDescription('description');
  159. $this->addField($field);
  160. }
  161. if($this->configuration()->isPermissionArchive() ){
  162. $field = new ArchiveSelect('archive');
  163. $field->setDescription('description');
  164. $field->addValidator(new ArchiveValidator());
  165. $this->addField($field);
  166. }
  167. }
  168. }