Ignore invalid UDPConnectionRequestAddress

This commit is contained in:
Zaid Abdulla committed 2021-04-17 23:37:40 -07:00
1 parent 139dc5410e
commit f6aa444a23
2 files changed
+12 -7

No files matched your search

+8 -2
View File
@@ -145,15 +145,21 @@ export async function connectionRequest(
const debug = !!getConfig(snapshot, "cwmp.debug", {}, now, evalCallback); const debug = !!getConfig(snapshot, "cwmp.debug", {}, now, evalCallback);
let udpProm; let udpProm: Promise<void>;
if (udpConnectionRequestAddress) { if (udpConnectionRequestAddress) {
try {
const u = new URL("udp://" + udpConnectionRequestAddress);
udpProm = udpConnectionRequest( udpProm = udpConnectionRequest(
udpConnectionRequestAddress, u.hostname,
parseInt(u.port || "80"),
authExp, authExp,
UDP_CONNECTION_REQUEST_PORT, UDP_CONNECTION_REQUEST_PORT,
debug, debug,
deviceId deviceId
); );
} catch (err) {
// Ignore invalid address
}
} }
const status = await httpConnectionRequest( const status = await httpConnectionRequest(
+4 -5
View File
@@ -182,14 +182,13 @@ export async function httpConnectionRequest(
} }
export async function udpConnectionRequest( export async function udpConnectionRequest(
address: string, host: string,
port: number,
authExp: Expression, authExp: Expression,
sourcePort = 0, sourcePort = 0,
_debug: boolean, _debug: boolean,
deviceId: string deviceId: string
): Promise<void> { ): Promise<void> {
const [host, portStr] = address.split(":", 2);
const port = portStr ? parseInt(portStr) : 80;
const now = Date.now(); const now = Date.now();
const client = dgram.createSocket({ type: "udp4", reuseAddr: true }); const client = dgram.createSocket({ type: "udp4", reuseAddr: true });
@@ -216,8 +215,8 @@ export async function udpConnectionRequest(
.createHmac("sha1", password) .createHmac("sha1", password)
.update(`${ts}${id}${username}${cn}`) .update(`${ts}${id}${username}${cn}`)
.digest("hex"); .digest("hex");
const uri = `http://${address}?ts=${ts}&id=${id}&un=${username}&cn=${cn}&sig=${sig}`; const uri = `http://${host}:${port}?ts=${ts}&id=${id}&un=${username}&cn=${cn}&sig=${sig}`;
const msg = `GET ${uri} HTTP/1.1\r\nHost: ${address}\r\n\r\n`; const msg = `GET ${uri} HTTP/1.1\r\nHost: ${host}:${port}\r\n\r\n`;
const message = Buffer.from(msg); const message = Buffer.from(msg);
for (let i = 0; i < 3; ++i) { for (let i = 0; i < 3; ++i) {