penguins-eggs 9.6.34 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/.oclif.manifest.json +1458 -1
  2. package/README.md +823 -8
  3. package/addons/eggs/theme/livecd/grub.main.cfg +4 -4
  4. package/addons/eggs/theme/livecd/isolinux.main.cfg +5 -5
  5. package/bin/dev.cmd +1 -1
  6. package/bin/dev.js +6 -0
  7. package/bin/run.js +5 -0
  8. package/conf/derivatives.yaml +2 -0
  9. package/conf/distros/buster/calamares/calamares-modules/bootloader-config/bootloader-config.sh +3 -3
  10. package/conf/distros/buster/calamares/calamares-modules/sources-yolk/sources-yolk.sh +1 -1
  11. package/conf/distros/buster/calamares/modules/fstab.yml +1 -1
  12. package/conf/distros/focal/calamares/modules/fstab.yml +1 -1
  13. package/conf/{exclude.list.homes → exclude.list.d/home.list} +6 -1
  14. package/conf/{exclude.list.template → exclude.list.d/master.list} +15 -24
  15. package/conf/exclude.list.d/var.list +21 -0
  16. package/conf/tools.yaml +1 -3
  17. package/dist/classes/bleach.d.ts +37 -0
  18. package/dist/classes/bleach.js +43 -91
  19. package/dist/classes/cfs.d.ts +17 -0
  20. package/dist/classes/cfs.js +15 -12
  21. package/dist/classes/compressors.d.ts +53 -0
  22. package/dist/classes/compressors.js +51 -58
  23. package/dist/classes/daddy.d.ts +18 -0
  24. package/dist/classes/daddy.js +93 -101
  25. package/dist/classes/distro.d.ts +26 -0
  26. package/dist/classes/distro.js +45 -27
  27. package/dist/classes/families/archlinux.d.ts +61 -0
  28. package/dist/classes/families/archlinux.js +56 -113
  29. package/dist/classes/families/debian.d.ts +65 -0
  30. package/dist/classes/families/debian.js +68 -143
  31. package/dist/classes/families/fedora.d.ts +52 -0
  32. package/dist/classes/families/fedora.js +43 -99
  33. package/dist/classes/families/mockup.d.ts +60 -0
  34. package/dist/classes/families/mockup.js +27 -46
  35. package/dist/classes/families/suse.d.ts +52 -0
  36. package/dist/classes/families/suse.js +45 -97
  37. package/dist/classes/incubation/branding.d.ts +17 -0
  38. package/dist/classes/incubation/branding.js +33 -32
  39. package/dist/classes/incubation/distros/bionic.d.ts +32 -0
  40. package/dist/classes/incubation/distros/bionic.js +15 -15
  41. package/dist/classes/incubation/distros/buster.d.ts +32 -0
  42. package/dist/classes/incubation/distros/buster.js +15 -15
  43. package/dist/classes/incubation/distros/focal.d.ts +32 -0
  44. package/dist/classes/incubation/distros/focal.js +15 -15
  45. package/dist/classes/incubation/distros/jessie.d.ts +31 -0
  46. package/dist/classes/incubation/distros/jessie.js +11 -13
  47. package/dist/classes/incubation/distros/rolling.d.ts +32 -0
  48. package/dist/classes/incubation/distros/rolling.js +15 -16
  49. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  50. package/dist/classes/incubation/fisherman-helper/displaymanager.js +8 -9
  51. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  52. package/dist/classes/incubation/fisherman-helper/packages.js +17 -17
  53. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  54. package/dist/classes/incubation/fisherman-helper/settings.js +30 -28
  55. package/dist/classes/incubation/fisherman.d.ts +77 -0
  56. package/dist/classes/incubation/fisherman.js +137 -132
  57. package/dist/classes/incubation/incubator.d.ts +40 -0
  58. package/dist/classes/incubation/incubator.js +93 -87
  59. package/dist/classes/incubation/installer.d.ts +13 -0
  60. package/dist/classes/incubation/installer.js +27 -12
  61. package/dist/classes/initrd.d.ts +41 -0
  62. package/dist/classes/initrd.js +42 -44
  63. package/dist/classes/keyboards.d.ts +50 -0
  64. package/dist/classes/keyboards.js +110 -107
  65. package/dist/classes/locales.d.ts +21 -0
  66. package/dist/classes/locales.js +30 -34
  67. package/dist/classes/n8.d.ts +17 -0
  68. package/dist/classes/n8.js +16 -22
  69. package/dist/classes/network.d.ts +37 -0
  70. package/dist/classes/network.js +21 -25
  71. package/dist/classes/ovary.d.ts +205 -0
  72. package/dist/classes/ovary.js +1262 -1334
  73. package/dist/classes/pacman.d.ts +149 -0
  74. package/dist/classes/pacman.js +347 -426
  75. package/dist/classes/pve-live.d.ts +17 -0
  76. package/dist/classes/pve-live.js +23 -25
  77. package/dist/classes/pxe.d.ts +65 -0
  78. package/dist/classes/pxe.js +206 -210
  79. package/dist/classes/settings.d.ts +53 -0
  80. package/dist/classes/settings.js +99 -102
  81. package/dist/classes/sources_list.d.ts +28 -0
  82. package/dist/classes/sources_list.js +35 -39
  83. package/dist/classes/systemctl.d.ts +47 -0
  84. package/dist/classes/systemctl.js +35 -39
  85. package/dist/classes/tailor.d.ts +46 -0
  86. package/dist/classes/tailor.js +225 -241
  87. package/dist/classes/tools.d.ts +30 -0
  88. package/dist/classes/tools.js +20 -26
  89. package/dist/classes/users.d.ts +28 -0
  90. package/dist/classes/users.js +22 -16
  91. package/dist/classes/utils.d.ts +318 -0
  92. package/dist/classes/utils.js +91 -76
  93. package/dist/classes/xdg.d.ts +45 -0
  94. package/dist/classes/xdg.js +129 -133
  95. package/dist/classes/yolk.d.ts +33 -0
  96. package/dist/classes/yolk.js +54 -60
  97. package/dist/commands/adapt.d.ts +17 -0
  98. package/dist/commands/adapt.js +21 -25
  99. package/dist/commands/analyze.d.ts +26 -0
  100. package/dist/commands/analyze.js +60 -74
  101. package/dist/commands/calamares.d.ts +29 -0
  102. package/dist/commands/calamares.js +53 -60
  103. package/dist/commands/config.d.ts +36 -0
  104. package/dist/commands/config.js +120 -142
  105. package/dist/commands/cuckoo.d.ts +16 -0
  106. package/dist/commands/cuckoo.js +24 -28
  107. package/dist/commands/dad.d.ts +19 -0
  108. package/dist/commands/dad.js +26 -30
  109. package/dist/commands/export/deb.d.ts +19 -0
  110. package/dist/commands/export/deb.js +33 -42
  111. package/dist/commands/export/iso.d.ts +19 -0
  112. package/dist/commands/export/iso.js +24 -28
  113. package/dist/commands/install.d.ts +37 -0
  114. package/dist/commands/install.js +68 -68
  115. package/dist/commands/kill.d.ts +24 -0
  116. package/dist/commands/kill.js +31 -38
  117. package/dist/commands/mom.d.ts +16 -0
  118. package/dist/commands/mom.js +20 -22
  119. package/dist/commands/produce.d.ts +33 -0
  120. package/dist/commands/produce.js +100 -92
  121. package/dist/commands/status.d.ts +23 -0
  122. package/dist/commands/status.js +14 -20
  123. package/dist/commands/syncfrom.d.ts +45 -0
  124. package/dist/commands/syncfrom.js +99 -109
  125. package/dist/commands/syncto.d.ts +40 -0
  126. package/dist/commands/syncto.js +152 -216
  127. package/dist/commands/tools/clean.d.ts +18 -0
  128. package/dist/commands/tools/clean.js +21 -25
  129. package/dist/commands/tools/ppa.d.ts +26 -0
  130. package/dist/commands/tools/ppa.js +46 -50
  131. package/dist/commands/tools/skel.d.ts +18 -0
  132. package/dist/commands/tools/skel.js +27 -31
  133. package/dist/commands/tools/stat.d.ts +31 -0
  134. package/dist/commands/tools/stat.js +21 -25
  135. package/dist/commands/tools/yolk.d.ts +24 -0
  136. package/dist/commands/tools/yolk.js +23 -27
  137. package/dist/commands/update.d.ts +47 -0
  138. package/dist/commands/update.js +66 -70
  139. package/dist/commands/wardrobe/get.d.ts +23 -0
  140. package/dist/commands/wardrobe/get.js +26 -28
  141. package/dist/commands/wardrobe/list.d.ts +24 -0
  142. package/dist/commands/wardrobe/list.js +69 -67
  143. package/dist/commands/wardrobe/show.d.ts +25 -0
  144. package/dist/commands/wardrobe/show.js +57 -52
  145. package/dist/commands/wardrobe/wear.d.ts +26 -0
  146. package/dist/commands/wardrobe/wear.js +39 -41
  147. package/dist/components/finished.d.ts +15 -0
  148. package/dist/components/finished.js +37 -42
  149. package/dist/components/information.d.ts +8 -0
  150. package/dist/components/information.js +155 -0
  151. package/dist/components/install.d.ts +15 -0
  152. package/dist/components/install.js +31 -35
  153. package/dist/components/keyboard.d.ts +16 -0
  154. package/dist/components/keyboard.js +37 -40
  155. package/dist/components/location.d.ts +16 -0
  156. package/dist/components/location.js +38 -38
  157. package/dist/components/network.d.ts +19 -0
  158. package/dist/components/network.js +47 -48
  159. package/dist/components/partitions.d.ts +16 -0
  160. package/dist/components/partitions.js +47 -51
  161. package/dist/components/steps.d.ts +13 -0
  162. package/dist/components/steps.js +148 -0
  163. package/dist/components/summary.d.ts +24 -0
  164. package/dist/components/summary.js +53 -54
  165. package/dist/components/title.d.ts +12 -0
  166. package/dist/components/title.js +35 -0
  167. package/dist/components/users.d.ts +24 -0
  168. package/dist/components/users.js +43 -43
  169. package/dist/components/welcome.d.ts +13 -0
  170. package/dist/components/welcome.js +37 -38
  171. package/dist/index.d.ts +8 -0
  172. package/dist/index.js +8 -5
  173. package/dist/interfaces/i-addons.d.ts +13 -0
  174. package/dist/interfaces/i-addons.js +8 -3
  175. package/dist/interfaces/i-analyze.d.ts +17 -0
  176. package/dist/interfaces/i-analyze.js +11 -16
  177. package/dist/interfaces/i-app.d.ts +14 -0
  178. package/dist/interfaces/i-app.js +8 -2
  179. package/dist/interfaces/i-branding.d.ts +36 -0
  180. package/dist/interfaces/i-branding.js +8 -2
  181. package/dist/interfaces/i-calamares-partition.d.ts +18 -0
  182. package/dist/interfaces/i-calamares-partition.js +3 -4
  183. package/dist/interfaces/i-config-tools.d.ts +18 -0
  184. package/dist/interfaces/i-config-tools.js +8 -2
  185. package/dist/interfaces/i-devices.d.ts +20 -0
  186. package/dist/interfaces/i-devices.js +8 -2
  187. package/dist/interfaces/i-distro.d.ts +27 -0
  188. package/dist/interfaces/i-distro.js +3 -4
  189. package/dist/interfaces/i-drive-list.d.ts +33 -0
  190. package/dist/interfaces/i-drive-list.js +3 -4
  191. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  192. package/dist/interfaces/i-eggs-config.js +3 -4
  193. package/dist/interfaces/i-excludes.d.ts +14 -0
  194. package/dist/interfaces/i-excludes.js +8 -0
  195. package/dist/interfaces/i-exec.d.ts +11 -0
  196. package/dist/interfaces/i-exec.js +3 -4
  197. package/dist/interfaces/i-initrd.d.ts +13 -0
  198. package/dist/interfaces/i-initrd.js +8 -2
  199. package/dist/interfaces/i-install.d.ts +16 -0
  200. package/dist/interfaces/i-install.js +8 -2
  201. package/dist/interfaces/i-installer.d.ts +17 -0
  202. package/dist/interfaces/i-installer.js +8 -2
  203. package/dist/interfaces/i-krill-config.d.ts +33 -0
  204. package/dist/interfaces/i-krill-config.js +3 -4
  205. package/dist/interfaces/i-krill.d.ts +42 -0
  206. package/dist/interfaces/i-krill.js +8 -2
  207. package/dist/interfaces/i-materia.d.ts +41 -0
  208. package/dist/interfaces/i-materia.js +8 -2
  209. package/dist/interfaces/i-net.d.ts +16 -0
  210. package/dist/interfaces/i-net.js +8 -2
  211. package/dist/interfaces/i-packages.d.ts +29 -0
  212. package/dist/interfaces/i-packages.js +3 -4
  213. package/dist/interfaces/i-partitions.d.ts +16 -0
  214. package/dist/interfaces/i-partitions.js +8 -2
  215. package/dist/interfaces/i-pxe.d.ts +21 -0
  216. package/dist/interfaces/i-pxe.js +8 -39
  217. package/dist/interfaces/i-remix.d.ts +21 -0
  218. package/dist/interfaces/i-remix.js +3 -4
  219. package/dist/interfaces/i-settings.d.ts +39 -0
  220. package/dist/interfaces/i-settings.js +8 -2
  221. package/dist/interfaces/i-user.d.ts +14 -0
  222. package/dist/interfaces/i-user.js +8 -2
  223. package/dist/interfaces/i-workdir.d.ts +14 -0
  224. package/dist/interfaces/i-workdir.js +8 -2
  225. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  226. package/dist/interfaces/i-xkb-model.js +8 -2
  227. package/dist/interfaces/index.d.ts +25 -0
  228. package/dist/interfaces/index.js +3 -4
  229. package/dist/krill/modules/add-user.d.ts +20 -0
  230. package/dist/krill/modules/add-user.js +11 -15
  231. package/dist/krill/modules/bootloader-config-arch.d.ts +14 -0
  232. package/dist/krill/modules/bootloader-config-arch.js +15 -11
  233. package/dist/krill/modules/bootloader-config-debian.d.ts +10 -0
  234. package/dist/krill/modules/bootloader-config-debian.js +20 -16
  235. package/dist/krill/modules/bootloader-config.d.ts +10 -0
  236. package/dist/krill/modules/bootloader-config.js +3 -6
  237. package/dist/krill/modules/bootloader.d.ts +14 -0
  238. package/dist/krill/modules/bootloader.js +9 -13
  239. package/dist/krill/modules/change-password.d.ts +15 -0
  240. package/dist/krill/modules/change-password.js +5 -8
  241. package/dist/krill/modules/del-live-user.d.ts +14 -0
  242. package/dist/krill/modules/del-live-user.js +8 -12
  243. package/dist/krill/modules/fstab.d.ts +14 -0
  244. package/dist/krill/modules/fstab.js +69 -46
  245. package/dist/krill/modules/grubcfg.d.ts +17 -0
  246. package/dist/krill/modules/grubcfg.js +8 -17
  247. package/dist/krill/modules/hostname.d.ts +13 -0
  248. package/dist/krill/modules/hostname.js +11 -17
  249. package/dist/krill/modules/initramfs-cfg.d.ts +14 -0
  250. package/dist/krill/modules/initramfs-cfg.js +6 -15
  251. package/dist/krill/modules/initramfs.d.ts +13 -0
  252. package/dist/krill/modules/initramfs.js +17 -19
  253. package/dist/krill/modules/locale-cfg.d.ts +10 -0
  254. package/dist/krill/modules/locale-cfg.js +8 -12
  255. package/dist/krill/modules/locale.d.ts +13 -0
  256. package/dist/krill/modules/locale.js +7 -11
  257. package/dist/krill/modules/m-keyboard.d.ts +14 -0
  258. package/dist/krill/modules/m-keyboard.js +14 -18
  259. package/dist/krill/modules/m-timezone.d.ts +14 -0
  260. package/dist/krill/modules/m-timezone.js +8 -12
  261. package/dist/krill/modules/machine-id.d.ts +15 -0
  262. package/dist/krill/modules/machine-id.js +6 -10
  263. package/dist/krill/modules/mkfs.d.ts +13 -0
  264. package/dist/krill/modules/mkfs.js +33 -23
  265. package/dist/krill/modules/mount-fs.d.ts +17 -0
  266. package/dist/krill/modules/mount-fs.js +20 -26
  267. package/dist/krill/modules/mount-vfs.d.ts +17 -0
  268. package/dist/krill/modules/mount-vfs.js +16 -21
  269. package/dist/krill/modules/network-cfg.d.ts +19 -0
  270. package/dist/krill/modules/network-cfg.js +28 -31
  271. package/dist/krill/modules/packages.d.ts +14 -0
  272. package/dist/krill/modules/packages.js +17 -21
  273. package/dist/krill/modules/partition.d.ts +20 -0
  274. package/dist/krill/modules/partition.js +80 -86
  275. package/dist/krill/modules/remove-installer-link.d.ts +13 -0
  276. package/dist/krill/modules/remove-installer-link.js +7 -11
  277. package/dist/krill/modules/umount.d.ts +14 -0
  278. package/dist/krill/modules/umount.js +9 -13
  279. package/dist/krill/modules/unpackfs.d.ts +13 -0
  280. package/dist/krill/modules/unpackfs.js +7 -11
  281. package/dist/krill/prepare.d.ts +77 -0
  282. package/dist/krill/{krill-prepare.js → prepare.js} +136 -130
  283. package/dist/krill/sequence.d.ts +156 -0
  284. package/dist/krill/sequence.js +640 -0
  285. package/dist/lib/cli-autologin.d.ts +43 -0
  286. package/dist/lib/cli-autologin.js +88 -92
  287. package/dist/lib/get_address.d.ts +8 -0
  288. package/dist/lib/get_address.js +9 -11
  289. package/dist/lib/get_dns.d.ts +8 -0
  290. package/dist/lib/get_dns.js +9 -11
  291. package/dist/lib/get_domain.d.ts +8 -0
  292. package/dist/lib/get_domain.js +9 -11
  293. package/dist/lib/get_gateway.d.ts +8 -0
  294. package/dist/lib/get_gateway.js +9 -11
  295. package/dist/lib/get_hostname.d.ts +8 -0
  296. package/dist/lib/get_hostname.js +9 -11
  297. package/dist/lib/get_netmask.d.ts +8 -0
  298. package/dist/lib/get_netmask.js +9 -11
  299. package/dist/lib/get_password.d.ts +8 -0
  300. package/dist/lib/get_password.js +10 -13
  301. package/dist/lib/get_userfullname.d.ts +8 -0
  302. package/dist/lib/get_userfullname.js +9 -11
  303. package/dist/lib/get_username.d.ts +8 -0
  304. package/dist/lib/get_username.js +9 -12
  305. package/dist/lib/kill_me_softly.d.ts +11 -0
  306. package/dist/lib/kill_me_softly.js +19 -24
  307. package/dist/lib/select_address_type.d.ts +8 -0
  308. package/dist/lib/select_address_type.js +9 -12
  309. package/dist/lib/select_filesystem_type.d.ts +8 -0
  310. package/dist/lib/select_filesystem_type.js +19 -17
  311. package/dist/lib/select_installation_device.d.ts +8 -0
  312. package/dist/lib/select_installation_device.js +11 -15
  313. package/dist/lib/select_installation_mode.d.ts +8 -0
  314. package/dist/lib/select_installation_mode.js +9 -11
  315. package/dist/lib/select_interface.d.ts +8 -0
  316. package/dist/lib/select_interface.js +9 -12
  317. package/dist/lib/select_keyboard_layout.d.ts +11 -0
  318. package/dist/lib/select_keyboard_layout.js +11 -15
  319. package/dist/lib/select_keyboard_model.d.ts +11 -0
  320. package/dist/lib/select_keyboard_model.js +11 -15
  321. package/dist/lib/select_keyboard_option.d.ts +11 -0
  322. package/dist/lib/select_keyboard_option.js +11 -15
  323. package/dist/lib/select_keyboard_variant.d.ts +11 -0
  324. package/dist/lib/select_keyboard_variant.js +11 -15
  325. package/dist/lib/select_languages.d.ts +8 -0
  326. package/dist/lib/select_languages.js +11 -15
  327. package/dist/lib/select_regions.d.ts +8 -0
  328. package/dist/lib/select_regions.js +9 -11
  329. package/dist/lib/select_user_swap_choice.d.ts +8 -0
  330. package/dist/lib/select_user_swap_choice.js +13 -17
  331. package/dist/lib/select_zones.d.ts +8 -0
  332. package/dist/lib/select_zones.js +9 -11
  333. package/dist/lib/utils.d.ts +34 -0
  334. package/dist/lib/utils.js +24 -14
  335. package/manpages/doc/man/eggs.1.gz +0 -0
  336. package/manpages/doc/man/eggs.html +130 -76
  337. package/package.json +55 -74
  338. package/scripts/_eggs +9 -7
  339. package/scripts/eggs.bash +4 -4
  340. package/LICENSE +0 -339
  341. package/bin/dev +0 -17
  342. package/bin/run +0 -5
  343. package/conf/exclude.list.custom +0 -3
  344. package/dist/components/elements/information.js +0 -194
  345. package/dist/components/elements/steps.js +0 -152
  346. package/dist/components/elements/title.js +0 -36
  347. package/dist/interfaces/i-filters.js +0 -3
  348. package/dist/krill/krill-sequence.js +0 -645
  349. package/dist/lib/dependencies.js +0 -120
  350. package/manpages/doc/man/README.md +0 -0
  351. /package/conf/{exclude.list.usr → exclude.list.d/usr.list} +0 -0
