Class: NetworkUtilities

@nginstack/engine/lib/net/NetworkUtilities~ NetworkUtilities


new NetworkUtilities()

Classe com métodos diversos para tratamento de endereços de servidores e redes.

Methods


findHosts(ids)

Obtém as chaves dos hosts cadastrados que possuam o endereço informado. Também é definido o método de classe NetworkUtilities.findHosts para usos eventuais Prefira instanciar a classe NetworkUtilities e chamar findHosts da instância se utilizar muito este método.

Parameters:
Name Type Description
ids string| Array.<string>

Nome ou endereços ip do computador que deve ser localizado. Pode ser informado um único ou um array de identificadores do computador.

See:
Returns:

Array com as chaves dos servidores que possuam o nome ou endereço ip igual ao pesquisado.

Type
Array.<number>
Example
var NetworkUtilities = require('@nginstack/engine/lib/net/NetworkUtilities');
// Localiza o engine que está executando este script no cadastro de servidores
var hosts = NetworkUtilities.findHosts([server.localHost, server.localAddress]);
if (hosts.length === 1){
  return hosts[0]
} else {
  if (hosts.length === 0) {
    throw new Error("Não existe um computador cadastrado com o nome \"" +
        server.localHost + "\" ou ip \"" + server.localAddress + "\".")
  } else {
    throw new Error("Existe mais um computador cadastrado com o nome \"" +
        server.localHost + "\" ou ip \"" + server.localAddress + "\".")
  }
}

findNetworks(ids)

Obtém as chaves das redes cadastradas que contenham o endereço informado. Pode ser informado o endereço de um computador ou de uma rede. Neste último caso, deve ser utilizada a notação CIDR (ex: 192.168.0.1/24). Também é definido o método de classe NetworkUtilities.findNetworks para usos eventuais Prefira instanciar a classe NetworkUtilities e chamar findNetworks da instância se utilizar muito este método.

Parameters:
Name Type Description
ids string| Array

Endereços de uma rede ou endereços ou nomes de um computador. Pode ser informado um único ou um Array de identificadores.

See:
Returns:

Array com as chaves das redes que contém o endereço informado.

Type
Array

findServices(ids, serviceClass, port)

Obtém as chaves dos serviços cadastrados na classe Services que estejam associados ao host informado. Serão retornados as chaves de todos serviços dos servidores cujo nome ou endereço IP seja igual ao informado em host. Também é definido o método de classe NetworkUtilities.findServices para usos eventuais Prefira instanciar a classe NetworkUtilities e chamar findServices da instância se utilizar muito este método.

Parameters:
Name Type Description
ids string| Array.<string>

Nome ou endereços ip do computador. Pode ser informado um único ou um array de identificadores do computador.

serviceClass number

Classe do serviço desejado

port number

Porta do serviço. Parâmetro opcional para restringir a pesquisa para serviços configurados na porta informada. É útil apenas quando existe mais de um serviço de mesma classe configurado em um host.

See:
Returns:

Array com as chaves dos serviços localizados

Type
Array
Example
var NetworkUtilities = require('@nginstack/engine/lib/net/NetworkUtilities');
// Descobre os servidores SMTP configurados no engine que está executando este script
var services = NetworkUtilities.findServices( [ server.localHost, server.localAddress ],
   -1898146235) // SMTP
if ( services.length == 0 ){
  throw new Error("Não existe um serviço SMTP cadastrado no computador com o " +
      "nome \"" + server.localHost + "\" ou ip \"" + server.localAddress + "\".")
}

<static> addressInNetworkRange(address, network)

Determina se o endereço faz parte da rede informada. A rede deve ser informada na notação CIDR. Sem a máscara, é verificado se os endereços são iguais. São suportados endereços IPv4 e IPv6, inclusive as diferentes representações textuais de um mesmo IPv6. Um IPv4 mapeado em IPv6, como "::ffff:10.0.0.1", é comparado como IPv4 com as redes IPv4.

Parameters:
Name Type Description
address string

Endereço que deve ser avaliado se está na rede informada.

network string

Endereço da rede

Throws:

Se o endereço ou a rede não forem endereços IP válidos.

Type
Error
Returns:

True se o endereço faz parte da rede informada

