penguins-eggs 9.2.5 → 9.2.9
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 +34 -30
- package/conf/distros/jessie/krill/settings.yml +48 -9
- 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 +16 -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 +1 -1
- 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 +1 -1
- 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 +24 -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 +27 -4
- 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/{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 +25 -6
- package/{lib → dist}/krill/krill-sequence.js +69 -77
- 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/dist/krill/modules/hostname.js +48 -0
- 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} +12 -4
- 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 +25 -14
- 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 +1 -1
- package/{lib → dist}/lib/dependencies.js +0 -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 +20 -17
- 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 -352
- 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 -25
- 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 -151
- 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/hostname.js +0 -18
- package/lib/krill/modules/hosts.d.ts +0 -14
- package/lib/krill/modules/hosts.js +0 -35
- 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,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var util = require('util');
|
|
3
|
+
var dhcp = require('./index');
|
|
4
|
+
var Socket = require('dgram').Socket;
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
class DHCPProxy {
|
|
9
|
+
constructor(type, opts) {
|
|
10
|
+
var _this = this;
|
|
11
|
+
DHCPProxy.super_.apply(this, [type]);
|
|
12
|
+
_this.broadcast = opts.broadcast;
|
|
13
|
+
this.on('error', function (err) {
|
|
14
|
+
console.dir(err);
|
|
15
|
+
});
|
|
16
|
+
this.on('message', function (buffer, remote) {
|
|
17
|
+
var event_name, packet, type;
|
|
18
|
+
packet = dhcp.Packet.fromBuffer(buffer);
|
|
19
|
+
if (packet.op === 1) {
|
|
20
|
+
type = {
|
|
21
|
+
id: packet.options[53] || 0,
|
|
22
|
+
name: dhcp.MessageTypes[packet.options[53] || 0]
|
|
23
|
+
};
|
|
24
|
+
util.log(("Proxy: Got " + type.name + " from") + (" " + remote.address + ":" + remote.port + " (" + packet.chaddr + ") ") + (" with packet length of " + buffer.length + " bytes"));
|
|
25
|
+
event_name = type.name.replace('DHCP', '').toLowerCase();
|
|
26
|
+
packet.remote = remote;
|
|
27
|
+
return _this._emitPacket(event_name, packet);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return console.log(" Unsupported message format");
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return _this;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param {*} port
|
|
38
|
+
* @param {*} addr
|
|
39
|
+
* @param {*} cb
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
bind(port, addr, cb) {
|
|
43
|
+
var self = this;
|
|
44
|
+
var res;
|
|
45
|
+
res = DHCPProxy.super_.prototype.bind.call(this, port, addr, function () {
|
|
46
|
+
this.setBroadcast(true);
|
|
47
|
+
if (cb instanceof Function)
|
|
48
|
+
cb();
|
|
49
|
+
});
|
|
50
|
+
return res;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @param {*} event_name
|
|
55
|
+
* @param {*} ip
|
|
56
|
+
* @param {*} packet
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
_send(event_name, ip, packet) {
|
|
60
|
+
var buffer, _this = this;
|
|
61
|
+
buffer = packet.toBuffer();
|
|
62
|
+
util.log(("Proxy: Sending " + dhcp.MessageTypes[packet.options[53]]) + (" to " + ip + ":" + packet.remote.port + " (" + packet.chaddr + ")") + (" with packet length of " + buffer.length + " bytes"));
|
|
63
|
+
this.emit(event_name, packet);
|
|
64
|
+
return this.send(buffer, 0, buffer.length, packet.remote.port, ip, function (err, bytes) {
|
|
65
|
+
if (err) {
|
|
66
|
+
return _this.emit("" + event_name + "Error", err, packet);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return _this.emit("" + event_name + "Sent", bytes, packet);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param {*} message_type
|
|
76
|
+
* @param {*} packet
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
_emitPacket(message_type, packet) {
|
|
80
|
+
return this.emit(message_type, packet, packet.options[50] || null);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param {*} packet
|
|
85
|
+
* @param {*} params
|
|
86
|
+
*/
|
|
87
|
+
discover(packet, params) {
|
|
88
|
+
console.log('Proxy: Got DHCP DISCOVER');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
*
|
|
92
|
+
* @param {*} packet
|
|
93
|
+
* @param {*} params
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
offer(packet, params) {
|
|
97
|
+
if (params) {
|
|
98
|
+
packet.yiaddr = params.yiaddr;
|
|
99
|
+
packet.siaddr = params.siaddr;
|
|
100
|
+
packet.options = params.options;
|
|
101
|
+
}
|
|
102
|
+
packet.op = packet.options[53] = 2;
|
|
103
|
+
return this._send('offer', this.broadcast, packet);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
* @param {*} packet
|
|
108
|
+
* @param {*} params
|
|
109
|
+
* @returns
|
|
110
|
+
*/
|
|
111
|
+
ack(packet, params) {
|
|
112
|
+
if (params) {
|
|
113
|
+
packet.yiaddr = params.yiaddr;
|
|
114
|
+
packet.siaddr = params.siaddr;
|
|
115
|
+
packet.options = params.options;
|
|
116
|
+
}
|
|
117
|
+
packet.op = 2;
|
|
118
|
+
packet.options[53] = 5;
|
|
119
|
+
// return this._send('ack', this.broadcast, packet);
|
|
120
|
+
return this._send('ack', packet.ciaddr, packet);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
*
|
|
124
|
+
* @param {*} packet
|
|
125
|
+
* @param {*} params
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
nak(packet, params) {
|
|
129
|
+
packet.op = 2;
|
|
130
|
+
packet.options[53] = 6;
|
|
131
|
+
return this._send('nak', packet.ciaddr, packet);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
*
|
|
135
|
+
* @param {*} packet
|
|
136
|
+
* @param {*} params
|
|
137
|
+
* @returns
|
|
138
|
+
*/
|
|
139
|
+
inform(packet, params) {
|
|
140
|
+
if (params) {
|
|
141
|
+
packet.yiaddr = params.yiaddr;
|
|
142
|
+
packet.siaddr = params.siaddr;
|
|
143
|
+
packet.options = params.options;
|
|
144
|
+
}
|
|
145
|
+
packet.op = 2;
|
|
146
|
+
packet.options[53] = 5;
|
|
147
|
+
return this._send('inform', packet.ciaddr, packet);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
util.inherits(DHCPProxy, Socket);
|
|
151
|
+
DHCPProxy.Packet = dhcp.Packet;
|
|
152
|
+
module.exports = DHCPProxy;
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var util = require('util');
|
|
3
|
+
var dhcp = require('./index');
|
|
4
|
+
var Socket = require('dgram').Socket;
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
class DHCPServer {
|
|
9
|
+
constructor(type, opts) {
|
|
10
|
+
var _this = this;
|
|
11
|
+
DHCPServer.super_.apply(this, [type]);
|
|
12
|
+
_this.broadcast = opts.broadcast;
|
|
13
|
+
this.on('error', function (err) {
|
|
14
|
+
console.dir(err);
|
|
15
|
+
});
|
|
16
|
+
this.on('message', function (buffer, remote) {
|
|
17
|
+
var event_name, packet, type;
|
|
18
|
+
packet = dhcp.Packet.fromBuffer(buffer);
|
|
19
|
+
if (packet.op === 1) {
|
|
20
|
+
type = {
|
|
21
|
+
id: packet.options[53] || 0,
|
|
22
|
+
name: dhcp.MessageTypes[packet.options[53] || 0]
|
|
23
|
+
};
|
|
24
|
+
util.log(("Got " + type.name + " from") + (" " + remote.address + ":" + remote.port + " (" + packet.chaddr + ") ") + (" with packet length of " + buffer.length + " bytes"));
|
|
25
|
+
event_name = type.name.replace('DHCP', '').toLowerCase();
|
|
26
|
+
packet.remote = remote;
|
|
27
|
+
return _this._emitPacket(event_name, packet);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
return console.log(" Unsupported message format");
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
return _this;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param {*} port
|
|
38
|
+
* @param {*} addr
|
|
39
|
+
* @param {*} cb
|
|
40
|
+
* @returns
|
|
41
|
+
*/
|
|
42
|
+
bind(port, addr, cb) {
|
|
43
|
+
var self = this;
|
|
44
|
+
var res;
|
|
45
|
+
res = DHCPServer.super_.prototype.bind.call(this, port, addr, function () {
|
|
46
|
+
this.setBroadcast(true);
|
|
47
|
+
if (cb instanceof Function)
|
|
48
|
+
cb();
|
|
49
|
+
});
|
|
50
|
+
return res;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @param {*} event_name
|
|
55
|
+
* @param {*} ip
|
|
56
|
+
* @param {*} packet
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
_send(event_name, ip, packet) {
|
|
60
|
+
var buffer, _this = this;
|
|
61
|
+
buffer = packet.toBuffer();
|
|
62
|
+
util.log(("Sending " + dhcp.MessageTypes[packet.options[53]]) + (" to " + ip + ":68 (" + packet.chaddr + ")") + (" with packet length of " + buffer.length + " bytes"));
|
|
63
|
+
this.emit(event_name, packet);
|
|
64
|
+
return this.send(buffer, 0, buffer.length, 68, ip, function (err, bytes) {
|
|
65
|
+
if (err) {
|
|
66
|
+
return _this.emit("" + event_name + "Error", err, packet);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
return _this.emit("" + event_name + "Sent", bytes, packet);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* @param {*} message_type
|
|
76
|
+
* @param {*} packet
|
|
77
|
+
* @returns
|
|
78
|
+
*/
|
|
79
|
+
_emitPacket(message_type, packet) {
|
|
80
|
+
return this.emit(message_type, packet, packet.options[50] || null);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param {*} packet
|
|
85
|
+
* @param {*} params
|
|
86
|
+
*/
|
|
87
|
+
discover(packet, params) {
|
|
88
|
+
console.log('Got DHCP DISCOVER');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
*
|
|
92
|
+
* @param {*} packet
|
|
93
|
+
* @param {*} params
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
offer(packet, params) {
|
|
97
|
+
if (params) {
|
|
98
|
+
packet.yiaddr = params.yiaddr;
|
|
99
|
+
packet.siaddr = params.siaddr;
|
|
100
|
+
packet.options = params.options;
|
|
101
|
+
}
|
|
102
|
+
packet.op = packet.options[53] = 2;
|
|
103
|
+
//return this._send('offer', this.broadcast, packet);
|
|
104
|
+
return this._send('offer', '255.255.255.255', packet);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
*
|
|
108
|
+
* @param {*} packet
|
|
109
|
+
* @param {*} params
|
|
110
|
+
* @returns
|
|
111
|
+
*/
|
|
112
|
+
ack(packet, params) {
|
|
113
|
+
if (params) {
|
|
114
|
+
packet.yiaddr = params.yiaddr;
|
|
115
|
+
packet.siaddr = params.siaddr;
|
|
116
|
+
packet.options = params.options;
|
|
117
|
+
}
|
|
118
|
+
packet.op = 2;
|
|
119
|
+
packet.options[53] = 5;
|
|
120
|
+
return this._send('ack', this.broadcast, packet);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
*
|
|
124
|
+
* @param {*} packet
|
|
125
|
+
* @param {*} params
|
|
126
|
+
* @returns
|
|
127
|
+
*/
|
|
128
|
+
nak(packet, params) {
|
|
129
|
+
packet.op = 2;
|
|
130
|
+
packet.options[53] = 6;
|
|
131
|
+
return this._send('nak', packet.ciaddr, packet);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
*
|
|
135
|
+
* @param {*} packet
|
|
136
|
+
* @param {*} params
|
|
137
|
+
* @returns
|
|
138
|
+
*/
|
|
139
|
+
inform(packet, params) {
|
|
140
|
+
if (params) {
|
|
141
|
+
packet.yiaddr = params.yiaddr;
|
|
142
|
+
packet.siaddr = params.siaddr;
|
|
143
|
+
packet.options = params.options;
|
|
144
|
+
}
|
|
145
|
+
packet.op = 2;
|
|
146
|
+
packet.options[53] = 5;
|
|
147
|
+
return this._send('inform', packet.ciaddr, packet);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
util.inherits(DHCPServer, Socket);
|
|
151
|
+
DHCPServer.Packet = dhcp.Packet;
|
|
152
|
+
module.exports = DHCPServer;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
function sprintf() {
|
|
3
|
+
// Return a formatted string
|
|
4
|
+
//
|
|
5
|
+
// version: 1107.2516
|
|
6
|
+
// discuss at: http://phpjs.org/functions/sprintf // + original by: Ash Searle (http://hexmen.com/blog/)
|
|
7
|
+
// + namespaced by: Michael White (http://getsprink.com)
|
|
8
|
+
// + tweaked by: Jack
|
|
9
|
+
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
10
|
+
// + input by: Paulo Freitas // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
11
|
+
// + input by: Brett Zamir (http://brett-zamir.me)
|
|
12
|
+
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
|
|
13
|
+
// * example 1: sprintf("%01.2f", 123.1);
|
|
14
|
+
// * returns 1: 123.10 // * example 2: sprintf("[%10s]", 'monkey');
|
|
15
|
+
// * returns 2: '[ monkey]'
|
|
16
|
+
// * example 3: sprintf("[%'#10s]", 'monkey');
|
|
17
|
+
// * returns 3: '[####monkey]'
|
|
18
|
+
var regex = /%%|%(\d+\$)?([\-+\'#0 ]*)(\*\d+\$|\*|\d+)?(\.(\*\d+\$|\*|\d+))?([scboxXuidfegEG])/g;
|
|
19
|
+
var a = arguments, i = 0, format = a[i++];
|
|
20
|
+
// pad()
|
|
21
|
+
var pad = function (str, len, chr, leftJustify) {
|
|
22
|
+
if (!chr) {
|
|
23
|
+
chr = ' ';
|
|
24
|
+
}
|
|
25
|
+
var padding = (str.length >= len) ? '' : Array(1 + len - str.length >>> 0).join(chr);
|
|
26
|
+
return leftJustify ? str + padding : padding + str;
|
|
27
|
+
};
|
|
28
|
+
// justify()
|
|
29
|
+
var justify = function (value, prefix, leftJustify, minWidth, zeroPad, customPadChar) {
|
|
30
|
+
var diff = minWidth - value.length;
|
|
31
|
+
if (diff > 0) {
|
|
32
|
+
if (leftJustify || !zeroPad) {
|
|
33
|
+
value = pad(value, minWidth, customPadChar, leftJustify);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
value = value.slice(0, prefix.length) + pad('', diff, '0', true) + value.slice(prefix.length);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return value;
|
|
40
|
+
};
|
|
41
|
+
// formatBaseX()
|
|
42
|
+
var formatBaseX = function (value, base, prefix, leftJustify, minWidth, precision, zeroPad) {
|
|
43
|
+
// Note: casts negative numbers to positive ones
|
|
44
|
+
var number = value >>> 0;
|
|
45
|
+
prefix = prefix && number && {
|
|
46
|
+
'2': '0b',
|
|
47
|
+
'8': '0',
|
|
48
|
+
'16': '0x'
|
|
49
|
+
}[base] || '';
|
|
50
|
+
value = prefix + pad(number.toString(base), precision || 0, '0', false);
|
|
51
|
+
return justify(value, prefix, leftJustify, minWidth, zeroPad);
|
|
52
|
+
};
|
|
53
|
+
// formatString()
|
|
54
|
+
var formatString = function (value, leftJustify, minWidth, precision, zeroPad, customPadChar) {
|
|
55
|
+
if (precision !== null) {
|
|
56
|
+
value = value.slice(0, precision);
|
|
57
|
+
}
|
|
58
|
+
return justify(value, '', leftJustify, minWidth, zeroPad, customPadChar);
|
|
59
|
+
};
|
|
60
|
+
// doFormat()
|
|
61
|
+
var doFormat = function (substring, valueIndex, flags, minWidth, _, precision, type) {
|
|
62
|
+
var number;
|
|
63
|
+
var prefix;
|
|
64
|
+
var method;
|
|
65
|
+
var textTransform;
|
|
66
|
+
var value;
|
|
67
|
+
if (substring == '%%') {
|
|
68
|
+
return '%';
|
|
69
|
+
}
|
|
70
|
+
// parse flags
|
|
71
|
+
var leftJustify = false, positivePrefix = '', zeroPad = false, prefixBaseX = false, customPadChar = ' ';
|
|
72
|
+
var flagsl = flags.length;
|
|
73
|
+
for (var j = 0; flags && j < flagsl; j++) {
|
|
74
|
+
switch (flags.charAt(j)) {
|
|
75
|
+
case ' ':
|
|
76
|
+
positivePrefix = ' ';
|
|
77
|
+
break;
|
|
78
|
+
case '+':
|
|
79
|
+
positivePrefix = '+';
|
|
80
|
+
break;
|
|
81
|
+
case '-':
|
|
82
|
+
leftJustify = true;
|
|
83
|
+
break;
|
|
84
|
+
case "'":
|
|
85
|
+
customPadChar = flags.charAt(j + 1);
|
|
86
|
+
break;
|
|
87
|
+
case '0':
|
|
88
|
+
zeroPad = true;
|
|
89
|
+
break;
|
|
90
|
+
case '#':
|
|
91
|
+
prefixBaseX = true;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// parameters may be null, undefined, empty-string or real valued
|
|
96
|
+
// we want to ignore null, undefined and empty-string values
|
|
97
|
+
if (!minWidth) {
|
|
98
|
+
minWidth = 0;
|
|
99
|
+
}
|
|
100
|
+
else if (minWidth == '*') {
|
|
101
|
+
minWidth = +a[i++];
|
|
102
|
+
}
|
|
103
|
+
else if (minWidth.charAt(0) == '*') {
|
|
104
|
+
minWidth = +a[minWidth.slice(1, -1)];
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
minWidth = +minWidth;
|
|
108
|
+
}
|
|
109
|
+
// Note: undocumented perl feature:
|
|
110
|
+
if (minWidth < 0) {
|
|
111
|
+
minWidth = -minWidth;
|
|
112
|
+
leftJustify = true;
|
|
113
|
+
}
|
|
114
|
+
if (!isFinite(minWidth)) {
|
|
115
|
+
throw new Error('sprintf: (minimum-)width must be finite');
|
|
116
|
+
}
|
|
117
|
+
if (!precision) {
|
|
118
|
+
precision = 'fFeE'.indexOf(type) > -1 ? 6 : (type == 'd') ? 0 : undefined;
|
|
119
|
+
}
|
|
120
|
+
else if (precision == '*') {
|
|
121
|
+
precision = +a[i++];
|
|
122
|
+
}
|
|
123
|
+
else if (precision.charAt(0) == '*') {
|
|
124
|
+
precision = +a[precision.slice(1, -1)];
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
precision = +precision;
|
|
128
|
+
}
|
|
129
|
+
// grab value using valueIndex if required?
|
|
130
|
+
value = valueIndex ? a[valueIndex.slice(0, -1)] : a[i++];
|
|
131
|
+
switch (type) {
|
|
132
|
+
case 's':
|
|
133
|
+
return formatString(String(value), leftJustify, minWidth, precision, zeroPad, customPadChar);
|
|
134
|
+
case 'c':
|
|
135
|
+
return formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, zeroPad);
|
|
136
|
+
case 'b':
|
|
137
|
+
return formatBaseX(value, 2, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
|
|
138
|
+
case 'o':
|
|
139
|
+
return formatBaseX(value, 8, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
|
|
140
|
+
case 'x':
|
|
141
|
+
return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
|
|
142
|
+
case 'X':
|
|
143
|
+
return formatBaseX(value, 16, prefixBaseX, leftJustify, minWidth, precision, zeroPad).toUpperCase();
|
|
144
|
+
case 'u':
|
|
145
|
+
return formatBaseX(value, 10, prefixBaseX, leftJustify, minWidth, precision, zeroPad);
|
|
146
|
+
case 'i':
|
|
147
|
+
case 'd':
|
|
148
|
+
number = (+value) | 0;
|
|
149
|
+
prefix = number < 0 ? '-' : positivePrefix;
|
|
150
|
+
value = prefix + pad(String(Math.abs(number)), precision, '0', false);
|
|
151
|
+
return justify(value, prefix, leftJustify, minWidth, zeroPad);
|
|
152
|
+
case 'e':
|
|
153
|
+
case 'E':
|
|
154
|
+
case 'f':
|
|
155
|
+
case 'F':
|
|
156
|
+
case 'g':
|
|
157
|
+
case 'G':
|
|
158
|
+
number = +value;
|
|
159
|
+
prefix = number < 0 ? '-' : positivePrefix;
|
|
160
|
+
method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(type.toLowerCase())];
|
|
161
|
+
textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(type) % 2];
|
|
162
|
+
value = prefix + Math.abs(number)[method](precision);
|
|
163
|
+
return justify(value, prefix, leftJustify, minWidth, zeroPad)[textTransform]();
|
|
164
|
+
default:
|
|
165
|
+
return substring;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
return format.replace(regex, doFormat);
|
|
169
|
+
}
|
|
170
|
+
module.exports = sprintf;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var sprintf;
|
|
3
|
+
sprintf = require("./sprintf");
|
|
4
|
+
module.exports = {
|
|
5
|
+
/*
|
|
6
|
+
Writes an array with bytes to the packets Buffer from the current position
|
|
7
|
+
|
|
8
|
+
@param {Array} byteArray A simple array with uint8 values ([0x00, 0xFF])
|
|
9
|
+
@return {Packet}
|
|
10
|
+
*/
|
|
11
|
+
writeBytes: function (_buffer, byteArray, offset) {
|
|
12
|
+
var i, _bytesWritten;
|
|
13
|
+
i = 0;
|
|
14
|
+
while (i < byteArray.length) {
|
|
15
|
+
_buffer[offset++] = byteArray[i];
|
|
16
|
+
i++;
|
|
17
|
+
}
|
|
18
|
+
if (offset > _bytesWritten) {
|
|
19
|
+
_bytesWritten = offset;
|
|
20
|
+
}
|
|
21
|
+
return this;
|
|
22
|
+
},
|
|
23
|
+
/*
|
|
24
|
+
Write a 4-byte integer
|
|
25
|
+
|
|
26
|
+
@param {integer} integer The value to write to the packet
|
|
27
|
+
@return {Packet}
|
|
28
|
+
*/
|
|
29
|
+
writeInt32: function (_buffer, integer, offset) {
|
|
30
|
+
_buffer[offset++] = integer >>> 24;
|
|
31
|
+
_buffer[offset++] = integer >>> 16;
|
|
32
|
+
_buffer[offset++] = integer >>> 8;
|
|
33
|
+
_buffer[offset++] = integer;
|
|
34
|
+
return offset;
|
|
35
|
+
},
|
|
36
|
+
/*
|
|
37
|
+
Write a 2-byte integer
|
|
38
|
+
|
|
39
|
+
@param {integer} integer The value to write to the packet
|
|
40
|
+
@return {Packet}
|
|
41
|
+
*/
|
|
42
|
+
writeInt16: function (_buffer, integer, offset) {
|
|
43
|
+
_buffer[offset++] = integer >>> 8;
|
|
44
|
+
_buffer[offset++] = integer;
|
|
45
|
+
return offset;
|
|
46
|
+
},
|
|
47
|
+
/*
|
|
48
|
+
Write a 1-byte integer
|
|
49
|
+
|
|
50
|
+
@param {integer} integer The value to write to the packet
|
|
51
|
+
@return {Packet}
|
|
52
|
+
*/
|
|
53
|
+
writeInt8: function (_buffer, integer, offset) {
|
|
54
|
+
_buffer[offset++] = integer;
|
|
55
|
+
return offset;
|
|
56
|
+
},
|
|
57
|
+
/*
|
|
58
|
+
Reads the given length of bytes from the packets Buffer
|
|
59
|
+
and optionally (if the copy argument is true) creates a real copy of the Buffer
|
|
60
|
+
|
|
61
|
+
@param {Integer} length
|
|
62
|
+
@param {Boolean} copy
|
|
63
|
+
@return {Buffer}
|
|
64
|
+
*/
|
|
65
|
+
readBytes: function (_buffer, length, copy, offset) {
|
|
66
|
+
var bufCopy;
|
|
67
|
+
if (copy) {
|
|
68
|
+
bufCopy = new Buffer(length);
|
|
69
|
+
_buffer.copy(bufCopy, 0, offset, (offset += length));
|
|
70
|
+
return bufCopy;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
return _buffer.slice(offset, (offset += length));
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
/*
|
|
77
|
+
Reads a 4-byte integer from the packet
|
|
78
|
+
|
|
79
|
+
@return {Integer}
|
|
80
|
+
*/
|
|
81
|
+
readInt32: function (_buffer, offset) {
|
|
82
|
+
return (_buffer[offset++] << 24) | (_buffer[offset++] << 16) | (_buffer[offset++] << 8) | _buffer[offset++];
|
|
83
|
+
},
|
|
84
|
+
/*
|
|
85
|
+
Reads a 2-byte integer from the packet
|
|
86
|
+
|
|
87
|
+
@return {Integer}
|
|
88
|
+
*/
|
|
89
|
+
readInt16: function (_buffer, offset) {
|
|
90
|
+
return (_buffer[offset++] << 8) | _buffer[offset++];
|
|
91
|
+
},
|
|
92
|
+
/*
|
|
93
|
+
Reads a 1-byte integer from the packet
|
|
94
|
+
|
|
95
|
+
@return {Integer}
|
|
96
|
+
*/
|
|
97
|
+
readInt8: function (_buffer, offset) {
|
|
98
|
+
return _buffer[offset++];
|
|
99
|
+
},
|
|
100
|
+
readString: function (buf) {
|
|
101
|
+
var j, s;
|
|
102
|
+
s = "";
|
|
103
|
+
j = 0;
|
|
104
|
+
while (j < buf.length) {
|
|
105
|
+
s += String.fromCharCode(buf[j]);
|
|
106
|
+
j++;
|
|
107
|
+
}
|
|
108
|
+
return s;
|
|
109
|
+
},
|
|
110
|
+
readHex: function (buf) {
|
|
111
|
+
var j, s;
|
|
112
|
+
s = "";
|
|
113
|
+
j = 0;
|
|
114
|
+
while (j < buf.length) {
|
|
115
|
+
s += sprintf("%02x", b[j]);
|
|
116
|
+
j++;
|
|
117
|
+
}
|
|
118
|
+
return s;
|
|
119
|
+
},
|
|
120
|
+
readHexAddress: function (buf) {
|
|
121
|
+
var j, s;
|
|
122
|
+
s = [];
|
|
123
|
+
j = 0;
|
|
124
|
+
while (j < buf.length) {
|
|
125
|
+
s.push(sprintf("%02d", buf[j]));
|
|
126
|
+
j++;
|
|
127
|
+
}
|
|
128
|
+
return s.join(":");
|
|
129
|
+
},
|
|
130
|
+
readIp: function (buffer, offset) {
|
|
131
|
+
var stop;
|
|
132
|
+
if (offset === null) {
|
|
133
|
+
offset = 0;
|
|
134
|
+
}
|
|
135
|
+
if (offset > buffer.length) {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
if (0 === buffer.readUInt8(offset)) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
stop = offset + 4;
|
|
143
|
+
return ((function () {
|
|
144
|
+
var _results;
|
|
145
|
+
_results = [];
|
|
146
|
+
while (offset < stop) {
|
|
147
|
+
_results.push(buffer.readUInt8(offset++));
|
|
148
|
+
}
|
|
149
|
+
return _results;
|
|
150
|
+
})()).join('.');
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
readMacAddress: function (buffer) {
|
|
154
|
+
var byte;
|
|
155
|
+
return ((function () {
|
|
156
|
+
var _i, _len, _results;
|
|
157
|
+
_results = [];
|
|
158
|
+
for (_i = 0, _len = buffer.length; _i < _len; _i++) {
|
|
159
|
+
byte = buffer[_i];
|
|
160
|
+
_results.push((byte + 0x100).toString(16).substr(-2));
|
|
161
|
+
}
|
|
162
|
+
return _results;
|
|
163
|
+
})()).join(':');
|
|
164
|
+
},
|
|
165
|
+
writeTimeOffset: function (buf, num, offsetHours, offset) {
|
|
166
|
+
buf[offset++] = 0;
|
|
167
|
+
return offset;
|
|
168
|
+
},
|
|
169
|
+
writeIp: function (buf, num, ip, offset) {
|
|
170
|
+
buf[offset++] = num;
|
|
171
|
+
buf[offset++] = 4;
|
|
172
|
+
if ((typeof ip !== 'string' && !(ip instanceof String)) || ip.indexOf('.') === -1) {
|
|
173
|
+
ip = "0.0.0.0";
|
|
174
|
+
}
|
|
175
|
+
ip.split(".").forEach(function (item) {
|
|
176
|
+
buf[offset++] = item;
|
|
177
|
+
});
|
|
178
|
+
return offset;
|
|
179
|
+
},
|
|
180
|
+
writeString: function (buf, num, hostname, offset) {
|
|
181
|
+
var charArr;
|
|
182
|
+
charArr = hostname.split("");
|
|
183
|
+
buf[offset++] = num;
|
|
184
|
+
buf[offset++] = charArr.length;
|
|
185
|
+
charArr.forEach(function (chr) {
|
|
186
|
+
buf[offset++] = chr.charCodeAt();
|
|
187
|
+
});
|
|
188
|
+
return offset;
|
|
189
|
+
}
|
|
190
|
+
};
|
package/{lib → dist}/index.js
RENAMED
|
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
|