penguins-eggs 9.2.6 → 9.3.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 (331) hide show
  1. package/.oclif.manifest.json +1 -0
  2. package/README.md +53 -31
  3. package/conf/distros/kinetic/README.md +41 -0
  4. package/conf/tools.yaml +1 -1
  5. package/{lib → dist}/classes/bleach.js +0 -0
  6. package/{lib → dist}/classes/compressors.js +0 -0
  7. package/{lib → dist}/classes/daddy.js +0 -0
  8. package/{lib → dist}/classes/distro.js +14 -30
  9. package/{lib → dist}/classes/family/archlinux.js +0 -0
  10. package/{lib → dist}/classes/family/debian.js +0 -0
  11. package/{lib → dist}/classes/family/fedora.js +0 -0
  12. package/{lib → dist}/classes/family/suse.js +0 -0
  13. package/{lib → dist}/classes/incubation/branding.js +0 -0
  14. package/{lib → dist}/classes/incubation/distros/bionic.js +0 -0
  15. package/{lib → dist}/classes/incubation/distros/buster.js +0 -0
  16. package/{lib → dist}/classes/incubation/distros/focal.js +0 -0
  17. package/{lib → dist}/classes/incubation/distros/jessie.js +0 -0
  18. package/{lib → dist}/classes/incubation/distros/rolling.js +0 -0
  19. package/{lib → dist}/classes/incubation/fisherman-helper/displaymanager.js +0 -0
  20. package/{lib → dist}/classes/incubation/fisherman-helper/packages.js +0 -0
  21. package/{lib → dist}/classes/incubation/fisherman.js +0 -0
  22. package/{lib → dist}/classes/incubation/incubator.js +9 -19
  23. package/{lib → dist}/classes/incubation/installer.js +0 -0
  24. package/{lib → dist}/classes/initrd.js +0 -0
  25. package/{lib → dist}/classes/keyboards.js +0 -0
  26. package/{lib → dist}/classes/locales.js +0 -0
  27. package/{lib → dist}/classes/n8.js +0 -0
  28. package/dist/classes/network.js +99 -0
  29. package/{lib → dist}/classes/ovary.js +0 -0
  30. package/{lib → dist}/classes/pacman.js +16 -1
  31. package/{lib → dist}/classes/pve-live.js +0 -0
  32. package/dist/classes/pxe.js +337 -0
  33. package/{lib → dist}/classes/settings.js +0 -0
  34. package/{lib → dist}/classes/sources_list.js +0 -0
  35. package/{lib → dist}/classes/systemctl.js +0 -0
  36. package/{lib → dist}/classes/tailor.js +0 -0
  37. package/{lib → dist}/classes/tools.js +0 -0
  38. package/{lib → dist}/classes/users.js +0 -0
  39. package/{lib → dist}/classes/utils.js +82 -17
  40. package/{lib → dist}/classes/xdg.js +27 -26
  41. package/{lib → dist}/classes/yolk.js +0 -0
  42. package/{lib → dist}/commands/adapt.js +0 -0
  43. package/{lib → dist}/commands/analyze.js +0 -0
  44. package/{lib → dist}/commands/calamares.js +0 -0
  45. package/{lib → dist}/commands/config.js +0 -0
  46. package/dist/commands/cuckoo.js +63 -0
  47. package/{lib → dist}/commands/dad.js +0 -0
  48. package/{lib → dist}/commands/export/deb.js +0 -0
  49. package/{lib → dist}/commands/export/docs.js +0 -0
  50. package/{lib → dist}/commands/export/iso.js +0 -0
  51. package/{lib → dist}/commands/install.js +26 -5
  52. package/{lib → dist}/commands/kill.js +0 -0
  53. package/{lib → dist}/commands/mom.js +0 -0
  54. package/{lib → dist}/commands/produce.js +0 -0
  55. package/{lib → dist}/commands/status.js +0 -0
  56. package/{lib → dist}/commands/syncfrom.js +0 -0
  57. package/{lib → dist}/commands/syncto.js +0 -0
  58. package/{lib → dist}/commands/tools/clean.js +0 -0
  59. package/dist/commands/tools/ppa.js +82 -0
  60. package/{lib → dist}/commands/tools/skel.js +0 -0
  61. package/{lib → dist}/commands/tools/stat.js +0 -0
  62. package/{lib → dist}/commands/tools/yolk.js +0 -0
  63. package/{lib → dist}/commands/update.js +0 -0
  64. package/{lib → dist}/commands/wardrobe/get.js +0 -0
  65. package/{lib → dist}/commands/wardrobe/ironing.js +0 -0
  66. package/{lib → dist}/commands/wardrobe/list.js +0 -0
  67. package/{lib → dist}/commands/wardrobe/show.js +0 -0
  68. package/{lib → dist}/commands/wardrobe/wear.js +0 -0
  69. package/{lib → dist}/components/elements/information.js +0 -0
  70. package/{lib → dist}/components/elements/steps.js +0 -0
  71. package/{lib → dist}/components/elements/title.js +0 -0
  72. package/{lib → dist}/components/finished.js +0 -0
  73. package/{lib → dist}/components/install.js +0 -0
  74. package/{lib → dist}/components/keyboard.js +0 -0
  75. package/{lib → dist}/components/location.js +0 -0
  76. package/{lib → dist}/components/network.js +0 -0
  77. package/{lib → dist}/components/partitions.js +0 -0
  78. package/{lib → dist}/components/summary.js +2 -2
  79. package/{lib → dist}/components/users.js +0 -0
  80. package/{lib → dist}/components/welcome.js +0 -0
  81. package/dist/dhcpd/dhcpd.js +222 -0
  82. package/dist/dhcpd/index.js +7 -0
  83. package/dist/dhcpd/packet/converters.js +377 -0
  84. package/dist/dhcpd/packet/options.js +2 -0
  85. package/dist/dhcpd/packet/types.js +2 -0
  86. package/dist/dhcpd/packet.js +251 -0
  87. package/dist/dhcpd/proxy.js +152 -0
  88. package/dist/dhcpd/server.js +152 -0
  89. package/dist/dhcpd/sprintf.js +170 -0
  90. package/dist/dhcpd/utils.js +190 -0
  91. package/{lib → dist}/index.js +0 -0
  92. package/{lib → dist}/interfaces/i-addons.js +0 -0
  93. package/{lib → dist}/interfaces/i-analyze.js +0 -0
  94. package/{lib → dist}/interfaces/i-app.js +0 -0
  95. package/{lib → dist}/interfaces/i-branding.js +0 -0
  96. package/{lib → dist}/interfaces/i-config-tools.js +0 -0
  97. package/{lib → dist}/interfaces/i-devices.js +0 -0
  98. package/{lib → dist}/interfaces/i-distro.js +0 -0
  99. package/{lib → dist}/interfaces/i-drive-list.js +0 -0
  100. package/{lib → dist}/interfaces/i-eggs-config.js +0 -0
  101. package/{lib → dist}/interfaces/i-exec.js +0 -0
  102. package/{lib → dist}/interfaces/i-initrd.js +0 -0
  103. package/{lib → dist}/interfaces/i-install.js +0 -0
  104. package/{lib → dist}/interfaces/i-installer.js +0 -0
  105. package/{lib → dist}/interfaces/i-krill-config.js +0 -0
  106. package/{lib → dist}/interfaces/i-krill.js +0 -0
  107. package/{lib → dist}/interfaces/i-materia.js +0 -0
  108. package/{lib → dist}/interfaces/i-net.js +0 -0
  109. package/{lib → dist}/interfaces/i-packages.js +0 -0
  110. package/{lib → dist}/interfaces/i-partitions.js +0 -0
  111. package/{lib/interfaces/i-remix.js → dist/interfaces/i-pxe-options.js} +0 -0
  112. package/{lib/interfaces/i-settings.js → dist/interfaces/i-remix.js} +0 -0
  113. package/{lib/interfaces/i-user.js → dist/interfaces/i-settings.js} +0 -0
  114. package/{lib/interfaces/i-workdir.js → dist/interfaces/i-user.js} +0 -0
  115. package/{lib/interfaces/i-xkb-model.js → dist/interfaces/i-workdir.js} +0 -0
  116. package/{lib/interfaces/index.js → dist/interfaces/i-xkb-model.js} +0 -0
  117. package/dist/interfaces/index.js +2 -0
  118. package/{lib → dist}/krill/krill-prepare.js +20 -4
  119. package/{lib → dist}/krill/krill-sequence.js +64 -62
  120. package/{lib → dist}/krill/modules/add-user.js +0 -0
  121. package/{lib → dist}/krill/modules/bootloader-config-ubuntu.js +0 -0
  122. package/{lib → dist}/krill/modules/bootloader-config.js +1 -1
  123. package/{lib → dist}/krill/modules/bootloader.js +0 -5
  124. package/{lib → dist}/krill/modules/change-password.js +0 -0
  125. package/{lib → dist}/krill/modules/del-live-user.js +0 -0
  126. package/{lib → dist}/krill/modules/fstab.js +0 -0
  127. package/{lib → dist}/krill/modules/grubcfg.js +0 -0
  128. package/{lib → dist}/krill/modules/hostname.js +2 -2
  129. package/{lib → dist}/krill/modules/initramfs-cfg.js +0 -0
  130. package/{lib → dist}/krill/modules/initramfs.js +0 -0
  131. package/{lib → dist}/krill/modules/locale-cfg.js +0 -0
  132. package/{lib → dist}/krill/modules/locale.js +1 -1
  133. package/{lib/krill/modules/set-keyboard.js → dist/krill/modules/m-keyboard.js} +7 -3
  134. package/{lib/krill/modules/set-timezone.js → dist/krill/modules/m-timezone.js} +2 -2
  135. package/{lib → dist}/krill/modules/machine-id.js +0 -0
  136. package/{lib → dist}/krill/modules/mkfs.js +0 -0
  137. package/{lib → dist}/krill/modules/mount-fs.js +0 -0
  138. package/{lib → dist}/krill/modules/mount-vfs.js +0 -0
  139. package/{lib → dist}/krill/modules/network-cfg.js +0 -0
  140. package/{lib → dist}/krill/modules/packages.js +0 -0
  141. package/{lib → dist}/krill/modules/partition.js +1 -1
  142. package/{lib → dist}/krill/modules/remove-installer-link.js +0 -0
  143. package/{lib → dist}/krill/modules/umount.js +0 -0
  144. package/{lib → dist}/krill/modules/unpackfs.js +0 -0
  145. package/{lib → dist}/lib/cli-autologin.js +0 -0
  146. package/{lib → dist}/lib/dependencies.js +1 -0
  147. package/{lib → dist}/lib/get_address.js +0 -0
  148. package/{lib → dist}/lib/get_dns.js +0 -0
  149. package/{lib → dist}/lib/get_domain.js +0 -0
  150. package/{lib → dist}/lib/get_gateway.js +0 -0
  151. package/{lib → dist}/lib/get_hostname.js +0 -0
  152. package/{lib → dist}/lib/get_netmask.js +0 -0
  153. package/{lib → dist}/lib/get_password.js +0 -0
  154. package/{lib → dist}/lib/get_root_password.js +0 -0
  155. package/{lib → dist}/lib/get_userfullname.js +0 -0
  156. package/{lib → dist}/lib/get_username.js +0 -0
  157. package/{lib → dist}/lib/select_address_type.js +0 -0
  158. package/{lib → dist}/lib/select_filesystem_type.js +0 -0
  159. package/{lib → dist}/lib/select_installation_device.js +0 -0
  160. package/{lib → dist}/lib/select_installation_mode.js +0 -0
  161. package/{lib → dist}/lib/select_interface.js +0 -0
  162. package/{lib → dist}/lib/select_keyboard_layout.js +0 -0
  163. package/{lib → dist}/lib/select_keyboard_model.js +0 -0
  164. package/{lib → dist}/lib/select_keyboard_option.js +0 -0
  165. package/{lib → dist}/lib/select_keyboard_variant.js +0 -0
  166. package/{lib → dist}/lib/select_languages.js +0 -0
  167. package/{lib → dist}/lib/select_regions.js +0 -0
  168. package/{lib → dist}/lib/select_user_swap_choice.js +0 -0
  169. package/{lib → dist}/lib/select_zones.js +0 -0
  170. package/{lib → dist}/lib/utils.js +1 -2
  171. package/ipxe/ipxe.efi +0 -0
  172. package/package.json +21 -18
  173. package/scripts/_eggs +11 -7
  174. package/scripts/eggs.bash +2 -2
  175. package/lib/classes/bleach.d.ts +0 -40
  176. package/lib/classes/compressors.d.ts +0 -24
  177. package/lib/classes/daddy.d.ts +0 -11
  178. package/lib/classes/distro.d.ts +0 -31
  179. package/lib/classes/family/archlinux.d.ts +0 -69
  180. package/lib/classes/family/debian.d.ts +0 -68
  181. package/lib/classes/family/fedora.d.ts +0 -63
  182. package/lib/classes/family/suse.d.ts +0 -63
  183. package/lib/classes/incubation/branding.d.ts +0 -8
  184. package/lib/classes/incubation/distros/bionic.d.ts +0 -29
  185. package/lib/classes/incubation/distros/buster.d.ts +0 -31
  186. package/lib/classes/incubation/distros/focal.d.ts +0 -29
  187. package/lib/classes/incubation/distros/jessie.d.ts +0 -32
  188. package/lib/classes/incubation/distros/rolling.d.ts +0 -31
  189. package/lib/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -7
  190. package/lib/classes/incubation/fisherman-helper/packages.d.ts +0 -19
  191. package/lib/classes/incubation/fisherman.d.ts +0 -77
  192. package/lib/classes/incubation/incubator.d.ts +0 -35
  193. package/lib/classes/incubation/installer.d.ts +0 -15
  194. package/lib/classes/initrd.d.ts +0 -42
  195. package/lib/classes/keyboards.d.ts +0 -43
  196. package/lib/classes/locales.d.ts +0 -14
  197. package/lib/classes/n8.d.ts +0 -16
  198. package/lib/classes/ovary.d.ts +0 -179
  199. package/lib/classes/pacman.d.ts +0 -164
  200. package/lib/classes/pve-live.d.ts +0 -42
  201. package/lib/classes/pxe.d.ts +0 -64
  202. package/lib/classes/pxe.js +0 -376
  203. package/lib/classes/settings.d.ts +0 -55
  204. package/lib/classes/sources_list.d.ts +0 -27
  205. package/lib/classes/systemctl.d.ts +0 -46
  206. package/lib/classes/tailor.d.ts +0 -43
  207. package/lib/classes/tools.d.ts +0 -29
  208. package/lib/classes/users.d.ts +0 -21
  209. package/lib/classes/utils.d.ts +0 -299
  210. package/lib/classes/xdg.d.ts +0 -44
  211. package/lib/classes/yolk.d.ts +0 -26
  212. package/lib/commands/adapt.d.ts +0 -9
  213. package/lib/commands/analyze.d.ts +0 -25
  214. package/lib/commands/calamares.d.ts +0 -26
  215. package/lib/commands/config.d.ts +0 -34
  216. package/lib/commands/cuckoo.d.ts +0 -24
  217. package/lib/commands/cuckoo.js +0 -70
  218. package/lib/commands/dad.d.ts +0 -17
  219. package/lib/commands/export/deb.d.ts +0 -14
  220. package/lib/commands/export/docs.d.ts +0 -8
  221. package/lib/commands/export/iso.d.ts +0 -13
  222. package/lib/commands/install.d.ts +0 -26
  223. package/lib/commands/kill.d.ts +0 -20
  224. package/lib/commands/mom.d.ts +0 -14
  225. package/lib/commands/produce.d.ts +0 -28
  226. package/lib/commands/status.d.ts +0 -18
  227. package/lib/commands/syncfrom.d.ts +0 -42
  228. package/lib/commands/syncto.d.ts +0 -67
  229. package/lib/commands/tools/clean.d.ts +0 -15
  230. package/lib/commands/tools/skel.d.ts +0 -17
  231. package/lib/commands/tools/stat.d.ts +0 -14
  232. package/lib/commands/tools/yolk.d.ts +0 -23
  233. package/lib/commands/update.d.ts +0 -46
  234. package/lib/commands/wardrobe/get.d.ts +0 -17
  235. package/lib/commands/wardrobe/ironing.d.ts +0 -18
  236. package/lib/commands/wardrobe/list.d.ts +0 -17
  237. package/lib/commands/wardrobe/show.d.ts +0 -19
  238. package/lib/commands/wardrobe/wear.d.ts +0 -21
  239. package/lib/components/elements/information.d.ts +0 -4
  240. package/lib/components/elements/steps.d.ts +0 -6
  241. package/lib/components/elements/title.d.ts +0 -4
  242. package/lib/components/finished.d.ts +0 -8
  243. package/lib/components/install.d.ts +0 -8
  244. package/lib/components/keyboard.d.ts +0 -12
  245. package/lib/components/location.d.ts +0 -12
  246. package/lib/components/network.d.ts +0 -12
  247. package/lib/components/partitions.d.ts +0 -9
  248. package/lib/components/summary.d.ts +0 -16
  249. package/lib/components/users.d.ts +0 -20
  250. package/lib/components/welcome.d.ts +0 -6
  251. package/lib/index.d.ts +0 -1
  252. package/lib/interfaces/i-addons.d.ts +0 -8
  253. package/lib/interfaces/i-analyze.d.ts +0 -13
  254. package/lib/interfaces/i-app.d.ts +0 -7
  255. package/lib/interfaces/i-branding.d.ts +0 -29
  256. package/lib/interfaces/i-config-tools.d.ts +0 -11
  257. package/lib/interfaces/i-devices.d.ts +0 -13
  258. package/lib/interfaces/i-distro.d.ts +0 -19
  259. package/lib/interfaces/i-drive-list.d.ts +0 -29
  260. package/lib/interfaces/i-eggs-config.d.ts +0 -24
  261. package/lib/interfaces/i-exec.d.ts +0 -4
  262. package/lib/interfaces/i-initrd.d.ts +0 -6
  263. package/lib/interfaces/i-install.d.ts +0 -9
  264. package/lib/interfaces/i-installer.d.ts +0 -20
  265. package/lib/interfaces/i-krill-config.d.ts +0 -26
  266. package/lib/interfaces/i-krill.d.ts +0 -35
  267. package/lib/interfaces/i-materia.d.ts +0 -36
  268. package/lib/interfaces/i-net.d.ts +0 -9
  269. package/lib/interfaces/i-packages.d.ts +0 -10
  270. package/lib/interfaces/i-partitions.d.ts +0 -9
  271. package/lib/interfaces/i-remix.d.ts +0 -14
  272. package/lib/interfaces/i-settings.d.ts +0 -10
  273. package/lib/interfaces/i-user.d.ts +0 -7
  274. package/lib/interfaces/i-workdir.d.ts +0 -8
  275. package/lib/interfaces/i-xkb-model.d.ts +0 -17
  276. package/lib/interfaces/index.d.ts +0 -17
  277. package/lib/krill/krill-prepare.d.ts +0 -60
  278. package/lib/krill/krill-sequence.d.ts +0 -150
  279. package/lib/krill/modules/add-user.d.ts +0 -15
  280. package/lib/krill/modules/bootloader-config-arch.d.ts +0 -9
  281. package/lib/krill/modules/bootloader-config-arch.js +0 -13
  282. package/lib/krill/modules/bootloader-config-ubuntu.d.ts +0 -9
  283. package/lib/krill/modules/bootloader-config.d.ts +0 -9
  284. package/lib/krill/modules/bootloader.d.ts +0 -10
  285. package/lib/krill/modules/change-password.d.ts +0 -10
  286. package/lib/krill/modules/del-live-user.d.ts +0 -9
  287. package/lib/krill/modules/fstab.d.ts +0 -14
  288. package/lib/krill/modules/grubcfg.d.ts +0 -17
  289. package/lib/krill/modules/hostname.d.ts +0 -13
  290. package/lib/krill/modules/initramfs-cfg.d.ts +0 -14
  291. package/lib/krill/modules/initramfs.d.ts +0 -13
  292. package/lib/krill/modules/locale-cfg.d.ts +0 -10
  293. package/lib/krill/modules/locale.d.ts +0 -13
  294. package/lib/krill/modules/machine-id.d.ts +0 -15
  295. package/lib/krill/modules/mkfs.d.ts +0 -13
  296. package/lib/krill/modules/mount-fs.d.ts +0 -17
  297. package/lib/krill/modules/mount-vfs.d.ts +0 -17
  298. package/lib/krill/modules/network-cfg.d.ts +0 -19
  299. package/lib/krill/modules/packages.d.ts +0 -14
  300. package/lib/krill/modules/partition.d.ts +0 -20
  301. package/lib/krill/modules/remove-installer-link.d.ts +0 -13
  302. package/lib/krill/modules/set-keyboard.d.ts +0 -10
  303. package/lib/krill/modules/set-timezone.d.ts +0 -14
  304. package/lib/krill/modules/umount.d.ts +0 -14
  305. package/lib/krill/modules/unpackfs.d.ts +0 -13
  306. package/lib/lib/cli-autologin.d.ts +0 -27
  307. package/lib/lib/dependencies.d.ts +0 -49
  308. package/lib/lib/get_address.d.ts +0 -1
  309. package/lib/lib/get_dns.d.ts +0 -1
  310. package/lib/lib/get_domain.d.ts +0 -1
  311. package/lib/lib/get_gateway.d.ts +0 -1
  312. package/lib/lib/get_hostname.d.ts +0 -1
  313. package/lib/lib/get_netmask.d.ts +0 -1
  314. package/lib/lib/get_password.d.ts +0 -1
  315. package/lib/lib/get_root_password.d.ts +0 -1
  316. package/lib/lib/get_userfullname.d.ts +0 -1
  317. package/lib/lib/get_username.d.ts +0 -1
  318. package/lib/lib/select_address_type.d.ts +0 -1
  319. package/lib/lib/select_filesystem_type.d.ts +0 -1
  320. package/lib/lib/select_installation_device.d.ts +0 -1
  321. package/lib/lib/select_installation_mode.d.ts +0 -1
  322. package/lib/lib/select_interface.d.ts +0 -1
  323. package/lib/lib/select_keyboard_layout.d.ts +0 -4
  324. package/lib/lib/select_keyboard_model.d.ts +0 -4
  325. package/lib/lib/select_keyboard_option.d.ts +0 -4
  326. package/lib/lib/select_keyboard_variant.d.ts +0 -4
  327. package/lib/lib/select_languages.d.ts +0 -1
  328. package/lib/lib/select_regions.d.ts +0 -1
  329. package/lib/lib/select_user_swap_choice.d.ts +0 -1
  330. package/lib/lib/select_zones.d.ts +0 -1
  331. package/lib/lib/utils.d.ts +0 -43
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * cuckoo: proxy
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const tslib_1 = require("tslib");
7
+ const core_1 = require("@oclif/core");
8
+ const network_1 = tslib_1.__importDefault(require("../classes/network"));
9
+ const utils_1 = tslib_1.__importDefault(require("../classes/utils"));
10
+ const pxe_1 = tslib_1.__importDefault(require("../classes/pxe"));
11
+ const tftp = require('tftp');
12
+ class Cuckoo extends core_1.Command {
13
+ async run(nest = '/home/eggs') {
14
+ const { args, flags } = await this.parse(Cuckoo);
15
+ utils_1.default.titles(this.id + ' ' + this.argv);
16
+ if (utils_1.default.isRoot()) {
17
+ const pxeRoot = nest + '/pxe';
18
+ const pxe = new pxe_1.default();
19
+ await pxe.fertilization();
20
+ await pxe.build();
21
+ const n = new network_1.default();
22
+ /**
23
+ * service proxy-dhcp
24
+ */
25
+ let dhcpOptions = {
26
+ subnet: n.cidr,
27
+ host: n.address,
28
+ tftpserver: n.address,
29
+ bios_filename: 'lpxelinux.0',
30
+ efi32_filename: 'ipxe32.efi',
31
+ efi64_filename: 'ipxe.efi'
32
+ };
33
+ pxe.dhcpStart(dhcpOptions);
34
+ /**
35
+ * service tftp
36
+ */
37
+ let tftpOptions = {
38
+ "host": n.address,
39
+ "port": 69,
40
+ "root": pxeRoot,
41
+ "denyPUT": true
42
+ };
43
+ await pxe.tftpStart(tftpOptions);
44
+ /**
45
+ * service http
46
+ */
47
+ await pxe.httpStart();
48
+ }
49
+ else {
50
+ utils_1.default.useRoot(this.id);
51
+ }
52
+ }
53
+ }
54
+ exports.default = Cuckoo;
55
+ Cuckoo.description = 'PXE start with proxy-dhcp';
56
+ Cuckoo.examples = [
57
+ `$ sudo eggs cuckoo
58
+ start a PXE server with dhcp-proxy (can coexists with a real dhcp server)
59
+ `,
60
+ ];
61
+ Cuckoo.flags = {
62
+ help: core_1.Flags.help({ char: 'h' }),
63
+ };
File without changes
File without changes
File without changes
File without changes
@@ -21,7 +21,17 @@ class Install extends core_1.Command {
21
21
  utils_1.default.titles(this.id + ' ' + this.argv);
22
22
  const { flags } = await this.parse(Install);
23
23
  let unattended = flags.unattended;
24
+ // hostname
24
25
  let ip = flags.ip;
26
+ let random = flags.random;
27
+ let domain = '.local';
28
+ if (flags.domain) {
29
+ domain = flags.domain;
30
+ }
31
+ // swap
32
+ let suspend = flags.suspend;
33
+ let small = flags.small;
34
+ let none = flags.none;
25
35
  let crypted = flags.crypted;
26
36
  let pve = flags.pve;
27
37
  if (pve) {
@@ -31,7 +41,7 @@ class Install extends core_1.Command {
31
41
  if (utils_1.default.isRoot()) {
32
42
  if (utils_1.default.isLive()) {
33
43
  const krill = new krill_prepare_1.default();
34
- await krill.prepare(unattended, ip, crypted, pve, verbose);
44
+ await krill.prepare(unattended, ip, random, domain, suspend, small, none, crypted, pve, verbose);
35
45
  }
36
46
  else {
37
47
  utils_1.default.warning('You are in an installed system!');
@@ -44,12 +54,23 @@ class Install extends core_1.Command {
44
54
  }
45
55
  exports.default = Install;
46
56
  Install.flags = {
47
- unattended: core_1.Flags.boolean({ char: 'u', description: 'unattended CLI installation' }),
48
- ip: core_1.Flags.boolean({ char: 'i', description: 'add ip to hostname' }),
49
- crypted: core_1.Flags.boolean({ char: 'k', description: 'crypted CLI installation' }),
57
+ unattended: core_1.Flags.boolean({ char: 'u', description: 'Unattended installation' }),
58
+ // hostname
59
+ ip: core_1.Flags.boolean({ char: 'i', description: 'hostname as ip, eg: ip-192-168-1-33' }),
60
+ random: core_1.Flags.boolean({ char: 'r', description: 'Add random to hostname, eg: colibri-ay412dt' }),
61
+ // append: Flags.string({char: 'a', description: 'append to hostname: ip, random'}),
62
+ domain: core_1.Flags.string({ char: 'd', description: 'Domain name, defult: .local' }),
63
+ // swap
64
+ // swap: Flags.string({char: 's', description: 'swap: none, small, suspend'}),
65
+ suspend: core_1.Flags.boolean({ char: 'S', description: 'Swap suspend: RAM x 2' }),
66
+ small: core_1.Flags.boolean({ char: 's', description: 'Swap small: RAM' }),
67
+ none: core_1.Flags.boolean({ char: 'n', description: 'Swap none: 256M' }),
68
+ //
69
+ crypted: core_1.Flags.boolean({ char: 'k', description: 'Crypted CLI installation' }),
50
70
  pve: core_1.Flags.boolean({ char: 'p', description: 'Proxmox VE install' }),
71
+ // generic
51
72
  help: core_1.Flags.help({ char: 'h' }),
52
- verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' })
73
+ verbose: core_1.Flags.boolean({ char: 'v', description: 'Verbose' })
53
74
  };
54
75
  Install.description = 'command-line system installer - the egg became a penguin!';
55
76
  Install.examples = ['$ eggs install\nInstall the system using krill installer\n'];
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /**
5
+ * penguins-eggs-v7 based on Debian live
6
+ * author: Piero Proietti
7
+ * email: piero.proietti@gmail.com
8
+ * license: MIT
9
+ */
10
+ const core_1 = require("@oclif/core");
11
+ const distro_1 = tslib_1.__importDefault(require("../../classes/distro"));
12
+ const utils_1 = tslib_1.__importDefault(require("../../classes/utils"));
13
+ const utils_2 = require("../../lib/utils");
14
+ const fs_1 = tslib_1.__importDefault(require("fs"));
15
+ const fkey = `/etc/apt/trusted.gpg.d/penguins-eggs-key.gpg`;
16
+ const flist = '/etc/apt/sources.list.d/penguins-eggs-ppa.list';
17
+ /**
18
+ *
19
+ */
20
+ class Ppa extends core_1.Command {
21
+ async run() {
22
+ const { flags } = await this.parse(Ppa);
23
+ utils_1.default.titles(this.id + ' ' + this.argv);
24
+ let verbose = false;
25
+ if (flags.verbose) {
26
+ verbose = true;
27
+ }
28
+ const distro = new distro_1.default();
29
+ if (distro.familyId === 'debian') {
30
+ if (utils_1.default.isRoot()) {
31
+ if (flags.remove) {
32
+ utils_1.default.warning(`Are you sure to remove ${flist} to your repositories?`);
33
+ if (await utils_1.default.customConfirm('Select yes to continue...')) {
34
+ await remove();
35
+ }
36
+ }
37
+ if (flags.add) {
38
+ utils_1.default.warning(`Are you sure to add ${flist} to your repositories?`);
39
+ if (await utils_1.default.customConfirm('Select yes to continue...')) {
40
+ await clean();
41
+ await add();
42
+ }
43
+ }
44
+ }
45
+ }
46
+ else {
47
+ utils_1.default.warning('you can use ppa only for debian family');
48
+ }
49
+ }
50
+ }
51
+ exports.default = Ppa;
52
+ Ppa.description = 'add/remove PPA repositories (Debian family)';
53
+ Ppa.flags = {
54
+ help: core_1.Flags.help({ char: 'h' }),
55
+ add: core_1.Flags.boolean({ char: 'a', description: 'add penguins-eggs PPA repository' }),
56
+ remove: core_1.Flags.boolean({ char: 'r', description: 'remove penguins-eggs PPA repository' }),
57
+ verbose: core_1.Flags.boolean({ char: 'v', description: 'verbose' })
58
+ };
59
+ /**
60
+ * add ppa
61
+ */
62
+ async function add() {
63
+ await (0, utils_2.exec)(`curl -sS https://pieroproietti.github.io/penguins-eggs-ppa/KEY.gpg| gpg --dearmor | sudo tee ${fkey} > /dev/null`);
64
+ const content = `deb [signed-by=${fkey}] https://pieroproietti.github.io/penguins-eggs-ppa ./\n`;
65
+ fs_1.default.writeFileSync(flist, content);
66
+ await (0, utils_2.exec)(`apt-get update`);
67
+ }
68
+ /**
69
+ * remove ppa
70
+ */
71
+ async function remove() {
72
+ await clean();
73
+ await (0, utils_2.exec)(`apt-get update`);
74
+ }
75
+ /**
76
+ *
77
+ */
78
+ async function clean() {
79
+ await (0, utils_2.exec)(`rm -f /etc/apt/trusted.gpg.d/penguins-eggs*`);
80
+ await (0, utils_2.exec)(`rm -f /etc/apt/sources.list.d/penguins-eggs*`);
81
+ await (0, utils_2.exec)(`rm -f /usr/share/keyrings/penguins-eggs*`);
82
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -38,13 +38,13 @@ function Summary({ name, password, rootPassword, hostname, region, zone, languag
38
38
  react_1.default.createElement(ink_1.Text, null, "Installing "),
39
39
  react_1.default.createElement(ink_1.Text, { color: "green" }, productName)),
40
40
  react_1.default.createElement(ink_1.Box, null,
41
- react_1.default.createElement(ink_1.Text, null, "User "),
41
+ react_1.default.createElement(ink_1.Text, null),
42
42
  react_1.default.createElement(ink_1.Text, { color: "green" }, name),
43
43
  react_1.default.createElement(ink_1.Text, null, "/"),
44
44
  react_1.default.createElement(ink_1.Text, { color: "green" },
45
45
  password,
46
46
  " "),
47
- react_1.default.createElement(ink_1.Text, null, "root pwd "),
47
+ react_1.default.createElement(ink_1.Text, null, "pwd root "),
48
48
  react_1.default.createElement(ink_1.Text, { color: "green" },
49
49
  rootPassword,
50
50
  " "),
File without changes
File without changes
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var dhcp_server = require('./server');
3
+ var dhcp_proxy = require('./proxy');
4
+ var netmask = require('netmask').Netmask;
5
+ var ee = require('events').EventEmitter;
6
+ var util = require('util');
7
+ const { file } = require('@oclif/core/lib/parser');
8
+ const { createNoSubstitutionTemplateLiteral } = require('typescript');
9
+ const { json } = require('stream/consumers');
10
+ const BOOTREQUEST = 1, DHCP_MESSAGE_TYPE = 0x35, DHCP_SERVER_ID = 0x36, DHCP_DISCOVER = 1, DHCP_INFORM = 8, DHCP_MINTYPE = DHCP_DISCOVER, DHCP_MAXTYPE = DHCP_INFORM, DHCP_REQUESTED_IP = 0x32, DHCP_HOST_NAME = 0x0c;
11
+ /**
12
+ *
13
+ * @param opts
14
+ * @returns
15
+ */
16
+ class dhcpd {
17
+ /**
18
+ *
19
+ * @param opts
20
+ * @returns
21
+ */
22
+ constructor(opts) {
23
+ let self = this;
24
+ if (!(self instanceof dhcpd)) {
25
+ return new dhcpd(opts);
26
+ }
27
+ ee.call(self);
28
+ if (opts.subnet) {
29
+ var block = new netmask(opts.subnet);
30
+ if (block) {
31
+ self.network = block.base;
32
+ self.netmask = block.mask;
33
+ self.broadcast = block.broadcast;
34
+ self.host = opts.host;
35
+ self.tftpserver = opts.tftpserver;
36
+ self.bios_filename = opts.bios_filename;
37
+ self.efi32_filename = opts.efi32_filename;
38
+ self.efi64_filename = opts.efi64_filename;
39
+ }
40
+ else {
41
+ throw new Error("Unable to read subnet details from '" + opts.subnet + "'");
42
+ }
43
+ }
44
+ // Listen on port 67 for all the DHCP messages from clients
45
+ self.s = new dhcp_server('udp4', { broadcast: self.broadcast });
46
+ self.s.on('listening', function () {
47
+ var address = self.s.address();
48
+ console.log('server listening: ' + address.address + ':' + address.port);
49
+ });
50
+ self.s.on('discover', self.discover.bind(self));
51
+ self.s.on('request', self.request.bind(self));
52
+ self.s.on('inform', self.inform.bind(self));
53
+ self.s.bind(67, '0.0.0.0');
54
+ // Listen on port 4011 for clients asking for proxy DHCP
55
+ self.p = new dhcp_proxy('udp4', { broadcast: self.broadcast });
56
+ self.p.on('listening', function () {
57
+ var address = self.p.address();
58
+ console.log('proxy listening: ' + address.address + ':' + address.port);
59
+ });
60
+ self.p.on('request', self.proxy_request.bind(self));
61
+ self.p.bind(4011, '0.0.0.0');
62
+ return self;
63
+ }
64
+ /**
65
+ *
66
+ * @param {*} pkt
67
+ * @returns
68
+ */
69
+ pre_init(pkt) {
70
+ var self = this;
71
+ // Ignore malformed packets
72
+ if (pkt.hlen != 6)
73
+ return;
74
+ // Ignore if not a BOOTREQUEST
75
+ if (pkt.op != BOOTREQUEST)
76
+ return;
77
+ // Ignore if unknown message type
78
+ var state = _get_option(pkt, DHCP_MESSAGE_TYPE);
79
+ if (state == undefined || state['0'] < DHCP_MINTYPE || state['0'] > DHCP_MAXTYPE)
80
+ return;
81
+ // Ignore if DHCP message is not for us
82
+ var server_id_opt = _get_option(pkt, DHCP_SERVER_ID);
83
+ if (server_id_opt !== undefined && server_id_opt != self.host)
84
+ return;
85
+ }
86
+ /**
87
+ *
88
+ * @param {*} pkt
89
+ * @returns
90
+ */
91
+ discover(pkt) {
92
+ var self = this;
93
+ console.log("Received DHCP DISCOVER");
94
+ if (pkt.options['60'] !== undefined && pkt.options['60'].indexOf('PXEClient') === 0) {
95
+ // Check if we are really being asked for PXE boot information
96
+ // Signal the client that we are a proxy dhcp by sending an OFFER
97
+ var offer = {};
98
+ offer.siaddr = self.host;
99
+ offer.options = {};
100
+ offer.options['60'] = 'PXEClient';
101
+ offer.options['54'] = self.host;
102
+ offer.options['255'] = null;
103
+ self.pre_init(pkt);
104
+ return self.s.offer(pkt, offer);
105
+ }
106
+ else if (pkt.options['60'] !== undefined && pkt.options['60'].indexOf('AAPLBSDPC/i386') === 0) {
107
+ console.log('Mac OS X discovery, ignoring');
108
+ return;
109
+ }
110
+ else {
111
+ console.log('Ignoring discovery as it does not seam to be a boot request');
112
+ return;
113
+ }
114
+ }
115
+ /**
116
+ *
117
+ * @param {*} pkt
118
+ * @returns
119
+ */
120
+ request(pkt) {
121
+ var self = this;
122
+ console.log('Ignoring received REQUEST from ' + pkt.chaddr + ' as we are only a proxy');
123
+ return;
124
+ var offer = {};
125
+ offer.siaddr = self.host;
126
+ offer.options = {};
127
+ offer.options['54'] = self.host;
128
+ offer.options['255'] = null;
129
+ self.pre_init(pkt);
130
+ return self.s.ack(pkt, offer);
131
+ }
132
+ /**
133
+ *
134
+ * @param {*} pkt
135
+ * @returns
136
+ */
137
+ inform(pkt) {
138
+ var self = this;
139
+ if (pkt.options['60'] !== undefined && pkt.options['60'].indexOf('AAPLBSDPC/i386') === 0) {
140
+ var offer = {};
141
+ offer.siaddr = self.tftpserver;
142
+ offer.ciaddr = pkt.remote.address;
143
+ offer.options = {};
144
+ offer.options['54'] = self.host;
145
+ offer.options['60'] = 'AAPLBSDPC';
146
+ offer.options['255'] = null;
147
+ if (pkt.options['43'] !== undefined && pkt.options['43'].indexOf('01:01:01') === 0) {
148
+ // Mac OS X client: BSDP list
149
+ offer.options['43'] = '01:01:01:04:02:80:00:07:04:81:00:05:2a:08:04:81:00:05:2a:09:0d:81:00:05:2a:08:69:50:58:45:2d:46:4f:47';
150
+ }
151
+ else if (pkt.options['43'] !== undefined && pkt.options['43'].indexOf('01:01:02') === 0) {
152
+ // Mac OS X client: BSDP select
153
+ offer.options['43'] = '01:01:02:08:04:81:00:05:2a:82:0a:4e:65:74:42:6f:6f:74:30:30:31';
154
+ pkt.fname = self.efi64_filename;
155
+ pkt.sname = '141.62.66.114';
156
+ }
157
+ else {
158
+ console.log('Unknown BSDP request, not answering');
159
+ return;
160
+ }
161
+ return self.p.ack(pkt, offer);
162
+ }
163
+ else {
164
+ console.log('INFORM not by a Mac OS client, maybe Windows, ignoring');
165
+ return;
166
+ }
167
+ }
168
+ /**
169
+ *
170
+ * @param {*} pkt
171
+ * @returns
172
+ */
173
+ proxy_request(pkt) {
174
+ var self = this;
175
+ console.log("Received Proxy DHCP REQUEST");
176
+ var offer = {};
177
+ offer.siaddr = self.tftpserver;
178
+ offer.options = {};
179
+ offer.options['54'] = self.host;
180
+ offer.options['255'] = null;
181
+ if (pkt.options['60'] !== undefined) {
182
+ var arch = pkt.options['60'];
183
+ if (arch.indexOf('00009') === 15 || arch.indexOf('00007') === 15) {
184
+ // var next = '192.168.1.17'
185
+ var fname = self.efi64_filename;
186
+ if (pkt.options["77"] === "iPXE") {
187
+ fname = `autoexec.ipxe`;
188
+ }
189
+ pkt.fname = fname;
190
+ // pkt.fname = self.efi_filename // vecchio
191
+ /*
192
+ console.log('====================================')
193
+ console.log('pkt: ' + JSON.stringify(pkt, '', 3))
194
+ console.log('====================================')
195
+ console.log('offer: ' + JSON.stringify(offer, '', 3))
196
+ console.log('====================================')
197
+ */
198
+ }
199
+ else if (arch.indexOf('00006') === 15) {
200
+ pkt.fname = self.efi32_filename;
201
+ }
202
+ else {
203
+ pkt.fname = self.bios_filename;
204
+ }
205
+ }
206
+ return self.p.ack(pkt, offer);
207
+ }
208
+ }
209
+ /**
210
+ *
211
+ */
212
+ util.inherits(dhcpd, ee);
213
+ /**
214
+ *
215
+ * @param {*} pkt
216
+ * @param {*} opt
217
+ * @returns
218
+ */
219
+ function _get_option(pkt, opt) {
220
+ return (opt in pkt.options) ? pkt.options[opt] : undefined;
221
+ }
222
+ module.exports = dhcpd;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ // Generated by CoffeeScript 1.3.3
3
+ module.exports = {
4
+ Packet: require('./packet'),
5
+ MessageTypes: require('./packet/types'),
6
+ Options: require('./packet/options')
7
+ };