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.
Files changed (334) hide show
  1. package/.oclif.manifest.json +1 -0
  2. package/README.md +34 -30
  3. package/conf/distros/jessie/krill/settings.yml +48 -9
  4. package/conf/distros/kinetic/README.md +41 -0
  5. package/conf/tools.yaml +1 -1
  6. package/{lib → dist}/classes/bleach.js +0 -0
  7. package/{lib → dist}/classes/compressors.js +0 -0
  8. package/{lib → dist}/classes/daddy.js +0 -0
  9. package/{lib → dist}/classes/distro.js +16 -30
  10. package/{lib → dist}/classes/family/archlinux.js +0 -0
  11. package/{lib → dist}/classes/family/debian.js +0 -0
  12. package/{lib → dist}/classes/family/fedora.js +0 -0
  13. package/{lib → dist}/classes/family/suse.js +0 -0
  14. package/{lib → dist}/classes/incubation/branding.js +0 -0
  15. package/{lib → dist}/classes/incubation/distros/bionic.js +0 -0
  16. package/{lib → dist}/classes/incubation/distros/buster.js +0 -0
  17. package/{lib → dist}/classes/incubation/distros/focal.js +0 -0
  18. package/{lib → dist}/classes/incubation/distros/jessie.js +1 -1
  19. package/{lib → dist}/classes/incubation/distros/rolling.js +0 -0
  20. package/{lib → dist}/classes/incubation/fisherman-helper/displaymanager.js +0 -0
  21. package/{lib → dist}/classes/incubation/fisherman-helper/packages.js +0 -0
  22. package/{lib → dist}/classes/incubation/fisherman.js +1 -1
  23. package/{lib → dist}/classes/incubation/incubator.js +9 -19
  24. package/{lib → dist}/classes/incubation/installer.js +0 -0
  25. package/{lib → dist}/classes/initrd.js +0 -0
  26. package/{lib → dist}/classes/keyboards.js +0 -0
  27. package/{lib → dist}/classes/locales.js +0 -0
  28. package/{lib → dist}/classes/n8.js +0 -0
  29. package/dist/classes/network.js +99 -0
  30. package/{lib → dist}/classes/ovary.js +0 -0
  31. package/{lib → dist}/classes/pacman.js +16 -1
  32. package/{lib → dist}/classes/pve-live.js +0 -0
  33. package/dist/classes/pxe.js +337 -0
  34. package/{lib → dist}/classes/settings.js +0 -0
  35. package/{lib → dist}/classes/sources_list.js +0 -0
  36. package/{lib → dist}/classes/systemctl.js +0 -0
  37. package/{lib → dist}/classes/tailor.js +0 -0
  38. package/{lib → dist}/classes/tools.js +0 -0
  39. package/{lib → dist}/classes/users.js +0 -0
  40. package/{lib → dist}/classes/utils.js +82 -17
  41. package/{lib → dist}/classes/xdg.js +24 -26
  42. package/{lib → dist}/classes/yolk.js +0 -0
  43. package/{lib → dist}/commands/adapt.js +0 -0
  44. package/{lib → dist}/commands/analyze.js +0 -0
  45. package/{lib → dist}/commands/calamares.js +0 -0
  46. package/{lib → dist}/commands/config.js +0 -0
  47. package/dist/commands/cuckoo.js +63 -0
  48. package/{lib → dist}/commands/dad.js +0 -0
  49. package/{lib → dist}/commands/export/deb.js +0 -0
  50. package/{lib → dist}/commands/export/docs.js +0 -0
  51. package/{lib → dist}/commands/export/iso.js +0 -0
  52. package/{lib → dist}/commands/install.js +27 -4
  53. package/{lib → dist}/commands/kill.js +0 -0
  54. package/{lib → dist}/commands/mom.js +0 -0
  55. package/{lib → dist}/commands/produce.js +0 -0
  56. package/{lib → dist}/commands/status.js +0 -0
  57. package/{lib → dist}/commands/syncfrom.js +0 -0
  58. package/{lib → dist}/commands/syncto.js +0 -0
  59. package/{lib → dist}/commands/tools/clean.js +0 -0
  60. package/{lib → dist}/commands/tools/skel.js +0 -0
  61. package/{lib → dist}/commands/tools/stat.js +0 -0
  62. package/{lib → dist}/commands/tools/yolk.js +0 -0
  63. package/{lib → dist}/commands/update.js +0 -0
  64. package/{lib → dist}/commands/wardrobe/get.js +0 -0
  65. package/{lib → dist}/commands/wardrobe/ironing.js +0 -0
  66. package/{lib → dist}/commands/wardrobe/list.js +0 -0
  67. package/{lib → dist}/commands/wardrobe/show.js +0 -0
  68. package/{lib → dist}/commands/wardrobe/wear.js +0 -0
  69. package/{lib → dist}/components/elements/information.js +0 -0
  70. package/{lib → dist}/components/elements/steps.js +0 -0
  71. package/{lib → dist}/components/elements/title.js +0 -0
  72. package/{lib → dist}/components/finished.js +0 -0
  73. package/{lib → dist}/components/install.js +0 -0
  74. package/{lib → dist}/components/keyboard.js +0 -0
  75. package/{lib → dist}/components/location.js +0 -0
  76. package/{lib → dist}/components/network.js +0 -0
  77. package/{lib → dist}/components/partitions.js +0 -0
  78. package/{lib → dist}/components/summary.js +2 -2
  79. package/{lib → dist}/components/users.js +0 -0
  80. package/{lib → dist}/components/welcome.js +0 -0
  81. package/dist/dhcpd/dhcpd.js +222 -0
  82. package/dist/dhcpd/index.js +7 -0
  83. package/dist/dhcpd/packet/converters.js +377 -0
  84. package/dist/dhcpd/packet/options.js +2 -0
  85. package/dist/dhcpd/packet/types.js +2 -0
  86. package/dist/dhcpd/packet.js +251 -0
  87. package/dist/dhcpd/proxy.js +152 -0
  88. package/dist/dhcpd/server.js +152 -0
  89. package/dist/dhcpd/sprintf.js +170 -0
  90. package/dist/dhcpd/utils.js +190 -0
  91. package/{lib → dist}/index.js +0 -0
  92. package/{lib → dist}/interfaces/i-addons.js +0 -0
  93. package/{lib → dist}/interfaces/i-analyze.js +0 -0
  94. package/{lib → dist}/interfaces/i-app.js +0 -0
  95. package/{lib → dist}/interfaces/i-branding.js +0 -0
  96. package/{lib → dist}/interfaces/i-config-tools.js +0 -0
  97. package/{lib → dist}/interfaces/i-devices.js +0 -0
  98. package/{lib → dist}/interfaces/i-distro.js +0 -0
  99. package/{lib → dist}/interfaces/i-drive-list.js +0 -0
  100. package/{lib → dist}/interfaces/i-eggs-config.js +0 -0
  101. package/{lib → dist}/interfaces/i-exec.js +0 -0
  102. package/{lib → dist}/interfaces/i-initrd.js +0 -0
  103. package/{lib → dist}/interfaces/i-install.js +0 -0
  104. package/{lib → dist}/interfaces/i-installer.js +0 -0
  105. package/{lib → dist}/interfaces/i-krill-config.js +0 -0
  106. package/{lib → dist}/interfaces/i-krill.js +0 -0
  107. package/{lib → dist}/interfaces/i-materia.js +0 -0
  108. package/{lib → dist}/interfaces/i-net.js +0 -0
  109. package/{lib → dist}/interfaces/i-packages.js +0 -0
  110. package/{lib → dist}/interfaces/i-partitions.js +0 -0
  111. package/{lib/interfaces/i-remix.js → dist/interfaces/i-pxe-options.js} +0 -0
  112. package/{lib/interfaces/i-settings.js → dist/interfaces/i-remix.js} +0 -0
  113. package/{lib/interfaces/i-user.js → dist/interfaces/i-settings.js} +0 -0
  114. package/{lib/interfaces/i-workdir.js → dist/interfaces/i-user.js} +0 -0
  115. package/{lib/interfaces/i-xkb-model.js → dist/interfaces/i-workdir.js} +0 -0
  116. package/{lib/interfaces/index.js → dist/interfaces/i-xkb-model.js} +0 -0
  117. package/dist/interfaces/index.js +2 -0
  118. package/{lib → dist}/krill/krill-prepare.js +25 -6
  119. package/{lib → dist}/krill/krill-sequence.js +69 -77
  120. package/{lib → dist}/krill/modules/add-user.js +0 -0
  121. package/{lib → dist}/krill/modules/bootloader-config-ubuntu.js +0 -0
  122. package/{lib → dist}/krill/modules/bootloader-config.js +1 -1
  123. package/{lib → dist}/krill/modules/bootloader.js +0 -5
  124. package/{lib → dist}/krill/modules/change-password.js +0 -0
  125. package/{lib → dist}/krill/modules/del-live-user.js +0 -0
  126. package/{lib → dist}/krill/modules/fstab.js +0 -0
  127. package/{lib → dist}/krill/modules/grubcfg.js +0 -0
  128. package/dist/krill/modules/hostname.js +48 -0
  129. package/{lib → dist}/krill/modules/initramfs-cfg.js +0 -0
  130. package/{lib → dist}/krill/modules/initramfs.js +0 -0
  131. package/{lib → dist}/krill/modules/locale-cfg.js +0 -0
  132. package/{lib → dist}/krill/modules/locale.js +1 -1
  133. package/{lib/krill/modules/set-keyboard.js → dist/krill/modules/m-keyboard.js} +12 -4
  134. package/{lib/krill/modules/set-timezone.js → dist/krill/modules/m-timezone.js} +2 -2
  135. package/{lib → dist}/krill/modules/machine-id.js +0 -0
  136. package/{lib → dist}/krill/modules/mkfs.js +0 -0
  137. package/{lib → dist}/krill/modules/mount-fs.js +0 -0
  138. package/{lib → dist}/krill/modules/mount-vfs.js +0 -0
  139. package/{lib → dist}/krill/modules/network-cfg.js +0 -0
  140. package/{lib → dist}/krill/modules/packages.js +0 -0
  141. package/{lib → dist}/krill/modules/partition.js +25 -14
  142. package/{lib → dist}/krill/modules/remove-installer-link.js +0 -0
  143. package/{lib → dist}/krill/modules/umount.js +0 -0
  144. package/{lib → dist}/krill/modules/unpackfs.js +0 -0
  145. package/{lib → dist}/lib/cli-autologin.js +1 -1
  146. package/{lib → dist}/lib/dependencies.js +0 -0
  147. package/{lib → dist}/lib/get_address.js +0 -0
  148. package/{lib → dist}/lib/get_dns.js +0 -0
  149. package/{lib → dist}/lib/get_domain.js +0 -0
  150. package/{lib → dist}/lib/get_gateway.js +0 -0
  151. package/{lib → dist}/lib/get_hostname.js +0 -0
  152. package/{lib → dist}/lib/get_netmask.js +0 -0
  153. package/{lib → dist}/lib/get_password.js +0 -0
  154. package/{lib → dist}/lib/get_root_password.js +0 -0
  155. package/{lib → dist}/lib/get_userfullname.js +0 -0
  156. package/{lib → dist}/lib/get_username.js +0 -0
  157. package/{lib → dist}/lib/select_address_type.js +0 -0
  158. package/{lib → dist}/lib/select_filesystem_type.js +0 -0
  159. package/{lib → dist}/lib/select_installation_device.js +0 -0
  160. package/{lib → dist}/lib/select_installation_mode.js +0 -0
  161. package/{lib → dist}/lib/select_interface.js +0 -0
  162. package/{lib → dist}/lib/select_keyboard_layout.js +0 -0
  163. package/{lib → dist}/lib/select_keyboard_model.js +0 -0
  164. package/{lib → dist}/lib/select_keyboard_option.js +0 -0
  165. package/{lib → dist}/lib/select_keyboard_variant.js +0 -0
  166. package/{lib → dist}/lib/select_languages.js +0 -0
  167. package/{lib → dist}/lib/select_regions.js +0 -0
  168. package/{lib → dist}/lib/select_user_swap_choice.js +0 -0
  169. package/{lib → dist}/lib/select_zones.js +0 -0
  170. package/{lib → dist}/lib/utils.js +1 -2
  171. package/ipxe/ipxe.efi +0 -0
  172. package/package.json +20 -17
  173. package/scripts/_eggs +11 -7
  174. package/scripts/eggs.bash +2 -2
  175. package/lib/classes/bleach.d.ts +0 -40
  176. package/lib/classes/compressors.d.ts +0 -24
  177. package/lib/classes/daddy.d.ts +0 -11
  178. package/lib/classes/distro.d.ts +0 -31
  179. package/lib/classes/family/archlinux.d.ts +0 -69
  180. package/lib/classes/family/debian.d.ts +0 -68
  181. package/lib/classes/family/fedora.d.ts +0 -63
  182. package/lib/classes/family/suse.d.ts +0 -63
  183. package/lib/classes/incubation/branding.d.ts +0 -8
  184. package/lib/classes/incubation/distros/bionic.d.ts +0 -29
  185. package/lib/classes/incubation/distros/buster.d.ts +0 -31
  186. package/lib/classes/incubation/distros/focal.d.ts +0 -29
  187. package/lib/classes/incubation/distros/jessie.d.ts +0 -32
  188. package/lib/classes/incubation/distros/rolling.d.ts +0 -31
  189. package/lib/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -7
  190. package/lib/classes/incubation/fisherman-helper/packages.d.ts +0 -19
  191. package/lib/classes/incubation/fisherman.d.ts +0 -77
  192. package/lib/classes/incubation/incubator.d.ts +0 -35
  193. package/lib/classes/incubation/installer.d.ts +0 -15
  194. package/lib/classes/initrd.d.ts +0 -42
  195. package/lib/classes/keyboards.d.ts +0 -43
  196. package/lib/classes/locales.d.ts +0 -14
  197. package/lib/classes/n8.d.ts +0 -16
  198. package/lib/classes/ovary.d.ts +0 -179
  199. package/lib/classes/pacman.d.ts +0 -164
  200. package/lib/classes/pve-live.d.ts +0 -42
  201. package/lib/classes/pxe.d.ts +0 -64
  202. package/lib/classes/pxe.js +0 -352
  203. package/lib/classes/settings.d.ts +0 -55
  204. package/lib/classes/sources_list.d.ts +0 -27
  205. package/lib/classes/systemctl.d.ts +0 -46
  206. package/lib/classes/tailor.d.ts +0 -43
  207. package/lib/classes/tools.d.ts +0 -29
  208. package/lib/classes/users.d.ts +0 -21
  209. package/lib/classes/utils.d.ts +0 -299
  210. package/lib/classes/xdg.d.ts +0 -44
  211. package/lib/classes/yolk.d.ts +0 -26
  212. package/lib/commands/adapt.d.ts +0 -9
  213. package/lib/commands/analyze.d.ts +0 -25
  214. package/lib/commands/calamares.d.ts +0 -26
  215. package/lib/commands/config.d.ts +0 -34
  216. package/lib/commands/cuckoo.d.ts +0 -24
  217. package/lib/commands/cuckoo.js +0 -70
  218. package/lib/commands/dad.d.ts +0 -17
  219. package/lib/commands/export/deb.d.ts +0 -14
  220. package/lib/commands/export/docs.d.ts +0 -8
  221. package/lib/commands/export/iso.d.ts +0 -13
  222. package/lib/commands/install.d.ts +0 -25
  223. package/lib/commands/kill.d.ts +0 -20
  224. package/lib/commands/mom.d.ts +0 -14
  225. package/lib/commands/produce.d.ts +0 -28
  226. package/lib/commands/status.d.ts +0 -18
  227. package/lib/commands/syncfrom.d.ts +0 -42
  228. package/lib/commands/syncto.d.ts +0 -67
  229. package/lib/commands/tools/clean.d.ts +0 -15
  230. package/lib/commands/tools/skel.d.ts +0 -17
  231. package/lib/commands/tools/stat.d.ts +0 -14
  232. package/lib/commands/tools/yolk.d.ts +0 -23
  233. package/lib/commands/update.d.ts +0 -46
  234. package/lib/commands/wardrobe/get.d.ts +0 -17
  235. package/lib/commands/wardrobe/ironing.d.ts +0 -18
  236. package/lib/commands/wardrobe/list.d.ts +0 -17
  237. package/lib/commands/wardrobe/show.d.ts +0 -19
  238. package/lib/commands/wardrobe/wear.d.ts +0 -21
  239. package/lib/components/elements/information.d.ts +0 -4
  240. package/lib/components/elements/steps.d.ts +0 -6
  241. package/lib/components/elements/title.d.ts +0 -4
  242. package/lib/components/finished.d.ts +0 -8
  243. package/lib/components/install.d.ts +0 -8
  244. package/lib/components/keyboard.d.ts +0 -12
  245. package/lib/components/location.d.ts +0 -12
  246. package/lib/components/network.d.ts +0 -12
  247. package/lib/components/partitions.d.ts +0 -9
  248. package/lib/components/summary.d.ts +0 -16
  249. package/lib/components/users.d.ts +0 -20
  250. package/lib/components/welcome.d.ts +0 -6
  251. package/lib/index.d.ts +0 -1
  252. package/lib/interfaces/i-addons.d.ts +0 -8
  253. package/lib/interfaces/i-analyze.d.ts +0 -13
  254. package/lib/interfaces/i-app.d.ts +0 -7
  255. package/lib/interfaces/i-branding.d.ts +0 -29
  256. package/lib/interfaces/i-config-tools.d.ts +0 -11
  257. package/lib/interfaces/i-devices.d.ts +0 -13
  258. package/lib/interfaces/i-distro.d.ts +0 -19
  259. package/lib/interfaces/i-drive-list.d.ts +0 -29
  260. package/lib/interfaces/i-eggs-config.d.ts +0 -24
  261. package/lib/interfaces/i-exec.d.ts +0 -4
  262. package/lib/interfaces/i-initrd.d.ts +0 -6
  263. package/lib/interfaces/i-install.d.ts +0 -9
  264. package/lib/interfaces/i-installer.d.ts +0 -20
  265. package/lib/interfaces/i-krill-config.d.ts +0 -26
  266. package/lib/interfaces/i-krill.d.ts +0 -35
  267. package/lib/interfaces/i-materia.d.ts +0 -36
  268. package/lib/interfaces/i-net.d.ts +0 -9
  269. package/lib/interfaces/i-packages.d.ts +0 -10
  270. package/lib/interfaces/i-partitions.d.ts +0 -9
  271. package/lib/interfaces/i-remix.d.ts +0 -14
  272. package/lib/interfaces/i-settings.d.ts +0 -10
  273. package/lib/interfaces/i-user.d.ts +0 -7
  274. package/lib/interfaces/i-workdir.d.ts +0 -8
  275. package/lib/interfaces/i-xkb-model.d.ts +0 -17
  276. package/lib/interfaces/index.d.ts +0 -17
  277. package/lib/krill/krill-prepare.d.ts +0 -60
  278. package/lib/krill/krill-sequence.d.ts +0 -151
  279. package/lib/krill/modules/add-user.d.ts +0 -15
  280. package/lib/krill/modules/bootloader-config-arch.d.ts +0 -9
  281. package/lib/krill/modules/bootloader-config-arch.js +0 -13
  282. package/lib/krill/modules/bootloader-config-ubuntu.d.ts +0 -9
  283. package/lib/krill/modules/bootloader-config.d.ts +0 -9
  284. package/lib/krill/modules/bootloader.d.ts +0 -10
  285. package/lib/krill/modules/change-password.d.ts +0 -10
  286. package/lib/krill/modules/del-live-user.d.ts +0 -9
  287. package/lib/krill/modules/fstab.d.ts +0 -14
  288. package/lib/krill/modules/grubcfg.d.ts +0 -17
  289. package/lib/krill/modules/hostname.d.ts +0 -13
  290. package/lib/krill/modules/hostname.js +0 -18
  291. package/lib/krill/modules/hosts.d.ts +0 -14
  292. package/lib/krill/modules/hosts.js +0 -35
  293. package/lib/krill/modules/initramfs-cfg.d.ts +0 -14
  294. package/lib/krill/modules/initramfs.d.ts +0 -13
  295. package/lib/krill/modules/locale-cfg.d.ts +0 -10
  296. package/lib/krill/modules/locale.d.ts +0 -13
  297. package/lib/krill/modules/machine-id.d.ts +0 -15
  298. package/lib/krill/modules/mkfs.d.ts +0 -13
  299. package/lib/krill/modules/mount-fs.d.ts +0 -17
  300. package/lib/krill/modules/mount-vfs.d.ts +0 -17
  301. package/lib/krill/modules/network-cfg.d.ts +0 -19
  302. package/lib/krill/modules/packages.d.ts +0 -14
  303. package/lib/krill/modules/partition.d.ts +0 -20
  304. package/lib/krill/modules/remove-installer-link.d.ts +0 -13
  305. package/lib/krill/modules/set-keyboard.d.ts +0 -10
  306. package/lib/krill/modules/set-timezone.d.ts +0 -14
  307. package/lib/krill/modules/umount.d.ts +0 -14
  308. package/lib/krill/modules/unpackfs.d.ts +0 -13
  309. package/lib/lib/cli-autologin.d.ts +0 -27
  310. package/lib/lib/dependencies.d.ts +0 -49
  311. package/lib/lib/get_address.d.ts +0 -1
  312. package/lib/lib/get_dns.d.ts +0 -1
  313. package/lib/lib/get_domain.d.ts +0 -1
  314. package/lib/lib/get_gateway.d.ts +0 -1
  315. package/lib/lib/get_hostname.d.ts +0 -1
  316. package/lib/lib/get_netmask.d.ts +0 -1
  317. package/lib/lib/get_password.d.ts +0 -1
  318. package/lib/lib/get_root_password.d.ts +0 -1
  319. package/lib/lib/get_userfullname.d.ts +0 -1
  320. package/lib/lib/get_username.d.ts +0 -1
  321. package/lib/lib/select_address_type.d.ts +0 -1
  322. package/lib/lib/select_filesystem_type.d.ts +0 -1
  323. package/lib/lib/select_installation_device.d.ts +0 -1
  324. package/lib/lib/select_installation_mode.d.ts +0 -1
  325. package/lib/lib/select_interface.d.ts +0 -1
  326. package/lib/lib/select_keyboard_layout.d.ts +0 -4
  327. package/lib/lib/select_keyboard_model.d.ts +0 -4
  328. package/lib/lib/select_keyboard_option.d.ts +0 -4
  329. package/lib/lib/select_keyboard_variant.d.ts +0 -4
  330. package/lib/lib/select_languages.d.ts +0 -1
  331. package/lib/lib/select_regions.d.ts +0 -1
  332. package/lib/lib/select_user_swap_choice.d.ts +0 -1
  333. package/lib/lib/select_zones.d.ts +0 -1
  334. 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
+ };
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