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.
- package/.oclif.manifest.json +1 -0
- package/README.md +53 -31
- package/conf/distros/kinetic/README.md +41 -0
- package/conf/tools.yaml +1 -1
- package/{lib → dist}/classes/bleach.js +0 -0
- package/{lib → dist}/classes/compressors.js +0 -0
- package/{lib → dist}/classes/daddy.js +0 -0
- package/{lib → dist}/classes/distro.js +14 -30
- package/{lib → dist}/classes/family/archlinux.js +0 -0
- package/{lib → dist}/classes/family/debian.js +0 -0
- package/{lib → dist}/classes/family/fedora.js +0 -0
- package/{lib → dist}/classes/family/suse.js +0 -0
- package/{lib → dist}/classes/incubation/branding.js +0 -0
- package/{lib → dist}/classes/incubation/distros/bionic.js +0 -0
- package/{lib → dist}/classes/incubation/distros/buster.js +0 -0
- package/{lib → dist}/classes/incubation/distros/focal.js +0 -0
- package/{lib → dist}/classes/incubation/distros/jessie.js +0 -0
- package/{lib → dist}/classes/incubation/distros/rolling.js +0 -0
- package/{lib → dist}/classes/incubation/fisherman-helper/displaymanager.js +0 -0
- package/{lib → dist}/classes/incubation/fisherman-helper/packages.js +0 -0
- package/{lib → dist}/classes/incubation/fisherman.js +0 -0
- package/{lib → dist}/classes/incubation/incubator.js +9 -19
- package/{lib → dist}/classes/incubation/installer.js +0 -0
- package/{lib → dist}/classes/initrd.js +0 -0
- package/{lib → dist}/classes/keyboards.js +0 -0
- package/{lib → dist}/classes/locales.js +0 -0
- package/{lib → dist}/classes/n8.js +0 -0
- package/dist/classes/network.js +99 -0
- package/{lib → dist}/classes/ovary.js +0 -0
- package/{lib → dist}/classes/pacman.js +16 -1
- package/{lib → dist}/classes/pve-live.js +0 -0
- package/dist/classes/pxe.js +337 -0
- package/{lib → dist}/classes/settings.js +0 -0
- package/{lib → dist}/classes/sources_list.js +0 -0
- package/{lib → dist}/classes/systemctl.js +0 -0
- package/{lib → dist}/classes/tailor.js +0 -0
- package/{lib → dist}/classes/tools.js +0 -0
- package/{lib → dist}/classes/users.js +0 -0
- package/{lib → dist}/classes/utils.js +82 -17
- package/{lib → dist}/classes/xdg.js +27 -26
- package/{lib → dist}/classes/yolk.js +0 -0
- package/{lib → dist}/commands/adapt.js +0 -0
- package/{lib → dist}/commands/analyze.js +0 -0
- package/{lib → dist}/commands/calamares.js +0 -0
- package/{lib → dist}/commands/config.js +0 -0
- package/dist/commands/cuckoo.js +63 -0
- package/{lib → dist}/commands/dad.js +0 -0
- package/{lib → dist}/commands/export/deb.js +0 -0
- package/{lib → dist}/commands/export/docs.js +0 -0
- package/{lib → dist}/commands/export/iso.js +0 -0
- package/{lib → dist}/commands/install.js +26 -5
- package/{lib → dist}/commands/kill.js +0 -0
- package/{lib → dist}/commands/mom.js +0 -0
- package/{lib → dist}/commands/produce.js +0 -0
- package/{lib → dist}/commands/status.js +0 -0
- package/{lib → dist}/commands/syncfrom.js +0 -0
- package/{lib → dist}/commands/syncto.js +0 -0
- package/{lib → dist}/commands/tools/clean.js +0 -0
- package/dist/commands/tools/ppa.js +82 -0
- package/{lib → dist}/commands/tools/skel.js +0 -0
- package/{lib → dist}/commands/tools/stat.js +0 -0
- package/{lib → dist}/commands/tools/yolk.js +0 -0
- package/{lib → dist}/commands/update.js +0 -0
- package/{lib → dist}/commands/wardrobe/get.js +0 -0
- package/{lib → dist}/commands/wardrobe/ironing.js +0 -0
- package/{lib → dist}/commands/wardrobe/list.js +0 -0
- package/{lib → dist}/commands/wardrobe/show.js +0 -0
- package/{lib → dist}/commands/wardrobe/wear.js +0 -0
- package/{lib → dist}/components/elements/information.js +0 -0
- package/{lib → dist}/components/elements/steps.js +0 -0
- package/{lib → dist}/components/elements/title.js +0 -0
- package/{lib → dist}/components/finished.js +0 -0
- package/{lib → dist}/components/install.js +0 -0
- package/{lib → dist}/components/keyboard.js +0 -0
- package/{lib → dist}/components/location.js +0 -0
- package/{lib → dist}/components/network.js +0 -0
- package/{lib → dist}/components/partitions.js +0 -0
- package/{lib → dist}/components/summary.js +2 -2
- package/{lib → dist}/components/users.js +0 -0
- package/{lib → dist}/components/welcome.js +0 -0
- package/dist/dhcpd/dhcpd.js +222 -0
- package/dist/dhcpd/index.js +7 -0
- package/dist/dhcpd/packet/converters.js +377 -0
- package/dist/dhcpd/packet/options.js +2 -0
- package/dist/dhcpd/packet/types.js +2 -0
- package/dist/dhcpd/packet.js +251 -0
- package/dist/dhcpd/proxy.js +152 -0
- package/dist/dhcpd/server.js +152 -0
- package/dist/dhcpd/sprintf.js +170 -0
- package/dist/dhcpd/utils.js +190 -0
- package/{lib → dist}/index.js +0 -0
- package/{lib → dist}/interfaces/i-addons.js +0 -0
- package/{lib → dist}/interfaces/i-analyze.js +0 -0
- package/{lib → dist}/interfaces/i-app.js +0 -0
- package/{lib → dist}/interfaces/i-branding.js +0 -0
- package/{lib → dist}/interfaces/i-config-tools.js +0 -0
- package/{lib → dist}/interfaces/i-devices.js +0 -0
- package/{lib → dist}/interfaces/i-distro.js +0 -0
- package/{lib → dist}/interfaces/i-drive-list.js +0 -0
- package/{lib → dist}/interfaces/i-eggs-config.js +0 -0
- package/{lib → dist}/interfaces/i-exec.js +0 -0
- package/{lib → dist}/interfaces/i-initrd.js +0 -0
- package/{lib → dist}/interfaces/i-install.js +0 -0
- package/{lib → dist}/interfaces/i-installer.js +0 -0
- package/{lib → dist}/interfaces/i-krill-config.js +0 -0
- package/{lib → dist}/interfaces/i-krill.js +0 -0
- package/{lib → dist}/interfaces/i-materia.js +0 -0
- package/{lib → dist}/interfaces/i-net.js +0 -0
- package/{lib → dist}/interfaces/i-packages.js +0 -0
- package/{lib → dist}/interfaces/i-partitions.js +0 -0
- package/{lib/interfaces/i-remix.js → dist/interfaces/i-pxe-options.js} +0 -0
- package/{lib/interfaces/i-settings.js → dist/interfaces/i-remix.js} +0 -0
- package/{lib/interfaces/i-user.js → dist/interfaces/i-settings.js} +0 -0
- package/{lib/interfaces/i-workdir.js → dist/interfaces/i-user.js} +0 -0
- package/{lib/interfaces/i-xkb-model.js → dist/interfaces/i-workdir.js} +0 -0
- package/{lib/interfaces/index.js → dist/interfaces/i-xkb-model.js} +0 -0
- package/dist/interfaces/index.js +2 -0
- package/{lib → dist}/krill/krill-prepare.js +20 -4
- package/{lib → dist}/krill/krill-sequence.js +64 -62
- package/{lib → dist}/krill/modules/add-user.js +0 -0
- package/{lib → dist}/krill/modules/bootloader-config-ubuntu.js +0 -0
- package/{lib → dist}/krill/modules/bootloader-config.js +1 -1
- package/{lib → dist}/krill/modules/bootloader.js +0 -5
- package/{lib → dist}/krill/modules/change-password.js +0 -0
- package/{lib → dist}/krill/modules/del-live-user.js +0 -0
- package/{lib → dist}/krill/modules/fstab.js +0 -0
- package/{lib → dist}/krill/modules/grubcfg.js +0 -0
- package/{lib → dist}/krill/modules/hostname.js +2 -2
- package/{lib → dist}/krill/modules/initramfs-cfg.js +0 -0
- package/{lib → dist}/krill/modules/initramfs.js +0 -0
- package/{lib → dist}/krill/modules/locale-cfg.js +0 -0
- package/{lib → dist}/krill/modules/locale.js +1 -1
- package/{lib/krill/modules/set-keyboard.js → dist/krill/modules/m-keyboard.js} +7 -3
- package/{lib/krill/modules/set-timezone.js → dist/krill/modules/m-timezone.js} +2 -2
- package/{lib → dist}/krill/modules/machine-id.js +0 -0
- package/{lib → dist}/krill/modules/mkfs.js +0 -0
- package/{lib → dist}/krill/modules/mount-fs.js +0 -0
- package/{lib → dist}/krill/modules/mount-vfs.js +0 -0
- package/{lib → dist}/krill/modules/network-cfg.js +0 -0
- package/{lib → dist}/krill/modules/packages.js +0 -0
- package/{lib → dist}/krill/modules/partition.js +1 -1
- package/{lib → dist}/krill/modules/remove-installer-link.js +0 -0
- package/{lib → dist}/krill/modules/umount.js +0 -0
- package/{lib → dist}/krill/modules/unpackfs.js +0 -0
- package/{lib → dist}/lib/cli-autologin.js +0 -0
- package/{lib → dist}/lib/dependencies.js +1 -0
- package/{lib → dist}/lib/get_address.js +0 -0
- package/{lib → dist}/lib/get_dns.js +0 -0
- package/{lib → dist}/lib/get_domain.js +0 -0
- package/{lib → dist}/lib/get_gateway.js +0 -0
- package/{lib → dist}/lib/get_hostname.js +0 -0
- package/{lib → dist}/lib/get_netmask.js +0 -0
- package/{lib → dist}/lib/get_password.js +0 -0
- package/{lib → dist}/lib/get_root_password.js +0 -0
- package/{lib → dist}/lib/get_userfullname.js +0 -0
- package/{lib → dist}/lib/get_username.js +0 -0
- package/{lib → dist}/lib/select_address_type.js +0 -0
- package/{lib → dist}/lib/select_filesystem_type.js +0 -0
- package/{lib → dist}/lib/select_installation_device.js +0 -0
- package/{lib → dist}/lib/select_installation_mode.js +0 -0
- package/{lib → dist}/lib/select_interface.js +0 -0
- package/{lib → dist}/lib/select_keyboard_layout.js +0 -0
- package/{lib → dist}/lib/select_keyboard_model.js +0 -0
- package/{lib → dist}/lib/select_keyboard_option.js +0 -0
- package/{lib → dist}/lib/select_keyboard_variant.js +0 -0
- package/{lib → dist}/lib/select_languages.js +0 -0
- package/{lib → dist}/lib/select_regions.js +0 -0
- package/{lib → dist}/lib/select_user_swap_choice.js +0 -0
- package/{lib → dist}/lib/select_zones.js +0 -0
- package/{lib → dist}/lib/utils.js +1 -2
- package/ipxe/ipxe.efi +0 -0
- package/package.json +21 -18
- package/scripts/_eggs +11 -7
- package/scripts/eggs.bash +2 -2
- package/lib/classes/bleach.d.ts +0 -40
- package/lib/classes/compressors.d.ts +0 -24
- package/lib/classes/daddy.d.ts +0 -11
- package/lib/classes/distro.d.ts +0 -31
- package/lib/classes/family/archlinux.d.ts +0 -69
- package/lib/classes/family/debian.d.ts +0 -68
- package/lib/classes/family/fedora.d.ts +0 -63
- package/lib/classes/family/suse.d.ts +0 -63
- package/lib/classes/incubation/branding.d.ts +0 -8
- package/lib/classes/incubation/distros/bionic.d.ts +0 -29
- package/lib/classes/incubation/distros/buster.d.ts +0 -31
- package/lib/classes/incubation/distros/focal.d.ts +0 -29
- package/lib/classes/incubation/distros/jessie.d.ts +0 -32
- package/lib/classes/incubation/distros/rolling.d.ts +0 -31
- package/lib/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -7
- package/lib/classes/incubation/fisherman-helper/packages.d.ts +0 -19
- package/lib/classes/incubation/fisherman.d.ts +0 -77
- package/lib/classes/incubation/incubator.d.ts +0 -35
- package/lib/classes/incubation/installer.d.ts +0 -15
- package/lib/classes/initrd.d.ts +0 -42
- package/lib/classes/keyboards.d.ts +0 -43
- package/lib/classes/locales.d.ts +0 -14
- package/lib/classes/n8.d.ts +0 -16
- package/lib/classes/ovary.d.ts +0 -179
- package/lib/classes/pacman.d.ts +0 -164
- package/lib/classes/pve-live.d.ts +0 -42
- package/lib/classes/pxe.d.ts +0 -64
- package/lib/classes/pxe.js +0 -376
- package/lib/classes/settings.d.ts +0 -55
- package/lib/classes/sources_list.d.ts +0 -27
- package/lib/classes/systemctl.d.ts +0 -46
- package/lib/classes/tailor.d.ts +0 -43
- package/lib/classes/tools.d.ts +0 -29
- package/lib/classes/users.d.ts +0 -21
- package/lib/classes/utils.d.ts +0 -299
- package/lib/classes/xdg.d.ts +0 -44
- package/lib/classes/yolk.d.ts +0 -26
- package/lib/commands/adapt.d.ts +0 -9
- package/lib/commands/analyze.d.ts +0 -25
- package/lib/commands/calamares.d.ts +0 -26
- package/lib/commands/config.d.ts +0 -34
- package/lib/commands/cuckoo.d.ts +0 -24
- package/lib/commands/cuckoo.js +0 -70
- package/lib/commands/dad.d.ts +0 -17
- package/lib/commands/export/deb.d.ts +0 -14
- package/lib/commands/export/docs.d.ts +0 -8
- package/lib/commands/export/iso.d.ts +0 -13
- package/lib/commands/install.d.ts +0 -26
- package/lib/commands/kill.d.ts +0 -20
- package/lib/commands/mom.d.ts +0 -14
- package/lib/commands/produce.d.ts +0 -28
- package/lib/commands/status.d.ts +0 -18
- package/lib/commands/syncfrom.d.ts +0 -42
- package/lib/commands/syncto.d.ts +0 -67
- package/lib/commands/tools/clean.d.ts +0 -15
- package/lib/commands/tools/skel.d.ts +0 -17
- package/lib/commands/tools/stat.d.ts +0 -14
- package/lib/commands/tools/yolk.d.ts +0 -23
- package/lib/commands/update.d.ts +0 -46
- package/lib/commands/wardrobe/get.d.ts +0 -17
- package/lib/commands/wardrobe/ironing.d.ts +0 -18
- package/lib/commands/wardrobe/list.d.ts +0 -17
- package/lib/commands/wardrobe/show.d.ts +0 -19
- package/lib/commands/wardrobe/wear.d.ts +0 -21
- package/lib/components/elements/information.d.ts +0 -4
- package/lib/components/elements/steps.d.ts +0 -6
- package/lib/components/elements/title.d.ts +0 -4
- package/lib/components/finished.d.ts +0 -8
- package/lib/components/install.d.ts +0 -8
- package/lib/components/keyboard.d.ts +0 -12
- package/lib/components/location.d.ts +0 -12
- package/lib/components/network.d.ts +0 -12
- package/lib/components/partitions.d.ts +0 -9
- package/lib/components/summary.d.ts +0 -16
- package/lib/components/users.d.ts +0 -20
- package/lib/components/welcome.d.ts +0 -6
- package/lib/index.d.ts +0 -1
- package/lib/interfaces/i-addons.d.ts +0 -8
- package/lib/interfaces/i-analyze.d.ts +0 -13
- package/lib/interfaces/i-app.d.ts +0 -7
- package/lib/interfaces/i-branding.d.ts +0 -29
- package/lib/interfaces/i-config-tools.d.ts +0 -11
- package/lib/interfaces/i-devices.d.ts +0 -13
- package/lib/interfaces/i-distro.d.ts +0 -19
- package/lib/interfaces/i-drive-list.d.ts +0 -29
- package/lib/interfaces/i-eggs-config.d.ts +0 -24
- package/lib/interfaces/i-exec.d.ts +0 -4
- package/lib/interfaces/i-initrd.d.ts +0 -6
- package/lib/interfaces/i-install.d.ts +0 -9
- package/lib/interfaces/i-installer.d.ts +0 -20
- package/lib/interfaces/i-krill-config.d.ts +0 -26
- package/lib/interfaces/i-krill.d.ts +0 -35
- package/lib/interfaces/i-materia.d.ts +0 -36
- package/lib/interfaces/i-net.d.ts +0 -9
- package/lib/interfaces/i-packages.d.ts +0 -10
- package/lib/interfaces/i-partitions.d.ts +0 -9
- package/lib/interfaces/i-remix.d.ts +0 -14
- package/lib/interfaces/i-settings.d.ts +0 -10
- package/lib/interfaces/i-user.d.ts +0 -7
- package/lib/interfaces/i-workdir.d.ts +0 -8
- package/lib/interfaces/i-xkb-model.d.ts +0 -17
- package/lib/interfaces/index.d.ts +0 -17
- package/lib/krill/krill-prepare.d.ts +0 -60
- package/lib/krill/krill-sequence.d.ts +0 -150
- package/lib/krill/modules/add-user.d.ts +0 -15
- package/lib/krill/modules/bootloader-config-arch.d.ts +0 -9
- package/lib/krill/modules/bootloader-config-arch.js +0 -13
- package/lib/krill/modules/bootloader-config-ubuntu.d.ts +0 -9
- package/lib/krill/modules/bootloader-config.d.ts +0 -9
- package/lib/krill/modules/bootloader.d.ts +0 -10
- package/lib/krill/modules/change-password.d.ts +0 -10
- package/lib/krill/modules/del-live-user.d.ts +0 -9
- package/lib/krill/modules/fstab.d.ts +0 -14
- package/lib/krill/modules/grubcfg.d.ts +0 -17
- package/lib/krill/modules/hostname.d.ts +0 -13
- package/lib/krill/modules/initramfs-cfg.d.ts +0 -14
- package/lib/krill/modules/initramfs.d.ts +0 -13
- package/lib/krill/modules/locale-cfg.d.ts +0 -10
- package/lib/krill/modules/locale.d.ts +0 -13
- package/lib/krill/modules/machine-id.d.ts +0 -15
- package/lib/krill/modules/mkfs.d.ts +0 -13
- package/lib/krill/modules/mount-fs.d.ts +0 -17
- package/lib/krill/modules/mount-vfs.d.ts +0 -17
- package/lib/krill/modules/network-cfg.d.ts +0 -19
- package/lib/krill/modules/packages.d.ts +0 -14
- package/lib/krill/modules/partition.d.ts +0 -20
- package/lib/krill/modules/remove-installer-link.d.ts +0 -13
- package/lib/krill/modules/set-keyboard.d.ts +0 -10
- package/lib/krill/modules/set-timezone.d.ts +0 -14
- package/lib/krill/modules/umount.d.ts +0 -14
- package/lib/krill/modules/unpackfs.d.ts +0 -13
- package/lib/lib/cli-autologin.d.ts +0 -27
- package/lib/lib/dependencies.d.ts +0 -49
- package/lib/lib/get_address.d.ts +0 -1
- package/lib/lib/get_dns.d.ts +0 -1
- package/lib/lib/get_domain.d.ts +0 -1
- package/lib/lib/get_gateway.d.ts +0 -1
- package/lib/lib/get_hostname.d.ts +0 -1
- package/lib/lib/get_netmask.d.ts +0 -1
- package/lib/lib/get_password.d.ts +0 -1
- package/lib/lib/get_root_password.d.ts +0 -1
- package/lib/lib/get_userfullname.d.ts +0 -1
- package/lib/lib/get_username.d.ts +0 -1
- package/lib/lib/select_address_type.d.ts +0 -1
- package/lib/lib/select_filesystem_type.d.ts +0 -1
- package/lib/lib/select_installation_device.d.ts +0 -1
- package/lib/lib/select_installation_mode.d.ts +0 -1
- package/lib/lib/select_interface.d.ts +0 -1
- package/lib/lib/select_keyboard_layout.d.ts +0 -4
- package/lib/lib/select_keyboard_model.d.ts +0 -4
- package/lib/lib/select_keyboard_option.d.ts +0 -4
- package/lib/lib/select_keyboard_variant.d.ts +0 -4
- package/lib/lib/select_languages.d.ts +0 -1
- package/lib/lib/select_regions.d.ts +0 -1
- package/lib/lib/select_user_swap_choice.d.ts +0 -1
- package/lib/lib/select_zones.d.ts +0 -1
- 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: '
|
|
48
|
-
|
|
49
|
-
|
|
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: '
|
|
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
|
|
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
|
|
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;
|