penguins-eggs 10.1.0 → 10.1.1

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 (440) hide show
  1. package/.oclif.manifest.json +1 -32
  2. package/README.md +109 -78
  3. package/conf/derivatives.yaml +3 -0
  4. package/conf/distros/buster/calamares/modules/users.yml +1 -0
  5. package/conf/distros/noble/calamares/modules/users.yml +1 -0
  6. package/dist/classes/bleach.d.ts +32 -0
  7. package/dist/classes/bleach.js +135 -0
  8. package/dist/classes/cli-autologin.d.ts +52 -0
  9. package/dist/classes/cli-autologin.js +247 -0
  10. package/dist/classes/compressors.d.ts +54 -0
  11. package/dist/classes/compressors.js +109 -0
  12. package/dist/classes/daddy.d.ts +26 -0
  13. package/dist/classes/daddy.js +167 -0
  14. package/dist/classes/distro.d.ts +56 -0
  15. package/dist/classes/distro.js +413 -0
  16. package/dist/classes/diversions.d.ts +52 -0
  17. package/dist/classes/diversions.js +126 -0
  18. package/dist/classes/incubation/branding.d.ts +17 -0
  19. package/dist/classes/incubation/branding.js +85 -0
  20. package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +11 -0
  21. package/dist/classes/incubation/fisherman-helper/displaymanager.js +40 -0
  22. package/dist/classes/incubation/fisherman-helper/packages.d.ts +20 -0
  23. package/dist/classes/incubation/fisherman-helper/packages.js +72 -0
  24. package/dist/classes/incubation/fisherman-helper/settings.d.ts +15 -0
  25. package/dist/classes/incubation/fisherman-helper/settings.js +83 -0
  26. package/dist/classes/incubation/fisherman.d.ts +70 -0
  27. package/dist/classes/incubation/fisherman.js +263 -0
  28. package/dist/classes/incubation/incubator.d/alpine.d.ts +32 -0
  29. package/dist/classes/incubation/incubator.d/alpine.js +78 -0
  30. package/dist/classes/incubation/incubator.d/bionic.d.ts +32 -0
  31. package/dist/classes/incubation/incubator.d/bionic.js +83 -0
  32. package/dist/classes/incubation/incubator.d/buster.d.ts +32 -0
  33. package/dist/classes/incubation/incubator.d/buster.js +85 -0
  34. package/dist/classes/incubation/incubator.d/jessie.d.ts +31 -0
  35. package/dist/classes/incubation/incubator.d/jessie.js +44 -0
  36. package/dist/classes/incubation/incubator.d/noble.d.ts +32 -0
  37. package/dist/classes/incubation/incubator.d/noble.js +85 -0
  38. package/dist/classes/incubation/incubator.d/openmamba.d.ts +32 -0
  39. package/dist/classes/incubation/incubator.d/openmamba.js +81 -0
  40. package/dist/classes/incubation/incubator.d/opensuse.d.ts +32 -0
  41. package/dist/classes/incubation/incubator.d/opensuse.js +81 -0
  42. package/dist/classes/incubation/incubator.d/rolling.d.ts +32 -0
  43. package/dist/classes/incubation/incubator.d/rolling.js +80 -0
  44. package/dist/classes/incubation/incubator.d.ts +44 -0
  45. package/dist/classes/incubation/incubator.js +382 -0
  46. package/dist/classes/incubation/installer.d.ts +13 -0
  47. package/dist/classes/incubation/installer.js +52 -0
  48. package/dist/classes/keyboards.d.ts +50 -0
  49. package/dist/classes/keyboards.js +287 -0
  50. package/dist/classes/locales.d.ts +21 -0
  51. package/dist/classes/locales.js +77 -0
  52. package/dist/classes/network.d.ts +37 -0
  53. package/dist/classes/network.js +98 -0
  54. package/dist/classes/ovary.d/bind-live-fs.d.ts +18 -0
  55. package/dist/classes/ovary.d/bind-live-fs.js +177 -0
  56. package/dist/classes/ovary.d/bind-vfs.d.ts +17 -0
  57. package/dist/classes/ovary.d/bind-vfs.js +37 -0
  58. package/dist/classes/ovary.d/create-xdg-autostart.d.ts +13 -0
  59. package/dist/classes/ovary.d/create-xdg-autostart.js +194 -0
  60. package/dist/classes/ovary.d/edit-live-fs.d.ts +20 -0
  61. package/dist/classes/ovary.d/edit-live-fs.js +245 -0
  62. package/dist/classes/ovary.d/fertilization.d.ts +12 -0
  63. package/dist/classes/ovary.d/fertilization.js +51 -0
  64. package/dist/classes/ovary.d/finished.d.ts +13 -0
  65. package/dist/classes/ovary.d/finished.js +41 -0
  66. package/dist/classes/ovary.d/initrd.d.ts +21 -0
  67. package/dist/classes/ovary.d/initrd.js +68 -0
  68. package/dist/classes/ovary.d/kernel-copy.d.ts +12 -0
  69. package/dist/classes/ovary.d/kernel-copy.js +22 -0
  70. package/dist/classes/ovary.d/live-create-structure.d.ts +12 -0
  71. package/dist/classes/ovary.d/live-create-structure.js +90 -0
  72. package/dist/classes/ovary.d/make-dot-disk.d.ts +12 -0
  73. package/dist/classes/ovary.d/make-dot-disk.js +40 -0
  74. package/dist/classes/ovary.d/make-efi.d.ts +12 -0
  75. package/dist/classes/ovary.d/make-efi.js +271 -0
  76. package/dist/classes/ovary.d/make-iso.d.ts +13 -0
  77. package/dist/classes/ovary.d/make-iso.js +45 -0
  78. package/dist/classes/ovary.d/make-squashfs.d.ts +18 -0
  79. package/dist/classes/ovary.d/make-squashfs.js +110 -0
  80. package/dist/classes/ovary.d/merged.d.ts +27 -0
  81. package/dist/classes/ovary.d/merged.js +77 -0
  82. package/dist/classes/ovary.d/produce.d.ts +23 -0
  83. package/dist/classes/ovary.d/produce.js +293 -0
  84. package/dist/classes/ovary.d/rexec.d.ts +13 -0
  85. package/dist/classes/ovary.d/rexec.js +34 -0
  86. package/dist/classes/ovary.d/syslinux.d.ts +12 -0
  87. package/dist/classes/ovary.d/syslinux.js +79 -0
  88. package/dist/classes/ovary.d/user-create-live.d.ts +14 -0
  89. package/dist/classes/ovary.d/user-create-live.js +93 -0
  90. package/dist/classes/ovary.d/users-remove.d.ts +9 -0
  91. package/dist/classes/ovary.d/users-remove.js +38 -0
  92. package/dist/classes/ovary.d/xorriso-commend.d.ts +14 -0
  93. package/dist/classes/ovary.d/xorriso-commend.js +119 -0
  94. package/dist/classes/ovary.d.ts +82 -0
  95. package/dist/classes/ovary.js +86 -0
  96. package/dist/classes/pacman.d/aldos.d.ts +52 -0
  97. package/dist/classes/pacman.d/aldos.js +100 -0
  98. package/dist/classes/pacman.d/alpine.d.ts +56 -0
  99. package/dist/classes/pacman.d/alpine.js +162 -0
  100. package/dist/classes/pacman.d/archlinux.d.ts +62 -0
  101. package/dist/classes/pacman.d/archlinux.js +136 -0
  102. package/dist/classes/pacman.d/debian.d.ts +65 -0
  103. package/dist/classes/pacman.d/debian.js +143 -0
  104. package/dist/classes/pacman.d/fedora.d.ts +53 -0
  105. package/dist/classes/pacman.d/fedora.js +101 -0
  106. package/dist/classes/pacman.d/openmamba.d.ts +52 -0
  107. package/dist/classes/pacman.d/openmamba.js +100 -0
  108. package/dist/classes/pacman.d/opensuse.d.ts +53 -0
  109. package/dist/classes/pacman.d/opensuse.js +102 -0
  110. package/dist/classes/pacman.d/voidlinux.d.ts +52 -0
  111. package/dist/classes/pacman.d/voidlinux.js +90 -0
  112. package/dist/classes/pacman.d.ts +139 -0
  113. package/dist/classes/pacman.js +776 -0
  114. package/dist/classes/pve-live.d.ts +17 -0
  115. package/dist/classes/pve-live.js +52 -0
  116. package/dist/classes/pxe.d.ts +74 -0
  117. package/dist/classes/pxe.js +410 -0
  118. package/dist/classes/settings.d.ts +52 -0
  119. package/dist/classes/settings.js +185 -0
  120. package/dist/classes/sources_list.d.ts +28 -0
  121. package/dist/classes/sources_list.js +89 -0
  122. package/dist/classes/systemctl.d.ts +47 -0
  123. package/dist/classes/systemctl.js +86 -0
  124. package/dist/classes/tailor.d.ts +50 -0
  125. package/dist/classes/tailor.js +527 -0
  126. package/dist/classes/tools.d.ts +26 -0
  127. package/dist/classes/tools.js +50 -0
  128. package/dist/classes/users.d.ts +28 -0
  129. package/dist/classes/users.js +143 -0
  130. package/dist/classes/utils.d/architecture.d.ts +41 -0
  131. package/dist/classes/utils.d/architecture.js +87 -0
  132. package/dist/classes/utils.d/console-output.d.ts +26 -0
  133. package/dist/classes/utils.d/console-output.js +46 -0
  134. package/dist/classes/utils.d/filesystem.d.ts +53 -0
  135. package/dist/classes/utils.d/filesystem.js +152 -0
  136. package/dist/classes/utils.d/formatters.d.ts +32 -0
  137. package/dist/classes/utils.d/formatters.js +64 -0
  138. package/dist/classes/utils.d/kernel.d.ts +83 -0
  139. package/dist/classes/utils.d/kernel.js +288 -0
  140. package/dist/classes/utils.d/network.d.ts +43 -0
  141. package/dist/classes/utils.d/network.js +133 -0
  142. package/dist/classes/utils.d/package-info.d.ts +55 -0
  143. package/dist/classes/utils.d/package-info.js +137 -0
  144. package/dist/classes/utils.d/snapshot.d.ts +44 -0
  145. package/dist/classes/utils.d/snapshot.js +102 -0
  146. package/dist/classes/utils.d/system.d.ts +63 -0
  147. package/dist/classes/utils.d/system.js +200 -0
  148. package/dist/classes/utils.d/user-interaction.d.ts +39 -0
  149. package/dist/classes/utils.d/user-interaction.js +104 -0
  150. package/dist/classes/utils.d.ts +95 -0
  151. package/dist/classes/utils.js +111 -0
  152. package/dist/classes/xdg.d.ts +45 -0
  153. package/dist/classes/xdg.js +337 -0
  154. package/dist/classes/yolk.d.ts +33 -0
  155. package/dist/classes/yolk.js +114 -0
  156. package/dist/commands/adapt.d.ts +17 -0
  157. package/dist/commands/adapt.js +33 -0
  158. package/dist/commands/analyze.d.ts +26 -0
  159. package/dist/commands/analyze.js +95 -0
  160. package/dist/commands/calamares.d.ts +29 -0
  161. package/dist/commands/calamares.js +112 -0
  162. package/dist/commands/config.d.ts +35 -0
  163. package/dist/commands/config.js +120 -0
  164. package/dist/commands/cuckoo.d.ts +16 -0
  165. package/dist/commands/cuckoo.js +62 -0
  166. package/dist/commands/dad.d.ts +21 -0
  167. package/dist/commands/dad.js +47 -0
  168. package/dist/commands/export/iso.d.ts +19 -0
  169. package/dist/commands/export/iso.js +55 -0
  170. package/dist/commands/export/pkg.d.ts +29 -0
  171. package/dist/commands/export/pkg.js +163 -0
  172. package/dist/commands/export/tarballs.d.ts +27 -0
  173. package/dist/commands/export/tarballs.js +79 -0
  174. package/dist/commands/install.d.ts +38 -0
  175. package/dist/commands/install.js +91 -0
  176. package/dist/commands/kill.d.ts +24 -0
  177. package/dist/commands/kill.js +50 -0
  178. package/dist/commands/love.d.ts +21 -0
  179. package/dist/commands/love.js +73 -0
  180. package/dist/commands/mom.d.ts +16 -0
  181. package/dist/commands/mom.js +30 -0
  182. package/dist/commands/pods.d.ts +22 -0
  183. package/dist/commands/pods.js +92 -0
  184. package/dist/commands/produce.d.ts +35 -0
  185. package/dist/commands/produce.js +221 -0
  186. package/dist/commands/status.d.ts +23 -0
  187. package/dist/commands/status.js +31 -0
  188. package/dist/commands/syncfrom.d.ts +45 -0
  189. package/dist/commands/syncfrom.js +152 -0
  190. package/dist/commands/syncto.d.ts +40 -0
  191. package/dist/commands/syncto.js +175 -0
  192. package/dist/commands/tools/clean.d.ts +18 -0
  193. package/dist/commands/tools/clean.js +37 -0
  194. package/dist/commands/tools/ppa.d.ts +26 -0
  195. package/dist/commands/tools/ppa.js +138 -0
  196. package/dist/commands/tools/skel.d.ts +18 -0
  197. package/dist/commands/tools/skel.js +44 -0
  198. package/dist/commands/tools/stat.d.ts +31 -0
  199. package/dist/commands/tools/stat.js +70 -0
  200. package/dist/commands/tools/yolk.d.ts +24 -0
  201. package/dist/commands/tools/yolk.js +45 -0
  202. package/dist/commands/update.d.ts +51 -0
  203. package/dist/commands/update.js +219 -0
  204. package/dist/commands/wardrobe/get.d.ts +23 -0
  205. package/dist/commands/wardrobe/get.js +52 -0
  206. package/dist/commands/wardrobe/list.d.ts +24 -0
  207. package/dist/commands/wardrobe/list.js +125 -0
  208. package/dist/commands/wardrobe/show.d.ts +25 -0
  209. package/dist/commands/wardrobe/show.js +97 -0
  210. package/dist/commands/wardrobe/wear.d.ts +26 -0
  211. package/dist/commands/wardrobe/wear.js +84 -0
  212. package/dist/index.d.ts +8 -0
  213. package/dist/index.js +8 -0
  214. package/dist/index_old.d.ts +8 -0
  215. package/dist/index_old.js +8 -0
  216. package/dist/interfaces/i-addons.d.ts +12 -0
  217. package/dist/interfaces/i-addons.js +8 -0
  218. package/dist/interfaces/i-analyze.d.ts +17 -0
  219. package/dist/interfaces/i-analyze.js +17 -0
  220. package/dist/interfaces/i-app.d.ts +14 -0
  221. package/dist/interfaces/i-app.js +8 -0
  222. package/dist/interfaces/i-branding.d.ts +36 -0
  223. package/dist/interfaces/i-branding.js +8 -0
  224. package/dist/interfaces/i-calamares-displaymanager.d.ts +17 -0
  225. package/dist/interfaces/i-calamares-displaymanager.js +1 -0
  226. package/dist/interfaces/i-calamares-finished.d.ts +12 -0
  227. package/dist/interfaces/i-calamares-finished.js +1 -0
  228. package/dist/interfaces/i-calamares-packages.d.ts +28 -0
  229. package/dist/interfaces/i-calamares-packages.js +1 -0
  230. package/dist/interfaces/i-calamares-partition.d.ts +40 -0
  231. package/dist/interfaces/i-calamares-partition.js +1 -0
  232. package/dist/interfaces/i-config-tools.d.ts +15 -0
  233. package/dist/interfaces/i-config-tools.js +8 -0
  234. package/dist/interfaces/i-devices.d.ts +20 -0
  235. package/dist/interfaces/i-devices.js +8 -0
  236. package/dist/interfaces/i-distro.d.ts +23 -0
  237. package/dist/interfaces/i-distro.js +8 -0
  238. package/dist/interfaces/i-drive-list.d.ts +33 -0
  239. package/dist/interfaces/i-drive-list.js +8 -0
  240. package/dist/interfaces/i-eggs-config.d.ts +32 -0
  241. package/dist/interfaces/i-eggs-config.js +8 -0
  242. package/dist/interfaces/i-excludes.d.ts +14 -0
  243. package/dist/interfaces/i-excludes.js +8 -0
  244. package/dist/interfaces/i-exec.d.ts +11 -0
  245. package/dist/interfaces/i-exec.js +8 -0
  246. package/dist/interfaces/i-initrd.d.ts +13 -0
  247. package/dist/interfaces/i-initrd.js +8 -0
  248. package/dist/interfaces/i-install.d.ts +16 -0
  249. package/dist/interfaces/i-install.js +8 -0
  250. package/dist/interfaces/i-installer.d.ts +17 -0
  251. package/dist/interfaces/i-installer.js +8 -0
  252. package/dist/interfaces/i-luks-passphrase.d.ts +11 -0
  253. package/dist/interfaces/i-luks-passphrase.js +8 -0
  254. package/dist/interfaces/i-materia.d.ts +36 -0
  255. package/dist/interfaces/i-materia.js +8 -0
  256. package/dist/interfaces/i-net.d.ts +16 -0
  257. package/dist/interfaces/i-net.js +8 -0
  258. package/dist/interfaces/i-os-release.d.ts +5 -0
  259. package/dist/interfaces/i-os-release.js +1 -0
  260. package/dist/interfaces/i-packages.d.ts +16 -0
  261. package/dist/interfaces/i-packages.js +8 -0
  262. package/dist/interfaces/i-partitions.d.ts +16 -0
  263. package/dist/interfaces/i-partitions.js +8 -0
  264. package/dist/interfaces/i-pxe.d.ts +45 -0
  265. package/dist/interfaces/i-pxe.js +1 -0
  266. package/dist/interfaces/i-remix.d.ts +21 -0
  267. package/dist/interfaces/i-remix.js +8 -0
  268. package/dist/interfaces/i-settings.d.ts +33 -0
  269. package/dist/interfaces/i-settings.js +8 -0
  270. package/dist/interfaces/i-user.d.ts +14 -0
  271. package/dist/interfaces/i-user.js +8 -0
  272. package/dist/interfaces/i-workdir.d.ts +14 -0
  273. package/dist/interfaces/i-workdir.js +8 -0
  274. package/dist/interfaces/i-xkb-model.d.ts +24 -0
  275. package/dist/interfaces/i-xkb-model.js +8 -0
  276. package/dist/interfaces/index.d.ts +26 -0
  277. package/dist/interfaces/index.js +8 -0
  278. package/dist/krill/classes/cfs.d.ts +17 -0
  279. package/dist/krill/classes/cfs.js +39 -0
  280. package/dist/krill/classes/krill_enums.d.ts +37 -0
  281. package/dist/krill/classes/krill_enums.js +41 -0
  282. package/dist/krill/classes/prepare.d/confirm.d.ts +5 -0
  283. package/dist/krill/classes/prepare.d/confirm.js +30 -0
  284. package/dist/krill/classes/prepare.d/keyboard.d.ts +14 -0
  285. package/dist/krill/classes/prepare.d/keyboard.js +62 -0
  286. package/dist/krill/classes/prepare.d/location.d.ts +17 -0
  287. package/dist/krill/classes/prepare.d/location.js +59 -0
  288. package/dist/krill/classes/prepare.d/network.d.ts +14 -0
  289. package/dist/krill/classes/prepare.d/network.js +68 -0
  290. package/dist/krill/classes/prepare.d/partitions.d.ts +14 -0
  291. package/dist/krill/classes/prepare.d/partitions.js +86 -0
  292. package/dist/krill/classes/prepare.d/summary.d.ts +15 -0
  293. package/dist/krill/classes/prepare.d/summary.js +69 -0
  294. package/dist/krill/classes/prepare.d/users.d.ts +6 -0
  295. package/dist/krill/classes/prepare.d/users.js +63 -0
  296. package/dist/krill/classes/prepare.d/welcome.d.ts +6 -0
  297. package/dist/krill/classes/prepare.d/welcome.js +30 -0
  298. package/dist/krill/classes/prepare.d.ts +89 -0
  299. package/dist/krill/classes/prepare.js +314 -0
  300. package/dist/krill/classes/sequence.d/add_user.d.ts +20 -0
  301. package/dist/krill/classes/sequence.d/add_user.js +66 -0
  302. package/dist/krill/classes/sequence.d/bootloader.d.ts +14 -0
  303. package/dist/krill/classes/sequence.d/bootloader.js +95 -0
  304. package/dist/krill/classes/sequence.d/bootloader_config.d.ts +14 -0
  305. package/dist/krill/classes/sequence.d/bootloader_config.js +165 -0
  306. package/dist/krill/classes/sequence.d/change_password.d.ts +15 -0
  307. package/dist/krill/classes/sequence.d/change_password.js +18 -0
  308. package/dist/krill/classes/sequence.d/del_live_user.d.ts +14 -0
  309. package/dist/krill/classes/sequence.d/del_live_user.js +39 -0
  310. package/dist/krill/classes/sequence.d/fstab.d.ts +14 -0
  311. package/dist/krill/classes/sequence.d/fstab.js +189 -0
  312. package/dist/krill/classes/sequence.d/grubcfg.d.ts +17 -0
  313. package/dist/krill/classes/sequence.d/grubcfg.js +33 -0
  314. package/dist/krill/classes/sequence.d/hostname.d.ts +13 -0
  315. package/dist/krill/classes/sequence.d/hostname.js +50 -0
  316. package/dist/krill/classes/sequence.d/initramfs.d.ts +13 -0
  317. package/dist/krill/classes/sequence.d/initramfs.js +54 -0
  318. package/dist/krill/classes/sequence.d/initramfs_cfg.d.ts +14 -0
  319. package/dist/krill/classes/sequence.d/initramfs_cfg.js +35 -0
  320. package/dist/krill/classes/sequence.d/locale.d.ts +13 -0
  321. package/dist/krill/classes/sequence.d/locale.js +91 -0
  322. package/dist/krill/classes/sequence.d/locale_cfg.d.ts +10 -0
  323. package/dist/krill/classes/sequence.d/locale_cfg.js +58 -0
  324. package/dist/krill/classes/sequence.d/m_keyboard.d.ts +14 -0
  325. package/dist/krill/classes/sequence.d/m_keyboard.js +58 -0
  326. package/dist/krill/classes/sequence.d/machine_id.d.ts +15 -0
  327. package/dist/krill/classes/sequence.d/machine_id.js +33 -0
  328. package/dist/krill/classes/sequence.d/mkfs.d.ts +15 -0
  329. package/dist/krill/classes/sequence.d/mkfs.js +72 -0
  330. package/dist/krill/classes/sequence.d/mount_fs.d.ts +17 -0
  331. package/dist/krill/classes/sequence.d/mount_fs.js +68 -0
  332. package/dist/krill/classes/sequence.d/mount_vfs.d.ts +17 -0
  333. package/dist/krill/classes/sequence.d/mount_vfs.js +40 -0
  334. package/dist/krill/classes/sequence.d/network_cfg.d.ts +19 -0
  335. package/dist/krill/classes/sequence.d/network_cfg.js +73 -0
  336. package/dist/krill/classes/sequence.d/packages.d.ts +14 -0
  337. package/dist/krill/classes/sequence.d/packages.js +111 -0
  338. package/dist/krill/classes/sequence.d/partition.d/bios_luks.d.ts +17 -0
  339. package/dist/krill/classes/sequence.d/partition.d/bios_luks.js +73 -0
  340. package/dist/krill/classes/sequence.d/partition.d/bios_standard.d.ts +17 -0
  341. package/dist/krill/classes/sequence.d/partition.d/bios_standard.js +36 -0
  342. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.d.ts +17 -0
  343. package/dist/krill/classes/sequence.d/partition.d/uefi_luks.js +78 -0
  344. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.d.ts +10 -0
  345. package/dist/krill/classes/sequence.d/partition.d/uefi_standard.js +32 -0
  346. package/dist/krill/classes/sequence.d/partition.d.ts +14 -0
  347. package/dist/krill/classes/sequence.d/partition.js +84 -0
  348. package/dist/krill/classes/sequence.d/remove_installer_link.d.ts +13 -0
  349. package/dist/krill/classes/sequence.d/remove_installer_link.js +35 -0
  350. package/dist/krill/classes/sequence.d/umount.d.ts +14 -0
  351. package/dist/krill/classes/sequence.d/umount.js +28 -0
  352. package/dist/krill/classes/sequence.d/unpackfs.d.ts +13 -0
  353. package/dist/krill/classes/sequence.d/unpackfs.js +20 -0
  354. package/dist/krill/classes/sequence.d.ts +133 -0
  355. package/dist/krill/classes/sequence.js +396 -0
  356. package/dist/krill/components/finished.d.ts +16 -0
  357. package/dist/krill/components/finished.js +56 -0
  358. package/dist/krill/components/information.d.ts +8 -0
  359. package/dist/krill/components/information.js +162 -0
  360. package/dist/krill/components/install.d.ts +15 -0
  361. package/dist/krill/components/install.js +60 -0
  362. package/dist/krill/components/keyboard.d.ts +16 -0
  363. package/dist/krill/components/keyboard.js +54 -0
  364. package/dist/krill/components/location.d.ts +16 -0
  365. package/dist/krill/components/location.js +59 -0
  366. package/dist/krill/components/network.d.ts +19 -0
  367. package/dist/krill/components/network.js +65 -0
  368. package/dist/krill/components/partitions.d.ts +18 -0
  369. package/dist/krill/components/partitions.js +89 -0
  370. package/dist/krill/components/steps.d.ts +13 -0
  371. package/dist/krill/components/steps.js +148 -0
  372. package/dist/krill/components/summary.d.ts +25 -0
  373. package/dist/krill/components/summary.js +77 -0
  374. package/dist/krill/components/title.d.ts +11 -0
  375. package/dist/krill/components/title.js +35 -0
  376. package/dist/krill/components/users.d.ts +24 -0
  377. package/dist/krill/components/users.js +80 -0
  378. package/dist/krill/components/welcome.d.ts +13 -0
  379. package/dist/krill/components/welcome.js +63 -0
  380. package/dist/krill/interfaces/i_krill.d.ts +44 -0
  381. package/dist/krill/interfaces/i_krill.js +8 -0
  382. package/dist/krill/interfaces/i_krill_config.d.ts +35 -0
  383. package/dist/krill/interfaces/i_krill_config.js +8 -0
  384. package/dist/krill/lib/get_address.d.ts +8 -0
  385. package/dist/krill/lib/get_address.js +23 -0
  386. package/dist/krill/lib/get_dns.d.ts +8 -0
  387. package/dist/krill/lib/get_dns.js +23 -0
  388. package/dist/krill/lib/get_domain.d.ts +8 -0
  389. package/dist/krill/lib/get_domain.js +23 -0
  390. package/dist/krill/lib/get_gateway.d.ts +8 -0
  391. package/dist/krill/lib/get_gateway.js +23 -0
  392. package/dist/krill/lib/get_hostname.d.ts +8 -0
  393. package/dist/krill/lib/get_hostname.js +23 -0
  394. package/dist/krill/lib/get_luks_passphrase.d.ts +8 -0
  395. package/dist/krill/lib/get_luks_passphrase.js +40 -0
  396. package/dist/krill/lib/get_netmask.d.ts +8 -0
  397. package/dist/krill/lib/get_netmask.js +23 -0
  398. package/dist/krill/lib/get_password.d.ts +8 -0
  399. package/dist/krill/lib/get_password.js +36 -0
  400. package/dist/krill/lib/get_userfullname.d.ts +8 -0
  401. package/dist/krill/lib/get_userfullname.js +23 -0
  402. package/dist/krill/lib/get_username.d.ts +8 -0
  403. package/dist/krill/lib/get_username.js +23 -0
  404. package/dist/krill/lib/select_address_type.d.ts +8 -0
  405. package/dist/krill/lib/select_address_type.js +24 -0
  406. package/dist/krill/lib/select_filesystem_type.d.ts +8 -0
  407. package/dist/krill/lib/select_filesystem_type.js +39 -0
  408. package/dist/krill/lib/select_installation_device.d.ts +8 -0
  409. package/dist/krill/lib/select_installation_device.js +40 -0
  410. package/dist/krill/lib/select_installation_mode.d.ts +9 -0
  411. package/dist/krill/lib/select_installation_mode.js +25 -0
  412. package/dist/krill/lib/select_interface.d.ts +8 -0
  413. package/dist/krill/lib/select_interface.js +24 -0
  414. package/dist/krill/lib/select_keyboard_layout.d.ts +11 -0
  415. package/dist/krill/lib/select_keyboard_layout.js +36 -0
  416. package/dist/krill/lib/select_keyboard_model.d.ts +11 -0
  417. package/dist/krill/lib/select_keyboard_model.js +34 -0
  418. package/dist/krill/lib/select_keyboard_option.d.ts +11 -0
  419. package/dist/krill/lib/select_keyboard_option.js +34 -0
  420. package/dist/krill/lib/select_keyboard_variant.d.ts +11 -0
  421. package/dist/krill/lib/select_keyboard_variant.js +35 -0
  422. package/dist/krill/lib/select_languages.d.ts +8 -0
  423. package/dist/krill/lib/select_languages.js +28 -0
  424. package/dist/krill/lib/select_regions.d.ts +8 -0
  425. package/dist/krill/lib/select_regions.js +24 -0
  426. package/dist/krill/lib/select_replaced_partition.d.ts +8 -0
  427. package/dist/krill/lib/select_replaced_partition.js +31 -0
  428. package/dist/krill/lib/select_user_swap_choice.d.ts +9 -0
  429. package/dist/krill/lib/select_user_swap_choice.js +35 -0
  430. package/dist/krill/lib/select_zones.d.ts +8 -0
  431. package/dist/krill/lib/select_zones.js +518 -0
  432. package/dist/lib/kill_me_softly.d.ts +11 -0
  433. package/dist/lib/kill_me_softly.js +61 -0
  434. package/dist/lib/utils.d.ts +42 -0
  435. package/dist/lib/utils.js +87 -0
  436. package/dist/penguins-eggs_10.1.1-0_amd64.deb +0 -0
  437. package/dist/penguins-eggs_10.1.1-0_amd64.deb.sha256 +1 -0
  438. package/package.json +25 -23
  439. package/scripts/_eggs +6 -12
  440. package/scripts/eggs.bash +1 -2