Type
boolean
Example
NetworkUtilities.addressInNetworkRange('192.168.0.1', '192.168.0.0/16'); // => true
NetworkUtilities.addressInNetworkRange('2001:db8::5', '2001:db8::/32'); // => true
NetworkUtilities.addressInNetworkRange('2001:DB8:0::5', '2001:db8::5'); // => true
NetworkUtilities.addressInNetworkRange('::ffff:10.0.0.1', '10.0.0.0/8'); // => true
NetworkUtilities.addressInNetworkRange('2001:db8::5', '10.0.0.0/8'); // => false

<static> addressToNumber(address)

Converte um IPv4 em uma representação numérica. Equivalente a função inet_aton() existente em outras linguagens.

Parameters:
Name Type Description
address string

Endereço ip

See:
Returns:

Representação numérica do endereço informado.

Type
number

<static> getNetworkRange(address)

Calcula o primeiro e o último endereço IP de uma rede.

Parameters:
Name Type Description
address string

Endereço IP da rede. Deve ser informado utilizando a notação CIDR. Exemplo: 192.168.0.0/16.

Returns:

Array do primeiro e último ip da rede informada.

Type
Array

<static> getNumberNetworkRange(address)

Calcula a representação numérica do primeiro e o último endereço IP de uma rede.

Parameters:
Name Type Description
address string

Endereço IP da rede. Deve ser informado utilizando a notação CIDR. Exemplo: 192.168.0.0/16.

Returns:

Array das representações numéricas do primeiro e último ip da rede informada.

Type
Array

<static> isIPv4Address(address)

Verifica se o endereço informado é um IPv4 válido, opcionalmente na notação CIDR. Não são aceitos espaços, octetos vazios ou com zeros à esquerda, nem uma máscara vazia.

Parameters:
Name Type Description
address string

Endereço que deve ser verificado.

Returns:

True se o endereço informado é um IPv4.

Type
boolean
Example
NetworkUtilities.isIPv4Address('10.0.0.1'); // => true
NetworkUtilities.isIPv4Address('10.0.0.0/8'); // => true
NetworkUtilities.isIPv4Address('10.0.0.'); // => false
NetworkUtilities.isIPv4Address(' 10.0.0.1'); // => false

<static> isIPv6Address(address)

Verifica se o endereço informado é um IPv6 válido. Aceita a forma comprimida (::), um IPv4 no final do endereço e a notação CIDR. Não aceita colchetes nem identificador de zona.

Parameters:
Name Type Description
address string

Endereço que deve ser verificado.

Returns:

True se o endereço informado é um IPv6.

Type
boolean
Example
NetworkUtilities.isIPv6Address('::1'); // => true
NetworkUtilities.isIPv6Address('2001:db8::/32'); // => true
NetworkUtilities.isIPv6Address('::ffff:192.168.0.1'); // => true
NetworkUtilities.isIPv6Address('192.168.0.1'); // => false

<static> maskToNumber(mask)

Converte a representação textual de uma máscara de rede no valor da máscara CIDR.

Parameters:
Name Type Description
mask string

Representação textual da máscara. Exemplo: "255.0.0.0".

See:
Returns:

Máscara CIDR. Número inteiro variando de 0 a 32.

Type
number

<static> numberToAddress(num)

Converte a representação numérica de um endereço IPv4 em uma string. Equivalente a função inet_ntoa() existente em outras linguagens.

Parameters:
Name Type Description
num number

Número gerado pelo método NetworkUtilities.addressToNumber()

See:
Returns:

Representação textual do endereço informado.

Type
string

<static> numberToMask(num)

Converte uma máscara CIDR em uma representação textual.

Parameters:
Name Type Description
num number

Máscara numérica CIDR. Número inteiro variando de 0 a 32.

See:
Returns:

Representação textual da máscara. Exemplo: "255.0.0.0".

Type
string

<static> unmapIPv4Address(address)

Obtém o IPv4 de um endereço IPv4 mapeado em IPv6, como "::ffff:10.0.0.1" ou "::ffff:a00:1". Os demais endereços são retornados sem alteração.

Parameters:
Name Type Description
address string

Endereço IP, sem a máscara.

Returns:

O endereço IPv4, se o endereço for mapeado, ou o próprio endereço.

Type
string
Example
NetworkUtilities.unmapIPv4Address('::ffff:10.0.0.1'); // => '10.0.0.1'
NetworkUtilities.unmapIPv4Address('::ffff:a00:1'); // => '10.0.0.1'
NetworkUtilities.unmapIPv4Address('2001:db8::1'); // => '2001:db8::1'
NetworkUtilities.unmapIPv4Address('10.0.0.1'); // => '10.0.0.1'