@@ -1,40 +1,151 @@
1
- "use strict";
2
1
  /**
3
- * penguins-eggs
4
- * class: pxe.ts
5
- * author: Piero Proietti
6
- * email: piero.proietti@gmail.com
7
- * license: MIT
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const tslib_1 = require("tslib");
11
- const utils_1 = require("../lib/utils");
12
- const distro_1 = tslib_1.__importDefault(require("./distro"));
13
- const fs_1 = tslib_1.__importDefault(require("fs"));
14
- const http_1 = tslib_1.__importDefault(require("http"));
15
- const node_static_1 = tslib_1.__importDefault(require("node-static"));
16
- const node_path_1 = tslib_1.__importDefault(require("node:path"));
17
- const settings_1 = tslib_1.__importDefault(require("./settings"));
18
- const utils_2 = tslib_1.__importDefault(require("./utils"));
2
+ * ./src/classes/pxe.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
19
8
  // @ts-ignore
20
- const tftp_1 = tslib_1.__importDefault(require("tftp"));
9
+ import etrick from 'etrick';
10
+ import fs from 'node:fs';
11
+ import http from 'node:http';
12
+ import path from 'node:path';
13
+ import nodeStatic from 'node-static';
21
14
  // @ts-ignore
22
- const etrick_1 = tslib_1.__importDefault(require("etrick"));
15
+ import tftp from 'tftp';
16
+ import { exec } from '../lib/utils.js';
17
+ import Distro from './distro.js';
18
+ import Settings from './settings.js';
19
+ import Utils from './utils.js';
20
+ // _dirname
21
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
23
22
  /**
24
23
  * Pxe:
25
24
  */
