ON THIS PAGE
The networkconfiguration object allows for configuration of the network interfaces on the player. Each object instance corresponds to a single network interface (Ethernet, WiFi, or modem), which is specified using the type
attribute.
This object only allows you to configure/retrieve settings related to the network interfaces on the device. For other network information, use the Node.js OS module.
Object Creation
To create a networkconfiguration object, first load the brightsign/networkconfiguration
module using the require()
method. Then create an instance of the networkconfiguration class using a string value that indicates the network interface associated with the instance.
var NetworkConfigClass = require("@brightsign/networkconfiguration"); var networkConfigEth = new NetworkConfigClass("eth0");
NetworkInterface
Use this interface to configure a network interface on the player.
getConfig()
Promise<NetworkInterfaceConfig> getConfig(NetworkInterfaceConfigRequestParams params[optional])
Returns configuration settings for the network interface. Depending on the specified type
, this method will return an EthernetInterfaceConfig
, WiFiInterfaceConfig
, or ModemInterfaceConfig
interface. If there is a set password, getConfig()
will return true for the password
parameter. If there isn't a set password, getConfig()
will return false for the password
parameter.
Note that this class concerns itself with the player's persistent network configuration. If you wish to determine the current settings (for example the IP address that has been retrieved via DHCP) then use the Node.js os module.
applyConfig()
Promise<void> applyConfig(NetworkInterfaceConfig config)
Configures the network interface using the parameters in the passed NetworkInterfaceConfig object. This method returns void upon success.
To reset a network-interface setting to its default value, pass the NetworkInterfaceConfig object without the corresponding attribute.
The config
parameter should contain the complete desired configuration. Any previous configuration is overwritten. If you wish to change one item while keeping the rest of the configuration the same then first call getConfig
and modify the returned object (see the example in the Examples section).
getNeighborInformation()
Promise<LLDPNeighborInformation> getNeighborInformation()
Returns LLDP information related to the network. This method is available with the ethernet interface only.
enableLeds()
Promise<void> enableLeds()
Enables or disables the ethernet activity LEDs (that is, flashing during link and activity behavior). Ethernet LEDs are enabled by default. Changes to this setting do not persist across reboots. This method is available with the ethernet interface only.
scan()
Promise<WifiAccessPointList> scan()
Scans for WiFi access points are returns a list of detected access points. This method is available with the WiFi interface only.
Attributes
[String] type
: The network interface type, which can one of the following:"eth0"
: The ethernet port on the BrightSign player"wlan0"
: The internal WiFi"ppp0"
: A connected modem
Tip
The network interface can be configured as a VLAN using the following string format: "[parent_interface].[vlan_id]"
(e.g "eth0.42"
). Once the VLAN interface(s) are configured, they must be enabled on the parent network interface (e.g. "eth0") by including them in the vlanIdList
of the parent interface. VLAN interfaces use DHCP by default. They are supported on Series 4 (XTx44, XDx34, HDx24, LS424) and Series 3 (XTx43, XDx33, HDx23, LS423, HO523) players only.
WifiAccessPointList
This interface represents the results of a scan for wireless networks. Each entry in the list contains the following parameters:
[String] essId
: the WiFi ESSId network name[String] bssId
: the BSSID of the access point[long] signal
: The received signal strength. The absolute value of this attribute is usually not relevant, but it can be compared with the reported value on other networks or in different locations.
LLDPNeighborInformation
This interface contains location information received from the network infrastructure using the LLDP-MED protocol.
NetworkInterfaceConfigRequestParams
-
[bool] includeEncryptedSecrets:
NetworkInterfaceConfig
This interface contains settings related to a network interface.
[long] metric
: The routing metric for the default gateway on the interface. Routes with lower metrics are preferred over routes with higher metrics.[DHCPServerConfig] dhcpServerConfig
: A DHCPServerConfig interface that specifies the DHCP server configuration for the interface. The DHCP server can be disabled by setting this attribute to a null value when callingapplyConfig()
.[Array<String>] dnsServerList
: A string list containing a maximum of three DNS servers. Each string should contain the dotted-quad IP address of a DNS server.[Array<IPAddress>] ipAddressList
: An array containing zero or one static IPv4 address configurations. Players do not currently support more than one IPv4 address per interface or static configuration of IPv6 addresses. If the array is empty then IP addresses will be assigned using DHCP.[long] inboundShaperRate
: If defined, the bandwidth limit for inbound traffic in bits per second. If undefined, there is no bandwidth limit.Note
Because of overhead on the shaping algorithm, attempting to limit the bandwidth at rates greater than approximately 2Mbit/s will reduce speeds to less than the specified rate.
[long] mtu
: The maximum transmission unit (MTU) for the network interface in bytes[Array<int>] vlanIdList
: A list of VLAN IDs that this network interface is the parent for.[String] clientIdentifier
: The DHCP client identifier for the network interface[String] domain
: The domain name for the network interface[Array<String>] enabledProtocolList
: An optional array containing the set of enabled IP protocols. The default value is [IPv4
,IPv6
].
DialUpInterfaceConfig
This interface contains attributes related to the modem interface:
[String] user:
[String] password:
[String] number:
[String] initString:
DHCPServerConfig
This interface contains settings related to the DHCP server on the WiFi access point. This interface is only applicable if the player is using WiFi access-point mode.
[String] start
: the beginning of the range of offered IP addresses[String] end
: the end of the range of offered IP addresses[optional] [String] gateway:
IPv4 address of the gateway to be used by clients.[optional] [Array<String>] dnsServerList: a
n array of strings containing the IPv4 addresses of name servers (IPv6 addresses are not currently supported)[optional] [String] domain:
domain suffix to be used by clients
IPAddress
This interface represents an IP address configuration.
[String] family
: The IP configuration (must be set toIPv4
).[String] address
: The IP address[String] netmask
: The netmask[String] gateway
: The gateway[String] broadcast
: The broadcast address
EthernetInterfaceConfig
[String] securityMode:
[String] identity:
The RADIUS identity. If this value is blank, it will be taken from the specified client certificate ("subjectAltName" will be used if present; otherwise, the "commonName" is used).[String] eapTlsOptions:
A string containing EAP-specific options[String] caCertificates:
The contents of a CA certificate file in text form (that is, a "pem" file)[String] clientCertificate:
The contents of a client certificate file in text form (that is, a "pem" file)[String] privateKey:
The private key for authentication
WifiInterfaceConfig
This interface contains attributes related to the WiFi interface:
[String] essId
: The ESSID of the wireless network[String] passphrase
: The plain-text passphrase/key for the wireless network[optional] [String] obfuscatedPassphrase
: The passphrase/key for the wireless network that has been obfuscated using a shared secret.
Note
Contact support@brightsign.biz to learn more about generating a key for obfuscation and storing it on the player.
The following attributes relate to WPA Enterprise support:
[String] securityMode:
[String] identity
: The RADIUS identity. If this value is blank, it will be taken from the specified client certificate ("subjectAltName" will be used if present; otherwise, the "commonName" is used).[String] eapTlsOptions
: A string that contains EAP-specific options. Currently, this string can be used to enable or disable MD5 support ("md5=enable" or "md5=disable").[String] caCertificates
: The contents of a CA certificate file in text form (i.e. a "pem" file). Certificates can also be sent from an EAP peer.[String] clientCertificate
: The contents of a client certificate in text form (i.e. a "pem" file)[String] privateKey
: The private key for authentication. If the private key is password protected, use thepassphrase
/obfuscatedPassphrase
attribute to set the password.Note
If the client certificate and associated private key are in the same PKCS#12 file, the file contents should be specified in the
privateKey
field and theclientCertificate
field should be left blank.[String] frequencies:
: A Boolean flag specifying whether WiFi access-point mode is enabled or disabled. The ESSID and passphrase of the WiFi access point is set with the[optional]
[bool] accessPointModeessId
andpassphrase
/obfuscatedPassphrase
attributes. If a passphrase has been set, the wireless access point will use WPA2 authentication–otherwise, it will use no authentication.
: The frequency of the WiFi access point (in MHz)[optional]
[long] accessPointFrequency
A Boolean flag that specifies if hidden is true, the SSID is hidden, if false it is visible. The default is non-hidden, which was the previous behavior.[optional]
[bool] accessPointHidden:
Examples
var networkConfigClass = require("@brightsign/networkconfiguration"); var nc = new networkConfigClass("Ethernet"); nc.getConfig().then( function(data) { console.log("***General Interface Data***"); console.log(JSON.stringify(data)); }) .catch( function(data) { console.log(JSON.stringify(data)); });
The following code applies a static IP address to the Ethernet interface. If a static IP address is not provided, it configures the interface for DHCP instead:
function main() { process.chdir('/storage/sd'); var networkConfig = { ipAddress:"10.0.1.20", defaultGateway:"10.0.1.1", subnetMask:"255.255.255.0", broadcast: "10.0.1.255" }; var networkConfigClass = require("@brightsign/networkconfiguration"); var networkConfigEthernet = new networkConfigClass("eth0"); var networkConfig = {}; networkConfigEthernet.getConfig() .then( function(data) { console.log("=== Current config: " + JSON.stringify(data)); networkConfig = data; if (networkConfig.dnsServers) { networkConfig.dnsServerList = networkConfig.dnsServers; } if (networkConfig.ipAddress) { // Use static IP address. var ipAddress = { family: "IPv4", address: networkConfig.ipAddress, netmask: networkConfig.subnetMask, gateway: networkConfig.defaultGateway, broadcast: networkConfig.broadcast, }; networkConfig.ipAddressList = [ipAddress]; } else { // Use DHCP to obtain dynamic IP address. networkConfig.ipAddressList = []; } console.log("=== Applying config: " + JSON.stringify(networkConfig)); networkConfigEthernet.applyConfig(networkConfig) .then( function () { console.log("=== Success"); }) .catch( function(err) { console.log(err); }); }) .catch( function(err) { console.log(err); }); } window.main = main;
The following code restricts IP version support to IPv4 only:
var networkConfigClass = require("@brightsign/networkconfiguration"); var networkConfigEthernet = new networkConfigClass("eth0"); networkConfigEthernet.getConfig() .then( function(data) { networkConfig = {} networkConfig.enabledProtocolList = ["IPv4"]; networkConfigEthernet.applyConfig(networkConfig) .then( function() { console.log("Success"); }) .catch( function(err) { console.log(err); }); }) .catch( function(err) { console.log(err); });
To change one item while keeping the rest of the configuration the same, call getConfig
and modify the returned object:
var NetworkConfiguration = require('@brightsign/networkconfiguration'); var address = { ipAddress:"10.0.1.20", defaultGateway:"10.0.1.1", subnetMask:"255.255.255.0", broadcast: "10.0.1.255" }; var networkConfig = new NetworkConfiguration("eth0"); networkConfig.getConfig() .then(function(config) { var ipAddress = { family: "IPv4", address: address.ipAddress, netmask: address.subnetMask, gateway: address.defaultGateway, broadcast: address.broadcast, }; config.ipAddressList = [ipAddress]; networkConfig.applyConfig(config); }) .then(function() { console.log("Success"); }) .catch(function(error) { console.log(`${JSON.stringify(error)}`); });