SMPP 服务器 - 如何获取客户端 (ESME) 的 IP 地址?

SMPP server - How to get the client (ESME's) IP address?

我正在使用 https://github.com/farhadi/node-smpp 来创建 smpp 服务器。

如果客户端的 IP 地址不在允许的 ips 列表中,我将禁止连接。为此,当一个新连接打开时,我必须检查凭据是否正确以及 IP 地址是否正确。

问题是如何以及在哪里可以获得客户端 (ESME) 的 IP 地址?

  session.on('bind_transceiver', function(pdu) {
    session.pause();
    
    const username = pdu.system_id;
    const password = pdu.password;
    const ipAddress = ''; // WHERE TO GET IT??

    if (credentialsAreOk(username, password, ipAddress)) {
      session.send(pdu.response());
      session.resume();
    } else {
      session.close();
    }
  });

当 ESME 连接到您的服务器时,会创建一个会话。

此 TCP 连接使用的网络套接字是 net.Socket class (https://nodejs.org/api/net.html#net_class_net_socket),存储在该会话中的套接字 属性 中。

const socket = session.socket;

因此您可以轻松访问会话的此套接字 属性 并从那里获取远程地址(客户端 IP)(https://nodejs.org/api/net.html#net_socket_remoteaddress)。

const ipAddress = session.socket.remoteAddress;