pxe-server
v2.0.0
Published
A simple JavaScript PXE server implemented with node.js. It's built on top of the the excellent dhcp and tftp npm modules. Feedback or contributions welcome.
Downloads
9
Readme
Overview
A simple JavaScript PXE server implemented with node.js. It's built on top of the the excellent dhcp and tftp npm modules. Feedback or contributions welcome.
See https://tools.ietf.org/html/rfc4578 for more details on the PXE sever protocol.
Features
- No platform specific code - should run anywhere node.js can. Can be compiled to native code with pkg
- A REST API for getting client PC details, can be disabled
- JSON configuration files
- Can configure a PXE Linux install
- Run at CLI or import with require
Usage
Command line
Simply call the module (run node index.js or npx pxe-server if installed with npm) at the command line with a path to to an options file (see below) as the first and only argument.
JavaScript API
Start server
const pxeServer = require(pxe-server);
const options = require(PATH_TO_OPTIONS_JSON_FILE);
pxeServer.initialize(options);
Get clients
let clients = pxeServer.getClients();
Get IP Map
let IpMap = pxeServer.getIpMap();
REST API
- /clients - Get list of client PCs
- /ipmap - Get IP map
Options
This tool is designed to load options from a JSON file as there will be rather a lot of them, though of course you could construct a JS object any way you want if calling from a program. The options.json file supplied with the module is an complete, working example - you can just tweak the settings for your environment.
Troubleshooting
TFTP request aborted or file not found errors are relatively normal errors. Please note that this module needs to be run as root on Linux or as member of the Administrators group on Windows due to the need to bind to ports below 1024 for DHCP and TFTP.
Aside from this, most problems would be due to the underlying DHCP or TFTP modules.
Todo
- Better way of handling errors and events when invoked from a JavaScript program
- Better command-line arg handling