penguins-eggs 9.2.6 → 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 (330) hide show
  1. package/.oclif.manifest.json +1 -0
  2. package/README.md +34 -31
  3. package/conf/distros/kinetic/README.md +41 -0
  4. package/conf/tools.yaml +1 -1
  5. package/{lib → dist}/classes/bleach.js +0 -0
  6. package/{lib → dist}/classes/compressors.js +0 -0
  7. package/{lib → dist}/classes/daddy.js +0 -0
  8. package/{lib → dist}/classes/distro.js +14 -30
  9. package/{lib → dist}/classes/family/archlinux.js +0 -0
  10. package/{lib → dist}/classes/family/debian.js +0 -0
  11. package/{lib → dist}/classes/family/fedora.js +0 -0
  12. package/{lib → dist}/classes/family/suse.js +0 -0
  13. package/{lib → dist}/classes/incubation/branding.js +0 -0
  14. package/{lib → dist}/classes/incubation/distros/bionic.js +0 -0
  15. package/{lib → dist}/classes/incubation/distros/buster.js +0 -0
  16. package/{lib → dist}/classes/incubation/distros/focal.js +0 -0
  17. package/{lib → dist}/classes/incubation/distros/jessie.js +0 -0
  18. package/{lib → dist}/classes/incubation/distros/rolling.js +0 -0
  19. package/{lib → dist}/classes/incubation/fisherman-helper/displaymanager.js +0 -0
  20. package/{lib → dist}/classes/incubation/fisherman-helper/packages.js +0 -0
  21. package/{lib → dist}/classes/incubation/fisherman.js +0 -0
  22. package/{lib → dist}/classes/incubation/incubator.js +9 -19
  23. package/{lib → dist}/classes/incubation/installer.js +0 -0
  24. package/{lib → dist}/classes/initrd.js +0 -0
  25. package/{lib → dist}/classes/keyboards.js +0 -0
  26. package/{lib → dist}/classes/locales.js +0 -0
  27. package/{lib → dist}/classes/n8.js +0 -0
  28. package/dist/classes/network.js +99 -0
  29. package/{lib → dist}/classes/ovary.js +0 -0
  30. package/{lib → dist}/classes/pacman.js +16 -1
  31. package/{lib → dist}/classes/pve-live.js +0 -0
  32. package/dist/classes/pxe.js +337 -0
  33. package/{lib → dist}/classes/settings.js +0 -0
  34. package/{lib → dist}/classes/sources_list.js +0 -0
  35. package/{lib → dist}/classes/systemctl.js +0 -0
  36. package/{lib → dist}/classes/tailor.js +0 -0
  37. package/{lib → dist}/classes/tools.js +0 -0
  38. package/{lib → dist}/classes/users.js +0 -0
  39. package/{lib → dist}/classes/utils.js +82 -17
  40. package/{lib → dist}/classes/xdg.js +24 -26
  41. package/{lib → dist}/classes/yolk.js +0 -0
  42. package/{lib → dist}/commands/adapt.js +0 -0
  43. package/{lib → dist}/commands/analyze.js +0 -0
  44. package/{lib → dist}/commands/calamares.js +0 -0
  45. package/{lib → dist}/commands/config.js +0 -0
  46. package/dist/commands/cuckoo.js +63 -0
  47. package/{lib → dist}/commands/dad.js +0 -0
  48. package/{lib → dist}/commands/export/deb.js +0 -0
  49. package/{lib → dist}/commands/export/docs.js +0 -0
  50. package/{lib → dist}/commands/export/iso.js +0 -0
  51. package/{lib → dist}/commands/install.js +26 -5
  52. package/{lib → dist}/commands/kill.js +0 -0
  53. package/{lib → dist}/commands/mom.js +0 -0
  54. package/{lib → dist}/commands/produce.js +0 -0
  55. package/{lib → dist}/commands/status.js +0 -0
  56. package/{lib → dist}/commands/syncfrom.js +0 -0
  57. package/{lib → dist}/commands/syncto.js +0 -0
  58. package/{lib → dist}/commands/tools/clean.js +0 -0
  59. package/{lib → dist}/commands/tools/skel.js +0 -0
  60. package/{lib → dist}/commands/tools/stat.js +0 -0
  61. package/{lib → dist}/commands/tools/yolk.js +0 -0
  62. package/{lib → dist}/commands/update.js +0 -0
  63. package/{lib → dist}/commands/wardrobe/get.js +0 -0
  64. package/{lib → dist}/commands/wardrobe/ironing.js +0 -0
  65. package/{lib → dist}/commands/wardrobe/list.js +0 -0
  66. package/{lib → dist}/commands/wardrobe/show.js +0 -0
  67. package/{lib → dist}/commands/wardrobe/wear.js +0 -0
  68. package/{lib → dist}/components/elements/information.js +0 -0
  69. package/{lib → dist}/components/elements/steps.js +0 -0
  70. package/{lib → dist}/components/elements/title.js +0 -0
  71. package/{lib → dist}/components/finished.js +0 -0
  72. package/{lib → dist}/components/install.js +0 -0
  73. package/{lib → dist}/components/keyboard.js +0 -0
  74. package/{lib → dist}/components/location.js +0 -0
  75. package/{lib → dist}/components/network.js +0 -0
  76. package/{lib → dist}/components/partitions.js +0 -0
  77. package/{lib → dist}/components/summary.js +2 -2
  78. package/{lib → dist}/components/users.js +0 -0
  79. package/{lib → dist}/components/welcome.js +0 -0
  80. package/dist/dhcpd/dhcpd.js +222 -0
  81. package/dist/dhcpd/index.js +7 -0
  82. package/dist/dhcpd/packet/converters.js +377 -0
  83. package/dist/dhcpd/packet/options.js +2 -0
  84. package/dist/dhcpd/packet/types.js +2 -0
  85. package/dist/dhcpd/packet.js +251 -0
  86. package/dist/dhcpd/proxy.js +152 -0
  87. package/dist/dhcpd/server.js +152 -0
  88. package/dist/dhcpd/sprintf.js +170 -0
  89. package/dist/dhcpd/utils.js +190 -0
  90. package/{lib → dist}/index.js +0 -0
  91. package/{lib → dist}/interfaces/i-addons.js +0 -0
  92. package/{lib → dist}/interfaces/i-analyze.js +0 -0
  93. package/{lib → dist}/interfaces/i-app.js +0 -0
  94. package/{lib → dist}/interfaces/i-branding.js +0 -0
  95. package/{lib → dist}/interfaces/i-config-tools.js +0 -0
  96. package/{lib → dist}/interfaces/i-devices.js +0 -0
  97. package/{lib → dist}/interfaces/i-distro.js +0 -0
  98. package/{lib → dist}/interfaces/i-drive-list.js +0 -0
  99. package/{lib → dist}/interfaces/i-eggs-config.js +0 -0
  100. package/{lib → dist}/interfaces/i-exec.js +0 -0
  101. package/{lib → dist}/interfaces/i-initrd.js +0 -0
  102. package/{lib → dist}/interfaces/i-install.js +0 -0
  103. package/{lib → dist}/interfaces/i-installer.js +0 -0
  104. package/{lib → dist}/interfaces/i-krill-config.js +0 -0
  105. package/{lib → dist}/interfaces/i-krill.js +0 -0
  106. package/{lib → dist}/interfaces/i-materia.js +0 -0
  107. package/{lib → dist}/interfaces/i-net.js +0 -0
  108. package/{lib → dist}/interfaces/i-packages.js +0 -0
  109. package/{lib → dist}/interfaces/i-partitions.js +0 -0
  110. package/{lib/interfaces/i-remix.js → dist/interfaces/i-pxe-options.js} +0 -0
  111. package/{lib/interfaces/i-settings.js → dist/interfaces/i-remix.js} +0 -0
  112. package/{lib/interfaces/i-user.js → dist/interfaces/i-settings.js} +0 -0
  113. package/{lib/interfaces/i-workdir.js → dist/interfaces/i-user.js} +0 -0
  114. package/{lib/interfaces/i-xkb-model.js → dist/interfaces/i-workdir.js} +0 -0
  115. package/{lib/interfaces/index.js → dist/interfaces/i-xkb-model.js} +0 -0
  116. package/dist/interfaces/index.js +2 -0
  117. package/{lib → dist}/krill/krill-prepare.js +20 -4
  118. package/{lib → dist}/krill/krill-sequence.js +64 -62
  119. package/{lib → dist}/krill/modules/add-user.js +0 -0
  120. package/{lib → dist}/krill/modules/bootloader-config-ubuntu.js +0 -0
  121. package/{lib → dist}/krill/modules/bootloader-config.js +1 -1
  122. package/{lib → dist}/krill/modules/bootloader.js +0 -5
  123. package/{lib → dist}/krill/modules/change-password.js +0 -0
  124. package/{lib → dist}/krill/modules/del-live-user.js +0 -0
  125. package/{lib → dist}/krill/modules/fstab.js +0 -0
  126. package/{lib → dist}/krill/modules/grubcfg.js +0 -0
  127. package/{lib → dist}/krill/modules/hostname.js +2 -2
  128. package/{lib → dist}/krill/modules/initramfs-cfg.js +0 -0
  129. package/{lib → dist}/krill/modules/initramfs.js +0 -0
  130. package/{lib → dist}/krill/modules/locale-cfg.js +0 -0
  131. package/{lib → dist}/krill/modules/locale.js +1 -1
  132. package/{lib/krill/modules/set-keyboard.js → dist/krill/modules/m-keyboard.js} +7 -3
  133. package/{lib/krill/modules/set-timezone.js → dist/krill/modules/m-timezone.js} +2 -2
  134. package/{lib → dist}/krill/modules/machine-id.js +0 -0
  135. package/{lib → dist}/krill/modules/mkfs.js +0 -0
  136. package/{lib → dist}/krill/modules/mount-fs.js +0 -0
  137. package/{lib → dist}/krill/modules/mount-vfs.js +0 -0
  138. package/{lib → dist}/krill/modules/network-cfg.js +0 -0
  139. package/{lib → dist}/krill/modules/packages.js +0 -0
  140. package/{lib → dist}/krill/modules/partition.js +1 -1
  141. package/{lib → dist}/krill/modules/remove-installer-link.js +0 -0
  142. package/{lib → dist}/krill/modules/umount.js +0 -0
  143. package/{lib → dist}/krill/modules/unpackfs.js +0 -0
  144. package/{lib → dist}/lib/cli-autologin.js +0 -0
  145. package/{lib → dist}/lib/dependencies.js +0 -0
  146. package/{lib → dist}/lib/get_address.js +0 -0
  147. package/{lib → dist}/lib/get_dns.js +0 -0
  148. package/{lib → dist}/lib/get_domain.js +0 -0
  149. package/{lib → dist}/lib/get_gateway.js +0 -0
  150. package/{lib → dist}/lib/get_hostname.js +0 -0
  151. package/{lib → dist}/lib/get_netmask.js +0 -0
  152. package/{lib → dist}/lib/get_password.js +0 -0
  153. package/{lib → dist}/lib/get_root_password.js +0 -0
  154. package/{lib → dist}/lib/get_userfullname.js +0 -0
  155. package/{lib → dist}/lib/get_username.js +0 -0
  156. package/{lib → dist}/lib/select_address_type.js +0 -0
  157. package/{lib → dist}/lib/select_filesystem_type.js +0 -0
  158. package/{lib → dist}/lib/select_installation_device.js +0 -0
  159. package/{lib → dist}/lib/select_installation_mode.js +0 -0
  160. package/{lib → dist}/lib/select_interface.js +0 -0
  161. package/{lib → dist}/lib/select_keyboard_layout.js +0 -0
  162. package/{lib → dist}/lib/select_keyboard_model.js +0 -0
  163. package/{lib → dist}/lib/select_keyboard_option.js +0 -0
  164. package/{lib → dist}/lib/select_keyboard_variant.js +0 -0
  165. package/{lib → dist}/lib/select_languages.js +0 -0
  166. package/{lib → dist}/lib/select_regions.js +0 -0
  167. package/{lib → dist}/lib/select_user_swap_choice.js +0 -0
  168. package/{lib → dist}/lib/select_zones.js +0 -0
  169. package/{lib → dist}/lib/utils.js +1 -2
  170. package/ipxe/ipxe.efi +0 -0
  171. package/package.json +20 -17
  172. package/scripts/_eggs +11 -7
  173. package/scripts/eggs.bash +2 -2
  174. package/lib/classes/bleach.d.ts +0 -40
  175. package/lib/classes/compressors.d.ts +0 -24
  176. package/lib/classes/daddy.d.ts +0 -11
  177. package/lib/classes/distro.d.ts +0 -31
  178. package/lib/classes/family/archlinux.d.ts +0 -69
  179. package/lib/classes/family/debian.d.ts +0 -68
  180. package/lib/classes/family/fedora.d.ts +0 -63
  181. package/lib/classes/family/suse.d.ts +0 -63
  182. package/lib/classes/incubation/branding.d.ts +0 -8
  183. package/lib/classes/incubation/distros/bionic.d.ts +0 -29
  184. package/lib/classes/incubation/distros/buster.d.ts +0 -31
  185. package/lib/classes/incubation/distros/focal.d.ts +0 -29
  186. package/lib/classes/incubation/distros/jessie.d.ts +0 -32
  187. package/lib/classes/incubation/distros/rolling.d.ts +0 -31
  188. package/lib/classes/incubation/fisherman-helper/displaymanager.d.ts +0 -7
  189. package/lib/classes/incubation/fisherman-helper/packages.d.ts +0 -19
  190. package/lib/classes/incubation/fisherman.d.ts +0 -77
  191. package/lib/classes/incubation/incubator.d.ts +0 -35
  192. package/lib/classes/incubation/installer.d.ts +0 -15
  193. package/lib/classes/initrd.d.ts +0 -42
  194. package/lib/classes/keyboards.d.ts +0 -43
  195. package/lib/classes/locales.d.ts +0 -14
  196. package/lib/classes/n8.d.ts +0 -16
  197. package/lib/classes/ovary.d.ts +0 -179
  198. package/lib/classes/pacman.d.ts +0 -164
  199. package/lib/classes/pve-live.d.ts +0 -42
  200. package/lib/classes/pxe.d.ts +0 -64
  201. package/lib/classes/pxe.js +0 -376
  202. package/lib/classes/settings.d.ts +0 -55
  203. package/lib/classes/sources_list.d.ts +0 -27
  204. package/lib/classes/systemctl.d.ts +0 -46
  205. package/lib/classes/tailor.d.ts +0 -43
  206. package/lib/classes/tools.d.ts +0 -29
  207. package/lib/classes/users.d.ts +0 -21
  208. package/lib/classes/utils.d.ts +0 -299
  209. package/lib/classes/xdg.d.ts +0 -44
  210. package/lib/classes/yolk.d.ts +0 -26
  211. package/lib/commands/adapt.d.ts +0 -9
  212. package/lib/commands/analyze.d.ts +0 -25
  213. package/lib/commands/calamares.d.ts +0 -26
  214. package/lib/commands/config.d.ts +0 -34
  215. package/lib/commands/cuckoo.d.ts +0 -24
  216. package/lib/commands/cuckoo.js +0 -70
  217. package/lib/commands/dad.d.ts +0 -17
  218. package/lib/commands/export/deb.d.ts +0 -14
  219. package/lib/commands/export/docs.d.ts +0 -8
  220. package/lib/commands/export/iso.d.ts +0 -13
  221. package/lib/commands/install.d.ts +0 -26
  222. package/lib/commands/kill.d.ts +0 -20
  223. package/lib/commands/mom.d.ts +0 -14
  224. package/lib/commands/produce.d.ts +0 -28
  225. package/lib/commands/status.d.ts +0 -18
  226. package/lib/commands/syncfrom.d.ts +0 -42
  227. package/lib/commands/syncto.d.ts +0 -67
  228. package/lib/commands/tools/clean.d.ts +0 -15
  229. package/lib/commands/tools/skel.d.ts +0 -17
  230. package/lib/commands/tools/stat.d.ts +0 -14
  231. package/lib/commands/tools/yolk.d.ts +0 -23
  232. package/lib/commands/update.d.ts +0 -46
  233. package/lib/commands/wardrobe/get.d.ts +0 -17
  234. package/lib/commands/wardrobe/ironing.d.ts +0 -18
  235. package/lib/commands/wardrobe/list.d.ts +0 -17
  236. package/lib/commands/wardrobe/show.d.ts +0 -19
  237. package/lib/commands/wardrobe/wear.d.ts +0 -21
  238. package/lib/components/elements/information.d.ts +0 -4
  239. package/lib/components/elements/steps.d.ts +0 -6
  240. package/lib/components/elements/title.d.ts +0 -4
  241. package/lib/components/finished.d.ts +0 -8
  242. package/lib/components/install.d.ts +0 -8
  243. package/lib/components/keyboard.d.ts +0 -12
  244. package/lib/components/location.d.ts +0 -12
  245. package/lib/components/network.d.ts +0 -12
  246. package/lib/components/partitions.d.ts +0 -9
  247. package/lib/components/summary.d.ts +0 -16
  248. package/lib/components/users.d.ts +0 -20
  249. package/lib/components/welcome.d.ts +0 -6
  250. package/lib/index.d.ts +0 -1
  251. package/lib/interfaces/i-addons.d.ts +0 -8
  252. package/lib/interfaces/i-analyze.d.ts +0 -13
  253. package/lib/interfaces/i-app.d.ts +0 -7
  254. package/lib/interfaces/i-branding.d.ts +0 -29
  255. package/lib/interfaces/i-config-tools.d.ts +0 -11
  256. package/lib/interfaces/i-devices.d.ts +0 -13
  257. package/lib/interfaces/i-distro.d.ts +0 -19
  258. package/lib/interfaces/i-drive-list.d.ts +0 -29
  259. package/lib/interfaces/i-eggs-config.d.ts +0 -24
  260. package/lib/interfaces/i-exec.d.ts +0 -4
  261. package/lib/interfaces/i-initrd.d.ts +0 -6
  262. package/lib/interfaces/i-install.d.ts +0 -9
  263. package/lib/interfaces/i-installer.d.ts +0 -20
  264. package/lib/interfaces/i-krill-config.d.ts +0 -26
  265. package/lib/interfaces/i-krill.d.ts +0 -35
  266. package/lib/interfaces/i-materia.d.ts +0 -36
  267. package/lib/interfaces/i-net.d.ts +0 -9
  268. package/lib/interfaces/i-packages.d.ts +0 -10
  269. package/lib/interfaces/i-partitions.d.ts +0 -9
  270. package/lib/interfaces/i-remix.d.ts +0 -14
  271. package/lib/interfaces/i-settings.d.ts +0 -10
  272. package/lib/interfaces/i-user.d.ts +0 -7
  273. package/lib/interfaces/i-workdir.d.ts +0 -8
  274. package/lib/interfaces/i-xkb-model.d.ts +0 -17
  275. package/lib/interfaces/index.d.ts +0 -17
  276. package/lib/krill/krill-prepare.d.ts +0 -60
  277. package/lib/krill/krill-sequence.d.ts +0 -150
  278. package/lib/krill/modules/add-user.d.ts +0 -15
  279. package/lib/krill/modules/bootloader-config-arch.d.ts +0 -9
  280. package/lib/krill/modules/bootloader-config-arch.js +0 -13
  281. package/lib/krill/modules/bootloader-config-ubuntu.d.ts +0 -9
  282. package/lib/krill/modules/bootloader-config.d.ts +0 -9
  283. package/lib/krill/modules/bootloader.d.ts +0 -10
  284. package/lib/krill/modules/change-password.d.ts +0 -10
  285. package/lib/krill/modules/del-live-user.d.ts +0 -9
  286. package/lib/krill/modules/fstab.d.ts +0 -14
  287. package/lib/krill/modules/grubcfg.d.ts +0 -17
  288. package/lib/krill/modules/hostname.d.ts +0 -13
  289. package/lib/krill/modules/initramfs-cfg.d.ts +0 -14
  290. package/lib/krill/modules/initramfs.d.ts +0 -13
  291. package/lib/krill/modules/locale-cfg.d.ts +0 -10
  292. package/lib/krill/modules/locale.d.ts +0 -13
  293. package/lib/krill/modules/machine-id.d.ts +0 -15
  294. package/lib/krill/modules/mkfs.d.ts +0 -13
  295. package/lib/krill/modules/mount-fs.d.ts +0 -17
  296. package/lib/krill/modules/mount-vfs.d.ts +0 -17
  297. package/lib/krill/modules/network-cfg.d.ts +0 -19
  298. package/lib/krill/modules/packages.d.ts +0 -14
  299. package/lib/krill/modules/partition.d.ts +0 -20
  300. package/lib/krill/modules/remove-installer-link.d.ts +0 -13
  301. package/lib/krill/modules/set-keyboard.d.ts +0 -10
  302. package/lib/krill/modules/set-timezone.d.ts +0 -14
  303. package/lib/krill/modules/umount.d.ts +0 -14
  304. package/lib/krill/modules/unpackfs.d.ts +0 -13
  305. package/lib/lib/cli-autologin.d.ts +0 -27
  306. package/lib/lib/dependencies.d.ts +0 -49
  307. package/lib/lib/get_address.d.ts +0 -1
  308. package/lib/lib/get_dns.d.ts +0 -1
  309. package/lib/lib/get_domain.d.ts +0 -1
  310. package/lib/lib/get_gateway.d.ts +0 -1
  311. package/lib/lib/get_hostname.d.ts +0 -1
  312. package/lib/lib/get_netmask.d.ts +0 -1
  313. package/lib/lib/get_password.d.ts +0 -1
  314. package/lib/lib/get_root_password.d.ts +0 -1
  315. package/lib/lib/get_userfullname.d.ts +0 -1
  316. package/lib/lib/get_username.d.ts +0 -1
  317. package/lib/lib/select_address_type.d.ts +0 -1
  318. package/lib/lib/select_filesystem_type.d.ts +0 -1
  319. package/lib/lib/select_installation_device.d.ts +0 -1
  320. package/lib/lib/select_installation_mode.d.ts +0 -1
  321. package/lib/lib/select_interface.d.ts +0 -1
  322. package/lib/lib/select_keyboard_layout.d.ts +0 -4
  323. package/lib/lib/select_keyboard_model.d.ts +0 -4
  324. package/lib/lib/select_keyboard_option.d.ts +0 -4
  325. package/lib/lib/select_keyboard_variant.d.ts +0 -4
  326. package/lib/lib/select_languages.d.ts +0 -1
  327. package/lib/lib/select_regions.d.ts +0 -1
  328. package/lib/lib/select_user_swap_choice.d.ts +0 -1
  329. package/lib/lib/select_zones.d.ts +0 -1
  330. package/lib/lib/utils.d.ts +0 -43
