Class: Core

Core()

Provide core functionality for Onvif Device Management.

https://www.onvif.org/onvif/specs/core/ONVIF-Core-Specification-v220.pdf
https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
https://www.onvif.org/ver10/events/wsdl/event.wsdl

Functions

Core#getWsdlUrl, Core#getServices, Core#getServiceCapabilities, Core#getCapabilities, Core#getHostname, Core#setHostname, Core#setHostnameFromDHCP, Core#getDNS, Core#setDNS, Core#getNTP, Core#setNTP, Core#getDynamicDNS, setDynamicDNS, Core#getNetworkInterfaces, setNetworkInterfaces, Core#getNetworkProtocols, Core#getNetworkDefaultGateway, setNetworkDefaultGateway, Core#getZeroConfiguration, setZeroConfiguration, Core#getIPAddressFilter, setIPAddressFilter, addIPAddressFilter, removeIPAddressFilter, Core#getDot11Capabilities, Core#getDot11Status, Core#scanAvailableDot11Networks, Core#getDeviceInformation, Core#getSystemUris, Core#getSystemBackup, restoreSystem, startSystemRestore, Core#getSystemDateAndTime, setSystemDateAndTime, setSystemFactoryDefault, upgradeSystemFirmware, startFirmwareUpgrade, Core#getSystemLog, Core#getSystemSupportInformation, Core#systemReboot, Core#getScopes, setScopes, addScopes, removeScopes, Core#getGeoLocation, setGeoLocation, deleteGeoLocation, Core#getDiscoveryMode, setDiscoveryMode, Core#getRemoteDiscoveryMode, setRemoteDiscoveryMode, Core#getDPAddresses, setDPAddresses, Core#getAccessPolicy, setAccessPolicy Core#getUsers, createUsers, deleteUsers, setUser, createDot1XConfiguration, setDot1XConfiguration, Core#getDot1XConfiguration, Core#getDot1XConfigurations, deleteDot1XConfigurations, createCertificate, Core#getCertificates, Core#getCACertificates, Core#getCertificatesStatus, setCertificatesStatus, getPkcs10Request, Core#getClientCertificateMode, setClientCertificateMode, loadCertificates, loadCertificateWithPrivateKey, getCertificateInformation, loadCACertificates, deleteCertificates, Core#getRemoteUser, setRemoteUser, Core#getEndpointReference, Core#getRelayOutputs, setRelayOutputSettings, setRelayOutputState, sendAuxiliaryCommand

Overview

The Device Service is divided into five different categories: capabilities, network, system, I/O and security commands. This set of commands can be used to get information about the device capabilities and configurations or to set device configurations. An ONVIF compliant device shall support the device management service as specified in [ONVIF DM WSDL]. A basic set of operations are required for the device management service, other operations are recommended or optional to support. The detailed requirements are listed under the command descriptions.

Constructor

new Core()

Source:

Methods

createRequest(body)

Private function for creating a SOAP request.
Parameters:
Name Type Description
body string The body of the xml.
Source:

getAccessPolicy(callbackopt)

Access to different services and sub-sets of services should be subject to access control. The WS-Security framework gives the prerequisite for end-point authentication. Authorization decisions can then be taken using an access security policy. This standard does not mandate any particular policy description format or security policy but this is up to the device manufacturer or system provider to choose policy and policy description format of choice. However, an access policy (in arbitrary format) can be requested using this command. If the device supports access policy settings based on WS-Security authentication, then the device shall support this command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getCACertificates(callbackopt)

CA certificates will be loaded into a device and be used for the sake of following two cases.
The one is for the purpose of TLS client authentication in TLS server function. The other one is for the purpose of Authentication Server authentication in IEEE 802.1X function. This operation gets all CA certificates loaded into a device. A device that supports either TLS client authentication or IEEE 802.1X shall support this command and the returned certificates shall be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding rules.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getCapabilities(callbackopt)

This method provides a backward compatible interface for the base capabilities. Refer to GetServices for a full set of capabilities.
Annex A describes how to interpret the indicated capability. Apart from the addresses, the capabilities only reflect optional functions in this specification.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getCertificates(callbackopt)

This operation gets all device server certificates (including self-signed) for the purpose of TLS authentication and all device client certificates for the purpose of IEEE 802.1X authentication.
This command lists only the TLS server certificates and IEEE 802.1X client certificates for the device (neither trusted CA certificates nor trusted root certificates). The certificates are returned as binary data. A device that supports TLS shall support this command and the certificates shall be encoded using ASN.1 [X.681], [X.682], [X.683] DER [X.690] encoding rules.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getCertificatesStatus(callbackopt)

