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

时间:2020-07-06 14:40:48

标签: node.js smpp

我正在使用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();
    }
  });

1 个答案:

答案 0 :(得分:1)

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

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

const socket = session.socket;

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

const ipAddress = session.socket.remoteAddress;