penguins-eggs 10.0.27 → 10.0.28
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 +2 -1463
- package/README.md +3 -741
- package/manpages/doc/man/eggs.1.gz +0 -0
- package/manpages/doc/man/eggs.html +4 -4
- package/package.json +3 -3
- package/scripts/love +2 -2
- package/dist/classes/bleach.d.ts +0 -32
- package/dist/classes/bleach.js +0 -136
- package/dist/classes/cfs.d.ts +0 -17
- package/dist/classes/cfs.js +0 -39
- package/dist/classes/cli-autologin.d.ts +0 -52
- package/dist/classes/cli-autologin.js +0 -230
- package/dist/classes/compressors.d.ts +0 -54
- package/dist/classes/compressors.js +0 -109
- package/dist/classes/daddy.d.ts +0 -26
- package/dist/classes/daddy.js +0 -161
- package/dist/classes/distro.d.ts +0 -36
- package/dist/classes/distro.js +0 -346
- package/dist/classes/families/alpine.d.ts +0 -55
- package/dist/classes/families/alpine.js +0 -108
- package/dist/classes/families/archlinux.d.ts +0 -61
- package/dist/classes/families/archlinux.js +0 -140
- package/dist/classes/families/debian.d.ts +0 -65
- package/dist/classes/families/debian.js +0 -138
- package/dist/classes/families/fedora.d.ts +0 -52
- package/dist/classes/families/fedora.js +0 -100
- package/dist/classes/families/mockup.d.ts +0 -60
- package/dist/classes/families/mockup.js +0 -79
- package/dist/classes/families/opensuse.d.ts +0 -52
- package/dist/classes/families/opensuse.js +0 -104
- package/dist/classes/incubation/branding.d.ts +0 -17
- package/dist/classes/incubation/branding.js +0 -89
- package/dist/classes/incubation/distros/bionic.d.ts +0 -32
- package/dist/classes/incubation/distros/bionic.js +0 -83
- package/dist/classes/incubation/distros/buster.d.ts +0 -32
- package/dist/classes/incubation/distros/buster.js +0 -85
- package/dist/classes/incubation/distros/jessie.d.ts +0 -31
- package/dist/classes/incubation/distros/jessie.js +0 -44
- package/dist/classes/incubation/distros/noble.d.ts +0 -32
- package/dist/classes/incubation/distros/noble.js +0 -85
- package/dist/classes/incubation/distros/rolling.d.ts +0 -32
- package/dist/classes/incubation/distros/rolling.js +0 -82
- package/dist/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -11
- package/dist/classes/incubation/fisherman-helper/displaymanager.js +0 -39
- package/dist/classes/incubation/fisherman-helper/packages.d.ts +0 -20
- package/dist/classes/incubation/fisherman-helper/packages.js +0 -72
- package/dist/classes/incubation/fisherman-helper/settings.d.ts +0 -15
- package/dist/classes/incubation/fisherman-helper/settings.js +0 -83
- package/dist/classes/incubation/fisherman.d.ts +0 -77
- package/dist/classes/incubation/fisherman.js +0 -251
- package/dist/classes/incubation/incubator.d.ts +0 -40
- package/dist/classes/incubation/incubator.js +0 -328
- package/dist/classes/incubation/installer.d.ts +0 -13
- package/dist/classes/incubation/installer.js +0 -64
- package/dist/classes/keyboards.d.ts +0 -50
- package/dist/classes/keyboards.js +0 -217
- package/dist/classes/locales.d.ts +0 -21
- package/dist/classes/locales.js +0 -80
- package/dist/classes/n8.d.ts +0 -18
- package/dist/classes/n8.js +0 -36
- package/dist/classes/network.d.ts +0 -37
- package/dist/classes/network.js +0 -98
- package/dist/classes/ovary.d.ts +0 -214
- package/dist/classes/ovary.js +0 -1879
- package/dist/classes/pacman.d.ts +0 -149
- package/dist/classes/pacman.js +0 -701
- package/dist/classes/pve-live.d.ts +0 -17
- package/dist/classes/pve-live.js +0 -52
- package/dist/classes/pxe.d.ts +0 -74
- package/dist/classes/pxe.js +0 -410
- package/dist/classes/settings.d.ts +0 -53
- package/dist/classes/settings.js +0 -185
- package/dist/classes/sources_list.d.ts +0 -28
- package/dist/classes/sources_list.js +0 -89
- package/dist/classes/systemctl.d.ts +0 -47
- package/dist/classes/systemctl.js +0 -86
- package/dist/classes/tailor.d.ts +0 -46
- package/dist/classes/tailor.js +0 -539
- package/dist/classes/tools.d.ts +0 -30
- package/dist/classes/tools.js +0 -54
- package/dist/classes/users.d.ts +0 -28
- package/dist/classes/users.js +0 -143
- package/dist/classes/utils.d.ts +0 -323
- package/dist/classes/utils.js +0 -946
- package/dist/classes/xdg.d.ts +0 -45
- package/dist/classes/xdg.js +0 -329
- package/dist/classes/yolk.d.ts +0 -33
- package/dist/classes/yolk.js +0 -114
- package/dist/commands/adapt.d.ts +0 -17
- package/dist/commands/adapt.js +0 -33
- package/dist/commands/analyze.d.ts +0 -26
- package/dist/commands/analyze.js +0 -95
- package/dist/commands/calamares.d.ts +0 -29
- package/dist/commands/calamares.js +0 -110
- package/dist/commands/config.d.ts +0 -35
- package/dist/commands/config.js +0 -192
- package/dist/commands/cuckoo.d.ts +0 -16
- package/dist/commands/cuckoo.js +0 -62
- package/dist/commands/dad.d.ts +0 -20
- package/dist/commands/dad.js +0 -46
- package/dist/commands/export/deb.d.ts +0 -19
- package/dist/commands/export/deb.js +0 -51
- package/dist/commands/export/iso.d.ts +0 -19
- package/dist/commands/export/iso.js +0 -55
- package/dist/commands/install.d.ts +0 -37
- package/dist/commands/install.js +0 -92
- package/dist/commands/kill.d.ts +0 -24
- package/dist/commands/kill.js +0 -50
- package/dist/commands/mom.d.ts +0 -16
- package/dist/commands/mom.js +0 -30
- package/dist/commands/produce.d.ts +0 -34
- package/dist/commands/produce.js +0 -199
- package/dist/commands/status.d.ts +0 -23
- package/dist/commands/status.js +0 -31
- package/dist/commands/syncfrom.d.ts +0 -45
- package/dist/commands/syncfrom.js +0 -152
- package/dist/commands/syncto.d.ts +0 -40
- package/dist/commands/syncto.js +0 -175
- package/dist/commands/tools/clean.d.ts +0 -18
- package/dist/commands/tools/clean.js +0 -37
- package/dist/commands/tools/ppa.d.ts +0 -26
- package/dist/commands/tools/ppa.js +0 -138
- package/dist/commands/tools/skel.d.ts +0 -18
- package/dist/commands/tools/skel.js +0 -44
- package/dist/commands/tools/stat.d.ts +0 -31
- package/dist/commands/tools/stat.js +0 -70
- package/dist/commands/tools/yolk.d.ts +0 -24
- package/dist/commands/tools/yolk.js +0 -45
- package/dist/commands/update.d.ts +0 -47
- package/dist/commands/update.js +0 -140
- package/dist/commands/wardrobe/get.d.ts +0 -23
- package/dist/commands/wardrobe/get.js +0 -52
- package/dist/commands/wardrobe/list.d.ts +0 -24
- package/dist/commands/wardrobe/list.js +0 -125
- package/dist/commands/wardrobe/show.d.ts +0 -25
- package/dist/commands/wardrobe/show.js +0 -97
- package/dist/commands/wardrobe/wear.d.ts +0 -26
- package/dist/commands/wardrobe/wear.js +0 -81
- package/dist/components/finished.d.ts +0 -15
- package/dist/components/finished.js +0 -55
- package/dist/components/information.d.ts +0 -8
- package/dist/components/information.js +0 -153
- package/dist/components/install.d.ts +0 -15
- package/dist/components/install.js +0 -56
- package/dist/components/keyboard.d.ts +0 -16
- package/dist/components/keyboard.js +0 -54
- package/dist/components/location.d.ts +0 -16
- package/dist/components/location.js +0 -59
- package/dist/components/network.d.ts +0 -19
- package/dist/components/network.js +0 -65
- package/dist/components/partitions.d.ts +0 -16
- package/dist/components/partitions.js +0 -73
- package/dist/components/steps.d.ts +0 -13
- package/dist/components/steps.js +0 -148
- package/dist/components/summary.d.ts +0 -24
- package/dist/components/summary.js +0 -82
- package/dist/components/title.d.ts +0 -11
- package/dist/components/title.js +0 -35
- package/dist/components/users.d.ts +0 -24
- package/dist/components/users.js +0 -80
- package/dist/components/welcome.d.ts +0 -13
- package/dist/components/welcome.js +0 -63
- package/dist/index.d.ts +0 -8
- package/dist/index.js +0 -8
- package/dist/interfaces/i-addons.d.ts +0 -13
- package/dist/interfaces/i-addons.js +0 -8
- package/dist/interfaces/i-analyze.d.ts +0 -17
- package/dist/interfaces/i-analyze.js +0 -17
- package/dist/interfaces/i-app.d.ts +0 -14
- package/dist/interfaces/i-app.js +0 -8
- package/dist/interfaces/i-branding.d.ts +0 -36
- package/dist/interfaces/i-branding.js +0 -8
- package/dist/interfaces/i-calamares-partition.d.ts +0 -18
- package/dist/interfaces/i-calamares-partition.js +0 -8
- package/dist/interfaces/i-config-tools.d.ts +0 -18
- package/dist/interfaces/i-config-tools.js +0 -8
- package/dist/interfaces/i-devices.d.ts +0 -20
- package/dist/interfaces/i-devices.js +0 -8
- package/dist/interfaces/i-distro.d.ts +0 -27
- package/dist/interfaces/i-distro.js +0 -8
- package/dist/interfaces/i-drive-list.d.ts +0 -33
- package/dist/interfaces/i-drive-list.js +0 -8
- package/dist/interfaces/i-eggs-config.d.ts +0 -32
- package/dist/interfaces/i-eggs-config.js +0 -8
- package/dist/interfaces/i-excludes.d.ts +0 -14
- package/dist/interfaces/i-excludes.js +0 -8
- package/dist/interfaces/i-exec.d.ts +0 -11
- package/dist/interfaces/i-exec.js +0 -8
- package/dist/interfaces/i-initrd.d.ts +0 -13
- package/dist/interfaces/i-initrd.js +0 -8
- package/dist/interfaces/i-install.d.ts +0 -16
- package/dist/interfaces/i-install.js +0 -8
- package/dist/interfaces/i-installer.d.ts +0 -17
- package/dist/interfaces/i-installer.js +0 -8
- package/dist/interfaces/i-krill-config.d.ts +0 -33
- package/dist/interfaces/i-krill-config.js +0 -8
- package/dist/interfaces/i-krill.d.ts +0 -42
- package/dist/interfaces/i-krill.js +0 -8
- package/dist/interfaces/i-materia.d.ts +0 -41
- package/dist/interfaces/i-materia.js +0 -8
- package/dist/interfaces/i-net.d.ts +0 -16
- package/dist/interfaces/i-net.js +0 -8
- package/dist/interfaces/i-packages.d.ts +0 -16
- package/dist/interfaces/i-packages.js +0 -8
- package/dist/interfaces/i-partitions.d.ts +0 -16
- package/dist/interfaces/i-partitions.js +0 -8
- package/dist/interfaces/i-pxe.d.ts +0 -45
- package/dist/interfaces/i-pxe.js +0 -1
- package/dist/interfaces/i-remix.d.ts +0 -21
- package/dist/interfaces/i-remix.js +0 -8
- package/dist/interfaces/i-settings.d.ts +0 -33
- package/dist/interfaces/i-settings.js +0 -8
- package/dist/interfaces/i-user.d.ts +0 -14
- package/dist/interfaces/i-user.js +0 -8
- package/dist/interfaces/i-workdir.d.ts +0 -14
- package/dist/interfaces/i-workdir.js +0 -8
- package/dist/interfaces/i-xkb-model.d.ts +0 -24
- package/dist/interfaces/i-xkb-model.js +0 -8
- package/dist/interfaces/index.d.ts +0 -25
- package/dist/interfaces/index.js +0 -8
- package/dist/krill/modules/add-user.d.ts +0 -20
- package/dist/krill/modules/add-user.js +0 -50
- package/dist/krill/modules/bootloader-config-arch.d.ts +0 -14
- package/dist/krill/modules/bootloader-config-arch.js +0 -37
- package/dist/krill/modules/bootloader-config-debian.d.ts +0 -10
- package/dist/krill/modules/bootloader-config-debian.js +0 -50
- package/dist/krill/modules/bootloader-config.d.ts +0 -10
- package/dist/krill/modules/bootloader-config.js +0 -16
- package/dist/krill/modules/bootloader.d.ts +0 -14
- package/dist/krill/modules/bootloader.js +0 -30
- package/dist/krill/modules/change-password.d.ts +0 -15
- package/dist/krill/modules/change-password.js +0 -18
- package/dist/krill/modules/del-live-user.d.ts +0 -14
- package/dist/krill/modules/del-live-user.js +0 -38
- package/dist/krill/modules/fstab.d.ts +0 -14
- package/dist/krill/modules/fstab.js +0 -121
- package/dist/krill/modules/grubcfg.d.ts +0 -17
- package/dist/krill/modules/grubcfg.js +0 -29
- package/dist/krill/modules/hostname.d.ts +0 -13
- package/dist/krill/modules/hostname.js +0 -50
- package/dist/krill/modules/initramfs-cfg.d.ts +0 -14
- package/dist/krill/modules/initramfs-cfg.js +0 -25
- package/dist/krill/modules/initramfs.d.ts +0 -13
- package/dist/krill/modules/initramfs.js +0 -48
- package/dist/krill/modules/locale-cfg.d.ts +0 -10
- package/dist/krill/modules/locale-cfg.js +0 -61
- package/dist/krill/modules/locale.d.ts +0 -13
- package/dist/krill/modules/locale.js +0 -48
- package/dist/krill/modules/m-keyboard.d.ts +0 -14
- package/dist/krill/modules/m-keyboard.js +0 -79
- package/dist/krill/modules/m-timezone.d.ts +0 -14
- package/dist/krill/modules/m-timezone.js +0 -22
- package/dist/krill/modules/machine-id.d.ts +0 -15
- package/dist/krill/modules/machine-id.js +0 -30
- package/dist/krill/modules/mkfs.d.ts +0 -13
- package/dist/krill/modules/mkfs.js +0 -48
- package/dist/krill/modules/mount-fs.d.ts +0 -17
- package/dist/krill/modules/mount-fs.js +0 -60
- package/dist/krill/modules/mount-vfs.d.ts +0 -17
- package/dist/krill/modules/mount-vfs.js +0 -40
- package/dist/krill/modules/network-cfg.d.ts +0 -19
- package/dist/krill/modules/network-cfg.js +0 -64
- package/dist/krill/modules/packages.d.ts +0 -14
- package/dist/krill/modules/packages.js +0 -105
- package/dist/krill/modules/partition.d.ts +0 -20
- package/dist/krill/modules/partition.js +0 -324
- package/dist/krill/modules/remove-installer-link.d.ts +0 -13
- package/dist/krill/modules/remove-installer-link.js +0 -35
- package/dist/krill/modules/umount.d.ts +0 -14
- package/dist/krill/modules/umount.js +0 -27
- package/dist/krill/modules/unpackfs.d.ts +0 -13
- package/dist/krill/modules/unpackfs.js +0 -19
- package/dist/krill/prepare.d.ts +0 -78
- package/dist/krill/prepare.js +0 -626
- package/dist/krill/sequence.d.ts +0 -157
- package/dist/krill/sequence.js +0 -665
- package/dist/lib/get_address.d.ts +0 -8
- package/dist/lib/get_address.js +0 -23
- package/dist/lib/get_dns.d.ts +0 -8
- package/dist/lib/get_dns.js +0 -23
- package/dist/lib/get_domain.d.ts +0 -8
- package/dist/lib/get_domain.js +0 -23
- package/dist/lib/get_gateway.d.ts +0 -8
- package/dist/lib/get_gateway.js +0 -23
- package/dist/lib/get_hostname.d.ts +0 -8
- package/dist/lib/get_hostname.js +0 -23
- package/dist/lib/get_netmask.d.ts +0 -8
- package/dist/lib/get_netmask.js +0 -23
- package/dist/lib/get_password.d.ts +0 -8
- package/dist/lib/get_password.js +0 -36
- package/dist/lib/get_userfullname.d.ts +0 -8
- package/dist/lib/get_userfullname.js +0 -23
- package/dist/lib/get_username.d.ts +0 -8
- package/dist/lib/get_username.js +0 -23
- package/dist/lib/kill_me_softly.d.ts +0 -11
- package/dist/lib/kill_me_softly.js +0 -61
- package/dist/lib/select_address_type.d.ts +0 -8
- package/dist/lib/select_address_type.js +0 -24
- package/dist/lib/select_filesystem_type.d.ts +0 -8
- package/dist/lib/select_filesystem_type.js +0 -45
- package/dist/lib/select_installation_device.d.ts +0 -8
- package/dist/lib/select_installation_device.js +0 -30
- package/dist/lib/select_installation_mode.d.ts +0 -8
- package/dist/lib/select_installation_mode.js +0 -24
- package/dist/lib/select_interface.d.ts +0 -8
- package/dist/lib/select_interface.js +0 -24
- package/dist/lib/select_keyboard_layout.d.ts +0 -11
- package/dist/lib/select_keyboard_layout.js +0 -36
- package/dist/lib/select_keyboard_model.d.ts +0 -11
- package/dist/lib/select_keyboard_model.js +0 -34
- package/dist/lib/select_keyboard_option.d.ts +0 -11
- package/dist/lib/select_keyboard_option.js +0 -34
- package/dist/lib/select_keyboard_variant.d.ts +0 -11
- package/dist/lib/select_keyboard_variant.js +0 -35
- package/dist/lib/select_languages.d.ts +0 -8
- package/dist/lib/select_languages.js +0 -28
- package/dist/lib/select_regions.d.ts +0 -8
- package/dist/lib/select_regions.js +0 -24
- package/dist/lib/select_user_swap_choice.d.ts +0 -8
- package/dist/lib/select_user_swap_choice.js +0 -34
- package/dist/lib/select_zones.d.ts +0 -8
- package/dist/lib/select_zones.js +0 -518
- package/dist/lib/utils.d.ts +0 -34
- package/dist/lib/utils.js +0 -79
|
@@ -1,17 +0,0 @@
|
|
|
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
|
-
}
|
package/dist/classes/pve-live.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
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
|
-
}
|
package/dist/classes/pxe.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
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
|
-
}
|
package/dist/classes/pxe.js
DELETED
|
@@ -1,410 +0,0 @@
|
|
|
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 === 'ManjaroLinux') {
|
|
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.pxelinuxPath}pxelinux.0 ${this.pxeRoot}/pxelinux.0`);
|
|
229
|
-
await this.tryCatch(`ln -s ${distro.pxelinuxPath}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.memdiskPath}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
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ./src/classes/settings.ts
|
|
3
|
-
* penguins-eggs v.10.0.0 / ecmascript 2020
|
|
4
|
-
* author: Piero Proietti
|
|
5
|
-
* email: piero.proietti@gmail.com
|
|
6
|
-
* license: MIT
|
|
7
|
-
*/
|
|
8
|
-
import { IApp, IDistro, IRemix, IWorkDir } from '../interfaces/index.js';
|
|
9
|
-
import { IEggsConfig } from '../interfaces/index.js';
|
|
10
|
-
import Incubator from './incubation/incubator.js';
|
|
11
|
-
/**
|
|
12
|
-
* Setting
|
|
13
|
-
*/
|
|
14
|
-
export default class Settings {
|
|
15
|
-
app: IApp;
|
|
16
|
-
config: IEggsConfig;
|
|
17
|
-
distro: IDistro;
|
|
18
|
-
efi_work: string;
|
|
19
|
-
i686: boolean;
|
|
20
|
-
incubator: Incubator;
|
|
21
|
-
initrd_image: string;
|
|
22
|
-
initrdImg: string;
|
|
23
|
-
isLive: boolean;
|
|
24
|
-
iso_work: string;
|
|
25
|
-
isoFilename: string;
|
|
26
|
-
kernel_image: string;
|
|
27
|
-
remix: IRemix;
|
|
28
|
-
session_excludes: string;
|
|
29
|
-
vmlinuz: string;
|
|
30
|
-
work_dir: IWorkDir;
|
|
31
|
-
constructor(compression?: string);
|
|
32
|
-
/**
|
|
33
|
-
* Calculate and show free space on the disk
|
|
34
|
-
* @returns {void}
|
|
35
|
-
*/
|
|
36
|
-
listFreeSpace(): Promise<void>;
|
|
37
|
-
/**
|
|
38
|
-
* Load configuration from config_file
|
|
39
|
-
* @returns {boolean} Success
|
|
40
|
-
*/
|
|
41
|
-
load(): Promise<boolean>;
|
|
42
|
-
/**
|
|
43
|
-
*
|
|
44
|
-
* @param basename
|
|
45
|
-
* @param theme
|
|
46
|
-
*/
|
|
47
|
-
loadRemix(theme?: string): Promise<void>;
|
|
48
|
-
/**
|
|
49
|
-
*
|
|
50
|
-
* @param config
|
|
51
|
-
*/
|
|
52
|
-
save(config: IEggsConfig): Promise<void>;
|
|
53
|
-
}
|