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