This operation is specific to TLS functionality. This operation gets the status (enabled/disabled) of the device TLS server certificates. A device that supports TLS shall support this command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getClientCertificateMode(callbackopt)

This operation is specific to TLS functionality. This operation gets the status (enabled/disabled) of the device TLS client authentication. A device that supports TLS shall support this command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDeviceInformation(callbackopt)

This operation gets device information, such as manufacturer, model and firmware version from a device. The device shall support the return of device information through the GetDeviceInformation command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDiscoveryMode(callbackopt)

This operation gets the discovery mode of a device
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDNS(callbackopt)

This operation gets the DNS settings from a device. The device shall return its DNS configurations through the GetDNS command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDot1XConfiguration(dot1XConfigurationToken, callbackopt)

This operation gets one IEEE 802.1X configuration parameter set from the device by specifying the configuration token (Dot1XConfigurationToken).
The device shall support this command if support for IEEE 802.1X is signaled via the Security Dot1X capability.
Regardless of whether the 802.1X method in the retrieved configuration has a password or not, the device shall not include the Password element in the response.
Parameters:
Name Type Attributes Description
dot1XConfigurationToken string Dot1XConfigurationToken [ReferenceToken]
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDot1XConfigurations(callbackopt)

This operation gets all the existing IEEE 802.1X configuration parameter sets from the device.
The device shall respond with all the IEEE 802.1X configurations so that the client can get to know how many IEEE 802.1X configurations are existing and how they are configured.
The device shall support this command if support for IEEE 802.1X is signaled via the Security Dot1X capability.
Regardless of whether the 802.1X method in the retrieved configuration has a password or not, the device shall not include the Password element in the response.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDot11Capabilities(callbackopt)

This operation returns the IEEE802.11 capabilities. The device shall support this operation.
Not all do.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDot11Status(interfaceToken, callbackopt)

This operation returns the status of a wireless network interface. The device shall support this command.
Not all do.
Parameters:
Name Type Attributes Description
interfaceToken string Network reference token.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDPAddresses(callbackopt)

This operation gets the remote DP address or addresses from a device. If the device supports remote discovery, as specified in Section 7.4, the device shall support retrieval of the remote DP address(es) through the GetDPAddresses command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getDynamicDNS(callbackopt)

This operation gets the dynamic DNS settings from a device. If the device supports dynamic DNS as specified in [RFC 2136] and [RFC 4702], it shall be possible to get the type, name and TTL through the GetDynamicDNS command
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getEndpointReference(callbackopt)

A client can ask for the device service endpoint reference address property that can be used to derive the password equivalent for remote user operation. The device should support the GetEndpointReference command returning the address property of the device service endpoint reference.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getGeoLocation(callbackopt)

This operation gets the geo location information of a device. A device that signals support for GeoLocation via the capability GeoLocationEntities shall support the retrieval of geo location information via this command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getHostname(callbackopt)

This operation is used by an endpoint to get the hostname from a device. The device shall return its hostname configurations through the GetHostname command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getIPAddressFilter(callbackopt)

This operation gets the IP address filter settings from a device. If the device supports device access control based on IP filtering rules (denied or accepted ranges of IP addresses), the device shall support the GetIPAddressFilter command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getNetworkDefaultGateway(callbackopt)

This operation gets the default gateway settings from a device. The device shall support the GetNetworkDefaultGateway command returning configured default gateway address(es).
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getNetworkInterfaces(callbackopt)

This operation gets the network interface configuration from a device. The device shall support return of network interface configuration settings as defined by the NetworkInterface type through the GetNetworkInterfaces command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getNetworkProtocols(callbackopt)

This operation gets defined network protocols from a device. The device shall support the GetNetworkProtocols command returning configured network protocols.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getNTP(callbackopt)

This operation gets the NTP settings from a device. If the device supports NTP, it shall be possible to get the NTP server settings through the GetNTP command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getRelayOutputs(callbackopt)

This operation gets a list of all available relay outputs and their settings.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getRemoteDiscoveryMode(callbackopt)

This operation gets the remote discovery mode of a device. See Section 7.4 for the definition of remote discovery extensions. A device that supports remote discovery shall support retrieval of the remote discovery mode setting through the GetRemoteDiscoveryMode command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getRemoteUser(callbackopt)

This operation returns the configured remote user (if any). A device that signals support for remote user handling via the Security Capability RemoteUserHandling shall support this operation. The user is only valid for the WS-UserToken profile or as a HTTP / RTSP user.
The algorithm to use for deriving the password is described in section 5.12.3.1.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getScopes(callbackopt)

This operation requests the scope parameters of a device. The scope parameters are used in the device discovery to match a probe message, see Section 7. The Scope parameters are of two different types:
  • Fixed
  • Configurable
