From ba13780ab6b14418cb66f935029db14ef55a9e94 Mon Sep 17 00:00:00 2001 From: zefie Date: Fri, 7 Oct 2022 21:28:54 -0400 Subject: [PATCH] fix ip verification functions --- zefie_wtvp_minisrv/WTVAdmin.js | 16 +++++++++++----- zefie_wtvp_minisrv/WTVClientSessionData.js | 16 +++++++++++----- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/zefie_wtvp_minisrv/WTVAdmin.js b/zefie_wtvp_minisrv/WTVAdmin.js index 0c428d9e..fa5b00ad 100644 --- a/zefie_wtvp_minisrv/WTVAdmin.js +++ b/zefie_wtvp_minisrv/WTVAdmin.js @@ -37,12 +37,18 @@ class WTVAdmin { } isInSubnet(ip, subnet) { - var mask, base_ip, long_ip = this.ip2long(ip); - if ((mask = subnet.match(/^(.*?)\/(\d{1,2})$/)) && ((base_ip = this.ip2long(mask[1])) >= 0)) { - var freedom = Math.pow(2, 32 - parseInt(mask[2])); - return (long_ip > base_ip) && (long_ip < base_ip + freedom - 1); + if (subnet.indexOf('/') == -1) { + var mask, base_ip, long_ip = this.ip2long(ip); + var mask2, base_ip2, long_ip2 = this.ip2long(ip); + return (long_ip == long_ip2); + } else { + var mask, base_ip, long_ip = this.ip2long(ip); + if ((mask = subnet.match(/^(.*?)\/(\d{1,2})$/)) && ((base_ip = this.ip2long(mask[1])) >= 0)) { + var freedom = Math.pow(2, 32 - parseInt(mask[2])); + return (long_ip > base_ip) && (long_ip < base_ip + freedom - 1); + } } - else return false; + return false; } rejectConnection(reason_is_ssid) { diff --git a/zefie_wtvp_minisrv/WTVClientSessionData.js b/zefie_wtvp_minisrv/WTVClientSessionData.js index 0a1be9b1..b9779454 100644 --- a/zefie_wtvp_minisrv/WTVClientSessionData.js +++ b/zefie_wtvp_minisrv/WTVClientSessionData.js @@ -680,12 +680,18 @@ class WTVClientSessionData { }; var isInSubnet = function (ip, subnet) { - var mask, base_ip, long_ip = ip2long(ip); - if ((mask = subnet.match(/^(.*?)\/(\d{1,2})$/)) && ((base_ip = ip2long(mask[1])) >= 0)) { - var freedom = Math.pow(2, 32 - parseInt(mask[2])); - return (long_ip > base_ip) && (long_ip < base_ip + freedom - 1); + if (subnet.indexOf('/') == -1) { + var mask, base_ip, long_ip = this.ip2long(ip); + var mask2, base_ip2, long_ip2 = this.ip2long(ip); + return (long_ip == long_ip2); + } else { + var mask, base_ip, long_ip = this.ip2long(ip); + if ((mask = subnet.match(/^(.*?)\/(\d{1,2})$/)) && ((base_ip = this.ip2long(mask[1])) >= 0)) { + var freedom = Math.pow(2, 32 - parseInt(mask[2])); + return (long_ip > base_ip) && (long_ip < base_ip + freedom - 1); + } } - else return false; + return false; }; var rejectSSIDConnection = function (blacklist) {