WhmcsService.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <?php
  2. namespace ModulesGarden\Servers\ProxmoxCloudVps\App\Config\Packages;
  3. use ModulesGarden\ProxmoxAddon\App\Services\ApiService;
  4. use ModulesGarden\ProxmoxAddon\App\Services\Cloud\ProductService;
  5. use ModulesGarden\ProxmoxAddon\App\Enum\Cloud\ConfigurableOption;
  6. use ModulesGarden\ProxmoxAddon\App\Enum\Cloud\CustomField;
  7. use ModulesGarden\Servers\ProxmoxCloudVps\App\Libs\AwsIntegration\ClientWrapper;
  8. use ModulesGarden\Servers\ProxmoxCloudVps\App\Models\AvailableImages\Repository;
  9. use ModulesGarden\Servers\ProxmoxCloudVps\App\UI\Admin\ProductConfig\Providers\Config;
  10. use ModulesGarden\Servers\ProxmoxCloudVps\Core\App\Packages\AppPackageConfiguration;
  11. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\RequestObjectHandler;
  12. use ModulesGarden\Servers\ProxmoxCloudVps\Core\UI\Traits\WhmcsParams;
  13. use ModulesGarden\Servers\ProxmoxCloudVps\Packages\WhmcsService\Config\Enum;
  14. class WhmcsService extends AppPackageConfiguration
  15. {
  16. use RequestObjectHandler;
  17. use WhmcsParams;
  18. use ProductService;
  19. use ApiService;
  20. const APP_CONFIGURATION =
  21. [
  22. self::PACKAGE_STATUS => self::PACKAGE_STATUS_ACTIVE,
  23. Enum::CUSTOM_FIELDS => [
  24. [
  25. Enum::FIELD_NAME => 'VLAN Tag|VLAN Tag',
  26. Enum::FIELD_TYPE => Enum::FIELD_TYPE_TEXT_BOX,
  27. Enum::FIELD_ADMIN_ONLY => Enum::FIELD_ADMIN_ONLY_ON
  28. ],
  29. [
  30. Enum::FIELD_NAME => 'Authentication|Authentication',
  31. Enum::FIELD_TYPE => Enum::FIELD_TYPE_TEXT_BOX,
  32. Enum::FIELD_ADMIN_ONLY => Enum::FIELD_ADMIN_ONLY_ON
  33. ],
  34. [
  35. Enum::FIELD_NAME => CustomField::ADVANCED_USER.'|Advanced User',
  36. Enum::FIELD_TYPE => Enum::FIELD_TYPE_TICK_BOX,
  37. Enum::FIELD_ADMIN_ONLY => Enum::FIELD_ADMIN_ONLY_ON,
  38. Enum::FIELD_RELATION_TYPE => Enum::FIELD_RELATION_TYPE_CLIENT
  39. ],
  40. ],
  41. ];
  42. public function networkRateGetSubOptions()
  43. {
  44. return [
  45. [
  46. Enum::OPTION_SUB_NAME => "0|Unlimited",
  47. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  48. ],
  49. [
  50. Enum::OPTION_SUB_NAME => '5|5 (MB/s) (' . (5 * 8) . ' Mbps)',
  51. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  52. ],
  53. [
  54. Enum::OPTION_SUB_NAME => '10|10 (MB/s) (' . (10 * 8) . ' Mbps)',
  55. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  56. ],
  57. [
  58. Enum::OPTION_SUB_NAME => '20|20 (MB/s) (' . (20 * 8) . ' Mbps)',
  59. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  60. ],
  61. [
  62. Enum::OPTION_SUB_NAME => '30|30 (MB/s) (' . (30 * 8) . ' Mbps)',
  63. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  64. ],
  65. [
  66. Enum::OPTION_SUB_NAME => '40|40 (MB/s) (' . (40 * 8) . ' Mbps)',
  67. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  68. ],
  69. [
  70. Enum::OPTION_SUB_NAME => '50|50 (MB/s) (' . (50 * 8) . ' Mbps)',
  71. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  72. ],
  73. ];
  74. }
  75. public function getConfigurableOptions()
  76. {
  77. $configOptions = [];
  78. if ($this->configuration()->isQemu())
  79. {
  80. $configOptions[] = [
  81. Enum::OPTION_NAME => ConfigurableOption::SOCKETS.'|CPU Sockets',
  82. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  83. Enum::OPTION_QUANTITY_MIN => 1,
  84. Enum::OPTION_QUANTITY_MAX => 100,
  85. Enum::CONFIG_SUB_OPTIONS => [
  86. [
  87. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  88. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  89. ]
  90. ]
  91. ];
  92. $configOptions[] = [
  93. Enum::OPTION_NAME => ConfigurableOption::CORES.'|CPU Cores',
  94. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  95. Enum::OPTION_QUANTITY_MIN => 1,
  96. Enum::OPTION_QUANTITY_MAX => 10,
  97. Enum::CONFIG_SUB_OPTIONS => [
  98. [
  99. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  100. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  101. ]
  102. ]
  103. ];
  104. }
  105. $configOptions[] = [
  106. Enum::OPTION_NAME => ConfigurableOption::CPU_LIMIT.'|CPU Limit',
  107. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  108. Enum::OPTION_QUANTITY_MIN => 0,
  109. Enum::OPTION_QUANTITY_MAX => 100,
  110. Enum::CONFIG_SUB_OPTIONS => [
  111. [
  112. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  113. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  114. ]
  115. ]
  116. ];
  117. $configOptions[] = [
  118. Enum::OPTION_NAME => ConfigurableOption::CPU_UNITS.'|CPU Weight Limit',
  119. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  120. Enum::OPTION_QUANTITY_MIN => 1024,
  121. Enum::OPTION_QUANTITY_MAX => 99999,
  122. Enum::CONFIG_SUB_OPTIONS => [
  123. [
  124. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  125. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  126. ]
  127. ]
  128. ];
  129. $unit = strtoupper($this->configuration()->getMemoryUnit());
  130. $min = 128;
  131. $max = 1024 * 10;
  132. if ($this->configuration()->getMemoryUnit() == 'gb')
  133. {
  134. $min = 1;
  135. $max = 10;
  136. }
  137. $configOptions[] = [
  138. Enum::OPTION_NAME => ConfigurableOption::MEMORY.'|Memory',
  139. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  140. Enum::OPTION_QUANTITY_MIN => $min,
  141. Enum::OPTION_QUANTITY_MAX => $max,
  142. Enum::CONFIG_SUB_OPTIONS => [
  143. [
  144. Enum::OPTION_SUB_NAME => "{$unit}|{$unit}",
  145. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  146. ]
  147. ]
  148. ];
  149. if ($this->configuration()->isLxc())
  150. {
  151. $unit = strtoupper($this->configuration()->getSwapUnit());
  152. $min = 128;
  153. $max = 1024 * 10;
  154. if ($this->configuration()->getSwapUnit() == 'gb')
  155. {
  156. $min = 1;
  157. $max = 10;
  158. }
  159. $configOptions[] = [
  160. Enum::OPTION_NAME => ConfigurableOption::SWAP.'|SWAP',
  161. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  162. Enum::OPTION_QUANTITY_MIN => $min,
  163. Enum::OPTION_QUANTITY_MAX => $max,
  164. Enum::CONFIG_SUB_OPTIONS => [
  165. [
  166. Enum::OPTION_SUB_NAME => "{$unit}|{$unit}",
  167. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  168. ]
  169. ]
  170. ];
  171. }
  172. $unit = strtoupper($this->configuration()->getStorageUnit());
  173. $min = 128;
  174. $max = 1024 * 1000;
  175. if ($this->configuration()->getStorageUnit() == 'gb' || $this->configuration()->getStorageUnit() == 'tb')
  176. {
  177. $min = 1;
  178. $max = 1000;
  179. }
  180. $configOptions[] = [
  181. Enum::OPTION_NAME => ConfigurableOption::STORAGE.'|Storage',
  182. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  183. Enum::OPTION_QUANTITY_MIN => $min,
  184. Enum::OPTION_QUANTITY_MAX => $max,
  185. Enum::CONFIG_SUB_OPTIONS => [
  186. [
  187. Enum::OPTION_SUB_NAME => "{$unit}|{$unit}",
  188. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  189. ]
  190. ]
  191. ];
  192. $configOptions[] = [
  193. Enum::OPTION_NAME => ConfigurableOption::IPV4.'|IPv4 Addresses',
  194. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  195. Enum::OPTION_QUANTITY_MIN => 0,
  196. Enum::OPTION_QUANTITY_MAX => 100,
  197. Enum::CONFIG_SUB_OPTIONS => [
  198. [
  199. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  200. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  201. ]
  202. ]
  203. ];
  204. $configOptions[] = [
  205. Enum::OPTION_NAME => ConfigurableOption::IPV6.'|IPv6 Addresses',
  206. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  207. Enum::OPTION_QUANTITY_MIN => 0,
  208. Enum::OPTION_QUANTITY_MAX => 100,
  209. Enum::CONFIG_SUB_OPTIONS => [
  210. [
  211. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  212. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  213. ]
  214. ]
  215. ];
  216. $configOptions[] = [
  217. Enum::OPTION_NAME => ConfigurableOption::BACKUPS_SIZE.'|Backups Size',
  218. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  219. Enum::OPTION_QUANTITY_MIN => 0,
  220. Enum::OPTION_QUANTITY_MAX => 10 * 100,
  221. Enum::CONFIG_SUB_OPTIONS => [
  222. [
  223. Enum::OPTION_SUB_NAME => 'GB|GB',
  224. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  225. ]
  226. ]
  227. ];
  228. $configOptions[] = [
  229. Enum::OPTION_NAME => ConfigurableOption::BACKUPS_FILES.'|Backups Files Limit',
  230. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  231. Enum::OPTION_QUANTITY_MIN => 0,
  232. Enum::OPTION_QUANTITY_MAX => 100,
  233. Enum::CONFIG_SUB_OPTIONS => [
  234. [
  235. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  236. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  237. ]
  238. ]
  239. ];
  240. $configOptions[] = [
  241. Enum::OPTION_NAME => ConfigurableOption::SNAPSHOTS.'|Snapshots',
  242. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  243. Enum::OPTION_QUANTITY_MIN => 0,
  244. Enum::OPTION_QUANTITY_MAX => 100,
  245. Enum::CONFIG_SUB_OPTIONS => [
  246. [
  247. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  248. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  249. ]
  250. ]
  251. ];
  252. $configOptions[] = [
  253. Enum::OPTION_NAME => ConfigurableOption::BANDWIDTH.'|Bandwidth',
  254. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  255. Enum::OPTION_QUANTITY_MIN => 0,
  256. Enum::OPTION_QUANTITY_MAX => 10 * 100,
  257. Enum::CONFIG_SUB_OPTIONS => [
  258. [
  259. Enum::OPTION_SUB_NAME => 'GB|GB',
  260. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  261. ]
  262. ]
  263. ];
  264. $configOptions[] = [
  265. Enum::OPTION_NAME => ConfigurableOption::NETWORK_RATE.'|Network Rate',
  266. Enum::OPTION_TYPE => Enum::OPTION_TYPE_DROPDOWN,
  267. ];
  268. if ($this->configuration()->isQemu())
  269. {
  270. $configOptions[] = [
  271. Enum::OPTION_NAME => ConfigurableOption::VCPUS.'|VCPUs',
  272. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  273. Enum::OPTION_QUANTITY_MIN => 0,
  274. Enum::OPTION_QUANTITY_MAX => 100,
  275. Enum::CONFIG_SUB_OPTIONS => [
  276. [
  277. Enum::OPTION_SUB_NAME => 'vCPU|vCPU',
  278. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  279. ]
  280. ]
  281. ];
  282. }
  283. $configOptions[] = [
  284. Enum::OPTION_NAME => ConfigurableOption::VIRTUAL_NETWORKS.'|Virtual Networks',
  285. Enum::OPTION_TYPE => Enum::OPTION_TYPE_QUANTITY,
  286. Enum::OPTION_QUANTITY_MIN => 0,
  287. Enum::OPTION_QUANTITY_MAX => 100,
  288. Enum::CONFIG_SUB_OPTIONS => [
  289. [
  290. Enum::OPTION_SUB_NAME => 'Unit|Unit',
  291. Enum::OPTION_SUB_ORDER => Enum::OPTION_SUB_ORDER_DEFAULT,
  292. ]
  293. ]
  294. ];
  295. return $configOptions;
  296. }
  297. }