@@ -0,0 +1,377 @@
1
+ "use strict";
2
+ /**
3
+ * converters.js
4
+ */
5
+ var utils = require('../utils');
6
+ var sprintf = require('../sprintf');
7
+ var converters = {
8
+ // option 1: subnet mask
9
+ 1: {
10
+ encode: utils.writeIp,
11
+ decode: utils.readIp
12
+ },
13
+ // option 2: time offset
14
+ 2: {
15
+ encode: function encode(buf, num, value, offset) {
16
+ buf[offset++] = num;
17
+ buf[offset++] = 4;
18
+ utils.writeInt32(buf, value, offset);
19
+ return offset + 4;
20
+ },
21
+ decode: function decode(buf) {
22
+ return utils.readInt32(buf, 0);
23
+ }
24
+ },
25
+ // option 3: routers
26
+ 3: {
27
+ decode: function decode(buf) {
28
+ var i, numRecords, pos, records;
29
+ numRecords = buf.length / 4;
30
+ pos = 0;
31
+ records = [];
32
+ i = 0;
33
+ while (i < numRecords) {
34
+ records.push(sprintf("%d.%d.%d.%d", buf[pos++], buf[pos++], buf[pos++], buf[pos++]));
35
+ i++;
36
+ }
37
+ return records;
38
+ },
39
+ encode: function encode(buf, num, data, offset) {
40
+ var routers;
41
+ routers = data;
42
+ buf[offset++] = num;
43
+ buf[offset++] = routers.length * 4;
44
+ routers.forEach(function (ip) {
45
+ return ip.split(".").forEach(function (item) {
46
+ buf[offset++] = item;
47
+ });
48
+ });
49
+ return offset;
50
+ }
51
+ },
52
+ // option 6: dns servers
53
+ 6: {
54
+ decode: function (buf) {
55
+ var i, numRecords, pos, records;
56
+ numRecords = buf.length / 4;
57
+ pos = 0;
58
+ records = [];
59
+ i = 0;
60
+ while (i < numRecords) {
61
+ records.push(sprintf("%d.%d.%d.%d", buf[pos++], buf[pos++], buf[pos++], buf[pos++]));
62
+ i++;
63
+ }
64
+ return records;
65
+ },
66
+ encode: function (buf, num, data, offset) {
67
+ var routers;
68
+ routers = data.split(",");
69
+ buf[offset++] = num;
70
+ buf[offset++] = routers.length * 4;
71
+ routers.forEach(function (ip) {
72
+ return ip.split(".").forEach(function (item) {
73
+ buf[offset++] = item;
74
+ });
75
+ });
76
+ return offset;
77
+ }
78
+ },
79
+ /*
80
+ // option 119: dns search list
81
+ 119: {
82
+ encode: null,
83
+ decode: null
84
+ },
85
+ */
86
+ // option 12: hostname
87
+ 12: {
88
+ encode: utils.writeString,
89
+ decode: utils.readString
90
+ },
91
+ // option 15: dns domain name
92
+ 15: {
93
+ encode: utils.writeString,
94
+ decode: utils.readString
95
+ },
96
+ // option 28: broadcast address
97
+ 28: {
98
+ encode: utils.writeIp,
99
+ decode: utils.readIp
100
+ },
101
+ // option 31: router discovery
102
+ 31: {
103
+ encode: function (buf, num, value, offset) {
104
+ buf[offset++] = num;
105
+ buf[offset++] = 1;
106
+ utils.writeInt8(buf, value, offset);
107
+ return offset + 1;
108
+ },
109
+ decode: function (buf) {
110
+ return utils.readInt8(buf, 0);
111
+ }
112
+ },
113
+ // option 33: static routes
114
+ 33: {
115
+ decode: function decode(buf) {
116
+ var i, numRecords, pos, records;
117
+ numRecords = buf.length / 4;
118
+ pos = 0;
119
+ records = [];
120
+ i = 0;
121
+ while (i < numRecords) {
122
+ records.push(sprintf("%d.%d.%d.%d", buf[pos++], buf[pos++], buf[pos++], buf[pos++]));
123
+ i++;
124
+ }
125
+ return records;
126
+ },
127
+ encode: function encode(buf, num, data, offset) {
128
+ var routers;
129
+ routers = data.split(",");
130
+ buf[offset++] = num;
131
+ buf[offset++] = routers.length * 4;
132
+ routers.forEach(function (ip) {
133
+ return ip.split(".").forEach(function (item) {
134
+ buf[offset++] = item;
135
+ });
136
+ });
137
+ return offset;
138
+ }
139
+ },
140
+ // option 43: vendor specific information
141
+ 43: {
142
+ decode: function (buf) {
143
+ var records = [];
144
+ var i = 0;
145
+ var len = buf.length;
146
+ while (i < len) {
147
+ records.push(sprintf("%02x", buf[i]));
148
+ i++;
149
+ }
150
+ return records.join(':');
151
+ },
152
+ encode: function (buf, num, data, offset) {
153
+ vendorinfo = data.split(":");
154
+ buf[offset++] = num;
155
+ buf[offset++] = vendorinfo.length;
156
+ vendorinfo.forEach(function (hex) {
157
+ buf[offset++] = parseInt(hex, 16);
158
+ });
159
+ return offset;
160
+ }
161
+ },
162
+ // option 44: netbios name servers
163
+ 44: {
164
+ decode: function (buf) {
165
+ var i, numRecords, pos, records;
166
+ numRecords = buf.length / 4;
167
+ pos = 0;
168
+ records = [];
169
+ i = 0;
170
+ while (i < numRecords) {
171
+ records.push(sprintf("%d.%d.%d.%d", buf[pos++], buf[pos++], buf[pos++], buf[pos++]));
172
+ i++;
173
+ }
174
+ return records;
175
+ },
176
+ encode: function (buf, num, data, offset) {
177
+ var routers;
178
+ routers = data.split(",");
179
+ buf[offset++] = num;
180
+ buf[offset++] = routers.length * 4;
181
+ routers.forEach(function (ip) {
182
+ return ip.split(".").forEach(function (item) {
183
+ buf[offset++] = item;
184
+ });
185
+ });
186
+ return offset;
187
+ }
188
+ },
189
+ // option 46: netbios node type
190
+ 46: {
191
+ decode: function (buf) {
192
+ return parseInt(buf[0], 16);
193
+ },
194
+ encode: function (buf, num, value, offset) {
195
+ buf[offset++] = num;
196
+ buf[offset++] = 1;
197
+ buf[offset++] = parseInt(buf[0], 10).toString(16);
198
+ return offset;
199
+ }
200
+ },
201
+ // option 47: netbios node type
202
+ 47: {
203
+ encode: utils.writeString,
204
+ decode: utils.readString
205
+ },
206
+ // option 50: requested ip address
207
+ 50: {
208
+ encode: utils.writeIp,
209
+ decode: utils.readIp
210
+ },
211
+ // option 51: lease time
212
+ 51: {
213
+ decode: function (buf) {
214
+ return utils.readInt32(buf, 0);
215
+ },
216
+ encode: function (buf, num, value, offset) {
217
+ buf[offset++] = num;
218
+ buf[offset++] = 4;
219
+ utils.writeInt32(buf, value, offset);
220
+ return offset + 4;
221
+ }
222
+ },
223
+ // option 53: message type
224
+ 53: {
225
+ decode: function (buf) {
226
+ return parseInt(buf[0], 10);
227
+ },
228
+ encode: function (buf, num, value, offset) {
229
+ buf[offset++] = 53;
230
+ buf[offset++] = 1;
231
+ buf[offset++] = value;
232
+ return offset;
233
+ }
234
+ },
235
+ // option 54: server identifier
236
+ 54: {
237
+ encode: utils.writeIp,
238
+ decode: function decode(buf) {
239
+ return utils.readIp(buf, 0);
240
+ }
241
+ },
242
+ // option 55: parameter request list
243
+ 55: {
244
+ decode: function decode(buf) {
245
+ var records = [];
246
+ var i = 0;
247
+ var len = buf.length;
248
+ while (i < len) {
249
+ records[i] = buf[i];
250
+ i++;
251
+ }
252
+ return records;
253
+ },
254
+ encode: function encode(buf, num, data, offset) {
255
+ buf[offset++] = num;
256
+ buf[offset++] = data.length;
257
+ utils.writeBytes(buf, data, offset);
258
+ // var i = 0;
259
+ // while(i < data.length) {
260
+ // utils.writeBytes(buf, data[i], offset);
261
+ // i++;
262
+ // offset++;
263
+ // }
264
+ return offset;
265
+ }
266
+ },
267
+ // option 57: max message size
268
+ 57: {
269
+ encode: function (buf, num, value, offset) {
270
+ buf[offset++] = 57;
271
+ buf[offset++] = 2;
272
+ utils.writeInt16(buf, value, offset);
273
+ return offset + 2;
274
+ },
275
+ decode: function (buf) {
276
+ return utils.readInt16(buf, 0);
277
+ }
278
+ },
279
+ // option 60: vendor class identifier
280
+ 60: {
281
+ encode: utils.writeString,
282
+ decode: utils.readString
283
+ },
284
+ // option 61: client identifier
285
+ 61: {
286
+ encode: function (buf, num, value, offset) {
287
+ return offset;
288
+ },
289
+ decode: function (buf) {
290
+ var j, s, type;
291
+ s = [];
292
+ type = buf[0];
293
+ j = 1;
294
+ while (j < buf.length) {
295
+ s.push(sprintf("%02x", buf[j]));
296
+ j++;
297
+ }
298
+ return [type, s.join(":")];
299
+ }
300
+ },
301
+ // option 67: bootfile name
302
+ 67: {
303
+ encode: utils.writeString,
304
+ decode: utils.readString
305
+ },
306
+ // option 77: user class information
307
+ 77: {
308
+ encode: utils.writeString,
309
+ decode: function (buf) {
310
+ var records = [];
311
+ var offset = 0;
312
+ while (buf[offset]) {
313
+ var uc_len = buf[offset];
314
+ var uc_data = buf.slice(offset++, uc_len);
315
+ offset += uc_len;
316
+ records.push(uc_data.toString('ascii'));
317
+ }
318
+ return records.join(':');
319
+ }
320
+ },
321
+ // option 83: client fqdn
322
+ 83: {
323
+ encode: function (buf, num, value, offset) {
324
+ return offset;
325
+ },
326
+ decode: function (buf) {
327
+ var ret;
328
+ ret = "";
329
+ ret += sprintf("%d", buf[0]) + "-";
330
+ ret += sprintf("%d", buf[1]) + "-";
331
+ ret += sprintf("%d", buf[2]) + " ";
332
+ ret += utils.toString(buf.slice(3));
333
+ return ret;
334
+ }
335
+ },
336
+ // option 175: etherboot
337
+ 175: {
338
+ encode: function (buf, num, value, offset) {
339
+ return offset;
340
+ },
341
+ decode: function (buf) {
342
+ var j, s;
343
+ s = [];
344
+ j = 1;
345
+ while (j < buf.length) {
346
+ s.push(sprintf("%02x", buf[j]));
347
+ j++;
348
+ }
349
+ return s.join(":");
350
+ }
351
+ },
352
+ // option 255: end
353
+ 255: {
354
+ encode: function (buf, num, value, offset) {
355
+ utils.writeInt8(buf, 255, offset);
356
+ return offset + 1;
357
+ },
358
+ decode: function (buf) {
359
+ return undefined;
360
+ }
361
+ }
362
+ };
363
+ var stub = {
364
+ encode: function (buf, num, value, offset) {
365
+ // console.error("[dhcproxy] encoder for option " + num + " not found");
366
+ return offset;
367
+ },
368
+ decode: function (buf, num) {
369
+ // console.error("[dhcproxy] decoder for option " + num + " not found");
370
+ // console.log(" buffer:", buf);
371
+ return null;
372
+ }
373
+ };
374
+ module.exports = function (i) {
375
+ //console.log("GET CONVERTER FOR " + i);
376
+ return (i in converters) ? converters[i] : stub;
377
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ module.exports = ["pad", "Subnet mask", "Time offset", "Routers", "Time server", "Name server", "DNS server", "Log server", "Cookie server", "LPR server", "Impress server", "Resource location server", "Host name", "Boot file size", "Merit dump file", "Domainname", "Swap server", "Root path", "Extensions path", "IP forwarding", "Non-local source routing", "Policy filter", "Maximum datagram reassembly size", "Default IP TTL", "Path MTU aging timeout", "Path MTU plateau table", "Interface MTU", "All subnets local", "Broadcast address", "Perform mask discovery", "Mask supplier", "Perform router discovery", "Router solicitation", "Static route", "Trailer encapsulation", "ARP cache timeout", "Ethernet encapsulation", "TCP default TTL", "TCP keepalive interval", "TCP keepalive garbage", "NIS domain", "NIS servers", "NTP servers", "Vendor specific info", "NetBIOS name server", "NetBIOS datagram distribution server", "NetBIOS node type", "NetBIOS scope", "X Window System font server", "X Window System display server", "Request IP address", "IP address leasetime", "Option overload", "DHCP message type", "Server identifier", "Parameter Request List", "Message", "Maximum DHCP message size", "T1", "T2", "Vendor class identifier", "Client-identifier", "Netware/IP domain name", "Netware/IP domain information", "NIS+ domain", "NIS+ servers", "TFTP server name", "Bootfile name", "Mobile IP home agent", "SMTP server", "POP3 server", "NNTP server", "WWW server", "Finger server", "IRC server", "StreetTalk server", "StreetTalk directory assistance server", "User-class Identification", "SLP-directory-agent", "SLP-service-scope", "Naming Authority", "Client FQDN", "Relay Agent Information", "Agent Remote ID", "Agent Subnet Mask", "NDS server", "NDS tree name", "NDS context", "IEEE 1003.1 POSIX", "FQDN", "Authentication", "Vines TCP/IP", "Server Selection", "Client System", "Client NDI", "LDAP", "IPv6 Transitions", "UUID/GUID", "UPA servers", "???", "Printer Name", "MDHCP", "???", "???", "???", "???", "???", "???", "Swap Path", "???", "IPX Compatability", "???", "Netinfo Address", "Netinfo Tag", "URL", "DHCP Failover", "DHCP Autoconfiguration", "Name Service Search", "Subnet selection", "Domain Search", "SIP Servers DHCP Option", "Classless Static Route", "???", "???", "???", "???", "Extension", "Extension", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "HP - TFTP file", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "Authenticate", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "???", "MSFT - Classless route", "???", "???", "MSFT - WinSock Proxy Auto Detect", "???", "???", "End"];
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ module.exports = ["unknown dhcp message type", "DHCPDISCOVER", "DHCPOFFER", "DHCPREQUEST", "DHCPDECLINE", "DHCPACK", "DHCPNAK", "DHCPRELEASE", "DHCPINFORM"];
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var utils = require('./utils');
3
+ var get_convert = require('./packet/converters');
4
+ /**
5
+ *
6
+ */
7
+ class Packet {
8
+ constructor(array) {
9
+ var key;
10
+ for (key in array) {
11
+ if (array.hasOwnProperty(key)) {
12
+ this[key] = array[key];
13
+ }
14
+ }
15
+ }
16
+ /**
17
+ *
18
+ * @returns
19
+ */
20
+ getRequestedIPAddress() {
21
+ return this.options[50];
22
+ }
23
+ /**
24
+ *
25
+ * @param {*} op
26
+ * @returns
27
+ */
28
+ op(op) {
29
+ this.op = op;
30
+ return this;
31
+ }
32
+ /**
33
+ *
34
+ * @param {*} htype
35
+ * @returns
36
+ */
37
+ htype(htype) {
38
+ this.htype = htype;
39
+ return this;
40
+ }
41
+ /**
42
+ *
43
+ * @param {*} hlen
44
+ * @returns
45
+ */
46
+ hlen(hlen) {
47
+ this.hlen = hlen;
48
+ return this;
49
+ }
50
+ hops(hops) {
51
+ this.hops = hops;
52
+ return this;
53
+ }
54
+ /**
55
+ *
56
+ * @param {*} xid
57
+ * @returns
58
+ */
59
+ xid(xid) {
60
+ this.xid = xid;
61
+ return this;
62
+ }
63
+ /**
64
+ *
65
+ * @param {*} secs
66
+ * @returns
67
+ */
68
+ secs(secs) {
69
+ this.secs = secs;
70
+ return this;
71
+ }
72
+ flags(flags) {
73
+ this.flags = flags;
74
+ return this;
75
+ }
76
+ /**
77
+ *
78
+ * @param {*} ciaddr
79
+ * @returns
80
+ */
81
+ ciaddr(ciaddr) {
82
+ this.ciaddr = ciaddr !== null ? ciaddr : '0.0.0.0';
83
+ return this;
84
+ }
85
+ /**
86
+ *
87
+ * @param {*} yiaddr
88
+ * @returns
89
+ */
90
+ yiaddr(yiaddr) {
91
+ this.yiaddr = yiaddr !== null ? yiaddr : '0.0.0.0';
92
+ return this;
93
+ }
94
+ /**
95
+ *
96
+ * @param {*} siaddr
97
+ * @returns
98
+ */
99
+ siaddr(siaddr) {
100
+ this.siaddr = siaddr !== null ? siaddr : '0.0.0.0';
101
+ return this;
102
+ }
103
+ /**
104
+ *
105
+ * @param {*} giaddr
106
+ * @returns
107
+ */
108
+ giaddr(giaddr) {
109
+ this.giaddr = giaddr !== null ? giaddr : '0.0.0.0';
110
+ return this;
111
+ }
112
+ /**
113
+ *
114
+ * @param {*} chaddr
115
+ * @returns
116
+ */
117
+ chaddr(chaddr) {
118
+ this.chaddr = chaddr;
119
+ return this;
120
+ }
121
+ /**
122
+ *
123
+ * @param {*} sname
124
+ * @returns
125
+ */
126
+ sname(sname) {
127
+ this.sname = sname;
128
+ return this;
129
+ }
130
+ /**
131
+ *
132
+ * @param {*} fname
133
+ * @returns
134
+ */
135
+ fname(fname) {
136
+ this.fname = fname;
137
+ return this;
138
+ }
139
+ /**
140
+ *
141
+ * @param {*} options
142
+ * @returns
143
+ */
144
+ options(options) {
145
+ this.options = options;
146
+ return this;
147
+ }
148
+ }
149
+ /**
150
+ *
151
+ * @param {*} str
152
+ * @returns
153
+ */
154
+ function stripBinNull(str) {
155
+ var pos;
156
+ pos = str.indexOf('\u0000');
157
+ if (pos === -1) {
158
+ return str;
159
+ }
160
+ else {
161
+ return str.substr(0, pos);
162
+ }
163
+ }
164
+ var fromBuffer = function (b) {
165
+ var i, optLen, optNum, optVal, options, ret, _ref;
166
+ ret = {
167
+ op: b[0],
168
+ htype: b[1],
169
+ hlen: b.readUInt8(2),
170
+ hops: b.readUInt8(3),
171
+ xid: b.readUInt32BE(4),
172
+ secs: b.readUInt16BE(8),
173
+ flags: b.readUInt16BE(10),
174
+ ciaddr: utils.readIp(b, 12),
175
+ yiaddr: utils.readIp(b, 16),
176
+ siaddr: utils.readIp(b, 20),
177
+ giaddr: utils.readIp(b, 24),
178
+ chaddr: utils.readMacAddress(b.slice(28, 28 + b.readUInt8(2))),
179
+ sname: stripBinNull(b.toString('ascii', 44, 108)),
180
+ fname: stripBinNull(b.toString('ascii', 108, 236)),
181
+ options: {}
182
+ };
183
+ _ref = [0, b.slice(240)];
184
+ i = _ref[0];
185
+ options = _ref[1];
186
+ while (i < options.length && options[i] !== 255) {
187
+ optNum = parseInt(options[i++], 10);
188
+ optLen = parseInt(options[i++], 10);
189
+ var converter = get_convert(optNum);
190
+ optVal = converter.decode(options.slice(i, i + optLen), optNum);
191
+ ret.options[optNum] = optVal;
192
+ i += optLen;
193
+ }
194
+ return new Packet(ret);
195
+ };
196
+ var toBuffer = function () {
197
+ var buffer, hex, i, key, octet, opt, padded, pos, value, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref, _ref1, _ref2, _ref3;
198
+ buffer = new Buffer.alloc(512, 0x00, 'ascii');
199
+ buffer[0] = this.op;
200
+ buffer[1] = this.htype;
201
+ buffer.writeUInt8(this.hlen, 2);
202
+ buffer.writeUInt8(this.hops, 3);
203
+ buffer.writeUInt32BE(this.xid, 4);
204
+ buffer.writeUInt16BE(this.secs, 8);
205
+ buffer.writeUInt16BE(this.flags, 10);
206
+ pos = 12;
207
+ _ref = ["ciaddr", "yiaddr", "siaddr", "giaddr"];
208
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
209
+ key = _ref[_i];
210
+ _ref1 = (this[key] || "0.0.0.0").split(".");
211
+ for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
212
+ octet = _ref1[_j];
213
+ buffer.writeUInt8(parseInt(octet, 10), pos++);
214
+ }
215
+ }
216
+ _ref2 = this.chaddr.split(':');
217
+ for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) {
218
+ hex = _ref2[_k];
219
+ buffer[pos++] = parseInt(hex, 16);
220
+ }
221
+ buffer.fill(0, 43, 235);
222
+ buffer.write(this.sname, 43, 64, 'ascii');
223
+ if (typeof this.fname === 'string' || this.fname instanceof String) {
224
+ buffer.write(this.fname, 108, 128, 'ascii');
225
+ }
226
+ pos = 236;
227
+ _ref3 = [99, 130, 83, 99];
228
+ for (_l = 0, _len3 = _ref3.length; _l < _len3; _l++) {
229
+ i = _ref3[_l];
230
+ buffer[pos++] = i;
231
+ }
232
+ pos = 240;
233
+ for (opt in this.options) {
234
+ if (this.options.hasOwnProperty(opt)) {
235
+ value = this.options[opt];
236
+ var converter = get_convert(opt);
237
+ pos = converter.encode(buffer, opt, value, pos);
238
+ }
239
+ }
240
+ buffer[pos] = 255;
241
+ padded = new Buffer.alloc(pos, 0x00, 'ascii');
242
+ buffer.copy(padded, 0, 0, pos);
243
+ return padded;
244
+ };
245
+ Packet.fromBuffer = fromBuffer;
246
+ Packet.prototype.toBuffer = toBuffer;
247
+ module.exports = {
248
+ Packet: Packet,
249
+ fromBuffer: fromBuffer,
250
+ toBuffer: toBuffer
251
+ };