aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrumeet <yuuta@yuuta.moe>2021-03-27 16:34:58 -0700
committerTrumeet <yuuta@yuuta.moe>2021-03-27 16:34:58 -0700
commit9a32f7f1973e1c8159e42747f2e87ba65da42a77 (patch)
treec66a63bdd71e9082b8648be69ce6df233d98be81
parent6166ddaf522f01ccc2e7c65ec98f7e48fa061c9b (diff)
downloaddn42peering-9a32f7f1973e1c8159e42747f2e87ba65da42a77.tar
dn42peering-9a32f7f1973e1c8159e42747f2e87ba65da42a77.tar.gz
dn42peering-9a32f7f1973e1c8159e42747f2e87ba65da42a77.tar.bz2
dn42peering-9a32f7f1973e1c8159e42747f2e87ba65da42a77.zip
fix(central): compress income IPv6 addresses to prevent identical addresses with different forms from being processed
Existing peers are not checked
-rw-r--r--.idea/compiler.xml8
-rw-r--r--central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java1
2 files changed, 1 insertions, 8 deletions
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index 7480914..6620e8f 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -48,14 +48,6 @@
</processorPath>
<module name="dn42peering.central.main" />
</profile>
- <profile name="Gradle Imported" enabled="true">
- <outputRelativeToContentRoot value="true" />
- <processorPath useClasspath="false">
- <entry name="$USER_HOME$/.local/share/gradle/caches/modules-2/files-2.1/io.vertx/vertx-codegen/4.0.3/416429ea05c4c43afcf4104ab488bda10f43ba87/vertx-codegen-4.0.3-processor.jar" />
- <entry name="$USER_HOME$/.local/share/gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.11.3/c2351800432bdbdd8284c3f5a7f0782a352aa84a/jackson-core-2.11.3.jar" />
- </processorPath>
- <module name="dn42peering.rpc-common.main" />
- </profile>
</annotationProcessing>
<bytecodeTargetLevel target="1.8" />
</component>
diff --git a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
index 5127df0..e7a1966 100644
--- a/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
+++ b/central/src/main/java/moe/yuuta/dn42peering/manage/ManageHandler.java
@@ -687,6 +687,7 @@ public class ManageHandler implements ISubRouter {
!Inet6Address.getByName(ipv6).isLinkLocalAddress()) {
errors.add("IPv6 address is illegal. It must be a dn42 or link-local IPv6 address.");
}
+ ipv6 = ipv6.replaceAll("((?::0\\b){2,}):?(?!\\S*\\b\\1:0\\b)(\\S*)", "::$2");
} else
errors.add("IPv6 address is illegal. Cannot parse your address.");
} else {