mirror of
https://github.com/rustdesk/rustdesk.git
synced 2024-12-18 21:47:53 +08:00
update IPv4 check and add IPv6 check in whitelist
Signed-off-by: Xerxes-2 <dspxue@gmail.com>
This commit is contained in:
parent
cf721e9bb3
commit
de951ad70a
@ -133,9 +133,12 @@ void changeWhiteList({Function()? callback}) async {
|
|||||||
final ips =
|
final ips =
|
||||||
newWhiteListField.trim().split(RegExp(r"[\s,;\n]+"));
|
newWhiteListField.trim().split(RegExp(r"[\s,;\n]+"));
|
||||||
// test ip
|
// test ip
|
||||||
final ipMatch = RegExp(r"^\d+\.\d+\.\d+\.\d+(\/\d+)?$");
|
final ipMatch = RegExp(
|
||||||
|
r"^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)(\/([1-9]|[1-2][0-9]|3[0-2])){0,1}$");
|
||||||
|
final ipv6Match = RegExp(
|
||||||
|
r"^(((?:[0-9A-Fa-f]{1,4}))*((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))*((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(\/([1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])){0,1}$");
|
||||||
for (final ip in ips) {
|
for (final ip in ips) {
|
||||||
if (!ipMatch.hasMatch(ip)) {
|
if (!ipMatch.hasMatch(ip) && !ipv6Match.hasMatch(ip)) {
|
||||||
msg = "${translate("Invalid IP")} $ip";
|
msg = "${translate("Invalid IP")} $ip";
|
||||||
setState(() {
|
setState(() {
|
||||||
isInProgress = false;
|
isInProgress = false;
|
||||||
|
@ -632,10 +632,7 @@ impl Connection {
|
|||||||
.is_none()
|
.is_none()
|
||||||
&& whitelist
|
&& whitelist
|
||||||
.iter()
|
.iter()
|
||||||
.filter(|x| match IpCidr::from_str(x) {
|
.filter(|x| IpCidr::from_str(x).map_or(false, |y| y.contains(addr.ip())))
|
||||||
Ok(cidr) => cidr.contains(addr.ip()),
|
|
||||||
Err(_) => false,
|
|
||||||
})
|
|
||||||
.next()
|
.next()
|
||||||
.is_none()
|
.is_none()
|
||||||
{
|
{
|
||||||
|
@ -395,7 +395,8 @@ class MyIdMenu: Reactor.Component {
|
|||||||
if (value) {
|
if (value) {
|
||||||
var values = value.split(/[\s,;\n]+/g);
|
var values = value.split(/[\s,;\n]+/g);
|
||||||
for (var ip in values) {
|
for (var ip in values) {
|
||||||
if (!ip.match(/^\d+\.\d+\.\d+\.\d+(\/\d+)?$/)) {
|
if (!ip.match(/^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]?|0)(\/([1-9]|[1-2][0-9]|3[0-2])){0,1}$/)
|
||||||
|
&& !ip.match(/^(((?:[0-9A-Fa-f]{1,4}))*((?::[0-9A-Fa-f]{1,4}))*::((?:[0-9A-Fa-f]{1,4}))*((?::[0-9A-Fa-f]{1,4}))*|((?:[0-9A-Fa-f]{1,4}))((?::[0-9A-Fa-f]{1,4})){7})(\/([1-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8])){0,1}$/)) {
|
||||||
return translate("Invalid IP") + ": " + ip;
|
return translate("Invalid IP") + ": " + ip;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user