Fixed scope parameters are permanent device characteristics and cannot be removed through the device management interface. The scope type is indicated in the scope list returned in the get scope parameters response. A device shall support retrieval of discovery scope parameters through the GetScopes command. As some scope parameters are mandatory, the device shall return a non-empty scope list in the response.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getServiceCapabilities(callbackopt)

+++ I get an 'Action Failed' with Axis cameras. Hikvision works fine.
This command returns the capabilities of the device service. The service shall implement this method if the device supports the GetServices method.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getServices(includeCapabilityopt, callbackopt)

+++ I get an 'Action Failed' with Axis cameras. Hikvision works fine.
Returns a collection of the devices services and possibly their available capabilities. The returned capability response message is untyped to allow future addition of services, service revisions and service capabilities. All returned service capabilities shall be structured by different namespaces which are supported by a device.
A device shall implement this method if any of the ONVIF compliant services implements the GetServiceCapabilities. For making sure about the structure of GetServices response with capabilities, please refer to Annex C. Example for GetServices Response with capabilities.
The version in GetServicesResponse shall contain the specification version number of the corresponding service that is implemented by a device.
Parameters:
Name Type Attributes Description
includeCapability boolean <optional>
The message contains a request for all services in the device and possibly the capabilities for each service. If the Boolean IncludeCapability is set, then the response shall include the services capabilities.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getSystemBackup(callbackopt)

This interface has been deprecated.
A device shall implement this command if the capability SystemBackup is signaled. For a replacement method see section 8.3.2 and 8.3.5.
This operation retrieves system backup configuration file(s) from a device. The backup is returned with reference to a name and mime-type together with binary data. The format of the backup configuration data is vendor specific. It is expected that after completion of the restore operation the device is working on the same configuration as that of the time the configuration was backed up. Note that the configuration of static IP addresses may differ.
Device vendors may put restrictions on the functionality to be restored. The detailed behavior is outside the scope of this specification.
The backup configuration file(s) are transmitted through MTOM [MTOM].
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getSystemDateAndTime(callbackopt)

This operation gets the device system date and time. The device shall support the return of the daylight saving setting and of the manual system date and time (if applicable) or indication of NTP time (if applicable) through the GetSystemDateAndTime command.
A device shall provide the UTCDateTime information although the item is marked as optional to ensure backward compatibility.
This is required to be called for devices that support the GetSystemDateAndTime SOAP method so a time diff can be used in subsequent calls to the device.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getSystemLog(logType, callbackopt)

This operation gets a system log from the device. The exact format of the system logs is outside the scope of this standard.
Parameters:
Name Type Attributes Description
logType System | Access Specifies the type of system log to get.
  • System: Indicates that a system log is requested.
  • Access: Indicates that a access log is requested.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getSystemSupportInformation(callbackopt)

This operation gets arbitary device diagnostics information from the device.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getSystemUris(callbackopt)

This operation is used to retrieve URIs from which system information may be downloaded using HTTP. URIs may be returned for the following system information:
System Logs. Multiple system logs may be returned, of different types. The exact format of the system logs is outside the scope of this specification.
Support Information. This consists of arbitrary device diagnostics information from a device. The exact format of the diagnostic information is outside the scope of this specification.
System Backup. The received file is a backup file that can be used to restore the current device configuration at a later date. The exact format of the backup configuration file is outside the scope of this specification.
If the device allows retrieval of system logs, support information or system backup data, it should make them available via HTTP GET. If it does, it shall support the GetSystemUris command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getTimeDiff()

Returns the onvif device's time difference
getSystemDateAndTime must be called first to get an accurate time.
Source:

getUsers(callbackopt)

This operation lists the registered users and corresponding credentials on a device. The device shall support retrieval of registered device users and their credentials for the user token through the GetUsers command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getWsdlUrl(callbackopt)

It is possible for an endpoint to request a URL that can be used to retrieve the complete schema and WSDL definitions of a device. The command gives in return a URL entry point where all the necessary product specific WSDL and schema definitions can be retrieved. The device shall provide a URL for WSDL and schema download through the GetWsdlUrl command.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

getZeroConfiguration(callbackopt)

This operation gets the zero-configuration from a device. If the device supports dynamic IP configuration according to [RFC3927], it shall support the return of IPv4 zero configuration address and status through the GetZeroConfiguration command.
Devices supporting zero configuration on more than one interface shall use the extension to list the additional interface settings.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:

init(serviceAddress, usernameopt, passwordopt)

Call this function directly after instantiating a Core object.
Parameters:
Name Type Attributes Description
serviceAddress object An url object from url package - require('url').
username string <optional>
Optional only if the device does NOT have a user.
password string <optional>
Optional only if the device does NOT have a password.
Source:

