GeneralSection.php 8.0 KB

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