@@ -0,0 +1,17 @@
1
+ /**
2
+ * ./src/classes/pve-live.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 Systemctl from './systemctl.js';
9
+ export default class PveLive {
10
+ systemctl: Systemctl;
11
+ constructor();
12
+ create(root?: string): void;
13
+ disable(): void;
14
+ enable(): void;
15
+ start(): void;
16
+ stop(): void;
17
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * ./src/classes/pve-live.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
+ /**
9
+ * This will create a symbolic link from the system’s copy of the service file (usually in /lib/systemd/system or /etc/systemd/system)
10
+ * into the location on disk where systemd looks for autostart files (usually /etc/systemd/system/some_target.target.wants.
11
+ * We will go over what a target is later in this guide).
12
+ * To disable the service from starting automatically, you can type:
13
+ * sudo systemctl disable application.service
14
+ * This will remove the symbolic link that indicated that the service should be started automatically.
15
+ */
16
+ import path from 'node:path';
17
+ import shx from 'shelljs';
18
+ import Systemctl from './systemctl.js';
19
+ // _dirname
20
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
21
+ export default class PveLive {
22
+ systemctl = {};
23
+ constructor() {
24
+ this.systemctl = new Systemctl();
25
+ }
26
+ create(root = '/') {
27
+ // console.log("root:" + root)
28
+ shx.cp(path.resolve(__dirname, '../../scripts/pve-live.sh'), `${root}/usr/bin/`);
29
+ shx.exec(`chmod +x ${root}/usr/bin/pve-live.sh`);
30
+ // console.log(`pve-live: ${root}/usr/bin/pve-live.sh`)
31
+ shx.cp(path.resolve(__dirname, '../../scripts/pve-live.service'), `${root}/lib/systemd/system/`);
32
+ shx.exec(`chmod +x ${root}/lib/systemd/system/pve-live.service`);
33
+ // console.log(`pve-service: ${root}lib/systemd/system/pve-live.service`)
34
+ // enable service
35
+ const src = `${root}/usr/lib/systemd/system`;
36
+ const dest = `${root}/etc/systemd/system/multi-user.target.wants`;
37
+ shx.exec(`ln -s ${src}/pve-live.service ${dest}/pve-live.service`);
38
+ // Utils.pressKeyToExit("check it!",true)
39
+ }
40
+ disable() {
41
+ this.systemctl.disable('pve-live');
42
+ }
43
+ enable() {
44
+ this.systemctl.enable('pve-live');
45
+ }
46
+ start() {
47
+ this.systemctl.start('pve-live');
48
+ }
49
+ stop() {
50
+ this.systemctl.stop('pve-live');
51
+ }
52
+ }
@@ -0,0 +1,74 @@
1
+ /**
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
+ */
8
+ import { IDhcpOptions, ITftpOptions } from '../interfaces/i-pxe.js';
9
+ import Settings from './settings.js';
10
+ /**
11
+ * Pxe:
12
+ */
13
+ export default class Pxe {
14
+ bootLabel: string;
15
+ echo: {};
16
+ eggRoot: string;
17
+ initrdImg: string;
18
+ isos: string[];
19
+ nest: string;
20
+ pxeRoot: string;
21
+ settings: Settings;
22
+ verbose: boolean;
23
+ vmlinuz: string;
24
+ /**
25
+ * constructor
26
+ * @param nest
27
+ * @param pxeRoot
28
+ */
29
+ constructor(nest?: string, pxeRoot?: string);
30
+ /**
31
+ * build
32
+ */
33
+ build(): Promise<void>;
34
+ /**
35
+ *
36
+ * @param dhcpOptions
37
+ */
38
+ dhcpStart(dhcpOptions: IDhcpOptions): void;
39
+ /**
40
+ * fertilization()
41
+ *
42
+ * cuckoo's nest
43
+ */
44
+ fertilization(): Promise<void>;
45
+ /**
46
+ * start http server for images
47
+ *
48
+ */
49
+ httpStart(): Promise<void>;
50
+ /**
51
+ * start tftp
52
+ */
53
+ tftpStart(tftpOptions: ITftpOptions): Promise<void>;
54
+ /**
55
+ * Il resto PRIVATO
56
+ */
57
+ /**
58
+ * configure PXE bios
59
+ */
60
+ private bios;
61
+ /**
62
+ * configure PXE http server
63
+ */
64
+ private http;
65
+ /**
66
+ *
67
+ */
68
+ private ipxe;
69
+ /**
70
+ *
71
+ * @param cmd
72
+ */
73
+ private tryCatch;
74
+ }
@@ -0,0 +1,410 @@
1
+ /**
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
+ */
8
+ import fs from 'node:fs';
9
+ import http from 'node:http';
10
+ import path from 'node:path';
11
+ import { dhcpd } from 'node-proxy-dhcpd';
12
+ import nodeStatic from 'node-static';
13
+ // @ts-ignore
14
+ import tftp from 'tftp';
15
+ import { exec } from '../lib/utils.js';
16
+ import Distro from './distro.js';
17
+ import Settings from './settings.js';
18
+ import Utils from './utils.js';
19
+ // _dirname
20
+ const __dirname = path.dirname(new URL(import.meta.url).pathname);
21
+ /**
22
+ * Pxe:
23
+ */
24
+ export default class Pxe {
25
+ bootLabel = '';
26
+ echo = {};
27
+ eggRoot = '';
28
+ initrdImg = '';
29
+ isos = []; // cuckoo's eggs
30
+ nest = '';
31
+ pxeRoot = '';
32
+ settings = {};
33
+ verbose = false;
34
+ vmlinuz = '';
35
+ /**
36
+ * constructor
37
+ * @param nest
38
+ * @param pxeRoot
39
+ */
40
+ constructor(nest = '', pxeRoot = '') {
41
+ this.nest = nest;
42
+ this.pxeRoot = pxeRoot;
43
+ }
44
+ /**
45
+ * build
46
+ */
47
+ async build() {
48
+ if (fs.existsSync(this.pxeRoot)) {
49
+ await this.tryCatch(`rm ${this.pxeRoot} -rf`);
50
+ }
51
+ await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
52
+ await this.tryCatch(`mkdir ${this.pxeRoot} -p`);
53
+ await this.tryCatch(`ln -s ${this.eggRoot}live ${this.pxeRoot}/live`);
54
+ await this.tryCatch(`ln -s ${this.nest}.disk ${this.pxeRoot}/.disk`);
55
+ if (this.settings.distro.distroId === 'Manjaro') {
56
+ await this.tryCatch(`ln -s ${this.eggRoot}manjaro ${this.pxeRoot}/manjaro`);
57
+ }
58
+ else if (this.settings.distro.distroId === 'Arch' || this.settings.distro.distroId === 'RebornOS') {
59
+ await this.tryCatch(`ln -s ${this.eggRoot}arch ${this.pxeRoot}/arch`);
60
+ }
61
+ if (fs.existsSync(this.eggRoot)) {
62
+ await this.tryCatch(`cp ${this.eggRoot}live/${this.vmlinuz} ${this.pxeRoot}/vmlinuz`, true);
63
+ await this.tryCatch(`chmod 777 ${this.pxeRoot}/vmlinuz`);
64
+ await this.tryCatch(`cp ${this.eggRoot}live/${this.initrdImg} ${this.pxeRoot}/initrd`, true);
65
+ await this.tryCatch(`chmod 777 ${this.pxeRoot}/initrd`);
66
+ }
67
+ // link iso images in pxe
68
+ for (const iso of this.isos) {
69
+ await this.tryCatch(`ln -s ${this.nest}/${iso} ${this.pxeRoot}/${iso}`);
70
+ }
71
+ await this.bios();
72
+ await this.ipxe();
73
+ await this.http();
74
+ }
75
+ /**
76
+ *
77
+ * @param dhcpOptions
78
+ */
79
+ dhcpStart(dhcpOptions) {
80
+ new dhcpd(dhcpOptions);
81
+ }
82
+ /**
83
+ * fertilization()
84
+ *
85
+ * cuckoo's nest
86
+ */
87
+ async fertilization() {
88
+ this.settings = new Settings();
89
+ await this.settings.load();
90
+ if (Utils.isLive()) {
91
+ this.eggRoot = this.settings.distro.liveMediumPath;
92
+ if (
93
+ // ArchisoCompatibles
94
+ this.settings.distro.distroId === 'Arch' ||
95
+ this.settings.distro.distroId === 'ArcoLinux' ||
96
+ this.settings.distro.distroId === 'blendOS' ||
97
+ this.settings.distro.distroId === 'EndeavourOS' ||
98
+ this.settings.distro.distroId === 'Garuda' ||
99
+ this.settings.distro.distroId === 'phyOS' ||
100
+ this.settings.distro.distroId === 'RebornOS') {
101
+ this.eggRoot = '/run/archiso/bootmnt/';
102
+ await exec(`mkdir ${this.eggRoot} -p`);
103
+ await exec(`mount /dev/sr0 ${this.eggRoot}`);
104
+ }
105
+ }
106
+ else {
107
+ this.eggRoot = this.settings.config.snapshot_mnt + 'iso/';
108
+ }
109
+ if (!Utils.isLive() && !fs.existsSync(this.settings.config.snapshot_mnt)) {
110
+ console.log('no image available, build an image with: sudo eggs produce');
111
+ process.exit();
112
+ }
113
+ const settings = new Settings();
114
+ settings.load();
115
+ /**
116
+ * se pxeRoot non esiste viene creato
117
+ */
118
+ if (!fs.existsSync(this.pxeRoot)) {
119
+ await exec(`mkdir ${this.pxeRoot} -p`);
120
+ }
121
+ /**
122
+ * Ricerca delle ISOs
123
+ */
124
+ const isos = [];
125
+ /*
126
+ if (!Utils.isLive()) {
127
+ const isos = fs.readdirSync(this.nest)
128
+ for (const iso of isos) {
129
+ if (path.extname(iso) === '.iso') {
130
+ this.isos.push(iso)
131
+ }
132
+
133
+ this.isos = this.isos.sort()
134
+ }
135
+ }
136
+ */
137
+ /**
138
+ * installed: /home/eggs/.mnt/iso/live
139
+ * live: this.iso/live
140
+ */
141
+ const pathFiles = this.eggRoot + 'live';
142
+ const files = fs.readdirSync(pathFiles);
143
+ for (const file of files) {
144
+ if (this.settings.distro.familyId === 'debian') {
145
+ if (path.basename(file).slice(0, 7) === 'vmlinuz') {
146
+ this.vmlinuz = path.basename(file);
147
+ }
148
+ if (path.basename(file).slice(0, 6) === 'initrd') {
149
+ this.initrdImg = path.basename(file);
150
+ }
151
+ }
152
+ else if (this.settings.distro.familyId === 'archlinux') {
153
+ if (path.basename(file).slice(0, 7) === 'vmlinuz') {
154
+ this.vmlinuz = path.basename(file);
155
+ }
156
+ if (path.basename(file).slice(0, 9) === 'initramfs') {
157
+ this.initrdImg = path.basename(file);
158
+ }
159
+ }
160
+ }
161
+ /**
162
+ * bootLabel
163
+ */
164
+ this.bootLabel = 'not found';
165
+ if (fs.existsSync(this.eggRoot + '/.disk/mkisofs')) {
166
+ const a = fs.readFileSync(this.eggRoot + '/.disk/mkisofs', 'utf8');
167
+ const b = a.slice(Math.max(0, a.indexOf('-o ') + 3));
168
+ const c = b.slice(0, Math.max(0, b.indexOf(' ')));
169
+ this.bootLabel = c.slice(Math.max(0, c.lastIndexOf('/') + 1));
170
+ }
171
+ console.log(`bootLabel: ${this.bootLabel}`);
172
+ console.log(`vmlinuz: ${this.vmlinuz}`);
173
+ console.log(`initrd: ${this.initrdImg}`);
174
+ }
175
+ /**
176
+ * start http server for images
177
+ *
178
+ */
179
+ async httpStart() {
180
+ const port = 80;
181
+ const httpRoot = this.pxeRoot + '/';
182
+ console.log('http root: ' + httpRoot);
183
+ console.log('http listening: 0.0.0.0:' + port);
184
+ // const file = new nodeStatic.Server(httpRoot, { followSymlinks: true })
185
+ const file = new nodeStatic.Server(httpRoot);
186
+ http
187
+ .createServer((req, res) => {
188
+ file.serve(req, res);
189
+ })
190
+ .listen(port);
191
+ }
192
+ /**
193
+ * start tftp
194
+ */
195
+ async tftpStart(tftpOptions) {
196
+ const tftpServer = tftp.createServer(tftpOptions);
197
+ console.log('tftp listening: ' + tftpOptions.host + ':' + tftpOptions.port);
198
+ tftpServer.on('error', (error) => {
199
+ // Errors from the main socket
200
+ // The current transfers are not aborted
201
+ console.error(error);
202
+ });
203
+ tftpServer.on('request', (req, res) => {
204
+ req.on('error', (error) => {
205
+ // Error from the request
206
+ // The connection is already closed
207
+ console.error('[' + req.stats.remoteAddress + ':' + req.stats.remotePort + '] (' + req.file + ') ' + error.message);
208
+ });
209
+ });
210
+ tftpServer.listen();
211
+ }
212
+ /**
213
+ * Il resto PRIVATO
214
+ */
215
+ /**
216
+ * configure PXE bios
217
+ */
218
+ async bios() {
219
+ console.log('creating cuckoo configuration: BIOS');
220
+ await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/isolinux.theme.cfg ${this.pxeRoot}/isolinux.theme.cfg`);
221
+ await this.tryCatch(`cp ${__dirname}/../../addons/eggs/theme/livecd/splash.png ${this.pxeRoot}/splash.png`);
222
+ /**
223
+ * ipxe.efi
224
+ */
225
+ await this.tryCatch(`ln -s ${__dirname}/../../ipxe/ipxe.efi ${this.pxeRoot}/ipxe.efi`);
226
+ // pxe
227
+ const distro = new Distro();
228
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}pxelinux.0 ${this.pxeRoot}/pxelinux.0`);
229
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}lpxelinux.0 ${this.pxeRoot}/lpxelinux.0`);
230
+ // syslinux
231
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}ldlinux.c32 ${this.pxeRoot}/ldlinux.c32`);
232
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}vesamenu.c32 ${this.pxeRoot}/vesamenu.c32`);
233
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}libcom32.c32 ${this.pxeRoot}/libcom32.c32`);
234
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}libutil.c32 ${this.pxeRoot}/libutil.c32`);
235
+ await this.tryCatch(`ln -s ${distro.syslinuxPath}memdisk ${this.pxeRoot}/memdisk`);
236
+ await this.tryCatch(`mkdir ${this.pxeRoot}/pxelinux.cfg`);
237
+ let content = '';
238
+ content += '# eggs: pxelinux.cfg/default\n';
239
+ content += '# search path for the c32 support libraries (libcom32, libutil etc.)\n';
240
+ content += 'path\n';
241
+ content += 'include isolinux.theme.cfg\n';
242
+ content += 'UI vesamenu.c32\n';
243
+ content += '\n';
244
+ content += `menu title cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
245
+ content += 'PROMPT 0\n';
246
+ content += 'TIMEOUT 200\n';
247
+ content += '\n';
248
+ content += 'label egg\n';
249
+ content += `menu label ${this.bootLabel.replace('.iso', '')}\n`;
250
+ if (this.settings.distro.familyId === 'debian') {
251
+ /**
252
+ * DEBIAN
253
+ */
254
+ const clid = this.settings.distro.codenameLikeId;
255
+ if (clid === 'bionic' || clid === 'stretch' || clid === 'jessie') {
256
+ content += 'kernel vmlinuz\n';
257
+ content += `append initrd=initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
258
+ }
259
+ else {
260
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
261
+ content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt fetch=http://${Utils.address()}/live/filesystem.squashfs\n`;
262
+ }
263
+ }
264
+ else if (distro.familyId === 'archlinux') {
265
+ /**
266
+ * ARCH LINUX
267
+ */
268
+ let tool = 'archiso';
269
+ if (distro.distroId === 'Manjarolinux') {
270
+ tool = 'miso';
271
+ }
272
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
273
+ content += `append initrd=http://${Utils.address()}/initrd boot=live config noswap noprompt ${tool}_http_srv=http://${Utils.address()}/\n`;
274
+ content += 'sysappend 3\n';
275
+ content += '\n';
276
+ }
277
+ if (this.isos.length > 0) {
278
+ content += 'menu separator\n';
279
+ for (const iso of this.isos) {
280
+ content += '\n';
281
+ content += `label ${iso}\n`;
282
+ content += `menu label ${iso}\n`;
283
+ content += `kernel http://${Utils.address()}/memdisk\n`;
284
+ content += `initrd http://${Utils.address()}/${iso}\n`;
285
+ content += 'append iso raw sysappend 3\n';
286
+ }
287
+ }
288
+ const file = `${this.pxeRoot}/pxelinux.cfg/default`;
289
+ fs.writeFileSync(file, content);
290
+ }
291
+ /**
292
+ * configure PXE http server
293
+ */
294
+ async http() {
295
+ console.log('creating cuckoo configuration: html');
296
+ const file = `${this.pxeRoot}/index.html`;
297
+ let content = '';
298
+ content += "<html><title>Penguin's eggs PXE server</title>";
299
+ content += '<div style="background-image:url(\'/splash.png\');background-repeat:no-repeat;width: 640;height:480;padding:5px;border:1px solid black;">';
300
+ content += '<h1>Cuckoo PXE server</h1>';
301
+ content += `<body>address: <a href=http://${Utils.address()}>${Utils.address()}</a><br/>`;
302
+ if (Utils.isLive()) {
303
+ content += 'started from live iso image<br/>';
304
+ }
305
+ else {
306
+ content += 'Serving:<li>';
307
+ for (const iso of this.isos) {
308
+ content += `<ul><a href='http://${Utils.address()}/${iso}'>${iso}</a></ul>`;
309
+ }
310
+ content += '</li>';
311
+ }
312
+ content += "source: <a href='https://github.com/pieroproietti/penguins-eggs'>https://github.com/pieroproietti/penguins-eggs</a><br/>";
313
+ 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/>";
314
+ content += "discuss: <a href='https://t.me/penguins_eggs'>Telegram group<br/></body</html>";
315
+ fs.writeFileSync(file, content);
316
+ }
317
+ /**
318
+ *
319
+ */
320
+ async ipxe() {
321
+ console.log('creating cuckoo configuration: UEFI');
322
+ let content = '#!ipxe\n';
323
+ content += 'dhcp\n';
324
+ content += 'set net0/ip=dhcp\n';
325
+ content += `console --picture http://${Utils.address()}/splash.png -x 1024 -y 768\n`;
326
+ content += 'goto start ||\n';
327
+ content += '\n';
328
+ content += ':start\n';
329
+ content += `set server_root http://${Utils.address()}:80/\n`;
330
+ const serverRootVars = '${server_root}';
331
+ content += `menu cuckoo: when you need a flying PXE server! ${Utils.address()}\n`;
332
+ content += 'item --gap boot from ovarium\n';
333
+ content += `item egg-menu \${space} ${this.bootLabel.replaceAll('.iso', '')}\n\n`;
334
+ if (this.isos.length > 0) {
335
+ content += 'item --gap boot iso images\n';
336
+ for (const iso of this.isos) {
337
+ const menu = iso;
338
+ const label = menu;
339
+ content += `item ${menu} \${space} ${label}\n\n`;
340
+ }
341
+ }
342
+ content += 'item --gap boot from internet\n';
343
+ content += 'item netboot ${space} netboot\n';
344
+ content += 'choose target || goto start\n';
345
+ content += 'goto ${target}\n';
346
+ content += '\n';
347
+ content += ':egg-menu\n';
348
+ content += `kernel http://${Utils.address()}/vmlinuz\n`;
349
+ content += `initrd http://${Utils.address()}/initrd\n`;
350
+ /**
351
+ * CORRECT:
352
+ * content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`
353
+ */
354
+ if (this.settings.distro.familyId === 'debian') {
355
+ /**
356
+ * DEBIAN
357
+ */
358
+ content += `imgargs vmlinuz fetch=http://${Utils.address()}/live/filesystem.squashfs boot=live dhcp initrd=initrd ro\n`;
359
+ }
360
+ else if (this.settings.distro.familyId === 'archlinux') {
361
+ /**
362
+ * ARCH LINUX
363
+ */
364
+ let tool = 'archiso';
365
+ if (this.settings.distro.codenameId === 'Qonos' || this.settings.distro.codenameId === 'Ruah' || this.settings.distro.codenameId === 'Sikaris' || this.settings.distro.codenameId === 'UltimaThule') {
366
+ tool = 'miso';
367
+ }
368
+ content += `imgargs vmlinuz ${tool}_http_srv=http://${Utils.address()}/ boot=live dhcp initrd=initrd ro\n`;
369
+ // content += 'ipappend 3\n'
370
+ }
371
+ content += 'sleep 5\n';
372
+ content += 'boot || goto start\n\n';
373
+ if (this.isos.length > 0) {
374
+ for (const iso of this.isos) {
375
+ const menu = iso.replace('.iso', '');
376
+ content += `:${menu}\n`;
377
+ content += `sanboot ${serverRootVars}/${iso}\n`;
378
+ content += 'boot || goto start\n\n';
379
+ }
380
+ }
381
+ /**
382
+ * netboot.xyz
383
+ */
384
+ content += ':netboot\n';
385
+ content += 'ifopen net0\n';
386
+ content += 'set conn_type https\n';
387
+ content += 'chain --autofree https://boot.netboot.xyz/menu.ipxe || echo HTTPS failed... attempting HTTP...\n';
388
+ content += 'set conn_type http\n';
389
+ content += 'chain --autofree http://boot.netboot.xyz/menu.ipxe || echo HTTP failed, localbooting...\n';
390
+ content += 'goto start\n\n';
391
+ const file = `${this.pxeRoot}/autoexec.ipxe`;
392
+ fs.writeFileSync(file, content);
393
+ }
394
+ /**
395
+ *
396
+ * @param cmd
397
+ */
398
+ async tryCatch(cmd = '', echo = false) {
399
+ try {
400
+ if (echo) {
401
+ console.log(cmd);
402
+ }
403
+ await exec(cmd, this.echo);
404
+ }
405
+ catch (error) {
406
+ console.log(`Error: ${error}`);
407
+ await Utils.pressKeyToExit(cmd);
408
+ }
409
+ }
410
+ }
@@ -0,0 +1,52 @@
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
+ i686: boolean;
19
+ incubator: Incubator;
20
+ initrd_image: string;
21
+ initrdImg: string;
22
+ isLive: boolean;
23
+ iso_work: string;
24
+ isoFilename: string;
25
+ kernel_image: string;
26
+ remix: IRemix;
27
+ session_excludes: string;
28
+ vmlinuz: string;
29
+ work_dir: IWorkDir;
30
+ constructor(compression?: string);
31
+ /**
32
+ * Calculate and show free space on the disk
33
+ * @returns {void}
34
+ */
35
+ listFreeSpace(): Promise<void>;
36
+ /**
37
+ * Load configuration from config_file
38
+ * @returns {boolean} Success
39
+ */
40
+ load(): Promise<boolean>;
41
+ /**
42
+ *
43
+ * @param basename
44
+ * @param theme
45
+ */
46
+ loadRemix(theme?: string): Promise<void>;
47
+ /**
48
+ *
49
+ * @param config
50
+ */
51
+ save(config: IEggsConfig): Promise<void>;
52
+ }