2.0.0 • Published 4 years ago

pxe-server v2.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

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