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