parseGetSystemDateAndTime(sdt)

Private function
Parameters:
Name Type Description
sdt object GetSystemDateAndTimeResponse converted to JSON.
Source:

scanAvailableDot11Networks(interfaceToken, callbackopt)

This operation returns a lists of the wireless networks in range of the device. A device should support this operation. The following status can be returned for each network:
  • SSID (shall)
  • BSSID (should)
  • Authentication and key management suite(s) (should)
  • Pair cipher(s) (should)
  • Group cipher(s) (should)
  • Signal strength (should)
Parameters:
Name Type Attributes Description
interfaceToken string Network reference token.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

setDNS(fromDHCP, searchDomainopt, DNSManualopt, callbackopt)

This operation sets the DNS settings on a device. It shall be possible to set the device DNS configurations through the SetDNS command.
It is valid to set the FromDHCP flag while the device is not using DHCP to retrieve its IPv4 address.
Parameters:
Name Type Attributes Description
fromDHCP boolean True if the DNS servers are obtained via DHCP.
searchDomain array <optional>
The domain(s) to search if the hostname is not fully qualified.
DNSManual array <optional>
A list of manually given DNS servers
Properties
Name Type Attributes Description
type 'IPv4' | 'IPv6' The type of address in this object. Use only one type of address.
IP4Address string <optional>
An IPv4 address.
IP6Address string <optional>
An IPv6 address.
callback callback <optional>
Optional callback, instead of a Promise.
Source:
Example
DNSManual: [
  { type: 'IPv4', IP4Address: '10.10.1.20' }
]

setDynamicDNS(type, nameopt, ttlopt, callbackopt)

Parameters:
Name Type Attributes Description
type NoUpdate | ServerUpdates | ClientUpdates The type of update. There are three possible types: the device desires no update (NoUpdate), the device wants the DHCP server to update (ServerUpdates) and the device does the update itself (ClientUpdates).
name string <optional>
The DNS name in case of the device does the update.
ttl integer <optional>
Time to live
callback callback <optional>
Optional callback, instead of a Promise.
Source:

setHostname(name, callbackopt)

This operation sets the hostname on a device. It shall be possible to set the device hostname configurations through the SetHostname command. Attention: a call to SetDNS may result in overriding a previously set hostname.
A device shall accept strings formated according to RFC 1123 section 2.1 or alternatively to RFC 952, other string shall be considered as invalid strings.
A device shall try to retrieve the name via DHCP when the HostnameFromDHCP capability is set and an empty name string is provided.
Parameters:
Name Type Attributes Description
name * The host name. If Name is an empty string hostname should be retrieved from DHCP, otherwise the specified Name shall be used.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

setHostnameFromDHCP(fromDHCPopt, callbackopt)

This operation controls whether the hostname shall be retrieved from DHCP. A device shall support this command if support is signalled via the HostnameFromDHCP capability. Depending on the device implementation the change may only become effective after a device reboot. A device shall accept the command independent whether it is currently using DHCP to retrieve its IPv4 address or not. Note that the device is not required to retrieve its hostname via DHCP while the device is not using DHCP for retrieving its IP address. In the latter case the device may fall back to the statically set hostname.
Parameters:
Name Type Attributes Description
fromDHCP boolean <optional>
True if the hostname shall be obtained via DHCP.
callback callback <optional>
Optional callback, instead of a Promise.
Source:

setNTP(fromDHCP, NTPManualopt, callbackopt)

This operation sets the NTP settings on a device. If support for NTP is signalled via the NTP capability, it shall be possible to set the NTP server settings through the SetNTP command.
A device shall accept string formated according to RFC 1123 section 2.1, other string shall be considered as invalid strings. It is valid to set the FromDHCP flag while the device is not using DHCP to retrieve its IPv4 address.
Changes to the NTP server list shall not affect the clock mode DateTimeType. Use SetSystemDateAndTime to activate NTP operation.
Parameters:
Name Type Attributes Description
fromDHCP boolean True if the NTP servers are obtained via DHCP.
NTPManual array <optional>
A list of manually given NTP servers when they not are obtained via DHCP.
Properties
Name Type Attributes Description
type string <optional>
True if the NTP servers are obtained via DHCP.
IPv4Address string <optional>
An IPv4 address.
IP6Address string <optional>
An IPv6 address.
callback callback <optional>
Optional callback, instead of a Promise.
Source:
Example
NTPManual: [
  { type: 'IPv4', IP4Address: 'time1.goggle.com' }
]

systemReboot(callbackopt)

This operation reboots the device.
Parameters:
Name Type Attributes Description
callback callback <optional>
Optional callback, instead of a Promise.
Source:
Returns:
Contains the reboot message from the device (ie: Rebooting in 90 seconds).