26
- class Pxe {
27
- constructor() {
28
- this.verbose = false;
29
- this.echo = {};
30
- this.settings = {};
31
- this.bootLabel = '';
32
- this.nest = ''; // cuckoo's nest
33
- this.pxeRoot = '';
34
- this.eggRoot = '';
35
- this.vmlinuz = '';
36
- this.initrdImg = '';
37
- this.isos = [];
25
+ export default class Pxe {
26
+ bootLabel = '';
27
+ echo = {};
28
+ eggRoot = '';
29
+ initrdImg = '';
30
+ isos = []; // cuckoo's nest
31
+ nest = '';
32
+ pxeRoot = '';
33
+ settings = {};
34
+ verbose = false;
35
+ vmlinuz = '';
36
+ /**
37
+ * configure PXE bios
38
+ */
39
+ async bios() {
40
+ console.log('creating cuckoo configuration pxe: BIOS');
41
+ await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/isolinux.theme.cfg ${this.pxeRoot}/isolinux.theme.cfg`);
42
+ await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/splash.png ${this.pxeRoot}/splash.png`);
43
+ /**
44
+ * ipxe.efi
45
+ */
46
+ await this.tryCatch(`ln -s ${__dirname}/../../ipxe/ipxe.efi ${this.pxeRoot}/ipxe.efi`);
47
+ // pxe
48
+ const distro = new Distro();
49
+ await this.tryCatch(`ln -s ${distro.pxelinuxPath}pxelinux.0 ${this.pxeRoot}/pxelinux.0`);
50
+ await this.tryCatch(`ln -s ${distro.pxelinuxPath}lpxelinux.0 ${this.pxeRoot}/lpxelinux.0`);
51
+ // syslinux
52
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}ldlinux.c32 ${this.pxeRoot}/ldlinux.c32`);
53
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}vesamenu.c32 ${this.pxeRoot}/vesamenu.c32`);
54
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}libcom32.c32 ${this.pxeRoot}/libcom32.c32`);
55
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}libutil.c32 ${this.pxeRoot}/libutil.c32`);
56
+ await this.tryCatch(`ln -s ${distro.memdiskPath}memdisk ${this.pxeRoot}/memdisk`);
57
+ await this.tryCatch(`mkdir ${this.pxeRoot}/pxelinux.cfg`);
58
+ let content = '';
59
+ content += '# eggs: pxelinux.cfg/default\n';
60
+ content += '# search path for the c32 support libraries (libcom32, libutil etc.)\n';
61
+ content += 'path\n';
62
+ content += 'include isolinux.theme.cfg\n';
63
+ content += 'UI vesamenu.c32\n';
64
+ content += '\n';
65
+ content += `menu title cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
66
+ content += 'PROMPT 0\n';
67
+ content += 'TIMEOUT 200\n';
68
+ content += '\n';
69
+ content += 'label egg\n';
70
+ content += `menu label ${this.bootLabel.replace('.iso', '')}\n`;
71
+ if (this.settings.distro.familyId === 'debian') {
72
+ /**
73
+ * DEBIAN
74
+ */
75
+ const clid = this.settings.distro.codenameLikeId;
76
+ if (clid === 'bionic' || clid === 'stretch' || clid === 'jessie') {
77
+ content += 'kernel vmlinuz\n';
78
+ content += `append initrd=initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
79
+ }
80
+ else {
81
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
82
+ content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
83
+ }
84
+ }
85
+ else if (distro.familyId === 'archlinux') {
86
+ /**
87
+ * ARCH LINUX
88
+ */
89
+ let tool = 'archiso';
90
+ if (distro.distroId === 'ManjaroLinux') {
91
+ tool = 'miso';
92
+ }
93
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
94
+ content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt ${tool}_http_srv=http://${Utils.address()}/\n`;
95
+ content += 'sysappend 3\n';
96
+ content += '\n';
97
+ }
98
+ if (this.isos.length > 0) {
99
+ content += 'menu separator\n';
100
+ for (const iso of this.isos) {
101
+ content += '\n';
102
+ content += `label ${iso}\n`;
103
+ content += `menu label ${iso}\n`;
104
+ content += `kernel http://${Utils.address()}/memdisk\n`;
105
+ content += `initrd http://${Utils.address()}/${iso}\n`;
106
+ content += 'append iso raw sysappend 3\n';
107
+ }
108
+ }
109
+ const file = `${this.pxeRoot}/pxelinux.cfg/default`;
110
+ fs.writeFileSync(file, content);
111
+ }
112
+ /**
113
+ * build
114
+ */
115
+ async build() {
116
+ if (fs.existsSync(this.pxeRoot)) {
117
+ await this.tryCatch(`rm ${this.pxeRoot} -rf`);
118
+ }
119
+ await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
120
+ await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
121
+ await this.tryCatch(`ln -s ${this.eggRoot}live ${this.pxeRoot}/live`);
122
+ await this.tryCatch(`ln -s ${this.nest}.disk ${this.pxeRoot}/.disk`);
123
+ if (this.settings.distro.distroId === 'ManjaroLinux') {
124
+ await this.tryCatch(`ln -s ${this.eggRoot}manjaro ${this.pxeRoot}/manjaro`);
125
+ }
126
+ else if (this.settings.distro.distroId === 'Arch' || this.settings.distro.distroId === 'RebornOS') {
127
+ await this.tryCatch(`ln -s ${this.eggRoot}arch ${this.pxeRoot}/arch`);
128
+ }
129
+ if (fs.existsSync(this.eggRoot)) {
130
+ await this.tryCatch(`cp ${this.eggRoot}live/${this.vmlinuz} ${this.pxeRoot}/vmlinuz`, true);
131
+ await this.tryCatch(`chmod 777 ${this.pxeRoot}/vmlinuz`);
132
+ await this.tryCatch(`cp ${this.eggRoot}live/${this.initrdImg} ${this.pxeRoot}/initrd`, true);
133
+ await this.tryCatch(`chmod 777 ${this.pxeRoot}/initrd`);
134
+ }
135
+ // link iso images in pxe
136
+ for (const iso of this.isos) {
137
+ await this.tryCatch(`ln -s ${this.nest}/${iso} ${this.pxeRoot}/${iso}`);
138
+ }
139
+ await this.bios();
140
+ await this.ipxe();
141
+ await this.http();
142
+ }
143
+ /**
144
+ *
145
+ * @param dhcpOptions
146
+ */
147
+ dhcpStart(dhcpOptions) {
148
+ new etrick(dhcpOptions);
38
149
  }
39
150
  /**
40
151
  * fertilization()
@@ -42,9 +153,9 @@ class Pxe {
42
153
  * cuckoo's nest
43
154
  */
44
155
  async fertilization() {
45
- this.settings = new settings_1.default();
156
+ this.settings = new Settings();
46
157
  await this.settings.load();
47
- if (utils_2.default.isLive()) {
158
+ if (Utils.isLive()) {
48
159
  this.eggRoot = this.settings.distro.liveMediumPath;
49
160
  if (
50
161
  // ArchisoCompatibles
@@ -56,15 +167,15 @@ class Pxe {
56
167
  this.settings.distro.distroId === 'phyOS' ||
57
168
  this.settings.distro.distroId === 'RebornOS') {
58
169
  this.eggRoot = '/run/archiso/bootmnt/';
59
- await (0, utils_1.exec)(`mkdir ${this.eggRoot} -p`);
60
- await (0, utils_1.exec)(`mount /dev/sr0 ${this.eggRoot}`);
170
+ await exec(`mkdir ${this.eggRoot} -p`);
171
+ await exec(`mount /dev/sr0 ${this.eggRoot}`);
61
172
  }
62
173
  }
63
174
  else {
64
- //this.eggRoot = path.dirname(this.settings.config.snapshot_mnt) + '/iso/'
175
+ // this.eggRoot = path.dirname(this.settings.config.snapshot_mnt) + '/iso/'
65
176
  this.eggRoot = this.settings.config.snapshot_mnt + 'iso/';
66
177
  }
67
- if (!utils_2.default.isLive() && !fs_1.default.existsSync(this.settings.config.snapshot_mnt)) {
178
+ if (!Utils.isLive() && !fs.existsSync(this.settings.config.snapshot_mnt)) {
68
179
  console.log('no image available, build an image with: sudo eggs produce');
69
180
  process.exit();
70
181
  }
@@ -73,8 +184,8 @@ class Pxe {
73
184
  /**
74
185
  * se pxeRoot non esiste viene creato
75
186
  */
76
- if (!fs_1.default.existsSync(this.pxeRoot)) {
77
- await (0, utils_1.exec)(`mkdir ${this.pxeRoot} -p`);
187
+ if (!fs.existsSync(this.pxeRoot)) {
188
+ await exec(`mkdir ${this.pxeRoot} -p`);
78
189
  }
79
190
  /**
80
191
  * Ricerca delle ISOs
@@ -97,22 +208,22 @@ class Pxe {
97
208
  * live: this.iso/live
98
209
  */
99
210
  const pathFiles = this.eggRoot + 'live';
100
- const files = fs_1.default.readdirSync(pathFiles);
211
+ const files = fs.readdirSync(pathFiles);
101
212
  for (const file of files) {
102
213
  if (this.settings.distro.familyId === 'debian') {
103
- if (node_path_1.default.basename(file).slice(0, 7) === 'vmlinuz') {
104
- this.vmlinuz = node_path_1.default.basename(file);
214
+ if (path.basename(file).slice(0, 7) === 'vmlinuz') {
215
+ this.vmlinuz = path.basename(file);
105
216
  }
106
- if (node_path_1.default.basename(file).slice(0, 6) === 'initrd') {
107
- this.initrdImg = node_path_1.default.basename(file);
217
+ if (path.basename(file).slice(0, 6) === 'initrd') {
218
+ this.initrdImg = path.basename(file);
108
219
  }
109
220
  }
110
221
  else if (this.settings.distro.familyId === 'archlinux') {
111
- if (node_path_1.default.basename(file).slice(0, 7) === 'vmlinuz') {
112
- this.vmlinuz = node_path_1.default.basename(file);
222
+ if (path.basename(file).slice(0, 7) === 'vmlinuz') {
223
+ this.vmlinuz = path.basename(file);
113
224
  }
114
- if (node_path_1.default.basename(file).slice(0, 9) === 'initramfs') {
115
- this.initrdImg = node_path_1.default.basename(file);
225
+ if (path.basename(file).slice(0, 9) === 'initramfs') {
226
+ this.initrdImg = path.basename(file);
116
227
  }
117
228
  }
118
229
  }
@@ -120,8 +231,8 @@ class Pxe {
120
231
  * bootLabel
121
232
  */
122
233
  this.bootLabel = 'not found';
123
- if (fs_1.default.existsSync(this.eggRoot + '/.disk/mkisofs')) {
124
- const a = fs_1.default.readFileSync(this.eggRoot + '/.disk/mkisofs', 'utf-8');
234
+ if (fs.existsSync(this.eggRoot + '/.disk/mkisofs')) {
235
+ const a = fs.readFileSync(this.eggRoot + '/.disk/mkisofs', 'utf8');
125
236
  const b = a.slice(Math.max(0, a.indexOf('-o ') + 3));
126
237
  const c = b.slice(0, Math.max(0, b.indexOf(' ')));
127
238
  this.bootLabel = c.slice(Math.max(0, c.lastIndexOf('/') + 1));
@@ -131,111 +242,43 @@ class Pxe {
131
242
  console.log(`initrd: ${this.initrdImg}`);
132
243
  }
133
244
  /**
134
- * build
135
- */
136
- async build() {
137
- if (fs_1.default.existsSync(this.pxeRoot)) {
138
- await this.tryCatch(`rm ${this.pxeRoot} -rf`);
139
- }
140
- await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
141
- await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
142
- await this.tryCatch(`ln -s ${this.eggRoot}live ${this.pxeRoot}/live`);
143
- await this.tryCatch(`ln -s ${this.nest}.disk ${this.pxeRoot}/.disk`);
144
- if (this.settings.distro.distroId === 'ManjaroLinux') {
145
- await this.tryCatch(`ln -s ${this.eggRoot}manjaro ${this.pxeRoot}/manjaro`);
146
- }
147
- else if (this.settings.distro.distroId === 'Arch' || this.settings.distro.distroId === 'RebornOS') {
148
- await this.tryCatch(`ln -s ${this.eggRoot}arch ${this.pxeRoot}/arch`);
149
- }
150
- if (fs_1.default.existsSync(this.eggRoot)) {
151
- await this.tryCatch(`cp ${this.eggRoot}live/${this.vmlinuz} ${this.pxeRoot}/vmlinuz`, true);
152
- await this.tryCatch(`chmod 777 ${this.pxeRoot}/vmlinuz`);
153
- await this.tryCatch(`cp ${this.eggRoot}live/${this.initrdImg} ${this.pxeRoot}/initrd`, true);
154
- await this.tryCatch(`chmod 777 ${this.pxeRoot}/initrd`);
155
- }
156
- // link iso images in pxe
157
- for (const iso of this.isos) {
158
- await this.tryCatch(`ln -s ${this.nest}/${iso} ${this.pxeRoot}/${iso}`);
159
- }
160
- await this.bios();
161
- await this.ipxe();
162
- await this.http();
163
- }
164
- /**
165
- * configure PXE bios
245
+ * configure PXE http server
166
246
  */
167
- async bios() {
168
- console.log('creating cuckoo configuration pxe: BIOS');
169
- await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/isolinux.theme.cfg ${this.pxeRoot}/isolinux.theme.cfg`);
170
- await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/splash.png ${this.pxeRoot}/splash.png`);
171
- /**
172
- * ipxe.efi
173
- */
174
- await this.tryCatch(`ln -s ${__dirname}/../../ipxe/ipxe.efi ${this.pxeRoot}/ipxe.efi`);
175
- // pxe
176
- const distro = new distro_1.default();
177
- await this.tryCatch(`ln -s ${distro.pxelinuxPath}pxelinux.0 ${this.pxeRoot}/pxelinux.0`);
178
- await this.tryCatch(`ln -s ${distro.pxelinuxPath}lpxelinux.0 ${this.pxeRoot}/lpxelinux.0`);
179
- // syslinux
180
- await this.tryCatch(`ln -s ${distro.syslinuxPath}ldlinux.c32 ${this.pxeRoot}/ldlinux.c32`);
181
- await this.tryCatch(`ln -s ${distro.syslinuxPath}vesamenu.c32 ${this.pxeRoot}/vesamenu.c32`);
182
- await this.tryCatch(`ln -s ${distro.syslinuxPath}libcom32.c32 ${this.pxeRoot}/libcom32.c32`);
183
- await this.tryCatch(`ln -s ${distro.syslinuxPath}libutil.c32 ${this.pxeRoot}/libutil.c32`);
184
- await this.tryCatch(`ln -s ${distro.memdiskPath}memdisk ${this.pxeRoot}/memdisk`);
185
- await this.tryCatch(`mkdir ${this.pxeRoot}/pxelinux.cfg`);
247
+ async http() {
248
+ console.log('creating cuckoo configuration: PXE html');
249
+ const file = `${this.pxeRoot}/index.html`;
186
250
  let content = '';
187
- content += '# eggs: pxelinux.cfg/default\n';
188
- content += '# search path for the c32 support libraries (libcom32, libutil etc.)\n';
189
- content += 'path\n';
190
- content += 'include isolinux.theme.cfg\n';
191
- content += 'UI vesamenu.c32\n';
192
- content += '\n';
193
- content += `menu title cuckoo: when you need a flying PXE server! ${utils_2.default.address()}\n`;
194
- content += 'PROMPT 0\n';
195
- content += 'TIMEOUT 200\n';
196
- content += '\n';
197
- content += 'label egg\n';
198
- content += `menu label ${this.bootLabel.replace('.iso', '')}\n`;
199
- if (this.settings.distro.familyId === 'debian') {
200
- /**
201
- * DEBIAN
202
- */
203
- const clid = this.settings.distro.codenameLikeId;
204
- if (clid === 'bionic' || clid === 'stretch' || clid === 'jessie') {
205
- content += 'kernel vmlinuz\n';
206
- content += `append initrd=initrd boot=live config noswap noprompt fetch=http://${utils_2.default.address()}/live/filesystem.squashfs\n`;
207
- }
208
- else {
209
- content += `kernel http://${utils_2.default.address()}/vmlinuz\n`;
210
- content += `append initrd=http://${utils_2.default.address()}/initrd boot=live config noswap noprompt fetch=http://${utils_2.default.address()}/live/filesystem.squashfs\n`;
211
- }
212
- }
213
- else if (distro.familyId === 'archlinux') {
214
- /**
215
- * ARCH LINUX
216
- */
217
- let tool = 'archiso';
218
- if (distro.distroId === 'ManjaroLinux') {
219
- tool = 'miso';
220
- }
221
- content += `kernel http://${utils_2.default.address()}/vmlinuz\n`;
222
- content += `append initrd=http://${utils_2.default.address()}/initrd boot=live config noswap noprompt ${tool}_http_srv=http://${utils_2.default.address()}/\n`;
223
- content += 'sysappend 3\n';
224
- content += '\n';
251
+ content += '<html><title>Penguin\'s eggs PXE server</title>';
252
+ content += '<div style="background-image:url(\'/splash.png\');background-repeat:no-repeat;width: 640;height:480;padding:5px;border:1px solid black;">';
253
+ content += '<h1>Cucko PXE server</h1>';
254
+ content += `<body>address: <a href=http://${Utils.address()}>${Utils.address()}</a><br/>`;
255
+ if (Utils.isLive()) {
256
+ content += 'started from live iso image<br/>';
225
257
  }
226
- if (this.isos.length > 0) {
227
- content += 'menu separator\n';
258
+ else {
259
+ content += 'Serving:<li>';
228
260
  for (const iso of this.isos) {
229
- content += '\n';
230
- content += `label ${iso}\n`;
231
- content += `menu label ${iso}\n`;
232
- content += `kernel http://${utils_2.default.address()}/memdisk\n`;
233
- content += `initrd http://${utils_2.default.address()}/${iso}\n`;
234
- content += 'append iso raw sysappend 3\n';
261
+ content += `<ul><a href='http://${Utils.address()}/${iso}'>${iso}</a></ul>`;
235
262
  }
263
+ content += '</li>';
236
264
  }
237
- const file = `${this.pxeRoot}/pxelinux.cfg/default`;
238
- fs_1.default.writeFileSync(file, content);
265
+ content += 'source: <a href=\'https://github.com/pieroproietti/penguins-eggs\'>https://github.com/pieroproietti/penguins-eggs</a><br/>';
266
+ content += 'manual: <a href=\'https://penguins-eggs.net/book/italiano9.2.html\'>italiano</a>, <a href=\'https://penguins--eggs-net.translate.goog/book/italiano9.2?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en\'>translated</a><br/>';
267
+ content += 'discuss: <a href=\'https://t.me/penguins_eggs\'>Telegram group<br/></body</html>';
268
+ fs.writeFileSync(file, content);
269
+ }
270
+ /**
271
+ * start http server for images
272
+ *
273
+ */
274
+ async httpStart() {
275
+ const port = 80;
276
+ const httpRoot = this.pxeRoot + '/';
277
+ console.log('http listening: 0.0.0.0:' + port);
278
+ const file = new (nodeStatic.Server)(httpRoot);
279
+ http.createServer((req, res) => {
280
+ file.serve(req, res);
281
+ }).listen(port);
239
282
  }
240
283
  /**
241
284
  *
@@ -245,13 +288,13 @@ class Pxe {
245
288
  let content = '#!ipxe\n';
246
289
  content += 'dhcp\n';
247
290
  content += 'set net0/ip=dhcp\n';
248
- content += `console --picture http://${utils_2.default.address()}/splash.png -x 1024 -y 768\n`;
291
+ content += `console --picture http://${Utils.address()}/splash.png -x 1024 -y 768\n`;
249
292
  content += 'goto start ||\n';
250
293
  content += '\n';
251
294
  content += ':start\n';
252
- content += `set server_root http://${utils_2.default.address()}:80/\n`;
295
+ content += `set server_root http://${Utils.address()}:80/\n`;
253
296
  const serverRootVars = '${server_root}';
254
- content += `menu cuckoo: when you need a flying PXE server! ${utils_2.default.address()}\n`;
297
+ content += `menu cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
255
298
  content += 'item --gap boot from ovarium\n';
256
299
  content += `item egg-menu \${space} ${this.bootLabel.replaceAll('.iso', '')}\n\n`;
257
300
  if (this.isos.length > 0) {
@@ -268,8 +311,8 @@ class Pxe {
268
311
  content += 'goto ${target}\n';
269
312
  content += '\n';
270
313
  content += ':egg-menu\n';
271
- content += `kernel http://${utils_2.default.address()}/vmlinuz\n`;
272
- content += `initrd http://${utils_2.default.address()}/initrd\n`;
314
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
315
+ content += `initrd http://${Utils.address()}/initrd\n`;
273
316
  /**
274
317
  * CORRECT:
275
318
  * content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`
@@ -278,7 +321,7 @@ class Pxe {
278
321
  /**
279
322
  * DEBIAN
280
323
  */
281
- content += `imgargs vmlinuz fetch=http://${utils_2.default.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`;
324
+ content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`;
282
325
  }
283
326
  else if (this.settings.distro.familyId === 'archlinux') {
284
327
  /**
@@ -288,7 +331,7 @@ class Pxe {
288
331
  if (this.settings.distro.codenameId === 'Qonos' || this.settings.distro.codenameId === 'Ruah' || this.settings.distro.codenameId === 'Sikaris' || this.settings.distro.codenameId === 'UltimaThule') {
289
332
  tool = 'miso';
290
333
  }
291
- content += `imgargs vmlinuz ${tool}_http_srv=http://${utils_2.default.address()}/ boot=live dhcp initrd=initrd ro\n`;
334
+ content += `imgargs vmlinuz ${tool}_http_srv=http://${Utils.address()}/ boot=live dhcp initrd=initrd ro\n`;
292
335
  // content += 'ipappend 3\n'
293
336
  }
294
337
  content += 'sleep 5\n';
@@ -312,66 +355,20 @@ class Pxe {
312
355
  content += 'chain --autofree http://boot.netboot.xyz/menu.ipxe || echo HTTP failed, localbooting...\n';
313
356
  content += 'goto start\n\n';
314
357
  const file = `${this.pxeRoot}/autoexec.ipxe`;
315
- fs_1.default.writeFileSync(file, content);
316
- }
317
- /**
318
- * configure PXE http server
319
- */
320
- async http() {
321
- console.log('creating cuckoo configuration: PXE html');
322
- const file = `${this.pxeRoot}/index.html`;
323
- let content = '';
324
- content += '<html><title>Penguin\'s eggs PXE server</title>';
325
- content += '<div style="background-image:url(\'/splash.png\');background-repeat:no-repeat;width: 640;height:480;padding:5px;border:1px solid black;">';
326
- content += '<h1>Cucko PXE server</h1>';
327
- content += `<body>address: <a href=http://${utils_2.default.address()}>${utils_2.default.address()}</a><br/>`;
328
- if (!utils_2.default.isLive()) {
329
- content += 'Serving:<li>';
330
- for (const iso of this.isos) {
331
- content += `<ul><a href='http://${utils_2.default.address()}/${iso}'>${iso}</a></ul>`;
332
- }
333
- content += '</li>';
334
- }
335
- else {
336
- content += 'started from live iso image<br/>';
337
- }
338
- content += 'source: <a href=\'https://github.com/pieroproietti/penguins-eggs\'>https://github.com/pieroproietti/penguins-eggs</a><br/>';
339
- content += 'manual: <a href=\'https://penguins-eggs.net/book/italiano9.2.html\'>italiano</a>, <a href=\'https://penguins--eggs-net.translate.goog/book/italiano9.2?_x_tr_sl=auto&_x_tr_tl=en&_x_tr_hl=en\'>translated</a><br/>';
340
- content += 'discuss: <a href=\'https://t.me/penguins_eggs\'>Telegram group<br/></body</html>';
341
- fs_1.default.writeFileSync(file, content);
342
- }
343
- /**
344
- *
345
- * @param dhcpOptions
346
- */
347
- dhcpStart(dhcpOptions) {
348
- new etrick_1.default(dhcpOptions);
349
- }
350
- /**
351
- * start http server for images
352
- *
353
- */
354
- async httpStart() {
355
- const port = 80;
356
- const httpRoot = this.pxeRoot + '/';
357
- console.log('http listening: 0.0.0.0:' + port);
358
- const file = new (node_static_1.default.Server)(httpRoot);
359
- http_1.default.createServer(function (req, res) {
360
- file.serve(req, res);
361
- }).listen(port);
358
+ fs.writeFileSync(file, content);
362
359
  }
363
360
  /**
364
361
  * start tftp
365
362
  */
366
363
  async tftpStart(tftpOptions) {
367
- const tftpServer = tftp_1.default.createServer(tftpOptions);
368
- tftpServer.on('error', function (error) {
364
+ const tftpServer = tftp.createServer(tftpOptions);
365
+ tftpServer.on('error', (error) => {
369
366
  // Errors from the main socket
370
367
  // The current transfers are not aborted
371
368
  console.error(error);
372
369
  });
373
- tftpServer.on('request', function (req, res) {
374
- req.on('error', function (error) {
370
+ tftpServer.on('request', (req, res) => {
371
+ req.on('error', (error) => {
375
372
  // Error from the request
376
373
  // The connection is already closed
377
374
  console.error('[' + req.stats.remoteAddress + ':' + req.stats.remotePort + '] (' + req.file + ') ' + error.message);
@@ -388,12 +385,11 @@ class Pxe {
388
385
  if (echo) {
389
386
  console.log(cmd);
390
387
  }
391
- await (0, utils_1.exec)(cmd, this.echo);
388
+ await exec(cmd, this.echo);
392
389
  }
393
390
  catch (error) {
394
391
  console.log(`Error: ${error}`);
395
- await utils_2.default.pressKeyToExit(cmd);
392
+ await Utils.pressKeyToExit(cmd);
396
393
  }
397
394
  }
398
395
  }
399
- exports.default = Pxe;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ./src/classes/settings.ts
3
+ * penguins-eggs v.10.0.0 / ecmascript 2020
4
+ * author: Piero Proietti
5
+ * email: piero.proietti@gmail.com
6
+ * license: MIT
7
+ */
8
+ import { IApp, IDistro, IRemix, IWorkDir } from '../interfaces/index.js';
9
+ import { IEggsConfig } from '../interfaces/index.js';
10
+ import Incubator from './incubation/incubator.js';
11
+ /**
12
+ * Setting
13
+ */
14
+ export default class Settings {
15
+ app: IApp;
16
+ config: IEggsConfig;
17
+ distro: IDistro;
18
+ efi_work: string;
19
+ i686: boolean;
20
+ incubator: Incubator;
21
+ initrd_image: string;
22
+ initrdImg: string;
23
+ isLive: boolean;
24
+ iso_work: string;
25
+ isoFilename: string;
26
+ kernel_image: string;
27
+ remix: IRemix;
28
+ session_excludes: string;
29
+ vmlinuz: string;
30
+ work_dir: IWorkDir;
31
+ constructor(compression?: string);
32
+ /**
33
+ * Calculate and show free space on the disk
34
+ * @returns {void}
35
+ */
36
+ listFreeSpace(): Promise<void>;
37
+ /**
38
+ * Load configuration from config_file
39
+ * @returns {boolean} Success
40
+ */
41
+ load(): Promise<boolean>;
42
+ /**
43
+ *
44
+ * @param basename
45
+ * @param theme
46
+ */
47
+ loadRemix(basename?: string, theme?: string): Promise<void>;
48
+ /**
49
+ *
50
+ * @param config
51
+ */
52
+ save(config: IEggsConfig): Promise<void>;
53
+ }